为什么在事实较少的事实表(或多对多维关系表)中需要代理键
答案 0 :(得分:1)
为事实表中的行分配代理键很少是有益的:
有时,组织的业务规则合法地允许事实表存在多个相同的行。通常作为设计人员,您可以通过在源系统中搜索某种事务时间戳来使行独特,从而不惜一切代价避免这种情况。但偶尔你会被迫接受这种不受欢迎的输入。在这些情况下,有必要为事实表创建一个代理键,以允许加载相同的行。
用于更新事实行的某些ETL技术仅在将代理键分配给事实行时才可行。具体来说,一种将更新加载到事实行的技术是将要更新的行作为新行插入,然后将原始行作为第二步删除为单个事务。从ETL的角度来看,这种技术的优点是提高了负载性能,提高了恢复能力并改进了审计功能。事实表行的代理键是必需的,因为在插入更新行和删除旧行之间,更新事实行的旧版本和新版本通常会存在多个相同的主键。
类似的ETL要求是确定暂停加载作业的确切位置,以恢复加载或完全恢复作业。顺序指定的代理键使此任务变得简单。