首页 百科知识 外键与完整性约束

外键与完整性约束

时间:2022-06-20 百科知识 版权反馈
【摘要】:2.2.3 外键与完整性约束外键在图2-9中,供应商表、零件表和零件供应表的关键字分别为:代号、编号、代号+编号。由此可见,外键表示了两个表之间的联系。完整性约束在关系数据库中,有许多规则来约束数据,以防止出现错误的、无效的和不符合语义规定的数据。我们将这些约束规则称为关系模型的完整性约束,主要包括参照完整性、实体完整性和用户定义完整性。

2.2.3 外键与完整性约束

外键

在图2-9中,供应商表、零件表和零件供应表的关键字分别为:代号、编号、代号+编号。可以发现,供应商表与零件供应表有一个公共字段:代号,并且代号还是供应商表的关键字。我们称代号是零件供应表的一个外键。类似的,编号也是零件供应表的外键。

对于两个表A和B,K是它们的公共字段,而K同时又是表B的关键字,那么,K就是关系A的外键,又称作外关键字。由此可见,外键表示了两个表之间的联系。以另一个关系的外键作为关键字的表被称为主表,具有此外键的表则被称为主表的从表。外键既可以是从表复合关键字的一部分,也可以作为非关键字段存在于从表中。

至此,我们对关系模型有了一个更全面的理解,关系模型的表是“小表”,而且表之间通过外键联系起来。

完整性约束

在关系数据库中,有许多规则来约束数据,以防止出现错误的、无效的和不符合语义规定的数据。我们将这些约束规则称为关系模型的完整性约束,主要包括参照完整性、实体完整性和用户定义完整性。

参照完整性也称为引用完整性,它是相关联的两个表之间的约束,主要通过外键的作用而实现。具体而言,就是从表中每条记录的外键的值必须是主表中已经存在的值。因此,如果在两个表之间建立了参照完整性,则对表的增删改操作可能就会受到限制。

参照完整性首先体现在对从表插入操作的限制上。在图2-9中,当向零件供应表(从表)中插入一条新记录时,系统要检查新记录的代号、编号是否在供应商表、零件表(主表)中已存在,如果存在,则允许执行插入操作,否则拒绝输入。

有了参照完整性的约束,主表中记录的删除、更新操作也会受到限制。例如,如果删除图2-9中供应商表的“S2”一行,由于零件供应表(从表)中有S2,这就违背了参照完整性,因此DBMS将会限制这一操作,使得删除操作无法成功。类似的,更新操作也会受到限制,不再赘述。

需要注意的是,参照完整性一般需要在DBMS中指定。图2-10是一个在Access中的指定表之间的关系的画面。其中,“1”方是主表,“∞”方是从表,二者相连的公共字段分别是主表的主键和从表的外键。

所谓的实体完整性,是指每一个关系中的关键字段既不能为空,也不能有重复的值。实体完整性保证了关系中行的完整性,即保证了每一条记录都有唯一的标识符。

在实际的数据库设计中,设计人员还可以根据特定的情况,自行定义各种约束规则,这属于用户定义完整性的范畴。比如“年龄”属性的属性值不能为负,“性别”属性的属性值只能是“男”或者“女”等。

总之,有了这些完整性规则的约束,数据的正确、完整以及一致性便有了更好地保证。

问题

通过上述内容,我们对关系模型有了一个初步的了解。很自然地,又产生了两个新的问题:

图2-10 Access中的指定表之间的关系

第一,我们需要查询的信息往往表现为“大表”的形式,如何从“小表”中查询出类似于大表的信息呢?答案是我们可以通过SQL语言(结构化查询语言)等方法进行查询。

第二,关系模型的“小表”应满足什么条件?如何把数据库设计成若干张“小表”的形式?我们可以通过规范化理论、ER模型(实体—联系模型)等方法数据库设计成若干张“小表”的形式,并且规范化理论还指出了关系模型的小表应满足的条件。

接下来我们将介绍这些内容。

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

我要反馈