您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 企业局域网的安全与运维Ⅱ_数据完整性约束
企业局域网的安全与运维II数据完整性——约束本节学习目标时间:2次课,4学时;本节学习目标:知识点:数据库完整性的概念。主键、外键、默认值、检查约束、唯一性约束的概念;本节学习目标技能要求:能够创建和管理主键能够创建和管理外键;能够创建管理检查约束;能够创建管理唯一性约束;能够创建管理非空约束和默认值约束能够测试各项约束的有效性;能够在数据库中创建数据库关系图课程引入演示:通过SSMS向数据库S_C_T的Student表中执行下列操作:将学生的年龄写入10000;将学生的性别写入abc;将两个不同教师的身份证号码写成相同的数据“111111111111111111”。思考数据库对不合理数据没有任何限制?数据库中的数据可靠吗?通过哪些手段防止上述情况的发生?手段之一:约束SQLServer的数据完整性约束的类型主键约束外键约束唯一性约束检查约束默认值空值约束数据库完整性概述数据库的完整性数据的正确性和相容性数据的完整性和安全性是两个不同概念数据的完整性防止数据库中存在不符合语义的数据,也就是防止数据库中存在不正确的数据防范对象:不合语义的、不正确的数据数据的安全性保护数据库防止恶意的破坏和非法的存取防范对象:非法用户和非法操作1、设置约束——主键约束主键约束:主键能够唯一地确定表中的每一条记录,主键不能取空值。一个表应该有一个PRIMARYKEY约束一个表只能有一个PRIMARYKEY约束主键约束违约处理插入或对主键列进行更新操作时,DBMS按照完整性规则自动进行检查。包括:1.检查主键值是否唯一,如果不唯一则拒绝插入或修改;2.检查主键的各个属性是否为空,只要有一个为空就拒绝插入或修改;主键约束违约处理检查记录中主键值是否唯一和为空的一种方法是进行全表扫描演示[例1]将Student表中的Sno属性定义为主键;[例2]将SC表中的Sno,Cno属性组定义为主键(复合主键,最多为16列);2、唯一性约束(UK)唯一性约束作用:指定一个或多个列的组合值具有唯一性,以防止在列中输入重复的值。使用唯一性约束的字段允许为空值;一个表中可以允许有多个唯一性约束;唯一性约束用于强制在指定字段上创建一个唯一性索引;演示[例4]在教师表T中的身份证号IDnum列上创建唯一约束。主键约束和唯一性约束的差别唯一性约束所在的列允许空值,但是主键约束所在的列不允许空值。可以把唯一性约束放在一个或者多个列上,这些列或列的组合必须有唯一的值。但是,唯一性约束所在的列并不是表的主键列。3、检查约束(Check)作用:通过一个或多个字段上的输入值是否符合设定的检查条件来保证数据库数据的完整性。一个表中可以定义多个检查约束;当执行向数据库中插入数据或更新数据时,检查约束将验证数据;演示[例5]将表S的sex列的取值只允许为“男”或“女”。[例6]将表SC中的score列数据的取值范围设置为0-100之间。CHECK约束总结1、CHECK约束是在创建表时指定的。2、在每个列上可使用多个CHECK约束。3、CHECK约束只能应用于它定义的列。4、默认约束默认约束来指定列的默认值。向表中插入记录时,数据库会在该列的对应位置填入默认值。每个字段只能定义一个默认约束;默认值必须与该列数据类型兼容。演示[例7]将学生表S中的系别(department)列的默认值设置为“计算机系”。5、空值约束(Null)列可以接受空值,也可以拒绝空值。在数据库中,NULL是一个特殊值,表示未知值的概念。NULL不同于空字符或0。实际上,空字符是一个有效的字符,0是一个有效的数字。NULL只是表示此值未知这一概念。NULL也不同于零长度字符串。空值约束(Null)空值约束允许一列或多列的值不为空。空(NULL)标识未定义或未知的值。默认情况下运行为空,如果要某列不接受空值,则必须在该列上设置非空约束。空值约束违约处理当插入数据给非空列保持为空时,将会出现一个约束错误,表示不允许在该列中输入空值,否则不能插入下一条记录,也不允许保存数据。在某列上定义PrimaryKey约束,该列必然遵守NOTNULL约束。演示[例8]将表S的编号(sno)、姓名(sn)和性别(sex)列设置为不允许为空;向表S中插入一条新的学生记录,查看姓名和性别项为空时出现的提示。6、外键约束(FK)通过创建外键约束可以实现表和表之间的依赖关系,实现数据的一致性。外键约束定义一个列或多个列,这些列可以参考同一个表或另外一个表中的主键约束列或惟一性约束列,唯一索引列。主键所在的表叫主表,属于一对多关系中的一;外键所在的表叫从表,属于一对多关系中的多;设置约束——外键约束主键和外键的字段名不一定相同,但是数据类型、字段长度必须严格匹配。一个表中最多可以有31个外键约束;子表不能引用不存在的键值。如果主表中的一行被一个外键参考,那么该行不能被删除(除非定义了级联删除和触发器),主键值也不能修改。外键约束违约处理可能破坏参照完整性的情况及违约处理被参照表(例如表S)参照表(例如SC)违约处理可能破坏参照完整性插入记录拒绝可能破坏参照完整性修改外键值拒绝删除记录可能破坏参照完整性拒绝修改主键值可能破坏参照完整性拒绝演示[例3]表SC中一条记录表示一个学生选修的某门课程的成绩,(Sno,Cno)是主键。Sno,Cno分别参照引用Student表的主键和Course表的主键。关系数据库提供的三种完整性实体完整性域完整性参照完整性关系数据库的数据完整性数据完整性就是指存储在数据库中的数据的一致性和准确性。在关系数据库中,主要有以下几种类型:1、域完整性:(列完整性),规定了给定列输入数据的有效性。例如,在“成绩”列中,限制其取值范围为0到100,其他的取值无效。有效性检查限制数据类型、或数据取值范围,设定默认值、外键、规则(rule)实现。2、实体完整性:(行完整性),要求表中所有的行唯一。可通过设置主键约束(PrimaryKey)、惟一索引(UniqueIndex)、标识列(IdentityColumn)等多种方法等实现。3、参照完整性:涉及两个或两个以上表的数据的一致性维护。它可以通过主键/外键值约束,触发器(Trigger)和存储过程(StoredProcedure),实现。约束的几种主要类型的作用完整性类型约束类型描述域完整性DEFAULT(缺省)在使用INSERT语句插入数据时,如果某个列的值没有明确提供,则将定义的缺省值插入到该列中CHECK(检查)指定某一个列中的可保存值的范围实体完整性PRIMARYKEY(主键)每一行的惟一标识符,确保用户不能输入冗余值和确保创建索引,提高性能,不允许空值UNIQUE(惟一性)防止出现冗余值,并且确保创建索引,提高性能。允许空值参考完整性FOREIGNKEY(外键)定义一列或者几列,其值与本表或者另外一个表的主键值匹配数据库关系图的创建在定义好表结构和创建好约束后,可以创建数据库关系图;本节小结空值约束限定某列数据是必填项。主键约束和唯一性约束的区别。作业:简述SQLServer2005中各类约束的特点和作用范围?请说明数据完整性的类型和实现方法?
本文标题:企业局域网的安全与运维Ⅱ_数据完整性约束
链接地址:https://www.777doc.com/doc-1252842 .html