我是数据库设计的新手,我正在尝试为一家药店创建一个ERD,该药店在线销售产品,也接受客户的重复处方订单。
这是我的ERD的链接:http://i.imgur.com/aiKP0.png
我想知道为什么对于两个订单我只能使用一个“支付”和“卡详细信息”实体,所以我每个订单都有两个实体。我是否可以在订单类型实体和支付/卡详细信息实体之间建立关系。
任何帮助都将不胜感激。谢谢
发布于 2012-04-26 01:16:54
我想找一个同时保留Prescription_Order和Product_Order的好理由。应该只有一个Orders (复数形式,因为ORDER是所有地方的保留字)表,其中Customer_Recurring_Order表(带有引用Customer和Product的自然键)打破了客户的重复订单的规则,无论它们本质上是不是处方。您的药物属性正确地属于product表中的一条记录。
此外,Card Details表应该正确地链接到一个或多个Customer,因为我非常确定卡的详细信息在功能上依赖于客户的存在。
一旦你清理了它们,你只需要一个Payment或Card Details实体。要记住的一个很好的设计原则是,如果两个实体都具有相同的属性,那么它们可能不是两个不同的实体。
你为什么不把运输信息分成一个单独的实体,Order_Shipment。所有发货是否总是包含客户订单的所有部分?
发布于 2012-04-24 17:49:13
不过,您的设计中存在一些缺陷:
Product Order和Order Product。开发人员和管理员会疯狂地记住哪个表是用来做什么的。Card Details?不是将Perscription_PaymentID和Product_PaymentID列添加到Card Details中,相反,将CardID字段添加到这两个表中。Customer和ORDER TYPE连接起来的意图。考虑更改名称。此外,即使编写这个小响应,也很难跟上包含空格、下划线、大小写混合的名称、单数/复数变体的表名/列名。
请看一下这个answer,并考虑使用一些通用方法来命名您的关系、列和约束。
https://stackoverflow.com/questions/10291377
复制相似问题