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

下载本文档

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

文档简介

1、华东交通大学信息工程学院数据库系统导论,数据库系统导论第五章数据库完整性,数据库系统导论,数据库完整性,数据库完整性,数据正确性和兼容性,数据完整性和安全性是两个不同的概念。数据的完整性防止数据库中存在不符合语义的数据,即防止数据库中存在不正确的数据防止对象:不符合语义和不正确数据的数据的安全性保护数据库免受恶意破坏和非法访问防止对象:非法用户和非法操作。数据库系统导论,数据库完整性(续),为了保持数据库的完整性,数据库管理系统必须:1。提供定义完整性约束的机制;2.提供完整性检查方法;3.处理违约;数据库系统简介,第5章,数据库完整性,5.1实体完整性,5.2引用完整性,5.3用户定义的完整

2、性,5.4完整性约束命名句*5.5域中的完整性约束,5.6触发器,5.7摘要,数据库系统简介,5.1.1实体完整性定义,在关系模型的实体完整性CREATE TABLE中,有两种解释方法来定义由带有主键的单个属性组成的代码,它们被定义为列级约束和表级约束。 并且只有一种解释方法被定义为表级约束,数据库系统简介,实体完整性定义(续),示例1将学生表中的Sno属性定义为代码:(1)在列级定义主代码创建表学生(snochar (9)主键,Sname CHAR(20)不为空,Ssex CHAR(2),Sage SMALLINT,Sdept CHAR(20);数据库系统简介,实体完整性定义(续),(2)在

3、表级定义主代码CREATE TABLE Student (Sno CHAR(9),Sname CHAR(20) NOT NULL,Ssex CHAR(2),sage slim,Sdept CHAR(20),主键(Sno);数据库系统简介,实体完整性定义(续),示例2将SC表中的SnO和Cno属性组定义为代码创建表SC (SnO char (9)不为空,Cno CHAR(4)不为空,等级小整数,主键(Sno,Cno) /*只能在表级别定义主代码*/);数据库系统简介,5.1实体完整性,5.1.1实体完整性定义5.1.2实体完整性检查和默认处理,数据库系统简介,5.1.2实体完整性检查和默认处理,

4、RDBMS在插入或更新主代码列时根据实体完整性规则自动检查。包括:1 .检查主代码的值是否唯一,如果不唯一,则拒绝插入或修改;2.检查主代码的所有属性是否为空,如果一个属性为空,则拒绝插入或修改;5.2.1引用完整性的定义,关系模型的引用完整性定义使用外键短语来定义创建表中的哪些列是外键,并使用引用短语来指示这些外键引用的是哪个表的主代码。数据库系统导论,参照完整性定义(续),例如,一个元组在关系SC中表示学生完成了某门课程,并且(Sno,Cno)是主要代码。Sno和Cno分别引用参考学生表的主代码和课程表的主代码示例3来定义供应链中的参考完整性。创建表sc (snochar (9)不为空,C

5、no CHAR(4)不为空,Grade SMALLINT,PRIMARY KEY (Sno,Cno),/*在表级定义实体完整性*/外键(Sno)引用学生(SnO),/*在表级定义引用完整性*/外键(Cno)引用课程(cno)/*在表级定义引用完整性*/);数据库系统简介,5.2参照完整性,5.2.1参照完整性定义5.2.2参照完整性检查和默认处理,数据库系统简介,参照完整性检查和默认处理,可能损坏参照完整性和默认处理的情况,数据库系统简介,默认处理,参照完整性默认处理1。没有执行默认策略2的操作。CASCADE操作3。为参照完整性,除了定义外部代码外,还应该定义外部代码列是否允许空值。数据库系

6、统简介,默认处理(续),示例4默认处理的示例明确说明了引用完整性创建表sc (snochar (9)不为空,Cno CHAR(4)不为空,Grade SMALLINT,PRIMARY KEY(Sno,Cno),外键(Sno)在删除级联时引用学生(Sno/*级联删除sc表中的相应元组*/在更新级联时, /*在causes中更新sc表中的相应元组*/外键引用课程(cno)在删除时无操作/*在删除课程表中的元组时拒绝删除导致与SC表不一致*/在UPDATE CASCADE中/在causes中更新课程表中的cno时在causes中更新SC表中的相应元组*/);数据库系统介绍,5.3用户定义的完整性,5

7、.3.1属性约束的定义,5.3.2属性约束检查和默认处理,5.3.3元组约束的定义和5.3.4元组约束检查和默认处理。数据库系统简介,5.3.1属性约束的定义,创建表时定义列值(非空),列值是唯一的(检查列值是否满足布尔表达式(检查)默认约束(默认),数据库系统简介,属性约束的定义(续),1。不允许空值。示例5定义供应链表时,它显示不允许Sno、Cno和等级属性采用空值。创建表sc (snochar (9)不为空,Cno CHAR(4)不为空,Grade SMALLINT不为空,PRIMARY KEY (Sno,Cno),/*如果实体完整性是在表级别定义的,这意味着Sno和Cno不允许空值,则

8、没有必要在列级别编写空值的定义*/);数据库系统导论,属性约束的定义(续),2。列值的唯一示例6。要创建部门表DEPT,要求部门名称Dname列的值是唯一的,部门编号Deptno列是主要代码Create Table dept (deptno数字(2)。Dname CHAR(9) UNIQUE,/*要求Dname列值是唯一的*/Location CHAR(10),主键(dept no);数据库系统导论,属性约束条件的定义(续),3。用CHECK短语指定列值应满足的条件。例7:学生表的第十栏只允许“男性”或“女性”。创建学生表(snochar (9)主键,Sname CHAR(8)不为空,Ssex

9、 CHAR(2) CHECK (Ssex IN),/*性别属性Ssex只能接受男性或女性*/sage slim,Sdept CHAR(20);数据库系统简介,例如,要建立一个SC表,将Score的值范围定义为0100创建表sc (snochar (5),cnochar (5),分数数字(4,1)检查(score=0,score=100),数据库系统简介,以及4。例如,DEFAULT用完整性定义建立一个学生表。创建表(snochar (6)主键,snchar (8)不为空,sexchar (2)默认男性,年龄内部检查(年龄在15到50之间),deptchar (10),数据库系统简介,5.3.2

10、约束检查和属性的默认处理,当插入元组或修改属性值时,RDBMS检查属性约束是否满足,如果不满足,操作被拒绝,数据库系统简介,5.4完整性约束命名子句, 约束约束主键短语|外键短语|检查短语,数据库系统简介,完整性约束命名条款(续),示例10:建立学生登记表,要求学生编号在900009999之间,姓名不能为空,年龄小于30岁,性别只能为“男”或“女”。 创建表学生(Sno数字(6)约束C1检查(Sno介于90000和99999之间),Sname CHAR(20)约束C2不为空,Sage数字(3)约束C3检查(sage 30),ssexchar (2)约束C4检查(ssex in),约束学生键主键(SnO);在学生表中建立了五个约束,包括主代码约束(名为StudentKey)和四个列级约束:C1、C2、C3和C4。数据库系统导论,完整性约束的命名条款(续),2。使用ALTER TABLE语句修改表中的完整性约束,数据库系统简介,完整性约束的命名子句(续),示例13修改表学生中的约束,要求学生编号在900099999之间更改,年龄从小于30更改为小于40。您可以先删除原始约束,然后添加一个新的约束更改表学生删除构造C1;更改表格学生添加约束C1检查(斯诺在9

温馨提示

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

评论

0/150

提交评论