Database design 星型模式事实不应该存储价格-为什么?

Database design 星型模式事实不应该存储价格-为什么?,database-design,data-warehouse,star-schema,Database Design,Data Warehouse,Star Schema,我明白这句话: 我们始终努力使事实在各个方面和各个方面相互补充 与纹理完全一致。请注意,我们不存储 正在扫描的产品的价格,因为该价格是非累加性的。 相反,我们存储扩展的价格,可以在不同的应用程序中自由添加 产品、商店、时间和所有其他维度 资料来源: 我假设事实是一个销售事实表。我理解加法和非加法度量之间的区别 项目价格是附加的。本页还认为: 我无法理解上面列出的为什么价格没有存储在事实表中的理由。如果可以,请解释一下。Thx.单价绝对是非累加性的。如果你想要销售总额,你可以将扩展价格加起来(

我明白这句话:

我们始终努力使事实在各个方面和各个方面相互补充 与纹理完全一致。请注意,我们不存储 正在扫描的产品的价格,因为该价格是非累加性的。 相反,我们存储扩展的价格,可以在不同的应用程序中自由添加 产品、商店、时间和所有其他维度

资料来源:

我假设事实是一个销售事实表。我理解加法和非加法度量之间的区别

项目价格是附加的。本页还认为:


我无法理解上面列出的为什么价格没有存储在事实表中的理由。如果可以,请解释一下。Thx.

单价绝对是非累加性的。如果你想要销售总额,你可以将扩展价格加起来(扩展价格=单价x销售数量。例如,如果客户以每包1.00美元的价格购买5包口香糖,扩展价格为5.00美元)。如果您将给定日期的每个订单行的单价相加,这会告诉您什么?不是很有用

还请注意,SQLBI参考没有使用术语“单位价格”


但是,您可以将单价存储为一个维度,您可能会发现它很有用。

在大多数情况下,单价不是相加的。在销售数据中,总结一段时间内或产品线的单价是没有意义的。可能有些情况下,价格是半加性的,但不容易让人想到。你有这样的例子吗?如果是这样,您希望在哪些维度上添加单价?SQLBI事实数据表设计链接几乎肯定使用术语“SalesPrice”,而它们的意思是“SalesAmount”。你可以从他们的例子中看到,这正是作者的意图,但作者使用了错误的术语。如果你看看他们的非加性事实的例子,他们使用“净利润%”。净利润是由单价和单位成本算术得出的。单位成本也是非加性的。您不能从一个非加性事实中减去另一个来获得加性事实。@sqlvogel,谢谢您的评论。我没有一个真实的例子,但我明白你的意思。单价如何?这个组合看起来很有用。如果是,为什么不在事实表中列出单价?(如果你想把你的评论转移到答案区,我会投赞成票。)@JoelBrown,说得好。你是对的,净利润%不是加法。谢谢你的回答。请澄清贵方所指的“延长价格”