资源预览内容
第1页 / 共34页
第2页 / 共34页
第3页 / 共34页
第4页 / 共34页
第5页 / 共34页
第6页 / 共34页
第7页 / 共34页
第8页 / 共34页
第9页 / 共34页
第10页 / 共34页
亲,该文档总共34页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
企业局域网的安全与运 维II数据完整性约束本节学习目标l时间:2次课,4学时;l本节学习目标:l知识点:l数据库完整性的概念。l主键、外键、默认值、检查约束、唯一性约 束的概念; 本节学习目标l技能要求:l能够创建和管理主键l能够创建和管理外键;l能够创建管理检查约束;l能够创建管理唯一性约束;l能够创建管理非空约束和默认值约束l能够测试各项约束的有效性;l能够在数据库中创建数据库关系图 课程引入l演示:l通过SSMS向数据库S_C_T的Student表中执 行下列操作:l将学生的年龄写入10000;l将学生的性别写入abc;l将两个不同教师的身份证号码写成相同的数据 “111111111111111111”。思考l数据库对不合理数据没有任何限制?l数据库中的数据可靠吗?l通过哪些手段防止上述情况的发生?l手段之一:约束SQL Server的 数据完整性约束的类型l主键约束l外键约束l唯一性约束l检查约束l默认值l空值约束数据库完整性概述l数据库的完整性l数据的正确性和相容性l数据的完整性和安全性是两个不同概念l数据的完整性防止数据库中存在不符合语义的数据,也就是防止数据 库中存在不正确的数据防范对象:不合语义的、不正确的数据l数据的安全性保护数据库防止恶意的破坏和非法的存取防范对象:非法用户和非法操作1、设置约束主键约束 主键约束 :l主键能够唯一地确定表中的每一条记录,主键 不能取空值。l一个表应该有一个 PRIMARY KEY 约束 l一个表只能有一个 PRIMARY KEY 约束 主键约束违约处理l插入或对主键列进行更新操作时,DBMS按照完整性规 则自动进行检查。包括:l1. 检查主键值是否唯一,如果不唯一则拒绝插入或修改;l2. 检查主键的各个属性是否为空,只要有一个为空就拒绝插入或修改;主键约束违约处理l检查记录中主键值是否唯一和为空的一种方法是进行全表扫描演示l例1 将Student表中的Sno属性定义为主 键;l例2将SC表中的Sno,Cno属性组定义为主 键(复合主键,最多为16列);2、唯一性约束(UK)l唯一性约束作用:指定一个或多个列的组合 值具有唯一性,以防止在列中输入重复的值。l使用唯一性约束的字段允许为空值;l一个表中可以允许有多个唯一性约束;l唯一性约束用于强制在指定字段上创建一个 唯一性索引;演示l例4在教师表T中的身份证号IDnum列上创 建唯一约束。主键约束和唯一性约束的差别l唯一性约束所在的列允许空值,但是主键约束 所在的列不允许空值。l可以把唯一性约束放在一个或者多个列上,这 些列或列的组合必须有唯一的值。但是,唯一 性约束所在的列并不是表的主键列。3、检查约束(Check)l作用:通过一个或多个字段上的输入值是否符 合设定的检查条件来保证数据库数据的完整性 。l一个表中可以定义多个检查约束;l当执行向数据库中插入数据或更新数据时,检 查约束将验证数据;演示l例5将表S的sex列的取值只允许为“男”或“ 女”。l例6将表SC中的score列数据的取值范围设 置为0-100之间。CHECK约束总结1、CHECK约束是在创建表时指定的。2、在每个列上可使用多个CHECK约束。3、CHECK约束只能应用于它定义的列。4、默认约束l默认约束来指定列的默认值。向表中插入记录 时,数据库会在该列的对应位置填入默认值。l每个字段只能定义一个默认约束;l默认值必须与该列数据类型兼容。演示l例7将学生表S中的系别(department)列 的默认值设置为“计算机系”。5、空值约束(Null)l列可以接受空值,也可以拒绝空值。l在数据库中,NULL 是一个特殊值,表示未知值 的概念。lNULL 不同于空字符或 0。实际上,空字符是一 个有效的字符,0 是一个有效的数字。NULL 只 是表示此值未知这一概念。NULL 也不同于零长 度字符串。 空值约束(Null)l空值约束允许一列或多列的值不为空。l空(NULL)标识未定义或未知的值。l默认情况下运行为空,如果要某列不接受空值 ,则必须在该列上设置非空约束。空值约束违约处理l当插入数据给非空列保持为空时,将会出现一 个约束错误,表示不允许在该列中输入空值, 否则不能插入下一条记录,也不允许保存数据 。l在某列上定义Primary Key约束,该列必然遵 守NOT NULL约束。演示l例8将表S的编号(sno)、姓名(sn)和 性别(sex)列设置为不允许为空;向表S中插 入一条新的学生记录,查看姓名和性别项为空 时出现的提示。6、外键约束(FK)l通过创建外键约束可以实现表和表之间的依 赖关系,实现数据的一致性。 l外键约束定义一个列或多个列,这些列可以 参考同一个表或另外一个表中的主键约束列 或惟一性约束列,唯一索引列。l主键所在的表叫主表,属于一对多关系中的 一;l外键所在的表叫从表,属于一对多关系中的 多;设置约束外键约束l主键和外键的字段名不一定相同,但是数据类 型、字段长度必须严格匹配。l一个表中最多可以有31个外键约束;v子表不能引用不存在的键值。v如果主表中的一行被一个外键参考,那么该 行不能被删除(除非定义了级联删除和触发 器),主键值也不能修改。外键约束违约处理可能破坏参照完整性的情况及违约处理被参照表(例如表S)参照表(例如SC)违约处 理可能破坏参照完整性 插入记录拒绝可能破坏参照完整性 修改外键值拒绝删除记录 可能破坏参照完整 性拒绝修改主键值 可能破坏参照完整 性拒绝演示l例3表SC中一条记录表示一个学生选修的 某门课程的成绩,(Sno,Cno)是主键。Sno ,Cno分别参照引用Student表的主键和Course 表的主键。关系数据库提供的三种完整性l实体完整性l域完整性l参照完整性关系数据库的数据完整性数据完整性就是指存储在数据库中的数据的一致 性和准确性。在关系数据库中,主要有以下几种类型: 1、域完整性: (列完整性),规定了给定列输入 数据的有效性。 例如,在“成绩”列中,限制其取值范围为0到 100,其他的取值无效。有效性检查限制数据类型、或数据取值范围,设 定默认值、外键、规则()实现。l2、实体完整性:(行完整性),要求表中所 有的行唯一。可通过设置主键约束( )、惟一索引( )、标识列(Identity Column)等 多种方法等实现。3、参照完整性:涉及两个或两个以上表的数据的 一致性维护。它可以通过主键/外键值约束,触 发器()和存储过程( ),实现。约束的几种主要类型的作用完整性类型约 束 类 型描 述域完整性 DEFAULT(缺省)在使用INSERT语句插入数据时,如果某个列的值没 有明确提供,则将定义的缺省值插入到该列中CHECK(检查 )指定某一个列中的可保存值的范围实体完整性PRIMARY KEY(主 键)每一行的惟一标识 符,确保用户不能输入冗余值和 确保创建索引,提高性能,不允许空值UNIQUE(惟一性)防止出现冗余值,并且确保创建索引,提高性能。 允许空值参考完整性FOREIGN KEY(外 键)定义一列或者几列,其值与本表或者另外一个表的 主键值 匹配数据库关系图的创建l在定义好表结构和创建好约束后,可以创建数 据库关系图;本节小结l空值约束限定某列数据是必填项。l主键约束和唯一性约束的区别。l作业:l简述SQL Server 2005中各类约束的特点和作 用范围?l请说明数据完整性的类型和实现方法?
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号