我有一个问题,我认为这很常见,但我不确定要搜索什么,因为它可以用许多不同的方式来解释。
我正在设计一个数据库结构来管理发票、产品、价格、货币等。
我能够管理产品的价格和名称(预计这些会不时更改)。
在发票上,产品按数量相加,有折扣、增值税、独角兽、松鼠等,然后计算出发票的总额。
现在,当产品表中的价格更新时,发票不应更改。它需要永远保持不变。
考虑到这一点时,对我来说,产品列表似乎是一个“类类型”对象的列表,它描述了产品的外观。或者我们可以称它为“模板”或“基础”或“抽象”,这取决于我们想到的抽象。
添加到发票中的产品是“实例”、“实施”、“子项”、“版本记录”或我们称之为的任何东西。
我将如何在数据库中构造它?我可以将它们分成两个不同的表“AbstractProduct”和“Product”,但它们的大部分(可能是所有)列都是相同的。在这方面,将它们放在同一张桌子上似乎是合适的。但是我需要一个额外的列来表示它是“类”还是“实例”。那也没关系。这也可以是创建它的类的外键(或类的 NULL)。
我尝试了不同的方法,但似乎都有令人讨厌的警告。
这是已知模式吗?这叫什么?是否有解决此问题的最佳实践?
这是一个众所周知的模式。如果您需要有关此主题的大量文献,请搜索“时态数据库”。