0

我们正在创建一个由大约 8 个星型模式组成的数据集市,每个模式代表一个业务事件、流程或报告数据集。我们有交易、快照和累积快照模式的同等组合。我们打算在大多数事实表中用作主键的值是 ContractID,但是在源数据库中,这是一个格式为“X12345.001”的字符串。

我已经阅读了一些关于使用字符串作为 PK 的相互矛盾的意见:

字符串作为 SQL 数据库中的主键- 本文中的最佳答案表明它可以,但问题不是数据集市特定的。

字符串作为主键?- 本文中的最佳答案是坚决反对使用字符串作为 PK。

数据集市的内容永远不会很大(所有星的低数百万行,永远不会数十亿)。使用当前的 PK (ContractID) 会更省力,因为这将在所有表中保持一致,但我担心性能。问题是字符串是否可以用作数据集市中的主键。

谢谢

4

1 回答 1

1

最后,我们将合同 ID 存储在一个可能正确的维度中,因为 ID 更多地是对合同的描述,尽管它是唯一的),SQL 生成的事实表 ID 充当事实表中的 FK。正如您对累积快照所期望的那样,事实表确实为每个合同保存了多行。

我们让 SQL 处理所有 ID,并将事实表中的所有内容都限制为整数,我们认为性能非常好!

于 2014-11-26T17:16:37.650 回答