第05章 数据库完整性.pptx
《第05章 数据库完整性.pptx》由会员分享,可在线阅读,更多相关《第05章 数据库完整性.pptx(67页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、An Introduction to Database System1数据库系统概论数据库系统概论An Introduction to Database System第五章第五章 数据库完整性数据库完整性An Introduction to Database System2第五章第五章第五章第五章 数据库完整性数据库完整性数据库完整性数据库完整性什么是数据库的完整性什么是数据库的完整性什么是数据库的完整性什么是数据库的完整性?n数据的数据的正确性正确性和和相容性相容性n防止不合语义的、不正确的数据进入数据库。防止不合语义的、不正确的数据进入数据库。例例:学生的年龄必须是整数,取值在学生的年龄必
2、须是整数,取值在6-506-50间;间;学生的性别只能是男或女;学生的性别只能是男或女;学生的学号一定是唯一的;学生的学号一定是唯一的;学生所在的系必须是学校已有的系;学生所在的系必须是学校已有的系;n完整性:保证数据库能否真实地反映现实世界完整性:保证数据库能否真实地反映现实世界.区别数据区别数据完整性完整性和和安全性安全性的两个概念。的两个概念。An Introduction to Database System3 完整性约束条件是数据模型的组成部分,完整性约束条件是数据模型的组成部分,约束数据库中数据的语义。约束数据库中数据的语义。检查用户发出的操作请求是否违背了完整检查用户发出的操作请
3、求是否违背了完整性约束条件性约束条件。操作违背了完整性约束条件,则采取一定的操作违背了完整性约束条件,则采取一定的操作违背了完整性约束条件,则采取一定的操作违背了完整性约束条件,则采取一定的操作操作操作操作来保证数据的完整性。来保证数据的完整性。来保证数据的完整性。来保证数据的完整性。为保证完整性,为保证完整性,为保证完整性,为保证完整性,DBMSDBMS必须做到:必须做到:必须做到:必须做到:1 1.完整性约束的定义机制完整性约束的定义机制2.2.完整性的检查完整性的检查机制机制3.3.违约反应违约反应 第第第第五五五五章章章章 数据库完整性数据库完整性数据库完整性数据库完整性An Intr
4、oduction to Database System4第第第第五五五五章章章章 数据库完整性数据库完整性数据库完整性数据库完整性5.1 5.1 实体完整性实体完整性5.2 5.2 参照完整性参照完整性5.3 5.3 用户定义完整性用户定义完整性5.4 5.4 完整性约束命名子句完整性约束命名子句5.5 5.5 触发器触发器An Introduction to Database System55.1 5.1 5.1 5.1 实体完整性实体完整性实体完整性实体完整性1.1.实体完整性定义实体完整性定义 在在CREATE TABLECREATE TABLE语句中用语句中用PRIMARY KEYPR
5、IMARY KEY定义定义 码由单字段构成码由单字段构成:定义可以为列级或表级约束;定义可以为列级或表级约束;码由多字段构成:码由多字段构成:定义只能为表级约束;定义只能为表级约束;An Introduction to Database System65.1 5.1 5.1 5.1 实体完整性实体完整性实体完整性实体完整性 例例11在数据库中,定义在数据库中,定义StudentStudent表的表的SnoSno属性为主码。属性为主码。定义在列级约束定义在列级约束:CREATE TABLE Student CREATE TABLE Student (Sno CHAR(8),(Sno CHAR(8
6、),Sname CHAR(8),Sname CHAR(8),Sage INT);Sage INT);定义在表级约束:定义在表级约束:CREATE TABLE Student CREATE TABLE Student (Sno CHAR(8)(Sno CHAR(8),Sname CHAR(8),Sname CHAR(8),Sage INT Sage INT,););PRIMARY KEY,PRIMARY KEY(Sno););An Introduction to Database System75.1 5.1 5.1 5.1 实体完整性实体完整性实体完整性实体完整性 例例22在在SCSC表中定义
7、表中定义(Sno,Cno)(Sno,Cno)为主码。为主码。CREATE TABLE SC CREATE TABLE SC (Sno CHAR(5),(Sno CHAR(5),Cno CHAR(2),Cno CHAR(2),Grade SMALLINT,Grade SMALLINT,PRIMARY KEY(Sno,Cno)PRIMARY KEY(Sno,Cno););An Introduction to Database System85.1 5.1 5.1 5.1 实体完整性实体完整性实体完整性实体完整性2.2.2.2.实体完整性检查和违约处理实体完整性检查和违约处理实体完整性检查和违约处理
8、实体完整性检查和违约处理 (1)(1)完整性检查完整性检查 当用户进行当用户进行插入记录插入记录或或修改主码修改主码时,时,DBMSDBMS系统自系统自动检查:动检查:主主码值是否惟一;码值是否惟一;每个每个主属性值是否为空。主属性值是否为空。(2)(2)违约处理违约处理 拒绝操作。拒绝操作。An Introduction to Database System95.1 5.1 5.1 5.1 实体完整性实体完整性实体完整性实体完整性2.2.2.2.实体完整性检查和违约处理实体完整性检查和违约处理实体完整性检查和违约处理实体完整性检查和违约处理 (3)(3)检查主码是否惟一的方法检查主码是否惟一
9、的方法 全表扫描全表扫描依次判断表中每一个记录的主码值与插入记依次判断表中每一个记录的主码值与插入记录的主码值是否一致。录的主码值是否一致。缺点缺点:效率低:效率低 利用利用主码的主码的B B索引索引优点优点:效率高:效率高An Introduction to Database System105.1 5.1 5.1 5.1 实体完整性实体完整性实体完整性实体完整性keyF1F2F332520159379658471517304154656968255112 3066 783 715 20 25 30 4151 54 6568 69 71 7679 84 93An Introduction t
10、o Database System11第第第第五五五五章章章章 数据库完整性数据库完整性数据库完整性数据库完整性5.1 5.1 实体完整性实体完整性5.2 5.2 参照完整性参照完整性5.3 5.3 用户定义完整性用户定义完整性5.4 5.4 完整性约束命名子句完整性约束命名子句5.5 5.5 触发器触发器An Introduction to Database System125.2 5.2 5.2 5.2 参照完整性参照完整性参照完整性参照完整性1.1.1.1.参照完整性定义参照完整性定义参照完整性定义参照完整性定义 在在CREATE TABLECREATE TABLE语句中:语句中:用用
11、FOREIGN KEY FOREIGN KEY 短语定义外码列;短语定义外码列;用用 REFERENCES REFERENCES 短语指明外码参照哪个表的主短语指明外码参照哪个表的主码。码。An Introduction to Database System135.2 5.2 5.2 5.2 参照完整性参照完整性参照完整性参照完整性 例例33在在SCSC表中的参照完整性。表中的参照完整性。CREATE TABLE SC CREATE TABLE SC CREATE TABLE SC CREATE TABLE SC (Sno CHAR(8)(Sno CHAR(8)(Sno CHAR(8)(Sno
12、 CHAR(8)NOT NULLNOT NULLNOT NULLNOT NULL,Cno CHAR(3)NOT NULL,Cno CHAR(3)NOT NULL,Cno CHAR(3)NOT NULL,Cno CHAR(3)NOT NULL,Grade SMALLINT,Grade SMALLINT,Grade SMALLINT,Grade SMALLINT,PRIMARY KEY(Sno,Cno),PRIMARY KEY(Sno,Cno),PRIMARY KEY(Sno,Cno),PRIMARY KEY(Sno,Cno),FOREIGN KEY(Cno)REFERENCES course(C
13、no)FOREIGN KEY(Cno)REFERENCES course(Cno)FOREIGN KEY(Cno)REFERENCES course(Cno)FOREIGN KEY(Cno)REFERENCES course(Cno)ON DELETE CASCADEON DELETE CASCADEON DELETE CASCADEON DELETE CASCADE ););););REFERENCES student(Sno),REFERENCES student(Sno),REFERENCES student(Sno),REFERENCES student(Sno),An Introdu
14、ction to Database System145.2 5.2 5.2 5.2 参照完整性参照完整性参照完整性参照完整性 例例33在在SCSC表中的参照完整性。表中的参照完整性。ALTER TABLE SC ALTER TABLE SC ALTER TABLE SC ALTER TABLE SC ADD FOREIGN KEY(SNO)ADD FOREIGN KEY(SNO)ADD FOREIGN KEY(SNO)ADD FOREIGN KEY(SNO)REFERENCES STUDENT(SNO)REFERENCES STUDENT(SNO)REFERENCES STUDENT(SNO)
15、REFERENCES STUDENT(SNO)An Introduction to Database System152.2.参照完整性检查和违约处理参照完整性检查和违约处理参照完整性检查和违约处理参照完整性检查和违约处理 对被对被参照表和参照表进行参照表和参照表进行增、删、改增、删、改操作操作时进行检查时进行检查有四种情况可能破坏参照完整性:有四种情况可能破坏参照完整性:参照表中参照表中l插入新插入新元组;元组;l修改外码值;修改外码值;被参照表中被参照表中l删除元组删除元组;l修改主码值。修改主码值。5.2 5.2 5.2 5.2 参照完整性参照完整性参照完整性参照完整性An Introd
16、uction to Database System16 当参照完整性不一致时,系统采取以下策略:当参照完整性不一致时,系统采取以下策略:n拒绝执行拒绝执行(默认策略)(默认策略)n级联操作级联操作(CASCADE)当删除或修改被参照表的一个元组造成与当删除或修改被参照表的一个元组造成与参照表不一致时,则删除或修改参照表中所有参照表不一致时,则删除或修改参照表中所有不一致的元组。不一致的元组。n设置为空设置为空(SET-NULL)当删除或修改被参照表的一个元组造成与当删除或修改被参照表的一个元组造成与参照表不一致时,则将参照表中所有造成不一参照表不一致时,则将参照表中所有造成不一致的元组对应属性
17、置空。致的元组对应属性置空。5.2 5.2 5.2 5.2 参照完整性参照完整性参照完整性参照完整性 定义参照完整性时,除了定义外码,还应定义参照完整性时,除了定义外码,还应定义外码定义外码是否级联是否级联、是否为空是否为空。An Introduction to Database System17例:要删除例:要删除StudentStudent关系中关系中Sno=Sno=950001950001的元组,而的元组,而SCSC关系中有关系中有4 4个元组个元组的的SnoSno都等于都等于950001950001。n置空值删除置空值删除:将将SCSC关系中所有关系中所有Sno=950001Sno=9
18、50001的元组的元组SnoSno置空。置空。n级联删除级联删除:将将SCSC关系中所有关系中所有4 4个个Sno=950001Sno=950001的元组一的元组一起删除。依此类推可以继续级联下去。起删除。依此类推可以继续级联下去。n受限删除受限删除:系统将拒绝执行此删除操作。系统将拒绝执行此删除操作。5.2 5.2 5.2 5.2 参照完整性参照完整性参照完整性参照完整性An Introduction to Database System18第第第第五五五五章章章章 数据库完整性数据库完整性数据库完整性数据库完整性5.1 5.1 实体完整性实体完整性5.2 5.2 参照完整性参照完整性5.3
19、 5.3 用户定义完整性用户定义完整性5.4 5.4 完整性约束命名子句完整性约束命名子句5.5 5.5 触发器触发器An Introduction to Database System195.3 5.3 5.3 5.3 用户定义的完整性用户定义的完整性用户定义的完整性用户定义的完整性1.1.1.1.属性上约束条件的定义属性上约束条件的定义属性上约束条件的定义属性上约束条件的定义 使用使用CREATE TABLECREATE TABLE语句在定义属性的同时,语句在定义属性的同时,定义定义对属性值的限制对属性值的限制。包括:包括:列值非空列值非空(NOT NULL)(NOT NULL)列值唯一列
20、值唯一(UNIQUE)(UNIQUE)检查列值是否满足一个布尔表达式检查列值是否满足一个布尔表达式(CHECK(CHECK子子句句)。An Introduction to Database System205.3 5.3 5.3 5.3 用户定义的完整性用户定义的完整性用户定义的完整性用户定义的完整性 (1)(1)不允许取空值不允许取空值 例例例例5555在定义在定义在定义在定义SCSCSCSC表时,说明表时,说明表时,说明表时,说明SnoSnoSnoSno、CnoCnoCnoCno属性不取空属性不取空属性不取空属性不取空 CREATE TABLE SC CREATE TABLE SC (Sn
21、o CHAR(5)(Sno CHAR(5)NOT NULLNOT NULL,Cno CHAR(2)Cno CHAR(2)NOT NULLNOT NULL,Grade SMALLINT,Grade SMALLINT,PRIMARY KEY(Sno,Cno);PRIMARY KEY(Sno,Cno);An Introduction to Database System215.3 5.3 5.3 5.3 用户定义的完整性用户定义的完整性用户定义的完整性用户定义的完整性(2)(2)列值惟一列值惟一 例例例例6666建立部门表建立部门表建立部门表建立部门表DeptDeptDeptDept,要求部门名称,
22、要求部门名称,要求部门名称,要求部门名称DnameDnameDnameDname惟一,惟一,惟一,惟一,部门编号为主码。部门编号为主码。部门编号为主码。部门编号为主码。CREATE TABLE Dept CREATE TABLE Dept (Dno NUMERIC(2)NOT NULL,(Dno NUMERIC(2)NOT NULL,Dname CHAR(20)Dname CHAR(20)UNIQUE UNIQUE,Location CHAR(10),Location CHAR(10),PRIMARY KEY(Dno)PRIMARY KEY(Dno););An Introduction to
23、Database System225.3 5.3 5.3 5.3 用户定义的完整性用户定义的完整性用户定义的完整性用户定义的完整性(2)(2)列值惟一列值惟一 例例例例6666补充补充补充补充 若部门表若部门表若部门表若部门表DeptDeptDeptDept已建立,添加部门名称已建立,添加部门名称已建立,添加部门名称已建立,添加部门名称DnameDnameDnameDname惟一的约束。惟一的约束。惟一的约束。惟一的约束。ALTER TABLE Dept ALTER TABLE Dept ADD UNIQUE(Dname);ADD UNIQUE(Dname);An Introduction t
24、o Database System235.3 5.3 5.3 5.3 用户定义的完整性用户定义的完整性用户定义的完整性用户定义的完整性 例例例例7Student7Student7Student7Student表中表中表中表中SsexSsexSsexSsex只允许取只允许取只允许取只允许取“男男男男”和和和和“女女女女”。CREATE TABLE Student CREATE TABLE Student (Sno CHAR(5)PRIMARY KEY,(Sno CHAR(5)PRIMARY KEY,Sname CHAR(8)NOT NULL,Sname CHAR(8)NOT NULL,Ssex
25、CHAR(2)Ssex CHAR(2)CHECK CHECK(Ssex IN(Ssex IN(男男男男,女女女女),Sage SMALLINT,Sage SMALLINT,Sdept CHAR(20)Sdept CHAR(20););(3)(3)用用CHECKCHECK短语短语指定列值应该满足的条件指定列值应该满足的条件An Introduction to Database System245.3 5.3 5.3 5.3 用户定义的完整性用户定义的完整性用户定义的完整性用户定义的完整性 例例例例7777补充补充补充补充 向向向向StudentStudentStudentStudent表添加表添
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第05章 数据库完整性 05 数据库 完整性
限制150内