按照数据模型的三大要素,关系模型由关系数据结构、关系操作集合和关系完整性约束三部分组成。本篇文章将介绍这三部分内容中的第三部分即关系完整性。关于前两部分可以参考下面的文章:【数据库系统概论】关系数据库中的关系数据结构、【数据库系统概论】关系数据库中的关系操作。关于数据模型,可以参考这篇文章:【数据库系统概论】数据模型。
关系完整性是由一组完整性规则来定义的。完整性规则是对关系的某种约束条件。关系模型中有三类完整性:实体完整性、参照完整性和用户定义的完整性。其中实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称作是关系的两个不变性。
下面分别来介绍这三类完整性。
所以实体完整性定义了主码的取值规则,即主码必须唯一且非空。一旦我们设置了主码,DBMS就会自动认为主码唯一且非空。
外码是什么呢?假如这里有两个关系:学生(学号,姓名,性别,年龄,专业号)和 专业(专业号,专业名)。“专业号”是专业表的主码但不是学生表的主码,那么“专业号”对学生表来说就是外码。按照参照完整性规则,学生关系中每个元组的“专业号”属性只能取下面两类值:
用户定义的完整性反映了数据必须满足的现实语义要求。例如,在学生关系中,若按照应用的要求学生不能没有名字,则可以定义学生姓名不能取空值;某个属性(如学生的成绩)的取值范围可以定义在0~100之间等。
关系模型应该提供定义和检验这类完整性的机制,以便使用统一的系统方法处理它们而不需要由应用程序承担这一功能。
在早期的关系数据库管理系统中没有提供定义和检验这些完整性的机制,因此需要由应用开发人员在应用系统的程序中进行检查。例如在关于学生成绩,需要在应用程序中对输入的成绩进行判断,看是否在0~100之间,如果在就插入这条记录,如果不在则给出错误信息。
PRIMARY KEY
UNIQUE
NOT NULL
FOREIGN KEY......REFERENCES
CHIECK()
DEFAULT
好啦,这次的分享就到这里,感谢大家看到这里