sql - 用于关系数据库的表和 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 的关系
解决方案
我会从Customer表中删除 Order_no。使用此 FK,客户只能参考一个订单。而是使用Orders表中的 FK。这样,任何数量的订单都可以指向特定的客户。
同样,Addresses表应该对您的客户有一个 FK,并且您的 customers 表中没有地址列。(就个人而言,我通常更喜欢将地址列直接添加到客户表中。)
另外,为什么客户和地址表中都有单独的地址列(城市、州等)?为什么您使用邮政编码作为 FK?这意味着您不能拥有多个具有相同邮政编码的客户。
这是我的处理方法(假设有一个单独的地址表):
客户:Id (PK)、姓名、电话
订单:Id (PK)、CustomerId (FK)、ProductId、数量、UnitPrice、SalesRep
地址:Id (PK)、CustomerId (FK)、地址、城市、州、邮政编码、国家
推荐阅读
- r - Spotifyr 错误:INVALID_CLIENT:重定向 URI 无效
- c# - 构建 C# 项目时无法找到 MSBuild 15,无法找到“Microsoft.Common.props”
- r - 转换日期格式
- php - 结帐字段在 Woocommerce 购物车页面中有 2 列
- angular6 - 延迟加载功能模块上的 Angular6 入口组件
- c++ - 如何使用 D2D 和 CD2DEllipse 类在 C++ MFC 上绘制 ELLIPSE
- r - 在 mac 上安装包“stringr”、“reshape2”、“ggplot2”和“rattle”时出错
- angular - mat-autocomplete 在输入焦点上自动隐藏占位符文本
- android - 如何在android中获取全球时间(不是系统特定时间)
- javascript - Jquery:如何在隐藏字段中保持复选框选中/取消选中状态