sot*_*aoj 2 sql sql-server data-warehouse powerbi
我目前正在开发一个数据仓库,我想知道通过外键将一个维度连接到另一个维度是否有意义。
例如,假设我们有两个维度“国家”和“城市”,我们应该在事实表中仅存储城市维度键。这座城市知道它的国家。
或者将两个外键都存储在事实表中更有意义吗?
但是城市维度必须知道它属于哪个国家(看起来它违反了星型模式,因为我们现在在维度之间也有链接)
或者这纯粹是一种设计选择,不会对查询等产生影响?
这不是一个直接的答案,但请考虑这两种情况;
factTransactionA >- dimCity
factTransactionA >- dimCity >- dimCountry
两者都是有效的,但请考虑......
当您不确定设计决策时......寻找其他约束或要求来帮助您做出决定
对于情况 B,您必须有一个国家/地区维度。例如,您不应该“超载”城市维度并尝试使其适合国家/地区粒度的事实表。所以你知道你必须有这个:
factTransactionB >- Country dimension table
因此,如果我即时扩展此解释......通常,您在事实表之间使用“一致”维度,因此当我们考虑两个事实表时,我实际上会建议这种类型的模式:
factTransaction2 >- dimCountry -< factTransaction1 >- dimCity
而不是这个
factTransaction2 >- dimCountry -< dimCity -< factTransaction1
这实际上意味着将 dimCountry 代理键烘焙到factTransaction1实际上位于城市级别的代理键中。
因为
所以我觉得在这个冗长的解释中我提出了一个避免雪花模式的理由,但它们绝对是有效的
| 归档时间: |
|
| 查看次数: |
2567 次 |
| 最近记录: |