代理键的复合键

时间:2014-05-22 19:44:27

标签: sql-server database-design primary-key business-intelligence composite-key

我有一个来自我得到的数据的复合自然键。使用composite_key = ID-PRODUCT_ID-CLIENT_ID-OFFICE_ID,我想在一个代理键中转换此键。例如:composite_key = 55-001-234-01 to surrogate_key = 123;这是正常情况,有时办公室代码可以更改,但我想将记录标识为相同Ex:composite_key = 55-001-234-02 to surrogate_key = 123.如何实现此操作以创建数据仓库。

如何比较从一个提取到另一个提取的复合键,并了解字段是否更改是我认为有效的?

1 个答案:

答案 0 :(得分:3)

如果具有不同OfficeID的两个成员应映射到相同的代理键,则表示OfficeID不是复合键的一部分,而只是类型为2的标准属性(替换行为)。

如果您的尺寸不是太大,我建议您在ETL工具中使用简单的Slowly Changing Dimension组件。如果您没有这样的组件,只需查看查询成员是否在您的维度中是否存在。如果存在,则应用更新(最终)更改OfficeID,如果不应用插入。

如果您遇到大尺寸和性能问题,那么通过计算类型属性集2的校验和可能会有用并提高性能。您的查找应返回此校验和并将其与当前行的校验和进行比较。如果它们是标识符,则不需要执行update语句。