Tables & PK /FK for relational database



我需要设计一个关系数据库来回答查询,例如获取特定客户的订单详细信息,查找特定订单的客户详细信息以及检索客户的地址。

这是数据集

这是我认为我需要做的,但我不太确定

客户(Cust_no (PK)、Order_no*、Cust_name、电话、地址、城市、州、邮政编码、国家/地区)

订单 (Order_no(PK), Cust_no*, Product_no, 数量 , Unit_price, sales_rep)

地址 (Cust_no * (PK) , 邮政编码 (PK) , 地址, 城市, 州, , 国家)

我将创建表格并将数据插入数据库,我希望这应该不是问题,但首先我需要清楚与 PK 和 FK 的关系

我会从客户表中删除Order_no。使用此 FK,客户只能引用一个订单。请改用"订单"表中的 FK。这样,任意数量的订单都可以引用特定客户。

同样,"地址">表可能具有客户的 FK,而客户表中没有地址列。(就个人而言,我通常更喜欢将地址列直接添加到"客户">表中。

另外,为什么">客户"和">地址"表中都有单独的地址列(城市、州等)?为什么使用邮政编码作为 FK?这意味着您不能有多个具有相同邮政编码的客户。

以下是我如何处理它(假设一个单独的地址表):

客户:ID (PK)、姓名、电话订单:ID (PK)、客户 ID (FK)、产品 ID、

数量、单价、销售代表
地址:ID (PK)、客户 ID (FK)、地址、城市、州、邮政编码、国家/地区

几乎。 您的订单必须有Customer_ID,Address_ID。 客户不必拥有订单 ID FK。客户>订单 1>多。

我不会在主键中包含邮政编码,因为同一客户的同一邮政编码中可能有不同的地址。 您可以只为邮政编码创建索引以加快搜索速度。

最新更新