<p>上次去面试程序员,笔试有一题问道:“关系数据库的关系完整性约束分别是什么,怎样实现?”,我自以为对数据库非常熟悉,但是这个问题我回答得不好。回来后查了资料,在这里补上,以提醒自己。</p>
关系的完整性主要包括域完整性、实体完整性和参照完整性三种。
1.域完整性
域完整性是对数据表中字段属性的约束,它包括字段的值域、字段的类型及字段的有效规则等约束,它是由确定关系结构时所定义的字段的属性决定的。
2.实体完整性
实体完整性是对关系中的记录唯一性,也就是主键的约束。准确地说,实体完整性是指关系中的主属性值不能为Null且不能有相同值。
3.参照完整性
参照完整性是对关系数据库中建立关联关系的数据表间数据参照引用的约束,也就是对外键的约束。准确地说,参照完整性是指关系中的外键必须是另一个关系的主键有效值,或者是NULL。
实现这几种约束的方法包括:
- 主键约束
- 外键约束
- 唯一约束(也称为替换键)
- CHECK 约束
- DEFAULT 约束
- 规则
- 默认值(和DEFAULT 约束类似)