data-modeling - 维度表中的主键是否必须是事实表中主键的一部分?
问题描述
我们有一个带有非常大的 Fact 表的 Star 模式,以及大约 20 个 Dimension 表,当然 Dimension Tables 中的 PK 必须是 Fact 表中的 FK。
但是事实表中的所有 FK 是否也需要成为 PK 的一部分?
我在几个 DWH 工作,但那不是那样的,但最近在大学考试中,我因为没有把它弄得不好。
真的吗?这是一个好习惯吗?
如果我的事实表有 20 个维度,那么事实表 PK 是否必须针对这 30 个属性进行复合?
解决方案
这是一个很好的做法,因为它有助于确保您的所有事实都引用现有的维度成员,并且可以提高某些DBMS的性能,但与任何其他设计/方法一样,这不是强制性的。
事实表的复合键实际上是Kimball 的维度建模方法推荐的做法,即因为:
在大多数环境中,此复合键足以作为事实表的主键。在逻辑级别为事实行分配代理键通常没有优势,因为我们已经定义了使事实表行唯一的原因。
推荐阅读
- javascript - 如何在 http 调用中禁用和启用 Angular 按钮?
- c - 无法从c中的堆栈结构中复制字符串
- javalite - ActiveWeb 视图 - <@compress single_line=true>
- javascript - 使用 expressJs nodeJs Handlebars 更新部分 HTML 页面而不重新加载页面
- ios - 更改警报标题和消息
- gltf - GlTF2 存取器单元长度
- angular - how can I call a function and pass parameter when value in select tags changes? 角 6
- amazon-s3 - Electron 最新版本下载 URL 的最佳实践
- swoole - 如何在 ubuntu 中安装 Swoole
- angular - ng 更新:位置 0 处 JSON 中的意外令牌 T:TF400813:资源不可用于匿名访问。需要客户端身份验证