带有外键的表是否应该直接链接到其相关表?

问题描述 投票:0回答:1

我正在创建一个包含客户、地址和国家/地区表的数据库。

我希望地址和国家/地区成为客户表中的属性,或者至少能够为给定客户访问。

如果我在客户表中使用地址和国家/地区作为外键,我必须将客户表直接链接到每个表,还是可以使用“传递”链接来链接:客户>国家/地区>地址?

处理这样的关系最好的方法是什么?我会有一个循环:客户>国家/地区>地址>客户吗?

database foreign-keys relational-database
1个回答
0
投票

在关系数据库中,您可以在表之间建立关系来表示客户、地址和国家/地区等实体之间的关联。在考虑如何构建这些关系时,确保数据完整性并避免循环依赖至关重要。

以下是对这些关系进行建模的典型方法:

客户表:该表存储有关客户的信息。您可以拥有客户的主键,例如 customer_id。

地址表:该表存储地址信息。每个地址应与特定客户相关联。为此,您可以在 Address 表中包含一个外键,该外键引用 Customer 表中的 customer_id。这样,您可以将每个地址直接链接到客户。

国家表:同样,国家表应该存储有关国家的信息,并有一个主键,例如country_id。

将客户链接到国家/地区:如果您希望将每个客户与一个国家/地区关联,您可以在客户表中包含一个外键,该外键引用国家/地区表中的国家/地区_id。这在客户和他们的国家之间建立了直接联系。

不需要您所描述的方式的“传递”链接。传递链接方法会引入不必要的复杂性,并可能导致循环依赖,这在关系数据库中应该避免。通常最好在必要时建立直接关系。

总而言之,表之间应该有直接关系:

客户通过 customer_id 与地址有直接关系。 客户通过country_id 与国家/地区有直接关系。 这种结构可确保数据完整性,并允许您轻松访问给定客户的地址和国家/地区信息。

© www.soinside.com 2019 - 2024. All rights reserved.