数据库设计-保留历史外键信息

时间:2019-02-05 12:29:15

标签: sql database software-design

比方说,我有一家网上商店(不是真实情况,但足够亲密)。我有产品和产品类别。每个产品仅属于一个类别,但是可以将一个产品从一个类别移动到另一个类别。还有一个购买,其中包含对产品的引用以及购买日期。为简化起见,每次购买都只有一件商品。

一切都好吗?好的,有了这种结构,我可以找到某天购买的产品的当前类别。但是,如果该产品已移至另一个类别,并且我想在购买日期找出该产品属于哪个类别,该怎么办?

用于存储所需信息的良好数据库结构是什么?查询应保持简单,但更新的可维护性也应如此(虽然不是很重要)。

我已经考虑了两种解决方案,但是我对这两种解决方案都不满意。

  • 代替产品到类别的直接引用,添加一个额外的表,其中也包含产品所属类别时的日期期限。此选项使查询变得更加复杂,需要额外的联接和比较。
  • 将购买的参考添加到类别,该参考在购买时将保存。这似乎很不合逻辑,因为从购买到类别(直接和通过产品)有两个引用。而且,这使更新变得复杂,因为还有一个看似无关的字段需要更新。

还有其他我没想到的选择吗?

0 个答案:

没有答案