首页 理论教育 关系模型的完整性约束及优化

关系模型的完整性约束及优化

时间:2023-10-21 理论教育 版权反馈
【摘要】:在一组完整的数据中存在一种约束规则,该规则就是完整性约束。实体完整性和参照完整性是关系模型必须满足的两个完整性约束条件,任何关系系统都应该自动维护。关系模型应向用户提供定义这种完整性约束的手段,以供用户使用这种手段来定义自己特殊的完整性要求。此外,关系模型还应有检验用户定义的完整性约束的机制,以便整个数据库在生命周期中保证符合用户所定义的完整性约束要求。

关系模型的完整性约束及优化

在一组完整的数据中存在一种约束规则,该规则就是完整性约束。在数据模型中,其主要用于规定数据的符合条件,数据在操作的过程中也要符合完整性约束条件。例如:职工号必须唯一且不能为空;职工所属部门必须存在或为空(此职工尚未分门);性别只能是男、女两个值之一;等等。关系模型中共有三类完整性约束:实体完整性、参照完整性和用户定义的完整性。实体完整性和参照完整性是关系模型必须满足的两个完整性约束条件,任何关系系统都应该自动维护。

(一)实体完整性(Entity Integrity)

若属性A是基本关系R的一个主属性,则任何元组在A上的分量都不能为空。这里空是指没有值,如学号属性为空,不是学号为“0”,而是指没有学号。

实体完整性规定,任一候选码的任何属性都不能为空,而不仅仅是候选码整体不能为空。实体完整性的原因在于:第一,在概念模型中,基本关系对应的是联系而并非实体集,并且一个基本关系只对应一个联系;第二,在概念模型中,实体的内容与联系的内容是能够被区分开的,其区分的依据为候选码;第三,在关系模型中,每一个候选码都是一种标识,且带有唯一性,这和模型概念中的候选码是相对应的;第四,主属性的值不能为空值,因为空值代表概念模型中实体的唯一性标识不是候选码,这和第二点有冲突。

由于实际系统中只能定义主码(不支持候选码概念),因此在具体DBMS中,实体完整性对应变为任一基本关系的主码属性都不能为空。(www.xing528.com)

(二)参照完整性(Referential Integrity)

在关系之间,参照完整性主要用于限制数据的引用。如果存在一个属性组A,在基本关系R1中属于其外部码,但在基本关系R2中,存在码K与A 相对应,并且R1与R2可以是不同关系,也可以是同一关系。这个时候,基本关系R1中的每个元组在A上的取值必须能满足下面其中一种情况:第一种情况为值与基本关系R2中的某一元组的码值相等;第二种情况为空值。这就是参照完整性。例如,在参加关系中,职工号只能取职工关系中已有的职工号,项目号只能取项目关系中已有的项目号。单就参照完整性而言,职工号和项目号还可取空值,但由于它们是参加关系的码,因而不能取空值。再如,若另有一关系——部门(部门号,部门名,部门电话,部门负责人),那么在此关系的部门负责人属性上,各个元组或取空值(表示该部门的负责人暂时还没有确定),或取职工关系中已有的职工号(表示必须是本单位存在的职工)。

(三)用户定义的完整性

除上述两类完整性约束外,任何数据库系统都会有一些自己特殊的约束要求,如年龄值不能大于60,夫妻的性别不能相同,所创的世界纪录必须好于原世界纪录,成绩只能在0~100等。这些约束条件都需要用户自己来定义,故称为用户定义的完整性。关系模型应向用户提供定义这种完整性约束的手段,以供用户使用这种手段来定义自己特殊的完整性要求。此外,关系模型还应有检验用户定义的完整性约束的机制,以便整个数据库在生命周期中保证符合用户所定义的完整性约束要求。

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

我要反馈