华中科技大学数据库课件第05章-数据库完整性优秀PPT.ppt
《华中科技大学数据库课件第05章-数据库完整性优秀PPT.ppt》由会员分享,可在线阅读,更多相关《华中科技大学数据库课件第05章-数据库完整性优秀PPT.ppt(87页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 2011 by1数据库的完整性是指数据的正确性、有数据库的完整性是指数据的正确性、有效性和相容性。即数据库中数据与现实效性和相容性。即数据库中数据与现实世界的实际状况是相符合的或数据库中世界的实际状况是相符合的或数据库中数据自身不存在自相冲突的现象。数据自身不存在自相冲突的现象。第第5章章 数据库完整性数据库完整性An Introduction to Database System 2011 by2完整性完整性 vs 平安性平安性完整性完整性防止不符语义的数据,错误的输入防止不符语义的数据,错误的输入防范的对象:不合语义的数据防范的对象:不合语义的数据平安性平安性防止恶意破坏和非法存取防止恶
2、意破坏和非法存取防范对象:非法的用户和非法操作。防范对象:非法的用户和非法操作。An Introduction to Database System 2011 by3完整性限制机制完整性限制机制定义完整性约束条件定义完整性约束条件实施完整性检查实施完整性检查如有违反,作何种处置如有违反,作何种处置(拒绝、报告、订拒绝、报告、订正、忽视正、忽视)An Introduction to Database System 2011 by45.1 实体完整性实体完整性5.2 参照完整性参照完整性5.3 用户定义的完整性用户定义的完整性5.4 完整性约束命名子句完整性约束命名子句5.5 域中的完整性限制域中
3、的完整性限制5.6 触发器触发器5.7 小结小结第第5章章 数据库完整性数据库完整性An Introduction to Database System 2011 by55.1 实体完整性实体完整性5.1.1 实体完整性定义实体完整性定义5.1.2 实体完整性检查和违约处理实体完整性检查和违约处理An Introduction to Database System 2011 by65.1.1 实体完整性定义实体完整性定义关系模型的实体完整性关系模型的实体完整性CREATE TABLE中用中用PRIMARY KEY定义定义单属性构成的码有两种说明方法单属性构成的码有两种说明方法 定义为列级约束条
4、件定义为列级约束条件定义为表级约束条件定义为表级约束条件对多个属性构成的码只有一种说明方法对多个属性构成的码只有一种说明方法定义为表级约束条件定义为表级约束条件 An Introduction to Database System 2011 by75.1.1 实体完整性定义实体完整性定义create table 表名表名(|,.n ):=列名列名 数据类型数据类型 DEFAULT 常量表达式常量表达式|IDENTITY (种子种子,增量增量).n An Introduction to Database System 2011 by85.1.1 实体完整性定义实体完整性定义:=CONSTRAIN
5、T 约束名 NULL|NOT NULL|PRIMARY KEY|UNIQUE CLUSTERED|NONCLUSTERED|FOREIGN KEY REFERENCES 被引用表 (被引用的列)ON DELETE CASCADE|NO ACTION ON UPDATE CASCADE|NO ACTION|CHECK(逻辑表达式)An Introduction to Database System 2011 by95.1.1 实体完整性定义实体完整性定义:=CONSTRAINT 约束名 PRIMARY KEY|UNIQUE CLUSTERED|NONCLUSTERED (列名 ASC|DESC
6、,.n )|FOREIGN KEY (列名,.n )REFERENCES 被引用表 (被引用列,.n )ON DELETE CASCADE|NO ACTION ON UPDATE CASCADE|NO ACTION|CHECK (逻辑表达式)An Introduction to Database System 2011 by105.1.1 实体完整性定义实体完整性定义例1 将Student表中的Sno属性定义为码 (1)在列级定义主码 CREATE TABLE Student (Sno CHAR(9)PRIMARY KEY,Sname CHAR(20)NOT NULL,Ssex CHAR(2)
7、,Sage SMALLINT,Sdept CHAR(20)An Introduction to Database System 2011 by115.1.1 实体完整性定义实体完整性定义可以显式给Primary Key约束命名 CREATE TABLE Student (Sno CHAR(9)constraint PK_Student PRIMARY KEY,Sname CHAR(20)NOT NULL,Ssex CHAR(2),Sage SMALLINT,Sdept CHAR(20)An Introduction to Database System 2011 by125.1.1 实体完整性
8、定义实体完整性定义(2)在表一级定义Primary Key约束 CREATE TABLE Student (Sno CHAR(9),Sname CHAR(20)NOT NULL,Ssex CHAR(2),Sage SMALLINT,Sdept CHAR(20),constraint PK_Student Primary Key(sno)An Introduction to Database System 2011 by135.1.1 实体完整性定义实体完整性定义例2将SC表中的Sno,Cno属性组定义为码 CREATE TABLE SC(Sno CHAR(9)NOT NULL,Cno CHAR
9、(4)NOT NULL,Grade SMALLINT,PRIMARY KEY(Sno,Cno)/*只能在表级定义主码*/)An Introduction to Database System 2011 by145.1.1 实体完整性定义实体完整性定义关系模型完整性的修改关系模型完整性的修改Alter Table ADD(添加新约束)添加新约束)Alter Table Drop(删除约束删除约束)修改现有约束?修改现有约束?An Introduction to Database System 2011 by155.1.1 实体完整性定义实体完整性定义ALTER TABLE 表名 ALTER CO
10、LUMN 列名 数据类型 (精度,小数位数)NULL|NOT NULL|ADD ,.n|ADD ,.n|DROP CONSTRAINT 约束名|COLUMN 列名 ,.n An Introduction to Database System 2011 by165.1.1 实体完整性定义实体完整性定义:=列名列名 数据类型数据类型 DEFAULT 常量表达式常量表达式|IDENTITY (种子种子,增量增量).n An Introduction to Database System 2011 by175.1.1 实体完整性定义实体完整性定义:=CONSTRAINT 约束名 NULL|NOT NU
11、LL|PRIMARY KEY|UNIQUE CLUSTERED|NONCLUSTERED|FOREIGN KEY REFERENCES 被引用表 (被引用的列)ON DELETE CASCADE|NO ACTION ON UPDATE CASCADE|NO ACTION|CHECK(逻辑表达式)An Introduction to Database System 2011 by185.1.1 实体完整性定义实体完整性定义:=CONSTRAINT 约束名 PRIMARY KEY|UNIQUE CLUSTERED|NONCLUSTERED (列名 ASC|DESC ,.n )|FOREIGN KE
12、Y (列名,.n )REFERENCES 被引用表 (被引用列,.n )ON DELETE CASCADE|NO ACTION ON UPDATE CASCADE|NO ACTION|DEFAULT 常量表达式 FOR 列名|CHECK (逻辑表达式)An Introduction to Database System 2011 by195.1.1 实体完整性定义实体完整性定义例3 建SC1表时,主码定义错误,修改之。这是当时定义的语句:CREATE TABLE SC1 (Sno CHAR(9)constraint PK_SC1 PRIMARY KEY,Cno char(4),Grade sm
13、allint)An Introduction to Database System 2011 by205.1.1 实体完整性定义实体完整性定义(1)删除原约束(2)定义新约束alter table sc1 drop constraint pk_sc1alter table sc1 alter column cno char(4)not nullalter table sc1 add constraint pk_sc1 primary key(sno,cno)An Introduction to Database System 2011 by215.1.1 实体完整性定义实体完整性定义关系模型完
14、整性的修改关系模型完整性的修改Alter Table ADD(添加新约束)添加新约束)Alter Table Drop(删除约束删除约束)修改现有约束?修改现有约束?An Introduction to Database System 2011 by225.1 实体完整性实体完整性5.1.1 实体完整性定义实体完整性定义5.1.2 实体完整性检查和违约处理实体完整性检查和违约处理An Introduction to Database System 2011 by235.1.2 实体完整性检查和违约处理实体完整性检查和违约处理何时检查何时检查插入插入:insert更新主码列更新主码列:updat
15、e 检查内容检查内容检查主码值是否唯一,假如不唯一则拒绝插入或修检查主码值是否唯一,假如不唯一则拒绝插入或修改改检查主码的各个属性是否为空,只要有一个为空就检查主码的各个属性是否为空,只要有一个为空就拒绝插入或修改拒绝插入或修改An Introduction to Database System 2011 by245.1.2 实体完整性检查和违约处理实体完整性检查和违约处理检查方法一检查方法一:全表扫描全表扫描(耗时耗时)对策对策:在主码上自动建索引在主码上自动建索引An Introduction to Database System 2011 by255.1 实体完整性实体完整性5.2 参照
16、完整性参照完整性5.3 用户定义的完整性用户定义的完整性5.4 完整性约束命名子句完整性约束命名子句5.5 域中的完整性限制域中的完整性限制5.6 触发器触发器5.7 小结小结第第5章章 数据库完整性数据库完整性An Introduction to Database System 2011 by265.2 参照完整性参照完整性5.2.1 参照完整性定义参照完整性定义5.2.2 参照完整性检查和违约处理参照完整性检查和违约处理An Introduction to Database System 2011 by275.2.1 参照完整性定义参照完整性定义关系模型的参照完整性定义关系模型的参照完整性
17、定义CREATE TABLE和和ALTER TABLE用用FOREIGN KEY短语定义哪些列为外码短语定义哪些列为外码用用REFERENCES短语指明这些外码参照哪些表的短语指明这些外码参照哪些表的主码主码 An Introduction to Database System 2011 by285.2.1 参照完整性定义参照完整性定义create table 表名表名(|,.n ):=列名列名 数据类型数据类型 DEFAULT 常量表达式常量表达式|IDENTITY (种子种子,增量增量).n An Introduction to Database System 2011 by295.2.1
18、 参照完整性定义参照完整性定义:=CONSTRAINT 约束名 NULL|NOT NULL|PRIMARY KEY|UNIQUE CLUSTERED|NONCLUSTERED|FOREIGN KEY REFERENCES 被引用表 (被引用的列)ON DELETE CASCADE|NO ACTION ON UPDATE CASCADE|NO ACTION|CHECK(逻辑表达式)An Introduction to Database System 2011 by305.2.1 参照完整性定义参照完整性定义:=CONSTRAINT 约束名 PRIMARY KEY|UNIQUE CLUSTERED
19、|NONCLUSTERED (列名 ASC|DESC ,.n )|FOREIGN KEY (列名,.n )REFERENCES 被引用表 (被引用列,.n )ON DELETE CASCADE|NO ACTION ON UPDATE CASCADE|NO ACTION|CHECK (逻辑表达式)An Introduction to Database System 2011 by315.2.1 参照完整性定义参照完整性定义例3 定义SC(sno,cno,grade)中的参照完整性 CREATE TABLE SC(Sno CHAR(9)NOT NULL,Cno CHAR(4)NOT NULL,Gr
20、ade SMALLINT,PRIMARY KEY(Sno,Cno),/*在表级定义实体完整性*/FOREIGN KEY(Sno)REFERENCES Student(Sno),/*在表级定义参照完整性*/FOREIGN KEY(Cno)REFERENCES Course(Cno)/*在表级定义参照完整性*/)这里,两个foreign key都没有显式取名An Introduction to Database System 2011 by325.2.1 参照完整性定义参照完整性定义还可以写成:CREATE TABLE SC(Sno CHAR(9)REFERENCES Student(Sno),C
21、no CHAR(4)REFERENCES Course(Cno),Grade SMALLINT,PRIMARY KEY(Sno,Cno)这似乎是最“经济”的写法了,不仅省略了constraint,还省略了foreign key An Introduction to Database System 2011 by335.2.1 参照完整性定义参照完整性定义例4 假使当时定义SC(sno,cno,grade)时,遗漏了参照完整性定义,现需补上,该怎么做?以下是当时的语句:CREATE TABLE SC(Sno CHAR(9),Cno CHAR(4),Grade SMALLINT,PRIMARY K
22、EY(Sno,Cno),/*在表级定义实体完整性*/)An Introduction to Database System 2011 by345.2.1 参照完整性定义参照完整性定义【例4】假使当时定义SC(sno,cno,grade)时,遗漏了参照完整性定义,现需补上,该怎么做?以下是当时的语句:CREATE TABLE SC(Sno CHAR(9),Cno CHAR(4),Grade SMALLINT,PRIMARY KEY(Sno,Cno),/*在表级定义实体完整性*/)还是先回忆一下Alter table的用法吧An Introduction to Database System 20
23、11 by355.2.1 参照完整性定义参照完整性定义ALTER TABLE 表名 ALTER COLUMN 列名 数据类型 (精度,小数位数)NULL|NOT NULL|ADD ,.n|ADD ,.n|DROP CONSTRAINT 约束名|COLUMN 列名 ,.n An Introduction to Database System 2011 by365.2.1 参照完整性定义参照完整性定义:=列名列名 数据类型数据类型 DEFAULT 常量表达式常量表达式|IDENTITY (种子种子,增量增量).n An Introduction to Database System 2011 by
24、375.2.1 参照完整性定义参照完整性定义:=CONSTRAINT 约束名 NULL|NOT NULL|PRIMARY KEY|UNIQUE CLUSTERED|NONCLUSTERED|FOREIGN KEY REFERENCES 被引用表 (被引用的列)ON DELETE CASCADE|NO ACTION ON UPDATE CASCADE|NO ACTION|CHECK(逻辑表达式)An Introduction to Database System 2011 by385.2.1 参照完整性定义参照完整性定义:=CONSTRAINT 约束名 PRIMARY KEY|UNIQUE CL
25、USTERED|NONCLUSTERED (列名 ASC|DESC ,.n )|FOREIGN KEY (列名,.n )REFERENCES 被引用表 (被引用列,.n )ON DELETE CASCADE|NO ACTION ON UPDATE CASCADE|NO ACTION|DEFAULT 常量表达式 FOR 列名|CHECK (逻辑表达式)An Introduction to Database System 2011 by395.2.1 参照完整性定义参照完整性定义alter table sc add constraint FK_S_SC foreign key(sno)refere
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 华中科技大学 数据库 课件 05 完整性 优秀 PPT
限制150内