上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
1.2.3 完整性约束
为了满足业务对数据完整性的要求,关系模型定义了三种完整性约束:实体完整性、参照完整性以及用户定义的完整性。
● 实体完整性指的是表的主键字段不能为空。现实中的每个实体都具有唯一性,例如每个人都有唯一的身份证号。在关系型数据库中,这种唯一标识每行数据的字段被称为主键(Primary Key)。主键字段不能为空,每个表可以有且只能有一个主键。
● 参照完整性指的是外键的参照完整性,外键(Foreign Key)代表了两个表之间的关联关系。例如员工属于部门,因此员工表中存在一个部门编号字段,它引用了部门表中的部门编号字段。对于外键,被引用的数据必须存在,员工不可能属于一个不存在的部门;同时,我们在删除某个部门之前,也需要对部门中的员工进行相应的处理。
● 用户定义的完整性指的是用户基于业务需要自定义的一些约束条件。其中,非空约束(NOT NULL)确保了相应的字段不会出现空值,例如员工一定要有姓名。唯一约束(UNIQUE)用于确保字段中的值不会重复,例如每个员工的电子邮箱必须唯一。检查约束(CHECK)可以定义更多的业务规则,例如月薪必须大于0、电子邮箱地址必须大写等。默认值(DEFAULT)可以为字段提供默认的数据。
本书涉及的5种主流关系型数据库都实现了以上完整性约束。其中,MySQL 8.0版本开始支持检查约束,InnoDB和NDB存储引擎支持外键约束。