完整性规则提供了一种手段来保证当授权用户对数据库做修改时不会破坏数据的一致性。 因此,完整性规则防止的是对数据的意外破坏。关系模型的完整性规则是对关系的某种约束条 件。例如,若某企业实验室管理员的基本薪资小于2000元,则可用完整性规则来进行约束。
关系的完整性约束共分为3类:实体完整性、参照完整性(也称引用完整性)和用户定义 完整性。
(1)实体完整性(Entity Integrity)。 实体完整性规则要求每个数据表都必须有主键,而作 为主键的所有字段,其属性必须是唯一且非空值。
(2)参照完整性(Referential Integrity)。 现实世界中的实体之间往往存在某种联系,在关 系模型中实体及实体间的联系是用关系来描述的,这样自然就存在着关系与关系间的引用。
参照完整性规定: 若F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关 系R 和S不一定是不同的关系),则对于R 中每个元组在F 上的值或者取空值(F的每个属性 值均为空值),或者等于S中某个元组的主码值。
例如,某企业员工Emp关系模式和部门Dept关系模式表示如下:
Emp(员工号,姓名,性别,参加工作时间,部门号)
Dept (部门号,名称,电话,负责人)
Emp和Dept关系存在着属性的引用,即员工关系中的“部门号”值必须是确实存在的部门 的部门号。按照关系的完整性规则,员工关系中的“部门号”属性取值要参照部门关系的“部 门号”属性取值。如果新入职的员工还未分配具体的部门,那么部门号取空值。
注意:本书若在关系模式主属性上加实下画线,通常表示该属性为主码属性; 如果在关系 模式属性上加虚下画线,通常表示该属性为外码属性。
(3)用户定义完整性(User Defined Integrity)。 就是针对某一具体的关系数据库的约束条 件,反映某一具体应用所涉及的数据必须满足的语义要求,由应用的环境决定。例如,银行的 用户账户规定必须大于等于100000,小于999999。