关系模型中的三类完整性约束:实体完整性、参照完整性和用户定义完整性

文章目录

  • 实体完整性
  • 参照完整性
  • 用户定义完整性

实体完整性

定义:若属性A是基本关系R的主属性,则属性A不能取空值(空值就是“不知道”或“不存在”或“无意义”的值)

	例:
		选修(学号,课程号,成绩)

		“学号、课程号”为主码

		“学号”和“课程号”两个属性都不能取空值

实体完整性规则的说明:

  • 实体完整性规则是针对基本关系而言的。 一个基本表通常对应现实世界的一个实体集。
  • 现实世界中的实体是可区分的,即它们具有某种唯一性标识。
  • 关系模型中以主码作为唯一性标识。
  • 主码中的属性即主属性不能取空值

主属性取空值,就说明存在某个不可标识的实体,即存在不可区分的实体,这与第(2)点相矛盾,因此这个规则称为实体完整性

参照完整性

定义:指如果属性(或属性组)F是关系R的外码,且对应了关系S的主码K(R和S可以是同一个关系),那么对于R中的每个元组中的F上的值,必须满足:
(1) 要么F取空值
(2) 要么等于S中某个元组的主码的值

	例:
		学生(学号,姓名)
		课程(课程号,课程名)
		选修(学号,课程号,成绩)

选修表中的学号就称为选修表的一个外码,它对应的是学生表中的学号。并且称选修关系为参照关系,而学生关系为被参照关系。显然,在选修关系中的学号,必须是学生表里真正存在的学号,且选修表里的课程号,也必须是课程表里真正存在的课程号。这就是参照完整性的一个典型表现了。

参照完整性规则的说明:

  • 关系R和S不一定是不同的关系
  • 目标关系S的主码Ks 和参照关系的外码F必须定义在同一个(或一组)域上
  • 外码并不一定要与相应的主码同名

用户定义完整性

任何关系型数据库,都一定要支持实体完整性和参照完整性。
但同时往往在不同的情况下,我们还需要一些特殊的约束条件,比如性别只能是男或女,年龄不能超过150岁等等。
这种针对某一具体关系数据库的约束条件称为用户定义的完整性,它反映某一具体应用所涉及的数据必须满足的语意要求。

Reference:
关系的三类完整性约束
数据库关系模型的三类完整性约束

你可能感兴趣的:(数据库,数据仓库)