4

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

4

3 回答 3

6

事实表的第一条规则是声明你的粒度- 唯一标识一行的内容。

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

于 2013-03-11T14:35:14.533 回答
1

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

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

于 2013-03-10T15:27:42.027 回答
0

除了这 8 个外键外,每行还包括一个简单的代理键(如行索引)。这将唯一标识事实表的每一行

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

于 2015-05-26T11:31:59.737 回答