我第一次接触数据仓库,我想知道事实和维度之间是否有必要有外键约束。没有它们有什么主要缺点吗?我目前正在使用关系星型模式。在传统应用程序中,我习惯了它们,但我开始怀疑在这种情况下是否需要它们。我目前在 SQL Server 2005 环境中工作。
UPDATE:对于那些感兴趣的人,我遇到了poll问同样的问题。
大多数数据仓库 (DW) 没有将外键实现为约束,因为:
一般来说,外键约束会在以下情况下触发:向事实表中插入、任何键更新以及从维度表中删除。
在加载过程中,索引和约束被删除以加速加载过程,数据完整性由 ETL 应用程序强制执行。
一旦表被加载,DW 本质上是只读的——该约束不会在读取时触发。
加载后会重新构建任何所需的索引。
在 DW 中删除是一个受控过程。在从维度中删除行之前,会在事实表中查询要删除的行的键 - 仅当这些键不存在于任何事实表中时才允许删除。
为了以防万一,定期运行查询来检测事实表中的孤立记录是很常见的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)