首页 理论教育SQLServer关系完整性约束

SQLServer关系完整性约束

【摘要】:关系完整性约束用于保证关系模型(表)中数据的正确性、一致性和有效性,防止数据被破坏。若发现主键为空或已有相同主键值存在,将给出错误信息并要求用户纠正以保证数据的完整性。例如;在参照关系SC中插入数据时,检查SID的值是否在被参照关系Student的SID属性值中存在。在删除被参照关系Student的元组时,也要检查SID是否被参照关系SC引用,根据关系设置确定是否删除或者级联删除等从而避免该学生不存在,却还有该学生的选课情况。

关系完整性约束用于保证关系模型(表)中数据的正确性、一致性和有效性,防止数据被破坏。关系完整性包括实体完整性、用户(含域)定义完整性和参照完整性3个方面。每种完整性都有完整性规则,需要用户在定义关系数据库时给出相应的定义。

1.实体完整性

在一个关系中,至少存在一个属性或属性组,取值应该是确定的,并且是互不相同的,称为主键,由此来唯一标识相应的实体。关系的主键不能取空值(Null)。

例如:在关系Student中,学号是主键,不能为空值。若发现主键为空或已有相同主键值存在,将给出错误信息并要求用户纠正以保证数据的完整性。

提示:空值不是0,也不是空字符串,而是没有值。

2.用户(含域)定义完整性(www.chuimin.cn)

某个属性必须在给定域范围内取值,用属性取值满足某种条件或函数要求,包括对每个关系的取值限制(约束)的具体定义设置完整性。

例如:在关系Student中,进行插入操作更新数据时,检查性别取值是否为“男”或“女”,若不满足将拒绝输入,并给出错误提示信息,保证数据的正确性。

3.参照完整性

若一个关系R1中外键的取值要参照另一个关系R2中主键的取值,则称R1为参照关系、引用关系、子关系、子表等,称R2为被参照关系、被引用关系、父关系、父表等。

例如;在参照关系SC中插入数据时,检查SID的值是否在被参照关系Student的SID属性值中存在。若存在,则可执行插入操作,否则不能执行插入操作,从而避免无此学生却有该学生的选课情况。在删除被参照关系Student的元组时,也要检查SID是否被参照关系SC引用,根据关系设置确定是否删除或者级联删除等从而避免该学生不存在,却还有该学生的选课情况。同理,被参照关系Course采用类似操作。