数据库系统概论——关系模型(关系完整性约束)

本文详细介绍了数据库的两类完整性约束——实体完整性和参照完整性。实体完整性规定主属性不能取空值,确保数据的准确性;参照完整性则涉及不同关系间的引用,通过外码确保引用的有效性。此外,还提到了用户定义的完整性,允许根据具体应用设置额外的约束条件。外码是实现参照完整性的关键,其取值必须符合参照关系的主码。这些完整性规则对于保持数据库的一致性和正确性至关重要。
摘要由CSDN通过智能技术生成

关系的三类完整性约束

1.【实体完整性】
2.【参照完整性】
3.【用户定义的完整性】

实体完整性和参照完整性

关系模型必须满足的完整性约束条件称为关系的两个[不变性],应该由关系系统自动支持

实体完整性(Entity lntegrity)

1.关系的主属性不能取 空值
2.空值 就是“不知道”或“不存在”或“无意义”的 值
	例:
	  选修(学号,课程号,成绩)
	  “学号、课程号”为主码
	  “学号”和“课程号”两个属性都不能取空值

补充:

(1)实体完整性规则是针对基本关系而言的。
     一个基本表通常对应现实世界的一个实体集。
(2)现实世界中的实体是可区分的,即它们具有某种唯一性标识。
(3)关系模型中以主码作为唯一性标识。
(4)主码中的属性即主属性不能取空值。
     主属性取空值,就说明存在某个不可标记的实体,即存在不可区分的实体,
     这与第(2)点矛盾,因此这个规则称为实体完整性。

参照完整性

关系与关系之间的联系
参照完整性(关系间的引用)
在关系模型中实体及实体间的联系都是用关系来描述的,存在着关系与关系间的引用
	就是说:它是通过关系的属性的值来关联不同的实体的

在这里插入图片描述
学生关系中有“专业号”这一属性,而专业关系中也有“专业号”这一属性
所以我们需要一种机制来描述: 学生关系与专业关系之间在[专业号]上存在的约束关系
在这里插入图片描述
相比与[年龄]、[性别]这一类属性,[专业号]的取值有一定的约束条件(“专业号”的取值必须存在于【专业关系】的[专业号]中)

这样描述【学生关系】和【专业关系】两者之间通过[专业号]建立的这种引用关系
我们就称为【参照完整性】

咱们再看两个例子:
在这里插入图片描述
【选修关系】中的 [学号] 和 [课程号] 的 取值 就要分别参照【学生关系】中的 [学号]和【课程关系】中的 [课程号]
在这里插入图片描述

外码(Foreign Key)

在这里插入图片描述
**注意:**外码的取值必须满足参照完整性
所以在刚刚的例子中
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(1)关系R和S不一定是不同的关系
(2)目标关系S的主码Ks和参照关系的外码F必须定义在同一个(或一组)域上
(3)外码并不一定要与相应的主码同名
	当外码与相应的主码属于不同关系时,往往取相同的名字,以便于识别
(4)外码可以为空值
参照完整性(参照完整性规则)

在这里插入图片描述
例子:
在这里插入图片描述

用户定义的完整性

针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求

关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理他们,而不需要由应用程序承担这一功能

应用领域需要遵循的约束条件,体现了具体领域中的语义约束

在这里插入图片描述

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值