如您所见,Order Details表中的OrderID继承自Orders表的OrderID。 ProductID仅适用于products表。我以为我读过每个表都需要主键的地方,但这是个例外吗?
答案 0 :(得分:1)
在任何情况下,您的订单明细表都不应仅使用FKS。这是完全灾难的秘诀。
订单详细信息必须在订购时记录有关产品的信息。例如,价格随时间而变化。您不希望过去的订单价格发生变化,因为价格已经发生变化。
如果不合时宜的价格变化导致客户因未立即发货的事情而被意外收取更多费用,这不仅会导致问题,而且会完全破坏您的信息的任何财务完整性以报告销售并可能发送不良信息数据到您的会计系统。
订单和订单详细信息是时态数据。关于订单的所有内容必须在实际订单时记录。这不是非规范化,时间数据是不同的。