




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
AnIntroductiontoDatabaseSystem数据库系统原理AnIntroductiontoDatabaseSystem第五章数据库完整性AnIntroductiontoDatabaseSystem综合统一(操纵三级模式)SQL视图1视图2基表1基表2基表3基表4存储文件1存储文件2外模式模式内模式数据安全数据完整性AnIntroductiontoDatabaseSystem什么是数据库的完整性?数据的正确性和相容性防止不合语义的数据进入数据库。例:学生的年龄必须是整数,取值范围为14--29;学生的性别只能是男或女;学生的学号一定是唯一的;学生所在的系必须是学校开设的系;完整性:是否真实地反映现实世界AnIntroductiontoDatabaseSystem什么是完整性控制机制?1.完整性约束条件定义机制2.完整性检查机制3.违约处理AnIntroductiontoDatabaseSystem1.完整性约束条件定义完整性约束条件:数据模型的组成部分,约束数据库中数据的语义DBMS应提供定义数据库完整性约束条件,并把它们作为模式的一部分存入数据库中由SQL的DDL语句实现AnIntroductiontoDatabaseSystem2。完整性检查机制检查用户发出的操作请求是否违背了完整性约束条件在INSERT、UPDATE、DELETE语句执行时进行检查AnIntroductiontoDatabaseSystem3。违约处理如果发现用户的操作请求使数据违背了完整性约束条件,则采取一定的动作来保证数据的完整性。拒绝(NOACTION)、级连(CASCADE)AnIntroductiontoDatabaseSystem1.完整性约束条件作用的对象列:对属性的取值类型、范围、精度等的约束条件元组:对元组中各个属性列间的联系的约束关系:对若干元组间、关系集合上以及关系之间的联系的约束AnIntroductiontoDatabaseSystem2.完整性约束条件分类静态对静态对象的约束是反映数据库状态合理性的约束动态对动态对象的约束是反映数据库状态变迁的约束AnIntroductiontoDatabaseSystem第五章数据库完整性5.1实体完整性5.2参照完整性5.3用户自定义完整性5.4触发器AnIntroductiontoDatabaseSystem实体完整性定义实体完整性:实体完整性规则(EntityIntegrity)若属性A是基本关系R的主属性,则属性A不能取空值AnIntroductiontoDatabaseSystem实体完整性实现在CREATETABLE语句中提供了PRIMARYKEY子句,供用户在建表时指定关系的主码列。在列级使用PRIMARYKEY子句在表级使用PRIMARYKEY子句
AnIntroductiontoDatabaseSystem例1:在学生选课数据库中,要定义Student表的Sno属性为主码实体完整性实现CREATETABLEStudent(SnoCHAR(5)primarykey,SnameVARCHAR(10),SsexCHAR(2),SageINT,SdeptCHAR(2));
AnIntroductiontoDatabaseSystem例2:要在SC表中定义(Sno,Cno)为主码实体完整性实现CREATETABLESC(SnoCHAR(5),CnoCHAR(1),GradeINT,primarykey(Sno,Cno));AnIntroductiontoDatabaseSystem用户程序对主码列进行更新操作时,系统自动进行完整性检查违约操作使主属性值为空值的操作使主码值在表中不唯一的操作违约反应系统拒绝此操作,从而保证了实体完整性实体完整性实现AnIntroductiontoDatabaseSystem第五章数据库完整性5.1实体完整性5.2参照完整性5.3用户自定义完整性5.4触发器AnIntroductiontoDatabaseSystem参照完整性规则参照完整性:若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:或者取空值(F的每个属性值均为空值)或者等于S中某个元组的主码值。AnIntroductiontoDatabaseSystem参照完整性执行例:职工-部门数据库包含职工表EMP和部门表DEPT1)DEPT关系的主码为部门号Deptno2)EMP关系的主码为职工号Empno,外码为部门号Deptno称DEPT为被参照关系或目标关系,EMP为参照关系
RDBMS执行参照完整性时需要考虑以下4方面:AnIntroductiontoDatabaseSystem
1。外码是否可以接受空值的问题外码是否能够取空值:依赖于应用环境的语义实现参照完整性:系统提供定义外码的机制定义外码列是否允许空值的机制AnIntroductiontoDatabaseSystem1.外码是否可以接受空值的问题(续)例1:在职工-部门数据库中,EMP关系包含有外码Deptno某元组的这一列若为空值,表示这个职工尚未分配到任何具体的部门工作和应用环境的语义是相符AnIntroductiontoDatabaseSystem1。外码是否可以接受空值的问题(续)例2:学生-选课数据库
Student关系为被参照关系,其主码为Sno。SC为参照关系,外码为Sno。若SC的Sno为空值:表明尚不存在的某个学生,或者某个不知学号的学生,选修了某门课程,其成绩记录在Grade中,与学校的应用环境是不相符的,因此SC的Sno列不能取空值。AnIntroductiontoDatabaseSystem2。在被参照关系中删除元组时的问题出现违约操作的情形:
删除被参照关系的某个元组(student)而参照关系有若干元组(SC)的外码值与被删除的被参照关系的主码值相同AnIntroductiontoDatabaseSystem2。在被参照关系中删除元组时的问题(续)违约反应:可有三种策略受限删除(NOACTION)级联删除(CASCADE)置空值删除(NULLIFIES) 这三种处理方法,哪一种是正确的,要依应用环境的语义来定AnIntroductiontoDatabaseSystem2。在被参照关系中删除元组时的问题(续)受限删除当参照关系中没有任何元组的外码值与要删除的被参照关系的元组的主码值相对应时,系统才执行删除操作,否则拒绝此删除操作CREATETABLESC(SnoCHAR(5)foreignkeyreferencesStudent(Sno),CnoCHAR(1),GradeINT);AnIntroductiontoDatabaseSystem2。在被参照关系中删除元组时的问题(续)级联删除将参照关系中外码值与被参照关系中要删除元组主码值相对应的元组一起删除CREATETABLESC(SnoCHAR(5)foreignkeyreferencesStudent(Sno)ONDELETECASCADE,CnoCHAR(1),GradeINT);AnIntroductiontoDatabaseSystem2。在被参照关系中删除元组时的问题(续)置空值删除删除被参照关系的元组,并将参照关系中与被参照关系中被删除元组主码值相等的外码值置为空值。AnIntroductiontoDatabaseSystem3。在参照关系中插入元组时的问题出现违约操作的情形需要在参照关系中插入元组,而被参照关系不存在相应的元组违约反应受限插入递归插入
AnIntroductiontoDatabaseSystem3。在参照关系中插入元组时的问题(续)受限插入仅当被参照关系中存在相应的元组,其主码值与参照关系插入元组的外码值相同时,系统才执行插入操作,否则拒绝此操作。递归插入首先向被参照关系中插入相应的元组,其主码值等于参照关系插入元组的外码值,然后向参照关系插入元组。AnIntroductiontoDatabaseSystem3。在参照关系中插入元组时的问题(续)例:向SC关系插入(99001,1,90)元组,而Student关系中尚没有Sno=99001的学生受限插入:系统将拒绝向SC关系插入(99001,1,90)元组递归插入:系统将首先向Student关系插入Sno=99001的元组,然后向SC关系插入(99001,1,90)元组。AnIntroductiontoDatabaseSystem结论:参照完整性的执行RDBMS在执行参照完整性时:需要向用户提供定义主码、外码的机制向用户提供按照自己的应用要求选择处理依赖关系中对应的元组的方法AnIntroductiontoDatabaseSystem第五章数据库完整性5.1实体完整性5.2参照完整性5.3用户自定义完整性5.4触发器AnIntroductiontoDatabaseSystem用户定义的完整性1.用CREATETABLE语句在建表时定义用户完整性约束可定义三类完整性约束列值非空(NOTNULL短语)列值唯一(UNIQUE短语)检查列值是否满足一个布尔表达式(CHECK短语)AnIntroductiontoDatabaseSystem用户定义的完整性约束命名Constraint<约束名>[Primarykey…|ForeignKey…|Check
…]AnIntroductiontoDatabaseSystem用户定义的完整性修改约束AlterTable<表名>
Add|DropConstraint<约束名>AnIntroductiontoDatabaseSystem第五章数据库完整性5.1实体完整性5.2参照完整性5.3用户自定义完整性5.4触发器AnIntroductiontoDatabaseSystem触发器通过触发器来定义复杂的完整性规则定义其它的完整性约束时,需要用数据库触发器(Trigger)来实现。数据库触发器:一类靠事务驱动的特殊过程一旦由某个用户定义,任何用户对该数据的增、删、改操作均由服务器自动激活相应的触发子,在核心层进行集中的完整性控制定义数据库触发器的语句
AnIntroductiontoDatabaseSystem触发器CREATETRIGGER<触发器名>ON<表名>FOR{INSERT|DELETE|UPDATE}AS<触发动作体>删除DROPTRIGGER<触发器名>AnIntroductiontoDatabaseSystem触发器例.计算机系学生成绩不低于60分,低于60分自动赋为60分CreateTriggerchggradeonSCforinsertasupdateSCsetgrade=60whereexists(select*frominsertedwhereinserted.Sno=SC.Snoandinserted.Cno=SC.Cnoandinserted.grade<60)AnIntroductiontoDatabas
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 施工顶管工程施工合同
- 建筑工地安全事故预防措施与应急方案
- 苏教版数学教学计划优化方案
- 2025-2030年中国工业网络电表行业深度研究分析报告
- 2025-2030年中国CDMA商务电话机行业深度研究分析报告
- 体育产业智慧场馆运营与服务升级方案
- 家居软装店创业方案计划书
- 家政服务员实习与就业指导方案
- 城市基础设施机电安装施工方案
- 企业田径团建活动方案
- 《小米市场营销策略》课件
- 2025年湖南高尔夫旅游职业学院单招职业技能测试题库附答案
- 2025年湖南大众传媒职业技术学院单招职业技能测试题库新版
- 北京房屋租赁合同电子版7篇
- 《园林机械使用与维修》课件-任务3.园林养护机械
- 项目式学习在小学数学教学中的应用
- 2024年05月山东威海市商业银行科技类社会招考笔试历年参考题库附带答案详解
- 2025中智集团下属单位公开招聘41人高频重点提升(共500题)附带答案详解
- 中医理疗馆路演
- 产后腹直肌分离治疗
- 【责任清单】医院系统纪检监察责任清单
评论
0/150
提交评论