即时通讯数据库设计和即时通讯尝试创建一个在线销售产品药房的ERD,并接受客户重复处方订单。两种类型的订单ERD
这里是链接到我的ERD: http://i.imgur.com/aiKP0.png
我想知道我怎么能只利用只有一个“支付”和“卡的详细信息”实体两个订单,所以有我有2个实体为每个订单。我能否在订单类型实体和付款/卡细节实体之间建立关系?
任何帮助,将不胜感激。感谢
即时通讯数据库设计和即时通讯尝试创建一个在线销售产品药房的ERD,并接受客户重复处方订单。两种类型的订单ERD
这里是链接到我的ERD: http://i.imgur.com/aiKP0.png
我想知道我怎么能只利用只有一个“支付”和“卡的详细信息”实体两个订单,所以有我有2个实体为每个订单。我能否在订单类型实体和付款/卡细节实体之间建立关系?
任何帮助,将不胜感激。感谢
我试图找到一个很好的理由,因为这两个都是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
的意图。考虑更改名称。此外,即使编写这个小响应,很难跟踪包含空格,下划线,混合大小写名称,单数/复数变体的表/列名称。
请看看这个answer并考虑使用一些通用的方法来命名你的关系,列和约束。
回复您的帖子的第2点,这就是为什么我问这个问题 - 我想知道如果我可以连接支付表与订单(从命令类型重命名) – user1352609 2012-04-24 22:37:03
欢迎来到SO!你的问题不是很清楚。 – vyegorov 2012-04-24 09:41:23