事实表主键

时间:2013-03-10 15:26:41

标签: data-warehouse

我有一个带有8个外键的事实表(引用8个维度),但即使是所有8个键的组合也不能唯一地标识一行。我是否需要从原始数据中添加另一个属性(即“project-id”属性,这对任何事情都没用),这样我就可以拥有主键,或者我可以保留事实表,而不需要主键?

3 个答案:

答案 0 :(得分:5)

事实表的第一条规则是 declare your grain - 唯一标识行的内容。

听起来你没有为这张桌子宣布你的粮食。如果表的粒度是“每个项目一行”,那么您需要将项目作为退化维度包含在表中。

答案 1 :(得分:1)

每个表都必须有一个主键。这是关系规则#1。

您总是可以添加代理键,但我喜欢具有满足唯一约束的属性的事实表的想法。我的想法是:添加更多属性,直到你有一个独特的约束。

答案 2 :(得分:0)

随着那8个外键包含一个简单的代理键(如行索引)到每一行。这将唯一标识事实表的每一行

对于代理键,您可以从第一行的索引1开始,然后在每次对事实表创建新条目时将索引递增1