我正在为一个学习项目建立一个在线市场。请原谅我没有图表。
我有表Seller
和Product
,其中包含有关卖家和产品的数据。卖家可以拥有多种产品。还有一个Receipt
表,用于存储有关客户购买的信息。这是一个重要的记录,必须坚持下去。收据应该能够获得有关所购物品的信息。
但是,产品是动态的,可以添加和删除产品。但由于收据应该引用产品,这意味着我不应该删除产品行,即使它不再销售。
这是正确的方法吗?我可以使用更好的设计模式吗?
答案 0 :(得分:1)
是的,这是正确的方法。如果您设置参照完整性权限,系统将不允许您删除产品或卖家(如果有收据)。接下来要做的是使用标记将产品或卖家标记为已删除或已存档。它可以是布尔值,也可以是指示它何时变为非活动状态的日期。使用'来自'和' To'正如Hellmar Becker所暗示的那样,日期表示有效的时间间隔是非常强大的,但它会打开一个全新的蠕虫:你可以拥有多个有效的时间间隔。期间,所以你必须扩展你的主键。 像HANA这样的现代数据库(来自SAP)不再允许删除,并且已经内置删除了#39;标志。
答案 1 :(得分:1)
这不是一个正确的答案。我只是想给你一张图表的礼物,因为你没有图表! :)
(免责声明:QuickDatabaseDiagrams是我的项目)