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