回答

0

我认为这将是一种很好的方式来缓存数据...但在所有诚实,你可能更好的只是依靠链接,因为它们。

推理是你已经有了这个表的定义,存储销售。为了增加这些产品的品牌,该商店销售的产品将会混淆该表的“主题”或“主题”,记录商店的销售。

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

2

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

产品有品牌。销售有产品;这是已售出的东西。但是销售没有品牌。或者,更好的说法是,你不能出售品牌。 (不要读得太多......)

所以,不,你不会想把品牌添加到销售。

+0

感谢威士忌酒和诺拉。 – Starjammer 2012-07-30 20:32:18

+0

谢谢。所以销售直接涉及产品,但间接涉及品牌。那么,关于雪花模式,是否会有这样一种情况,你会希望FK进入第二级维度?怎么样的维度(和事实)卷起水平的情况?例如,将product-> store-> brand替换为task-> phase-> project(即“Project”由“任务”组成的“阶段”组成)。是否应用相同的逻辑或你可能想要在FactTask中有一个ProjectID的情况? – Starjammer 2012-07-30 20:43:22

+0

你提出的是一个星型模式(http://en.wikipedia.org/wiki/Star_schema)。你可以这样做,因为这些对象是相关的。你会获得一些性能提升,但是最终会出现一个平头问题。您正在操纵数据以适应您的需求,而不是改变您的模式以适合您的数据。简而言之:它可以以任何一种方式进行,但是您必须进行研究以确定最适合您的需求。 – 2012-07-30 20:58:11

2

如果您在维度模型中工作(您的问题中的Star/Snowflake架构注释使您认为自己是),那么从业绩角度将BRAND_ID添加到销售事实中是有意义的,如果业务问题正试图回答“在这个时间框架内所有产品中X品牌的销量是多少”。

如果产品尺寸是1型SCD,而产品更改品牌,它也可能有用。您可能希望将之前的销售额保留为“旧”品牌。

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