数据库设计 – 为什么维度建模中的事实表需要(不)主键?
|
我听说过一些参考资料,事实表上不需要pk.我相信每张桌子都应该有一个PK. 如果没有pk和10个外键,一个人怎么能理解事实表中的一行呢? 解决方法主键在那里…但是不需要在数据库级别强制执行主键约束. 如果您考虑这一点,从技术上讲,唯一键或主键是唯一定义每行特征的键.它可以由该实体的多个属性组成.现在,在Fact表的情况下,从其他维度表流入的外键已经充当复合主键.并且这些外键组合可以唯一地标识事实表中的每个记录.因此,这个外键组合是事实表的主键. 为什么不是代理钥匙呢? 现在,如果您愿意,您可以为事实表定义一个代理键.但是这个目的是什么?您永远不会从引用其代理键的事实表中检索一条记录(而是使用索引).您不会使用该代理键将事实与其他表联系起来.这样的代理键将完全浪费数据库中的空间. 实施数据库约束 在数据库级别定义此概念主键时,数据库需要确保在通过它执行的任何DML操作中不会违反此约束.确保此约束是数据库的开销.对于OLTP系统而言可能无关紧要,但对于批量加载数据的大型OLAP系统,这可能会导致严重的性能损失.此外,为什么您希望数据库在数据加载阶段(通常通过ETL编码)确保相同时确保约束的完整性. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- sql-server – T-SQL时间平均
- sql – 无需打开文件PowerShell即自动刷新Excel ODC连接和枢
- SQL Server 获取星期几的名称
- sql – 如何使用有效日期的数据加速对大型数据仓库表的查询
- sql – 在DateTime LastUpdated列上使用Html.hidden进行版本
- 在sql中不指定Order by排序是按照主键吗
- sql – SELECT FOR XML AUTO并返回数据类型
- sql – 为什么我无法在BEGIN … END块中创建一个视图
- 使用YYYY-MM-DD格式更新mssqlserver中的sql date字段
- sql – 别名FOR XML PATH结果
