我需要设计一个关系数据库来回答查询,例如获取特定客户的订单详细信息,查找特定订单的客户详细信息并检索客户地址。
这是我认为我需要做的,但我不确定
客户(客户编号(PK),订单编号*,客户名称,电话,地址,城市,州,邮政编码,国家/地区)
订单(Order_no(PK),Cust_no *,Product_no,数量,单价,sales_rep)
地址(客户编号*(PK),邮政编码(PK),地址,城市,州/省,国家/地区)
我将创建表并将数据插入数据库,我希望这不是问题,但首先我需要弄清楚PK和FK的关系
答案 0 :(得分:2)
我将从 Customer 表中删除Order_no。使用此FK,客户只能参考一个订单。而是在 Orders 表中使用FK。这样,任何数量的订单都可以引用特定客户。
类似地,地址表应该对您的客户来说应该有一个FK,而在customers表中没有地址列。 (就我个人而言,我通常更喜欢直接将地址列添加到 Customers 表中。)
此外,为什么在 Customers 和 Addresses 表中都有单独的地址列(城市,州等)?以及为什么要使用邮政编码作为FK?这意味着您拥有相同邮政编码的客户不能超过一个。
这是我的处理方式(假设使用单独的地址表):
客户:ID(PK),姓名,电话
订单:Id(PK),CustomerId(FK),ProductId,数量,单价,SalesRep
地址:Id(PK),CustomerId(FK),地址,城市,州,邮政编码,国家/地区
答案 1 :(得分:0)
差不多。 您的订单必须具有Customer_ID,Address_ID。 客户不必具有OrderID FK。客户>订单1>很多。
我不会在主键中包含邮政编码,因为同一客户的同一邮政编码中可能有不同的地址。 您只能为邮政编码创建索引以加快搜索速度。