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

下载本文档

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

文档简介

数据库的完整性第1页,课件共17页,创作于2023年2月实体完整性:指主键的值不能为空或部分为空;如果主键为空或部分为空,则失去了主键的唯一标识性;用户自定义完整性:是针对具体应用环境,数据必须满足的语义要求。

注意:数据库的完整性与安全性的区别。数据库是否具备完整性关系到数据库系统能否真实地反映现实世界,因此维护数据库的完整性是非常重要的。第2页,课件共17页,创作于2023年2月为了维护数据库的完整性,DBMS必须提供如下功能:

1.定义功能:提供定义完整性约束条件的机制。

2.检查功能:检查用户发出的操作请求是否违背了完整性约束条件。完整性检查的时机:

(1)立即执行约束:在一条语句执行完后立即检查是否违背完整性约束。(2)延迟执行约束:有时完整性检查需要延迟到整个事务执行结束后再进行,检查正确方可提交,称这类约束为延迟执行约束。

3.违约处理:如果发现用户的操作请求使数据违背了完整性约束条件,则采取一定的操作,以保证数据的完整性。第3页,课件共17页,创作于2023年2月5.1静态约束与动态约束

完整性约束条件作用的对象可以是关系、元组、列三种。

列约束:主要是列的类型、取值范围、精度、排序等约束条件。

元组约束:是元组中各个字段间的联系的约束。

关系的约束:是若干元组间、关系集合上以及关系之间的联系的约束。

完整性约束条件涉及的这三类对象,其状态可以是静态的,也可以是动态的。

第4页,课件共17页,创作于2023年2月静态约束:指数据库每一确定状态时的数据对象所应满足的约束条件,它是反映数据库状态合理性的约束,这是最重要的一类完整性约束。动态约束:指数据库从一种状态转变为另一种状态时,新、旧值之间应满足的约束条件,它反映了数据库状态变迁的约束。第5页,课件共17页,创作于2023年2月静态列级约束

静态列级约束是对一个列的取值域的说明,这是最常用也最容易实现的一类完整性约束,包括以下几方面:1.对数据类型的约束(包括数据的类型、长度、单位、精度等)。2.对数据格式的约束例如,规定学号的前两位表示入学年份,中间两位表示系的编号,后三位为顺序编号。出生日期的格式为:YY.MM.DD。第6页,课件共17页,创作于2023年2月3.对取值范围或取值集合的约束例:规定学生成绩的取值范围为0~100,大学本科学生年龄的取值范围为14-29,性别的取值集合为[男,女]4.对空值的约束空值表示未定义或未知的值,它与零值和空格不同。有的列允许空值,有的则不允许。例如学生学号不能取空值,成绩可以为空值。第7页,课件共17页,创作于2023年2月二、静态元组约束:即规定元组的各个列之间的约束关系。例如订货关系中包含发货量、订货量等列,规定发货量不得超过订货量;又如教师关系中包含职称、工资等列,规定教授的工资不低于1000元。三、静态关系约束

在一个关系的各个元组之间或者若干关系之间常常存在各种联系或约束。常见的静态关系约束有:

(1)实体完整性约束。

(2)参照完整性约束。

(3)函数依赖约束。大部分函数依赖约束都在关系模式中定义。

(4)统计约束。即字段值与关系中多个元组的统计值之间的约束关系。

例如规定部门经理的工资不得高于本部门职工平均工资的5倍,不得低于本部门职工平均工资的2倍。本部门职工的平均工资是一个统计值。

第8页,课件共17页,创作于2023年2月四、动态列级约束:是修改列定义或列值时应满足的约束条件;

包括两方面:

(1)修改列定义时的约束

例:将允许空值的列改为不允许空值时,如果该列目前已存在空值,则拒绝这种修改。(2)修改列值时的约束:

修改列值有时需要参照其旧值,并且新旧值之间需要满足某种约束条件。例如,职工工资调整不得低于其原来工资,学生年龄只能增长等。五、动态元组约束:指修改元组值时,元组中各个字段间需要满足某种约束条件。例如职工工资调整时新工资不得低于原工资+工龄*1.5等。

第9页,课件共17页,创作于2023年2月5.2实体完整性的定义P1525.3参照完整性的定义P154第10页,课件共17页,创作于2023年2月实现参照完整性要考虑的几个问题P155表5.11.在被参照关系中删除元组的问题

当删除被参照关系的某个元组,而参照关系存在若干元组,其外码值与被参照关系删除元组的主码值相同,这时可有三种不同的策略:

(1)级联删除(CASCADES)

将参照关系中所有外码值与被参照关系中要删除元组主码值相同的元组一起删除。

(2)受限删除仅当参照关系中没有任何元组的外码值与被参照关系中要删除元组的主码值相同时,系统才执行删除操作,否则拒绝此删除操作。

(3)置空值删除删除被参照关系的元组,并将参照关系中相应元组的外码值置空值。第11页,课件共17页,创作于2023年2月

2.在参照关系中插入元组时的问题

当参照关系插入某个元组,而被参照关系不存在相应的元组,其主码值与参照关系插入元组的外码值相同,这时可有以下策略:

受限插入仅当被参照关系中存在相应的元组,其主码值与参照关系插入元组的外码值相同时,系统才执行插入操作,否则拒绝此操作。

第12页,课件共17页,创作于2023年2月3.修改被参照表主码值的问题

(1)不允许修改主码值在有些RDBMS中,不允许修改被参照表的主码值。

(2)允许级联修改或外码值置空在有些RDBMS中,允许修改关系主码,但必须保证主码值与对应外码值一致。第13页,课件共17页,创作于2023年2月4.外码是否允许空值的问题实现参照完整性时,系统除了应提供定义外码的机制,还应提供定义外码列是否允许空值的机制。

例:部门表与职工—部门表,职工—部门表中部门可取空值;但学生表与学生—选课表,学生—选课表不能取空值。第14页,课件共17页,创作于2023年2月5.4用户定义的完整性P156——P159

第15页,课件共17页,创作于2023年2月5.5用触发器实现数据的完整性1.触发器简介

触发器是定义在表或视图上的一类特殊的子程序,用于维护表中的数据,当有操作影响到触发器关联的数据时,触发器自动执行,例如:通过触发器维护多个表间数据的一致性。一般情况下,对表数据的操作有:插入、修改、删除,因而维护数据的触发器也可分为三种类型:INSERT、UPDATE和DELETE触发器。同一个表可定义多个触发器。2.SQLSERVER触发器应用举例3.Oracle触发器举例第16页,课件共17页

温馨提示

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

评论

0/150

提交评论