事实上物理 Pkey table
Physical Pkey in Fact table
我正在接受采访。我为他们做了一些代码,他们热衷于为什么 Fact table 中没有 PKEY,为什么有重复数据。在我看来,FACT 持有 dim 的外键,不需要物理 PKEY。并且在明显的一点上外键列将有重复项。这就是它的目的。向我展示不同阶段的不同事实。现在,从逻辑上讲,一些复合键实际上可以作为主键 table 但在数据库中将其作为物理键是不是很好。
总结我的问题。
1. FACT物理上应该有主键吗?
2. 我们可以在一组 fkey 列上使用物理 PKEY(我认为 ms sql 不允许这样做)?
3. FACT 是否应该仅仅为了 pkey 而有代理键?我们可以在日期等其他重要列上进行排序?
等待回复想了解对此的不同意见。
我假设当面试官询问一个事实的主键时 table,他们问的是它是否需要一个代理主键(即一个唯一的数字,通常由一个序列或自动递增)。
在 Kimball 方法中,代理主键用于维度 table。除了少数例外,事实 table 不需要代理主键。事实 table 有一个主键,但它是由指向维度的外键列的子集组成的复合键,这使得唯一标识符 suitable 作为主键。此键是物理键,因为您在创建 table 时定义它,数据库通常会为定义的主键构建索引。
这种概括的例外情况是:
- 有时业务规则允许相同的事实行。在这种情况下,您需要一个代理键来唯一标识一条事实记录。
- 如果您有代理主键,一些 ETL 工具的性能会更好,尤其是当您需要 ETL 到 update/insert 行,然后删除以前的事实记录时。
在这些情况下,代理主键很有用。但是,它不是你暴露给最终用户的东西,它只是满足技术需求的一种便利。
我正在接受采访。我为他们做了一些代码,他们热衷于为什么 Fact table 中没有 PKEY,为什么有重复数据。在我看来,FACT 持有 dim 的外键,不需要物理 PKEY。并且在明显的一点上外键列将有重复项。这就是它的目的。向我展示不同阶段的不同事实。现在,从逻辑上讲,一些复合键实际上可以作为主键 table 但在数据库中将其作为物理键是不是很好。
总结我的问题。 1. FACT物理上应该有主键吗? 2. 我们可以在一组 fkey 列上使用物理 PKEY(我认为 ms sql 不允许这样做)? 3. FACT 是否应该仅仅为了 pkey 而有代理键?我们可以在日期等其他重要列上进行排序?
等待回复想了解对此的不同意见。
我假设当面试官询问一个事实的主键时 table,他们问的是它是否需要一个代理主键(即一个唯一的数字,通常由一个序列或自动递增)。
在 Kimball 方法中,代理主键用于维度 table。除了少数例外,事实 table 不需要代理主键。事实 table 有一个主键,但它是由指向维度的外键列的子集组成的复合键,这使得唯一标识符 suitable 作为主键。此键是物理键,因为您在创建 table 时定义它,数据库通常会为定义的主键构建索引。
这种概括的例外情况是:
- 有时业务规则允许相同的事实行。在这种情况下,您需要一个代理键来唯一标识一条事实记录。
- 如果您有代理主键,一些 ETL 工具的性能会更好,尤其是当您需要 ETL 到 update/insert 行,然后删除以前的事实记录时。
在这些情况下,代理主键很有用。但是,它不是你暴露给最终用户的东西,它只是满足技术需求的一种便利。