首页 理论教育 SQLServer数据库基础教程:关系完整性

SQLServer数据库基础教程:关系完整性

时间:2023-10-21 理论教育 版权反馈
【摘要】:关系模型的完整性规则是用来约束关系的,以保证数据库中数据的正确性和一致性。关系模型的完整性共有3类:实体完整性、参照完整性和用户定义的完整性。实体完整性和参照完整性是关系模型必须满足的完整性约束条件,将由关系数据库管理系统自动支持。相应地,关系模型中以主码作为唯一性标识。关系模型应提供定义和检验这类完整性机制,以便用统一的方法处理它们而不要由应用程序承担这一功能。

SQLServer数据库基础教程:关系完整性

关系模型的完整性规则是用来约束关系的,以保证数据库中数据的正确性和一致性。关系模型的完整性共有3类:实体完整性、参照完整性和用户定义的完整性。实体完整性和参照完整性是关系模型必须满足的完整性约束条件,将由关系数据库管理系统自动支持。

1.实体完整性

一个关系通常对应现实世界的一个实体集,例如学生关系对应于学生的集合。现实世界中的实体是可区分的,即它们具有某种唯一性标识。相应地,关系模型中以主码作为唯一性标识。主码中的属性即主属性不能取空值。所谓空值就是“不知道”或“无意义”的值。如果主属性取空值,就说明存在某个不可标识的实体,即存在不可区分的实体,这与现实世界的应用环境相矛盾,因此这个实体一定不是一个完整的实体。

实体完整性的规则:若属性A是关系R的主属性,则属性A不能取空值。

2.参照完整性

现实世界中的实体之间往往存在一定的联系,在关系模型中实体与实体的联系是用关系来描述的。参照完整性即是有关关系之间能否正确进行联系的规则。两个表能否正确进行联系,外码是关键

【例1-7】 两个实体学生和院系由以下两个关系表示,主码用下划线标明。

学生(学号、姓名、院系号)

院系(院系号、院系名)(www.xing528.com)

“院系号”是学生表的一个属性,但不是学生表的主码,“院系号”与院系表的主码相对应,则“院系号”是学生表的外码。学生表中某个属性的取值要参照院系表属性的取值。可以清楚地看到外码“院系号”是联系学生表和院系表的桥梁,两个关系进行联系就是通过外码实现的。

参照完整性规则:若属性(或属性组)F是基本关系R的外码,它与关系S的主码Ks相对应(关系R和S不一定是不同的关系),则对于R中每一个元组在F上的值必须为

●或者取空值(F的每个属性值均为空值)。

●或者等于S某个元组的主码值。

在例1-7中,关系“学生R(学号、姓名、院系号F)”和关系“院系S(院系号Ks、院系名)”中,学生关系的“院系号F”可以为空值,表示尚未给该学生分配院系;或者非空值,但必须是院系关系中某个元组的“院系号Ks”属性的值,表示不能把学生分到一个根本不存在的院系。即被参照关系“院系”中一定存在一个元组,它的主码值等于参照关系“学生”中的外码值。

3.用户定义的完整性

用户定义的完整性则是针对某一具体数据库的约束条件,由应用环境决定,它反映了某一具体应用所涉及的数据必须满足的语义要求。例如,成绩的取值用户会定义在0~100之间。关系模型应提供定义和检验这类完整性机制,以便用统一的方法处理它们而不要由应用程序承担这一功能。

在实际系统中,这类完整性规则一般在建立库表的同时进行定义,应用编程人员不需再考虑。如果某些约束条件没有建立在库表一级,则应用编程人员应在各模块的具体编程中通过程序进行检验和控制。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈