数据库系统概论之数据库完整性35958.pptx





《数据库系统概论之数据库完整性35958.pptx》由会员分享,可在线阅读,更多相关《数据库系统概论之数据库完整性35958.pptx(67页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、中国地质大学信息工程学院中国地质大学信息工程学院数据库系统概论数据库系统概论An Introduction to Database System第五章第五章 数据库完整性数据库完整性5/12/20231什么是数据库的完整性什么是数据库的完整性数据的正确性和相容性数据的正确性和相容性防止不合语义的数据进入数据库。防止不合语义的数据进入数据库。关注关注 是否真实地反映现实世界是否真实地反映现实世界例例:学生的年龄必须是整数,取值范围为学生的年龄必须是整数,取值范围为14-29;学生的性别只能是男或女;学生的性别只能是男或女;学生的学号一定是唯一的;学生的学号一定是唯一的;学生所在的系必须是学校开设
2、的系;学生所在的系必须是学校开设的系;提纲提纲5.1 实体完整性实体完整性5.2 参照完整性参照完整性5.3 用户定义完整性用户定义完整性5.4 完整性约束命名子句完整性约束命名子句5.5 触发器触发器5/12/20232数据库的完整性与安全性数据库的完整性与安全性区别和联系区别和联系n两个不同的概念两个不同的概念,但有一定的联系但有一定的联系;前者是为了防止数据库中存在不符合语义的数据前者是为了防止数据库中存在不符合语义的数据,防止错误信息防止错误信息的输入和输出的输入和输出,既所谓的垃圾进垃圾出既所谓的垃圾进垃圾出(Garbage in Garbage out)所造成的无效操作和错误结果所
3、造成的无效操作和错误结果;后者是保护数据库防止恶意的破坏和非法存取后者是保护数据库防止恶意的破坏和非法存取;安全性措施防范的对象是非法用户安全性措施防范的对象是非法用户,完整性措施的防范对象是不完整性措施的防范对象是不合语义的数据合语义的数据.n完整性控制机制完整性控制机制1.完整性约束条件定义机制完整性约束条件定义机制2.完整性检查机制完整性检查机制3.违约处理违约处理5/12/20233完整性约束条件定义完整性约束条件定义完整性约束条件:数据模型的组成部分约束数据库中完整性约束条件:数据模型的组成部分约束数据库中数据的语义数据的语义DBMS应提供定义数据库完整性约束条件,并把它们应提供定义
4、数据库完整性约束条件,并把它们作为模式的一部分存入数据库中作为模式的一部分存入数据库中5/12/20234完整性检查机制完整性检查机制检查用户发出的操作请求是否违背了完整性约束条件检查用户发出的操作请求是否违背了完整性约束条件 5/12/20235违约处理违约处理如果发现用户的操作请求使数据违背了完整性约束条如果发现用户的操作请求使数据违背了完整性约束条件,则采取一定的动作来保证数据的完整性。件,则采取一定的动作来保证数据的完整性。5/12/20236完整性约束条件完整性约束条件完整性约束条件作用的对象完整性约束条件作用的对象列:对属性的取值类型、范围、精度等的约束条件列:对属性的取值类型、范
5、围、精度等的约束条件元组:对元组中各个属性列间的联系的约束元组:对元组中各个属性列间的联系的约束关系:对若干元组间、关系集合上以及关系之间的联关系:对若干元组间、关系集合上以及关系之间的联系的约束系的约束5/12/20237完整性约束条件(续)完整性约束条件(续)静态静态对静态对象的约束是反映数据库状态对静态对象的约束是反映数据库状态合理性的约束合理性的约束动态动态对动态对象的约束是反映数据库状态对动态对象的约束是反映数据库状态变迁的约束变迁的约束5/12/20238完整性约束条件分类完整性约束条件分类六类完整性约束条件六类完整性约束条件 静态静态列级约束约束 静态静态元组约束约束 静态静态关
6、系约束约束 动态动态列级约束约束 动态动态元组约束约束 动态动态关系约束约束5/12/20239完整性约束条件(续)完整性约束条件(续)1.静态列级约束静态列级约束静态列级约束:对的取值域的说明静态列级约束:对的取值域的说明最常见、最简单、最容易实现的一类完整性约束最常见、最简单、最容易实现的一类完整性约束5/12/202310完整性约束条件(续)完整性约束条件(续)五类静态列级约束五类静态列级约束1)数据类型约束:数据的类型、长度、单位、精度等数据类型约束:数据的类型、长度、单位、精度等 例:学生姓名的数据类型为字符型,长度为例:学生姓名的数据类型为字符型,长度为82)对数据格式的约束对数据
7、格式的约束例:例:学号:前两位表示入学年份,后四位为顺序编号学号:前两位表示入学年份,后四位为顺序编号 日期:日期:YY.MM.DD。5/12/202311补充:补充:完整性约束条件(续)完整性约束条件(续)3)取值范围或取值集合的约束取值范围或取值集合的约束例:规定成绩的取值范围为例:规定成绩的取值范围为0-100 年龄的取值范围为年龄的取值范围为14-29 性别的取值集合为性别的取值集合为男男,女女4)对空值的约束对空值的约束 空值:未定义或未知的值空值:未定义或未知的值 空值:与零值和空格不同空值:与零值和空格不同 有的列允许空值,有的则不允许,如成绩可为空值有的列允许空值,有的则不允许
8、,如成绩可为空值5)其他约束其他约束例:关于列的排序说明,组合列等例:关于列的排序说明,组合列等5/12/202312补充:补充:完整性约束条件(续)完整性约束条件(续)2.静态元组约束静态元组约束 规定元组的各个列之间的约束关系规定元组的各个列之间的约束关系例:订货关系中发货量例:订货关系中发货量=700元元 静态元组约束只局限在元组上静态元组约束只局限在元组上 5/12/202313补充:补充:完整性约束条件(续)完整性约束条件(续)3.静态关系约束静态关系约束 关系的各个元组之间或若干关系之间存在的各种联系或约束关系的各个元组之间或若干关系之间存在的各种联系或约束 常见静态关系约束:常见
9、静态关系约束:1)实体完整性约束实体完整性约束2)参照完整性约束参照完整性约束3)函数依赖约束函数依赖约束4)统计约束统计约束5/12/202314统计约束统计约束定义某个字段值一个关系多个元组的统计值之间的约束关系定义某个字段值一个关系多个元组的统计值之间的约束关系例:职工平均工资的例:职工平均工资的2倍倍=部门经理的工资部门经理的工资=原来工资原来工资 年龄只能增长年龄只能增长5/12/202317完整性约束条件(续)完整性约束条件(续)5.动态元组约束动态元组约束 修改元组值修改元组值:各个字段之间要满足的约束条件各个字段之间要满足的约束条件例例:职工工资调整不得低于其原来工资职工工资调
10、整不得低于其原来工资+工龄工龄*1.55/12/202318完整性约束条件(续)完整性约束条件(续)6.动态关系约束动态关系约束 关系变化前后状态:限制条件关系变化前后状态:限制条件例:事务一致性、原子性等约束条件例:事务一致性、原子性等约束条件5/12/2023195.1 实体完整性实体完整性5.1.1 实体完整性定义实体完整性定义5.1.2 实体完整性检查和违约处理实体完整性检查和违约处理5/12/2023205.1.1 实体完整性定义实体完整性定义实体完整性(实体完整性(Entity IntegrityEntity Integrity)若属性若属性A A是基本关系是基本关系R R的主属性
11、,则属性的主属性,则属性A A不能取空值不能取空值例例SAP(SUPERVISORSAP(SUPERVISOR,SPECIALITYSPECIALITY,POSTGRADUATE)POSTGRADUATE)POSTGRADUATEPOSTGRADUATE属性为主码属性为主码(假设研究生不会重名),则其不能取空值(假设研究生不会重名),则其不能取空值5/12/2023215.1.1 实体完整性定义实体完整性定义关系模型必须遵守实体完整性规则的关系模型必须遵守实体完整性规则的原因原因(1)(1)实体完整性规则是针对基本关系而言的。实体完整性规则是针对基本关系而言的。(2)(2)一个基本表通常对应现
12、实世界的一个实体集或多对多联系。一个基本表通常对应现实世界的一个实体集或多对多联系。(2)(2)现现实实世世界界中中的的实实体体和和实实体体间间的的联联系系都都是是可可区区分分的的,即即它它们们具有某种唯一性标识。具有某种唯一性标识。(3)(3)关系模型中以主码作为唯一性标识。关系模型中以主码作为唯一性标识。(4)(4)主码中的属性即主属性不能取空值。主码中的属性即主属性不能取空值。空值就是空值就是“不知道不知道”或或“无意义无意义”的值。的值。主主属属性性取取空空值值,就就说说明明存存在在某某个个不不可可标标识识的的实实体体,即即存存在在不不可可区区分分的的实实体体,这这与与第第(2 2)点
13、点相相矛矛盾盾,因因此此这这个个规规则则称称为为实体完整性。实体完整性。5/12/2023225.1.1 实体完整性定义实体完整性定义关关 系系 模模 型型 的的 实实 体体 完完 整整 性性 在在 Create table 中中 用用 Primary Key定义。定义。对单属性的构成的码有两种说明方法:对单属性的构成的码有两种说明方法:定义为列级约束条件定义为列级约束条件表级约束条件表级约束条件对对多多个个属属性性构构成成的的码码只只有有一一种种说说明明方方法法,即即定定义义为为表表级级约束条件约束条件5/12/202323 例题例题11将将StudentStudent表中的表中的SnoSn
14、o属性定义为码。属性定义为码。Create table studentCreate table student (Sno char(9)primary key (Sno char(9)primary key,/*,/*在列级定义主码在列级定义主码*/*/Sname char(20)not null,Sname char(20)not null,Ssex char(2),Ssex char(2),Sage smallint,Sage smallint,Sdept char(20)Sdept char(20););5.1.1 实体完整性定义实体完整性定义5/12/2023245.1.1 实体完整性
15、定义实体完整性定义或者或者Create table student (sno char(9),Sname char(20)not null,Ssex char(2),Sage smallint,Sdept char(20),primary key(sno),/*在表级定义主码在表级定义主码*/);5/12/2023255.1.1 实体完整性定义实体完整性定义 例题例题2 2 将将SCSC表中的表中的Sno,CnoSno,Cno属性组定义为码属性组定义为码 Create table SC Create table SC (Sno char(9)not null,(Sno char(9)not n
16、ull,Cno char(4)not null,Cno char(4)not null,grade smallint,grade smallint,Primary key(Sno,Cno)Primary key(Sno,Cno),/*,/*只能在表级定义主码只能在表级定义主码*/*/);5/12/2023265.1.2 实体完整性检查和违约处理实体完整性检查和违约处理用用primary key primary key 短语定义了关系的主码后,短语定义了关系的主码后,每当应用程序对基本表插入一条记录或者对主码列进行每当应用程序对基本表插入一条记录或者对主码列进行更新操作时,更新操作时,RDBMS
17、RDBMS将自动检查:将自动检查:检查主码值是否唯一,如果不唯一则拒绝插入或修检查主码值是否唯一,如果不唯一则拒绝插入或修改。改。检查主码地各个属性是否为空,只要一个为空就拒检查主码地各个属性是否为空,只要一个为空就拒绝插入或修改绝插入或修改5/12/2023275.1.2 实体完整性检查和违约处理实体完整性检查和违约处理检查主码值是否唯一的方法(检查主码值是否唯一的方法(2种):种):全表扫描全表扫描keyif2if3if4if5ikey1f21f31f41f51key2f22f32f42f52key3f23f33f43f53.5/12/2023285.1.2 实体完整性检查和违约处理实体完
18、整性检查和违约处理全表扫描缺点:全表扫描缺点:耗时耗时5/12/2023295.1.2 实体完整性检查和违约处理实体完整性检查和违约处理第二种方法:建索引(如第二种方法:建索引(如B+树索引)树索引)255112 3066 7815 20 253 730 4168 69 71 7679 84 9351 54 65新插入记录的新插入记录的主码值主码值5/12/2023305.1.2 实体完整性检查和违约处理实体完整性检查和违约处理RDBMS核心一般都在主码上自动建立一个索引核心一般都在主码上自动建立一个索引通过索引查找基本表中是否存在新的主码值通过索引查找基本表中是否存在新的主码值 提高效率提高
19、效率5/12/2023315.2 参照完整性参照完整性5.2.1 参照完整性定义5.2.2 参照完整性检查和违约处5/12/2023325.2.1 参照完整性定义参照完整性定义关系模型的参照完整性在关系模型的参照完整性在Create tableCreate table中用中用foreign key foreign key 短语定义哪些列为外码。短语定义哪些列为外码。5/12/2023335.2.1 参照完整性定义参照完整性定义 例题例题3 3 定义定义SCSC中的参考完整性。中的参考完整性。Create table scCreate table sc (sno char(9)not null,
20、(sno char(9)not null,cno char(4)not null,cno char(4)not null,grade smallint,grade smallint,Primary key(sno,cno),/*Primary key(sno,cno),/*在表级定义实体完整性在表级定义实体完整性*/*/foreign key(sno)references student(sno foreign key(sno)references student(sno),/*),/*在表级定义在表级定义 参照完整性参照完整性*/*/foreign key(Cno)references st
21、udent(Cno foreign key(Cno)references student(Cno),/*),/*在表级定义在表级定义 参照完整性参照完整性*/*/);5/12/2023345.2.2 参照完整性检查和违约处理参照完整性将两个表中的相应元组联系起来后。参照完整性将两个表中的相应元组联系起来后。当进行增删操作时有可能破坏参照完整性,必须进行检查。当进行增删操作时有可能破坏参照完整性,必须进行检查。5/12/2023355.2.2 参照完整性检查和违约处理对对SC和和Students有有4种可能破坏参照完整性的情况:种可能破坏参照完整性的情况:SCSC表中增加一个表中增加一个元组,该
22、元组的元组,该元组的Sno 属性值在属性值在Students中找不到一个元组,其中找不到一个元组,其Sno属性的值与之相属性的值与之相等。等。修改修改SCSC表表中的一个元组,修改后该元组的中的一个元组,修改后该元组的Sno属性在属性在Students中找不到一个元组,其中找不到一个元组,其Sno属性值与之相等。属性值与之相等。从从StudentsStudents表中删除表中删除一个元组,造成一个元组,造成SC表中某些元组的表中某些元组的Sno属性值在属性值在Students中找不到一个元组,其中找不到一个元组,其Sno属属性值与之相等。性值与之相等。修改修改StudentsStudents表
23、表中的一个元组的中的一个元组的Sno属性,造成属性,造成SC表中表中某些元组的某些元组的Sno属性值在属性值在Students中找不到一个元组,中找不到一个元组,其其Sno属性值与之相等属性值与之相等5/12/202336表5.1 可能破坏参照完整性的情况及违约处理被参照表(被参照表(Students)参照表(例如参照表(例如SC)违约处理违约处理可能破坏参照完整性可能破坏参照完整性插入元组插入元组拒绝拒绝可能破坏参照完整性可能破坏参照完整性修改外码值修改外码值拒绝拒绝删除元组删除元组可能破坏参照完整性可能破坏参照完整性拒绝拒绝/级联删除级联删除/设置为空设置为空修改主码值修改主码值可能破坏参
24、照完整性可能破坏参照完整性拒绝拒绝/级联修改除级联修改除/设置为空设置为空5/12/202337处理策略处理策略1、拒绝(、拒绝(No action)执行)执行不允许该操作执行。该策略一般为默认策略。不允许该操作执行。该策略一般为默认策略。2、级联(、级联(Cascade)操作)操作当删除或修改被参照表当删除或修改被参照表(Students)的一个元组造成了与参照表的一个元组造成了与参照表(SC)的不一致,则删除或修改参照表中的所有造成不一致的元)的不一致,则删除或修改参照表中的所有造成不一致的元组。组。例如,删除例如,删除Students表中的元组,表中的元组,Sno值为值为20021512
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 系统 概论 完整性 35958

限制150内