3

使用来自维基百科的雪花模式图像:

http://en.wikipedia.org/wiki/File:Snowflake-schema-example.png

像在 Dim_Product 中那样在 Fact_Sales 中使用“Brand_Id”外键是否有意义?销售/品牌之间存在多对一的关系,就像销售/产品或产品/品牌一样,那么有什么合乎逻辑的理由不这样做吗?您可能希望直接加入 Dim_Brand 表。

我可能没有看到明显的东西。

4

3 回答 3

2

您正在查看的关系类型是关系。

一个产品有一个品牌。销售有产品;这是卖掉的东西。但是销售没有品牌。或者,更好的说法是,您不能出售品牌。(不要读得太深……)

所以,不,你不想在销售中增加品牌。

于 2012-07-30T20:02:17.343 回答
2

如果您在维度模型中工作(您的问题中的星形/雪花模式注释使您认为您是),那么从绩效的角度来看,将 BRAND_ID 添加到销售事实是有意义的,如果企业试图回答的问题是“在此时间范围内,品牌 X 在所有产品中的销售额是多少”。

如果产品维度是 1 类 SCD,并且产品更改品牌,它也可能有用。您可能希望将之前的销售保留为“旧”品牌。

请记住,当您构建星形/雪花报告模式时,您不是在进行实体关系建模。is-a 或 has-a 的问题与维度模型无关。

于 2012-07-31T15:19:37.980 回答
0

我认为这将是一种很好的缓存数据的方式......但老实说,你可能最好只依赖链接。

原因是您已经对该表的功能(商店销售)进行了定义。加上商店销售的这些产品是什么品牌,会混淆该表的“主题”或“主题”,记录商店的销售额。

现在,如果您通过某种方式拥有可以以不同品牌销售的产品(如果我知道一个包装如何具有分裂的个性......)那么是的,这在一定程度上是有道理的,但更合理的解决方案是然后给每个产品它自己的SKU代码。

于 2012-07-30T19:54:59.077 回答