数据库原理及应用18 数据库完整性.ppt
《数据库原理及应用18 数据库完整性.ppt》由会员分享,可在线阅读,更多相关《数据库原理及应用18 数据库完整性.ppt(54页珍藏版)》请在沃文网上搜索。
1、数据库完整性数据库完整性数据库完整性数据库完整性什么是数据库完整性:什么是数据库完整性:防止数据库中存在不符合语义的数据防止数据库中存在不符合语义的数据数据的正确性和相容性数据的正确性和相容性例例:学生的年龄必须是整数,学生的年龄必须是整数,学生的性别只能是男或女;学生的性别只能是男或女;学生的学号一定是唯一的;学生的学号一定是唯一的;学生所在的系必须是学校开设的系学生所在的系必须是学校开设的系2数据库原理及应用-SQL DML数据库完整性数据库完整性DBMSDBMS维护数据库完整性的措施:维护数据库完整性的措施:1 1、提供、提供定义完整性定义完整性约束条件的机制。由约束条件的机制。由SQL
2、SQL中中的的DDLDDL语句来实现,其定义作为语句来实现,其定义作为数据库模式数据库模式的的一部分,被一部分,被存入数据字典存入数据字典中。中。2 2、提供、提供完整性检查完整性检查的方法。在更新操作或事的方法。在更新操作或事务提交时检查是否违背了完整性约束条件。务提交时检查是否违背了完整性约束条件。3 3、违约处理违约处理。若操作违背了完整性约束,则。若操作违背了完整性约束,则采取一定措施:采取一定措施:拒绝执行该操作拒绝执行该操作级连(级连(cascadecascade)执行其他操作)执行其他操作3数据库原理及应用-SQL DML主要内容主要内容实体完整性实体完整性参照完整性参照完整性用
3、户定义的完整性用户定义的完整性完整性约束命名子句完整性约束命名子句触发器触发器小结小结4数据库原理及应用-SQL DML实体完整性实体完整性实体完整性定义实体完整性定义在在CREATE TABLECREATE TABLE中用中用PRIMARY KEYPRIMARY KEY定义定义列级列级约束条件(码中单属性)约束条件(码中单属性)表级表级约束条件(码中单属性、多属性)约束条件(码中单属性、多属性)5数据库原理及应用-SQL DML实体完整性实体完整性例例1 1 将将studentstudent表中的表中的snosno属性定义为码属性定义为码 CREATE TABLE studentCREATE
4、 TABLE student(SnoSno char(9)char(9)primary keyprimary key,SnameSname char(20),char(20),Sage Sage intint)或或 CREATE TABLE studentCREATE TABLE student(SnoSno char(9),char(9),SnameSname char(20),char(20),Sage Sage intint,primary primary key(Snokey(Sno)6数据库原理及应用-SQL DML实体完整性实体完整性例例2 2 将将SCSC表中的表中的SnoSno
5、,CnoCno属性组定义为码属性组定义为码 Create table scCreate table sc(SnoSno char(9),char(9),CnoCno char(4),char(4),Grade Grade smallintsmallint,Primary Primary key(Sno,Cnokey(Sno,Cno)Create table scCreate table sc(SnoSno char(9)char(9)primary keyprimary key,CnoCno char(4)char(4)primary keyprimary key,Grade Grade sm
6、allintsmallint)7数据库原理及应用-SQL DML实体完整性实体完整性实体完整性检查和违约处理实体完整性检查和违约处理用用primary keyprimary key定义了主码后,当用户程序对定义了主码后,当用户程序对基本表插入或者更新主码列值时,基本表插入或者更新主码列值时,DBMSDBMS进行下进行下列的检查:列的检查:(1)(1)检查主码值检查主码值是否唯一是否唯一,若不唯一则拒绝插,若不唯一则拒绝插入或修改入或修改(2)(2)检查主码的各个属性检查主码的各个属性是否为空是否为空,只要有一,只要有一个为空就拒绝插入或修改个为空就拒绝插入或修改返回返回8数据库原理及应用-SQ
7、L DML参照完整性参照完整性参照完整性定义参照完整性定义在在CREATE TABLECREATE TABLE中用中用FOREIGN KEYFOREIGN KEY短语定短语定义哪些列为外码,用义哪些列为外码,用REFERENCESREFERENCES短语指明短语指明这些外码参照哪些表的主码这些外码参照哪些表的主码9数据库原理及应用-SQL DML参照完整性参照完整性例例 定义定义SCSC中的完整性约束中的完整性约束CREATE TABLECREATE TABLE SC SC(SnoSno char(9),char(9),CnoCno char(4),char(4),Grade Grade sm
8、allintsmallint,Primary Primary key(Sno,Cnokey(Sno,Cno),),Foreign Foreign key(Snokey(Sno)references)references student(Snostudent(Sno),Foreign Foreign key(Cnokey(Cno)references)references course(Cnocourse(Cno))10数据库原理及应用-SQL DML参照完整性参照完整性或或CREATE TABLECREATE TABLE SC SC(SnoSno char(9)char(9)reference
9、s references student(Snostudent(Sno),CnoCno char(4)char(4)references references course(Cnocourse(Cno),Grade Grade smallintsmallint,Primary Primary key(Sno,Cnokey(Sno,Cno))11数据库原理及应用-SQL DML参照完整性参照完整性参照完整性检查和违约处理参照完整性检查和违约处理参照表(参照表(SCSC)可能会破坏完整性的操作)可能会破坏完整性的操作 SCSC表中插入新的元组表中插入新的元组修改修改SCSC表中元组的表中元组的Sn
10、oSno属性值属性值DBMSDBMS将拒绝该操作将拒绝该操作12数据库原理及应用-SQL DML参照完整性参照完整性被参照表被参照表(student)(student)的操作情况的操作情况 从从studentstudent表中删除元组表中删除元组修改修改studentstudent表中某元组的表中某元组的SnoSno属性的值属性的值DBMSDBMS可以可以拒绝拒绝该操作,可以该操作,可以级连删除更新级连删除更新,也,也可以将参照表中相应的外码值可以将参照表中相应的外码值置空置空。置空操作出现的情况置空操作出现的情况学生(学生(学号学号,姓名,性别,姓名,性别,专业号专业号,年龄),年龄)专业(
11、专业(专业号专业号,专业名),专业名)13数据库原理及应用-SQL DML参照完整性参照完整性对违反了参照完整性的操作,系统选用默对违反了参照完整性的操作,系统选用默认策略,即认策略,即拒绝删除拒绝删除,若想让系统采取其,若想让系统采取其他策略,必须在建表时显式地说明他策略,必须在建表时显式地说明14数据库原理及应用-SQL DML参照完整性参照完整性例:显式说明参照完整性的违约处理示例例:显式说明参照完整性的违约处理示例CREATE TABLE SCCREATE TABLE SC(SnoSno char(9)not null,char(9)not null,CnoCno char(4)not
12、 null,char(4)not null,Grade Grade smallintsmallint,Primary Primary key(Sno,Cnokey(Sno,Cno),),Foreign Foreign key(Snokey(Sno)references)references student(Snostudent(Sno)on delete cascadeon delete cascadeon update cascadeon update cascade,Foreign Foreign key(Cnokey(Cno)references)references course(Cn
13、ocourse(Cno)on delete no actionon delete no actionon update cascadeon update cascade)返回返回演示演示演示演示15数据库原理及应用-SQL DML用户定义的完整性用户定义的完整性针对某一具体应用的数据必须满足的语义针对某一具体应用的数据必须满足的语义要求要求目前的目前的RDBMSRDBMS都提供了都提供了定义和检验定义和检验这类完这类完整性的机制,减轻了应用程序的负担整性的机制,减轻了应用程序的负担两类用户定义的完整性两类用户定义的完整性属性上的约束条件(列级)属性上的约束条件(列级)元组上的约束条件(表级)元
14、组上的约束条件(表级)16数据库原理及应用-SQL DML属性上的约束条件属性上的约束条件属性上的约束条件定义(属性上的约束条件定义(create tablecreate table)列值非空(列值非空(not nullnot null)列值唯一(列值唯一(uniqueunique)检查列值是否满足一个布尔表达式(条件表达检查列值是否满足一个布尔表达式(条件表达式)(式)(checkcheck)默认值定义默认值定义(default)(default)(sqlserversqlserver)使用使用 INSERT INSERT 语句时,如果没有提供值,则默认值语句时,如果没有提供值,则默认值会提
15、供值会提供值17数据库原理及应用-SQL DML属性上的约束条件属性上的约束条件例:例:对表对表student(Sno,Sname,Sage,Ssex,Sdeptstudent(Sno,Sname,Sage,Ssex,Sdept)要求:要求:SnoSno为主码为主码 SnameSname唯一且不空,年龄不空唯一且不空,年龄不空 SsexSsex只允许取只允许取“男男”或或“女女”若没有插入若没有插入SdeptSdept值,则默认为值,则默认为其他其他Create table studentCreate table student(SnoSno char(9)primary key,char(9
16、)primary key,SnameSname char(8)char(8)unique not nullunique not null,Sage Sage smallintsmallint not nullnot null,SSexSSex char(2)char(2)check(check(SsexSsex in(in(男男,女女),),SdeptSdept char(20)char(20)default(default(其他其他)演示演示演示演示18数据库原理及应用-SQL DML属性上的约束条件属性上的约束条件属性上的约束条件检查和违约处理属性上的约束条件检查和违约处理当往表中当往表中
17、插入元组或修改属性的值插入元组或修改属性的值时,时,RDBMSRDBMS就检查属性上的约束条件是否被满足,如果不就检查属性上的约束条件是否被满足,如果不满足则操作被拒绝执行满足则操作被拒绝执行19数据库原理及应用-SQL DML元组上的约束条件元组上的约束条件元组级的限制可以元组级的限制可以设置不同属性间的取值的相互设置不同属性间的取值的相互约束条件约束条件例:对例:对studentstudent表的约束条件:表的约束条件:当学生的性别是男时,其名字不能以当学生的性别是男时,其名字不能以Ms.Ms.打头。打头。Create table studentCreate table student(S
18、noSno char(9),char(9),SnameSname char(8),char(8),SsexSsex char(2),char(2),Primary Primary key(Snokey(Sno),),Check(Check(not(Ssexnot(Ssex=男男 and and SnameSname like like MS.%)MS.%)演示步骤演示步骤演示步骤演示步骤20数据库原理及应用-SQL DML元组上的约束条件元组上的约束条件元组上的约束条件检查和违约处理元组上的约束条件检查和违约处理当往表中当往表中插入元组或修改属性的值插入元组或修改属性的值时,时,RDBMSRD
19、BMS就检查元组上的约束条件是否被满足,如果不就检查元组上的约束条件是否被满足,如果不满足则操作被拒绝执行满足则操作被拒绝执行返回返回22数据库原理及应用-SQL DML完整性约束命名子句完整性约束命名子句SQLSQL还在还在Create tableCreate table语句中提供了完整语句中提供了完整性约束命名子句性约束命名子句constraintconstraint,用来,用来对完整对完整性约束条件命名性约束条件命名。可灵活地可灵活地增加、删除增加、删除一个完整性约束条件一个完整性约束条件定义表中的完整性限制定义表中的完整性限制ConstraintConstraint primary p
20、rimary keykey短语短语|foreign keyforeign key短语短语|checkcheck短语短语|not not nullnull|uniqueunique 返回返回23数据库原理及应用-SQL DML完整性约束命名子句完整性约束命名子句例:建立学生登记表例:建立学生登记表studentstudent,要求姓名不能取,要求姓名不能取空值且唯一,年龄小于空值且唯一,年龄小于303024数据库原理及应用-SQL DML完整性约束命名子句完整性约束命名子句Create table studentCreate table student(SnoSno numeric(6),num
21、eric(6),SnameSname char(20)char(20)constraint constraint c_namec_name not null not null constraint constraint cuq_namecuq_name unique,unique,Sage Sage smallintsmallint constraint constraint c_agec_age check(Sagecheck(Sage30)30),SsexSsex char(2)char(2),constraint constraint studentkeystudentkey prima
22、ry primary key(Snokey(Sno)25数据库原理及应用-SQL DML完整性约束命名子句完整性约束命名子句修改表中的完整性约束修改表中的完整性约束使用使用alter tablealter table语句语句例:去掉例:去掉studentstudent表中对年龄的限制表中对年龄的限制 Alter tableAlter table student student drop constraintdrop constraint c_agec_age;例:修改表例:修改表studentstudent中的约束条件,要求年中的约束条件,要求年龄小于龄小于404026数据库原理及应用-SQL
23、 DML完整性约束命名子句完整性约束命名子句Alter tableAlter table student student drop constraint drop constraint c_agec_age;Alter tableAlter table student student add constraintadd constraint c_agec_age check(Sagecheck(Sage40)40)返回返回27数据库原理及应用-SQL DML触发器实现完整性约束触发器实现完整性约束用户定义在关系表上的一类由用户定义在关系表上的一类由事件驱动的事件驱动的特殊过程特殊过程。用户对表
24、的用户对表的增、删、改增、删、改操作均由服务器自操作均由服务器自动动激活相应的触发器激活相应的触发器利用触发器在利用触发器在DBMSDBMS核心层进行核心层进行集中的完整集中的完整性控制性控制。触发器类似于约束,但触发器类似于约束,但比约束灵活比约束灵活,可以,可以实施比实施比foreign keyforeign key、checkcheck约束更为复杂约束更为复杂的检查和操作,具有更精细和更强大的数的检查和操作,具有更精细和更强大的数据控制能力据控制能力28数据库原理及应用-SQL DML触发器触发器定义触发器定义触发器SQLSERVERSQLSERVER创建触发器创建触发器使用使用SQLS
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
10 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库原理及应用18 数据库完整性 数据库 原理 应用 18 完整性