J第6章数据库完整性_第1页
J第6章数据库完整性_第2页
J第6章数据库完整性_第3页
J第6章数据库完整性_第4页
J第6章数据库完整性_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、An Introduction to Database System1数据库系统概论数据库系统概论An Introduction to Database System第六章第六章 数据库完整性数据库完整性An Introduction to Database System2第六章第六章 数据库完整性数据库完整性什么是数据库的完整性什么是数据库的完整性n数据的正确性和相容性数据的正确性和相容性n防止不合语义的数据进入数据库。防止不合语义的数据进入数据库。例例: 学生的年龄必须是整数,取值范围为学生的年龄必须是整数,取值范围为14-29; An Introduction to Database S

2、ystem3DBMS的完整性控制机制的完整性控制机制1.完整性约束条件完整性约束条件定义定义机制机制2.完整性完整性检查检查机制机制3.违约违约处理处理 An Introduction to Database System4完整性检查机制完整性检查机制n一般在一般在INSERT、UPDATE、DELETE语句后语句后开始检查。开始检查。 An Introduction to Database System5违约处理违约处理n如果发现用户的操作请求使数据违背了完整性如果发现用户的操作请求使数据违背了完整性约束条件,则采取一定的动作(如约束条件,则采取一定的动作(如拒绝拒绝执行该执行该操作)来保证

3、数据的完整性。操作)来保证数据的完整性。An Introduction to Database System6第六章第六章 数据库完整性数据库完整性6.1 实体完整性实体完整性6.2 参照完整性参照完整性6.3 用户定义的完整性用户定义的完整性6.4 完整性约束命名子句完整性约束命名子句6.5 域中的完整性限制域中的完整性限制An Introduction to Database System76.1.1 实体完整性定义实体完整性定义关系模型的实体完整性在关系模型的实体完整性在CREATE TABLE中中用用PRIMARY KEY定义。定义。n例例1 将将Student表中的表中的Sno属性定

4、义为主码。属性定义为主码。定义为定义为列级约束列级约束: CREATE TABLE Student (Sno CHAR(9) PRIMARY KEY , Sname CHAR(20) NOT NULL, Ssex CHAR(2), Sage SMALLINT, Sdept CHAR(20) );An Introduction to Database System8或定义或定义表级约束表级约束: CREATE TABLE Student (Sno CHAR(9), Sname CHAR(20)NOT NULL, Ssex CHAR(2), Sage SMALLINT, Sdept CHAR(20

5、), PRIMARY KEY(Sno) );An Introduction to Database System9例例2:要在:要在SC表中定义表中定义(Sno, Cno)为主码为主码. 只能定义为表级约束只能定义为表级约束. CREATE TABLE SC (Sno CHAR(9)NOT NULL, Cno CHAR(4)NOT NULL, Grade SMALLINT, PRIMARY KEY (Sno, Cno) /*表级约束表级约束*/ );An Introduction to Database System106.1.2 实体完整性检查和违约处理实体完整性检查和违约处理n当用户程序对

6、基本表插入一条记录或对主码列当用户程序对基本表插入一条记录或对主码列更新时,更新时,RDBMS将检查:将检查:n(1) 主码值是否唯一;主码值是否唯一;n(2) 主码的各个属性值是否为空。主码的各个属性值是否为空。如不满足,则如不满足,则拒绝插入或修改拒绝插入或修改。从而保证了实。从而保证了实体完整性。体完整性。An Introduction to Database System11第六章第六章 数据库完整性数据库完整性6.1 实体完整性实体完整性6.2 参照完整性参照完整性6.3 用户定义的完整性用户定义的完整性6.4 完整性约束命名子句完整性约束命名子句6.5 域中的完整性限制域中的完整性

7、限制An Introduction to Database System126.2.1 参照完整性定义参照完整性定义关系模型的参照完整性在关系模型的参照完整性在CREATE TABLE中用中用FOREIGN KEY定义哪些列为外码,用定义哪些列为外码,用REFERENCES短语指明这些外码参照哪些表短语指明这些外码参照哪些表的主码。的主码。An Introduction to Database System13 例例3:定义:定义SC中中 的参照完整性的参照完整性 CREATE TABLE SC (Sno CHAR(10) , Cno CHAR(4) , Grade SMALLINT, PRI

8、MARY KEY (Sno, Cno), FOREIGN KEY (Sno) REFERENCES Student(Sno), FOREIGN KEY (Cno) REFERENCES Course(Cno), );An Introduction to Database System146.2.2 参照完整性检查和违约处理参照完整性检查和违约处理n1 拒绝执行(拒绝执行(REJECT)n 不允许该操作执行,设置为不允许该操作执行,设置为默认默认策略。策略。n2 级连(级连(CASCADE)操作)操作n 删除或修改参照表中的相关元组。删除或修改参照表中的相关元组。n3 设置为空值(设置为空值(S

9、ET-NULL)n 学生(学生(学号学号,姓名,性别,姓名,性别,专业号专业号)n 专业(专业(专业号专业号,专业名),专业名)n专业号专业号在学生表中是外码在学生表中是外码.删除专业表的一个元组删除专业表的一个元组时时,就把学生表中的相关专业号置空就把学生表中的相关专业号置空.An Introduction to Database System15例例4 显式说明参照完整性的违约处理示例显式说明参照完整性的违约处理示例 CREATE TABLE SC (Sno CHAR(9) , Cno CHAR(4) , Grade SMALLINT, PRIMARY KEY (Sno, Cno), FO

10、REIGN KEY (Sno) REFERENCES Student(Sno) ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY (Cno) REFERENCES Course(Cno) ON DELETE NO ACTION ON UPDATE CASCADE );删除学生表的Sno时,级联删除SC表的相关元组更新学生表的Sno时,级联更新SC表的相应元组删除Course表的元组,出现与SC表不一致时,拒绝删除更新Course表的Cno时,级联更新SC表的相应元组删除时拒绝如果没有此句,删除学生表的Sno时,拒绝执行An Introductio

11、n to Database System166.3 用户定义的完整性用户定义的完整性用户定义的完整性用户定义的完整性: 是针对某一具体应用的数据是针对某一具体应用的数据必须满足的要求。必须满足的要求。An Introduction to Database System176.3.1 属性上的约束条件的定义属性上的约束条件的定义n在定义表时,定义属性的同时,指定属性的约在定义表时,定义属性的同时,指定属性的约束条件,包括以下几种:束条件,包括以下几种:n列值非空(列值非空(NOT NULL)n列值唯一(列值唯一(UNIQUE)n检查列值是否满足一个逻辑表达式检查列值是否满足一个逻辑表达式(CHE

12、CK)An Introduction to Database System181 不允许取空值不允许取空值n例例5 在定义在定义SC表时,说明表时,说明Grade属性不允属性不允许取空值。许取空值。 CREATE TABLE SC (Sno CHAR(9), Cno CHAR(4), Grade SMALLINT NOT NULL, PRIMARY KEY (Sno, Cno) );An Introduction to Database System192 列值唯一列值唯一例例6建立部门表建立部门表DEPT,要求部门名称,要求部门名称Dname列列 取值唯一,部门编号取值唯一,部门编号Dept

13、no列为主码列为主码CREATE TABLE DEPT(Deptno CHAR(4), Dname VARCHAR(9) UNIQUE, Location VARCHAR(10), PRIMARY KEY (Deptno);列值唯一An Introduction to Database System203. 用用CHECK指定列值应该满足的条件指定列值应该满足的条件例例7 Student表的表的Ssex(性别性别)只能是只能是男男或或女女. CREATE TABLE Student (Sno CHAR(10) PRIMARY KEY, Sname CHAR(8) NOT NULL, Ssex

14、CHAR(2) CHECK (Ssex IN (男男, 女女), Sage SMALLINT, Sdept CHAR(20) );An Introduction to Database System21n例例8 SC表表Grade的值应该在的值应该在0和和100之间。之间。 CREATE TABLE SC ( Sno CHAR(9), Cno CHAR(4), Grade SMALLINT CHECK(Grade=0 AND Grade=100), PRIMARY KEY (Sno, Cno) );An Introduction to Database System226.4 完整性约束命名子

15、句完整性约束命名子句n1.完整性约束命名子句完整性约束命名子句nSQL还在还在CREATE TABLE语句中提供了语句中提供了完整性约束命名子句完整性约束命名子句CONSTRAINT,用,用来对完整性约束条件来对完整性约束条件命名命名。从而可以灵活。从而可以灵活地增加、删除一个完整性约束条件。地增加、删除一个完整性约束条件。n格式:格式:nCONSTRAINT PRIMARY KEY 短语短语|FOREIGN KEY短语短语|CHECK短语短语An Introduction to Database System23例例10:建立学生登记表:建立学生登记表Student,要求学号在,要求学号在

16、90 000至至99 999之间,姓名非空,年龄之间,姓名非空,年龄30, 性别只能是性别只能是男男或或女女。CREATE TABLE Student (Sno INT CONSTRAINT C1 CHECK (Sno BETWEEN 90000 AND 99999), Sname CHAR(8) CONSTRAINT C2 NOT NULL, Sage SMALLINT CONSTRAINT C3 CHECK (Sage =3000) );An Introduction to Database System252. 修改表中的完整性限制修改表中的完整性限制n用用ALTER TABLE 语句修改表中的完整语句修改表中的完整性限制性限制n例例12 去掉去掉例例10student表中对性别的表中对性别的限制。限制。n ALTER TABLE Studentn DROP CONSTRAINT C4;An Introduction to Da

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论