两种类型的订单ERD

时间:2012-04-24 03:31:12

标签: database database-design erd

我是数据库设计的新手,我正在尝试为在线销售产品的药房创建ERD,并接受向客户重复处方订单。

以下是我的ERD的链接: http://i.imgur.com/aiKP0.png

我想知道我怎么只能为这两个订单只使用一个'付款'和'卡详情'实体,所以我每个订单都有2个实体。我是否能够在ORDER TYPE实体和付款/卡详细信息实体之间建立关系。

任何帮助将不胜感激。谢谢

2 个答案:

答案 0 :(得分:0)

您的设计存在一些缺陷:

  1. Product OrderOrder Product。开发人员和管理员会疯狂地记住哪个表用于什么。
  2. 目前还不清楚为什么你有2 Card Details?不是将Perscription_PaymentIDProduct_PaymentID列添加到Card Details,而是以相反的方式 - 向两个表添加CardID字段。
  3. 我不清楚加入CustomerORDER TYPE的意图。考虑更改名称。
  4. 此外,即使编写这个小响应,也很难遵循您的表/列名称,其中包含空格,下划线,混合大小写,单数/复数变体。

    请查看此answer并考虑使用一些通用方法来命名关系,列和约束。

答案 1 :(得分:0)

我正在努力为Prescription_OrderProduct_Order找到合理的理由。应该只有一个Orders(多数,因为ORDER是一个随处可见的保留字)表,其中Customer_Recurring_Order表(带有CustomerProduct引用的自然键)为客户的经常性订单制定规则,无论这些订单是否属于处方性质。您的药物属性正确地属于产品表中的记录。

此外,Card Details表应正确链接到一个或多个Customer,因为我非常确定卡详细信息在功能上取决于客户的存在。

清理完这些内容后,您只需要一个PaymentCard Details实体。要记住的一个好的设计原则是,如果两个实体具有所有相同的属性,它们可能不是两个不同的实体。

为什么不将运送信息分解为单独的实体Order_Shipment。所有货物是否总是包含客户订单的所有部分?