我正在为大型数据仓库中的客户发票创建数据模型。
以下显示典型发票上的字段:
以下是我到目前为止为发票建模的数据模型:
传统观点认为,大型数据仓库应该使用星型模式,这意味着一个事实表,但似乎要为发票建模我需要两个事实表,如上所示。使用两个事实表是否正确?
答案 0 :(得分:3)
我建议你尽可能避免多个谷物事实表。
由于Invoice Fact包含Total Shipping
和Total Tax
,将其归结为Invoice Detail Fact,我可以想到两个基本选项:
在“发票明细”中创建“税”和“运费”列,并在您的商品中进行分配。这个Kimball提示正好表明:http://www.kimballgroup.com/2001/07/01/design-tip-25-designing-dimensional-models-for-parent-child-applications/。
对我来说效果很好的另一种方法是在产品维度中创建两个新成员。一个用于税收,一个用于运费。然后将这两个行项添加到事实中,就像具有适当值的普通产品一样。
当您按发票ID进行分析时,您将获得包含税和税的总额。货物。当您按个别产品进行分析时,您不会产生误导性的运费或税收数字。