【数据库系统概论】关系数据库中的关系完整性

  • 前言
  • 实体完整性
  • 参照完整性
  • 用户定义的完整性
  • SQL Server中常用的完整性约束
  • 感谢

前言

按照数据模型的三大要素,关系模型由关系数据结构、关系操作集合和关系完整性约束三部分组成。本篇文章将介绍这三部分内容中的第三部分即关系完整性。关于前两部分可以参考下面的文章:【数据库系统概论】关系数据库中的关系数据结构、【数据库系统概论】关系数据库中的关系操作。关于数据模型,可以参考这篇文章:【数据库系统概论】数据模型。

关系完整性是由一组完整性规则来定义的。完整性规则是对关系的某种约束条件。关系模型中有三类完整性:实体完整性、参照完整性和用户定义的完整性。其中实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称作是关系的两个不变性

下面分别来介绍这三类完整性。

实体完整性

  • 实体完整性规则:若属性A(指一个或一组属性)是基本关系R的主属性,则属性A不能取空值。

所以实体完整性定义了主码的取值规则,即主码必须唯一且非空。一旦我们设置了主码,DBMS就会自动认为主码唯一且非空。

参照完整性

  • 参照完整性规则:若属性(或属性组)F 是关系R 的外码,它与关系S 的主码相对应(关系R 和S不一定是不同的关系),则对于R 中的每个元组在F 上的值要么等于S 中某个元组的主码值,要么取空值。

外码是什么呢?假如这里有两个关系:学生(学号,姓名,性别,年龄,专业号)和 专业(专业号,专业名)。“专业号”是专业表的主码但不是学生表的主码,那么“专业号”对学生表来说就是外码。按照参照完整性规则,学生关系中每个元组的“专业号”属性只能取下面两类值:

  • 空值,表示尚未给该学生分配专业。
  • 非空值,这时该值必须是专业关系中某个元组的“专业号”值,即该学生不可能分配到一个不存在的专业中,也即被参照关系“专业”中一定存在一个元组,它的主码值等于该参照关系“学生”中的外码值。

用户定义的完整性

用户定义的完整性反映了数据必须满足的现实语义要求。例如,在学生关系中,若按照应用的要求学生不能没有名字,则可以定义学生姓名不能取空值;某个属性(如学生的成绩)的取值范围可以定义在0~100之间等。
关系模型应该提供定义和检验这类完整性的机制,以便使用统一的系统方法处理它们而不需要由应用程序承担这一功能。
在早期的关系数据库管理系统中没有提供定义和检验这些完整性的机制,因此需要由应用开发人员在应用系统的程序中进行检查。例如在关于学生成绩,需要在应用程序中对输入的成绩进行判断,看是否在0~100之间,如果在就插入这条记录,如果不在则给出错误信息。

SQL Server中常用的完整性约束

  • 主码约束:PRIMARY KEY
  • 唯一性约束:UNIQUE
  • 非空值约束:NOT NULL
  • 参照完整性约束(外码约束):FOREIGN KEY......REFERENCES
  • 检查约束:CHIECK()
  • 默认值约束:DEFAULT

感谢

好啦,这次的分享就到这里,感谢大家看到这里

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