欢迎来到.net学习网

欢迎联系站长一起更新本网站!QQ:879621940

您当前所在位置:首页 » 关系数据库基础教程 » 正文

关系模型的三类完整性规则

创建时间:2012年05月30日 10:34  阅读次数:(32247)
分享到:
1,实体完整性规则(entity integrity rule)
要求关系中元组在组成主键的属性上不能有空值。如果出现空值,那么主键值就起不了惟一标织元组的作用。

2,参照完整性规则(reference  integrity  rule)
参照完整性规则的形式定义如下:
如果属性集K是关系模式R1的主键,K也是关系模式R2的外键,那么在R2的关系中,K的取值只允许两种可能,或者为空值,或者等于R1关系中某个主键值。
这条规则的实质是“不允许引用不存在的实体”。
 在上述形式定义中,关系模式R1的关系称为“参照关系”,关系模式R2的关系称为“依赖关系”。“主表”和“副表”,“父表”和“子表”。 

下面各种情况说明了参照完整性规则在关系中如何实现的。
① 在关系数据库中有下列两个关系模式:
S(S#,SNAME,AGE,SEX)
SC(S#,C#,GRADE)
这里斜体者为主键,带波浪线者为外键。据规则要求关系SC中的S# 值应该在关系S中出现。如果关系SC中有一个元组(S7,C4,80),而学号S7却在关系S中找不到,那么我们就认为在关系SC中引用了一个不存在的学生实体,这就违反了参照完整性规则。
外,在关系SC中S# 不仅是外键,也是主键的一部分,因此这里S# 值不允许空。

②设工厂数据库中有两个关系模式:
DEPT(D#,DNAME)
EMP(E#,ENAME,SALARY,D#)
车间模式DEPT的属性为车间编号、车间名,职工模式EMP的属性为工号、姓名、工资、所在车间的编号。每个模式的主键与外键已标出。在EMP中,由于D# 不在主键中,因此D# 值允许空。

③ 设课程之间有先修、后继联系。模式如下:
R(C# ,CNAME,PC#)
其属性表示课程号、课程名、先修课的课程号。如果规定,每门课程的直接先修课只有一门,那么模式R的主键是C#,外键是PC#.。这里参照完整性在一个模式中实现(即同一个关系中不同元组之间的联系)。即每门课程的直接先修课必须在关系中出现。

3,用户定义的完整性规则
在建立关系模式时,对属性定义了数据类型,即使这样可能还满足不了用户的需求。此时,用户可以针对具体的数据约束,设置完整性规则,由系统来检验实施,以使用统一的方法处理它们,不再由应用程序承担这项工作。例如学生的年龄定义为两位整数,范围还太大,我们可以写如下规则把年龄限制在15~30岁之间:CHECK(AGE  BETWEEN  15  AND  30)
来源:.net学习网
说明:所有来源为 .net学习网的文章均为原创,如有转载,请在转载处标注本页地址,谢谢!
【编辑:Wyf】

打赏

取消

感谢您的支持,我会做的更好!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

最新评论

共有评论0条
  • 暂无任何评论,请留下您对本文章的看法,共同参入讨论!
发表评论:
留言人:
内  容:
请输入问题 58+21=? 的结果(结果是:79)
结  果: