我需要存储产品及其价格和数量(以及许多其他内容)并跟踪历史记录。
现在,鉴于价格和数量都存储为整数,我的理解是这些都是事实衡量标准。所以我们可能有一个像这样的表:
f_products:
id
sku
price
quantity
由于价格随时间变化,我们可以插入一个新的事实,我可以在表中引入有效日期,以便查询给定时间的价格或数量。
但在这种设计中,如果数量发生变化,我必须插入另一行,再次重复不变的价格值。虽然这对于 2 列来说还不错,但实际上我有 10 列。
所以,我的设计是:
f_products:
id
sku
price:
id
product_id
price
start_date
end_date
another "dimension":
id
product_id
value
start_date
end_date
and so on
现在,当价格发生变化时,“事实”不再需要改变,我可以查询这些表中的历史值。
所以我的问题是,这似乎不符合标准的事实/维度设计,所以我想知道更有经验的建模师会如何处理这些要求。