首页 > 解决方案 > 用于关系数据库的表和 PK /FK

问题描述

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

这是数据集

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

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

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

地址 (Cust_no * (PK) , Postcode (PK) ,Address, City, State, , Country)

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

标签: sqloracle-sqldeveloper

解决方案


我会从Customer表中删除 Order_no。使用此 FK,客户只能参考一个订单。而是使用Orders表中的 FK。这样,任何数量的订单都可以指向特定的客户。

同样,Addresses表应该对您的客户有一个 FK,并且您的 customers 表中没有地址列。(就个人而言,我通常更喜欢将地址列直接添加到客户表中。)

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

这是我的处理方法(假设有一个单独的地址表):

客户:Id (PK)、姓名、电话
订单:Id (PK)、CustomerId (FK)、ProductId、数量、UnitPrice、SalesRep
地址:Id (PK)、CustomerId (FK)、地址、城市、州、邮政编码、国家


推荐阅读