- 1、本文档共34页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第五章 完整性 - use
第五章 数据库完整性 什么是数据库的完整性 完整性约束条件 完整性控制 5.1 完整性 什么是数据库的完整性 数据库的完整性是指数据的正确性和相容性,防止不合语义的数据进入数据库。 例: 学生的年龄必须是整数,取值范围为14--29; 学生的性别只能是男或女; 学生的学号一定是唯一的; 学生所在的系必须是学校开设的系; 数据库是否具备完整性关系到数据库系统能否真实地反映现实世界,因此维护数据库的完整性是非常重要的。 5.2 完整性控制 DBMS的完整性控制机制 关系系统三类完整性的实现 5.2.1 DBMS的完整性控制机制 DBMS的完整性控制机制的主要功能 定义功能 允许用户定义各类完整性约束条件 检查功能 检查用户提供的请求是否违背了完整性约束条件 违约反应 如果发现用户的操作违背了完整性约束条件, 则采取一定的动作来保证数据的完整性(一般是取消该事务已产生的影响--恢复) 5.2.2 DBMS的完整性控制机制 违约反应 拒绝该操作 其他处理方法 5.2.2关系系统三类完整性的实现 目前许多关系数据库系统都提供了定义和检查实体完整性、参照完整性和用户定义的完整性的功能。 对于违反实体完整性规则和用户定义的完整性规则的操作一般都是采用拒绝执行的方式进行处理。 而对于违反参照完整性的操作,并不都是简单地拒绝执行,有时还需要采取另一种方法,即接受这个操作,同时执行一些附加的操作,以保证数据库的状态仍然是正确的。 5.3 Sql Server中完整性的实现 实体完整性 参照完整性 用户定义完整性 5.3.1实体完整性 用primary key定义 create table student ( sno char(10) primary key, sname char(10) not null, ssex char(2), sage smallint, sdept char(10) ) insert into student(sno,sname) values(1,wang) 5.3.1实体完整性 标识列(IDENTITY) CREATE TABLE TC ( a int identity(10,2), b char(20) ) insert into tc(b) values(a) select * from tc 5.3.1 实体完整性 实体完整性检查和违约处理 1.检查主码值是否唯一,如果不唯一则拒绝插入或修改。 2.检查主码的各个属性是否为空,只要有一个为空就拒绝插入或修改。 5.3.2 参照完整性 用foreign key短语定义哪些列为外码,用references短语指明这些外码参照哪些表的主码 create table sc ( sno char(10), cno char(10), grade int, foreign key (sno) references student(sno) ) 5.3.2参照完整性 create table sc ( sno char(10), cno char(10), grade int, foreign key (sno) references student(sno) on delete cascade on update cascade ) 5.3.2参照完整性 delete from student where sno=1‘ update student set sno=001 where sno=1 5.3.2 参照完整性 对被参照表和参照表进行增删改操作时有可能破坏参照完整性,必须进行检查。 1.SC表中增加一个元组。 2.修改SC表中的一个元组。 3.从Student表中删除一个元组。 4.修改Student表中一个元组的Sno属性。 5.3.2 参照完整性 当上述的不一致发生时,系统可以采用以下的策略加以处理。 1.拒绝执行 不允许该操作执行。该策略一般设置为默认策略。 2.级联操作 当删除或修改被参照表的一个元组造成了与参照表的不一致,则删除或修改参照表中的所有造成不一致的元组。 5.4 用户定义的完整性 1.不允许为空 2.列值唯一 3.使用CHECK短语 4.元组上的约束条件 5.完整性约束命名子句 6.触发器 5.4.1用户定义的完整性 CREATE TABLE T1 ( S CHAR(10) CHECK(S IN (男,女)) ) insert into t1 Values(mei‘) 5.4.1用户定义的完整性 元组上的约束条件定义 create table t2 ( a int, b char(10), check(a10 and b not like 王%) ) insert in
文档评论(0)