2012-04-24 60 views
0

即时通讯数据库设计和即时通讯尝试创建一个在线销售产品药房的ERD,并接受客户重复处方订单。两种类型的订单ERD

这里是链接到我的ERD: http://i.imgur.com/aiKP0.png

我想知道我怎么能只利用只有一个“支付”和“卡的详细信息”实体两个订单,所以有我有2个实体为每个订单。我能否在订单类型实体和付款/卡细节实体之间建立关系?

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

+0

欢迎来到SO!你的问题不是很清楚。 – vyegorov 2012-04-24 09:41:23

回答

0

我试图找到一个很好的理由,因为这两个都是Prescription_OrderProduct_Order。应该有一个Orders(复数因为ORDER是一个保留字无处不在)表,其中Customer_Recurring_Order表(带有一个自然键CustomerProduct)突出了客户重复订单的规则,无论他们是否处方性质与否。您的药物属性在产品表中正确地属于记录。

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

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

你为什么不打出来送货信息输入到一个单独的实体,Order_Shipment。所有的货物是否总是包含客户订单的所有部分?

0

你在你的设计中的一些缺陷,但:

  1. Product OrderOrder Product。开发人员和管理员会疯狂地记住哪个表用于什么。
  2. 目前还不清楚为什么你有2 Card Details?而不是将Perscription_PaymentIDProduct_PaymentID列添加到Card Details反过来 - 将CardID字段添加到两个表中。
  3. 目前还不清楚加入CustomerORDER TYPE的意图。考虑更改名称。

此外,即使编写这个小响应,很难跟踪包含空格,下划线,混合大小写名称,单数/复数变体的表/列名称。

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

+0

回复您的帖子的第2点,这就是为什么我问这个问题 - 我想知道如果我可以连接支付表与订单(从命令类型重命名) – user1352609 2012-04-24 22:37:03