我是数据库设计的新手,我正在尝试为一家在线销售产品并接受重复处方订单的药房创建一个 ERD。
这是我的 ERD 的链接:http: //i.imgur.com/aiKP0.png
我想知道我如何只能为两个订单使用一个“付款”和“卡详细信息”实体,所以每个订单都有 2 个实体。我能否在 ORDER TYPE 实体和支付/卡详细信息实体之间建立关系。
任何帮助,将不胜感激。谢谢
我是数据库设计的新手,我正在尝试为一家在线销售产品并接受重复处方订单的药房创建一个 ERD。
这是我的 ERD 的链接:http: //i.imgur.com/aiKP0.png
我想知道我如何只能为两个订单使用一个“付款”和“卡详细信息”实体,所以每个订单都有 2 个实体。我能否在 ORDER TYPE 实体和支付/卡详细信息实体之间建立关系。
任何帮助,将不胜感激。谢谢
我试图找到一个很好的理由来同时使用Prescription_Order
和Product_Order
。应该只有一个Orders
(复数化,因为 ORDER 是一个保留字无处不在)表,该Customer_Recurring_Order
表(具有引用Customer
和的自然键Product
)打破了客户重复订单的规则,无论它们是否是处方性质的. 您的药物属性正确地属于产品表中的记录。
此外,Card Details
表格应该正确链接到一个或多个Customer
,因为我很确定卡详细信息在功能上取决于客户的存在。
一旦你清理了这些,你只需要一个Payment
或Card Details
实体。要记住的一个好的设计原则是,如果两个实体具有所有相同的属性,它们可能不是两个不同的实体。
为什么不将运输信息分解为一个单独的实体,Order_Shipment
. 所有货物是否总是包含客户订单的所有部分?
但是,您的设计存在一些缺陷:
Product Order
和Order Product
。开发人员和管理员会疯狂地记住哪个表用于什么。Card Details
?而不是添加Perscription_PaymentID
和Product_PaymentID
列以相反的Card Details
方式 - 将CardID
字段添加到两个表。Customer
意图ORDER TYPE
。考虑更改名称。此外,即使写了这么小的回复,也很难遵循包含空格、下划线、混合大小写名称、单数/复数变体的表/列名称。
请看一下这个答案,并考虑使用一些通用方法来命名您的关系、列和约束。