为什么要在数据库中制定数据库的完整性规则有哪几类

点击文档标签更多精品内容等伱发现~


VIP专享文档是百度文库认证用户/机构上传的专业性文档,文库VIP用户或购买VIP专享文档下载特权礼包的其他会员用户可用VIP专享文档下载特權免费下载VIP专享文档只要带有以下“VIP专享文档”标识的文档便是该类文档。

VIP免费文档是特定的一类共享文档会员用户可以免费随意获取,非会员用户需要消耗下载券/积分获取只要带有以下“VIP免费文档”标识的文档便是该类文档。

VIP专享8折文档是特定的一类付费文档会員用户可以通过设定价的8折获取,非会员用户需要原价获取只要带有以下“VIP专享8折优惠”标识的文档便是该类文档。

付费文档是百度文庫认证用户/机构上传的专业性文档需要文库用户支付人民币获取,具体价格由上传人自由设定只要带有以下“付费文档”标识的文档便是该类文档。

共享文档是百度文库用户免费上传的可与其他用户免费共享的文档具体共享方式由上传人自由设定。只要带有以下“共享文档”标识的文档便是该类文档

还剩37页未读, 继续阅读

   不管你用的是SQL Server 还是MySQL 它们都是关系型数据库那么既然是关系型数据库就要遵守“关系型数据库的完整性规则”

   关系型数据库提供了三类完整性规则,实体完整性规则参照完整性规则,用户自定义完成性规则;

在这三类完成性规则中呢其中实体完整性规则和参照性完整性规则是关系模型必须满足的完整性嘚约束条件称为关系完整性规则;

实体完整性规则是指关系的主属性(就是俗称主键的一些字段,主键的组成部分)不能为空值我们知道现实生活中的每一个实体都具有唯一性,即使是两台一摸一样的计算机呢都会有相应的生产日期来表示它们的唯一性,现实之中的實体是可以区分的它们具有某种唯一性标识,相应的关系模型中以主键作为唯一性标识主键中的属性即主属性不能是空值(“不知道”或“无意义”)的值,如果主属性为空值就说明存在不可标识的实体,即存在不可区分的实体这与现实的环境相矛盾,因此这个实體一定不是完整的实体;

   可能你看这段教条很枯燥甚至有些不明白,这样理解就简单了:咱们设计表的时候不是每条记录前面都有个自巳的ID吗并且每个ID不一样,它其实就是为了区分每条记录的不一样尽管你的其他字段的值都一样,只要ID不一样那么就是两条不一样的记錄就区分开了,就满足了实体完整性规则;

   指如果关系的外键R1和关系R2的主键相符那么外键的每个值必须在关系R2中主键的值中可以找到戓者是空值;


  其实就是如果说在两个有关联的数据表中,一个数据表的外键(Foreigon Key)一定在另一个数据表中的主键(Primary Key)中可以找到;咱们先看圖说话  大家先看一下图一和图二一张是角色表(Role),一张是用户表(User)你们会发现在用户User表里的每一个字段Role_ID的值都可以在Role表中的Role_ID字段Φ找到对吧;在看第三张图也就是图三,图三的最后一条记录中Role_ID的值为“7”在图一的Role表里的Role_ID里是找不到的所以说图三不符合参照完整性規则;

   是指某一具体的实际数据库的约束条件,由应用环境所决定反映某一具体应用所涉及的数据必须满足的要求(比如说一个人的年齡必须要大于零),根据现实生活中的一个实际情况用户定义的一个用户自定义完整性;

   比如你在设计表的时候有个年龄字段那么这个芓段里的值不能小于0吧,不能大于150吧还没人能活到150岁对吧。

且经常使用比如说,现在有两個表:

的而且经常使用。比如说现在有两个表:

这就是所谓的参照完整性,它是一个很普遍的概念1什么是数据库的完整性? DBMS的完整性孓系统的功能是什么?数据库的完整性是指数据的正确性和相容性。DBMS完整性子系统的功能是:(1)监督事务的执行并测试是否违反完整性规则;(2)如有违反,则采取恰当的操作如拒绝、报告违反情况,改正错误等方法进行处理2完整性规则由哪几个部分组成?关系数据库的完整性規则有哪几类?完整性规则由三部分组成:触发条件:即什么时候使用规则进行检查;约束条件:即要检查什么样的错误;ELSE子句:即查出错誤后该如何处理。 完整性规则有以下三类:域完整性规则用于定义属性的取值范围;域联系的规则,定义一个或多个关系中属性值间嘚联系、影响和约束。关系完整性规则定义更新操作对数据库中值的影响和限制。3试详述SQL中的完整性约束机制SQL中的完整性约束规则有主键约束、外键约束、属性值约束和全局约束等多种形式。△主键约束它是数据中最重要的一种约束。在关系中主键值不允许空也不尣许出现重复,体现了关系要满足实体完整性规则主键可用主键子句或主键短语进行定义。△外键约束根据参照完整性规则,依赖关系中外键或者为空值或者是基本关系(参照关系)中的该键的某个值。外键用外键关系子句定义并考虑删除基本关系元组或修改基本關系的主键值的影响,依赖关系可按需要采用RESTRICT、SET NULL、CASCADE方式△属性值约束。当要求某个属性的值不允许空值时那么可以在属性定义后加上關键字: NOT NULL ,这是非空值约束还可以用CHECK子句对一个属性值加以限制以及使用域约束子句CREATDOMAIN定义新域并加以属性值检查。△全局约束在关系萣义时,可以说明一些比较复杂的完整性约束这些约束涉及到多个属性间的联系或不同关系间的联系,称为全局约束主要有基于元组嘚检查子句和断言。前者是对单个关系的元组值加以约束后者则可对多个关系或聚合操作有关的完整性约束进行定义。4参照完整性规则茬SQL可以用哪几种方式实现?删除基本关系的元组时依赖关系可以采取的做法有哪三种?修改基本关系的主键值时,依赖关系可以采取的做法囿哪三种?参照完整性规则要求"不引用不存在的实体"参照完整性规则在SQL可用以下几种方式实现:(1)在SQL中采用外键子句定义外键,并考虑刪除基本关系元组或修改基本关系的主键值对依赖关系产生的影响;(2)在属性值上进行约束如基于属性的检查;(3)全局约束中的基於元组的检查子句等。删除基本关系元组或修改基本关系的主键值时依赖关系可以采用的做法有:△RESTRICT方式:只有当依赖关系中没有一个外键值与基本关系中要删除/修改的主键值相对应时,系统才能执行删除/修改操作否则拒绝删除或修改。△SET NULL方式:删除基本元组时将依賴关系中所有与基本关系中被删除主键值相对应的外键值置为空值。修改基本关系的主键值时将依赖关系中所有与基本关系中被修改主鍵值相对应的外键值置为空值。△CASCADE方式:若删除则将依赖关系中所有外键值与基本关系中要删除的主键值相对应的元组一并删除若修改則将依赖关系中所有与基本关系中要修改的主键值相对应的外键值一并修改为新值。5试对SQL2中的基于属性的检查约束、基于元组的检查约束囷断言三种完整性约束进行比较:各说明什么对象?何时激活?能保证数据库的一致性吗?约束形式说明对象激活条件是否保证一致性基于属性嘚检查只对一个属性值加以约束插入或修改属性值时不一定基于元组的检查对单个关系的元组值加以约束在插入或修改元组时不一定断言哆个关系或聚合操作任何变动保证6设教学数据库的模式如下:S(S#,SNAME,AGE,SEX)SC(S#,C#,GRADE)C(C#,CNAME,TEACHER)试用多种方式定义下列完整性约束:(1)在关系S中插入学生年龄值应在16~25岁之间(2)茬关系SC中插入元组时其S#值和C#值必须分别在S和C中出现。(3)在关系SC中修改GRADE值时必须仍在0~100之间。(4)在删除关系C中一个元组时首先要把关系SC中具有同样C#的元组全部删去。(5)在关系S中把某个S#值修改为新值时必须同时把关系SC中那些同样的S#值也修改为新值。(1)定义S时采用检查子句:CREAT

下载百度知道APP抢鲜体验

使用百度知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道的答案。

我要回帖

更多关于 数据库的完整性规则有哪几类 的文章

 

随机推荐