反规范化 SQL Server 表
Posted
技术标签:
【中文标题】反规范化 SQL Server 表【英文标题】:De-normalizing SQL Server tables 【发布时间】:2016-04-12 22:41:23 【问题描述】:表格布局:
.Net 应用程序正在捕获 4 个表中的数据
A1
(对其他 3 个查找表有 FK)
LK_C1
(转至 A1 和 LK_R1、LK_R2 和 A1)
LK_R1
(转至 LK_C1 和 LK_R2 和 A1)
LK_R2
(转至 LK_C1 和 LK_R1 和 A1)
现在有些情况下LK_C1
和LK_R2
的关系跳过LK_R1
。
将其制作成 OLAP 表。
我知道A1
将变成一个事实表,其中包含各种键以及我可能需要的任何其他常用维度键。
-
但是设计查找表(以上 3 个 LK)。我应该将其创建到 1 维表中吗?
或
我应该把它分解成二维表
a) LK_C1 和 LK_R2 之间有直接关系的地方
b) 所有 3 个 LK 都是相互关联的。
在方法 2 中,我将在 A1 事实表中添加 2 个额外的复合键引用 一个用于 LK_C1 + LK_R2 的组合,例如 column_7 和 column_8 中的 LK_C1 + LK_R1 + LKR2。
将其制成星型模式的正确方法是什么?
【问题讨论】:
考虑阅读下一个 SO:***.com/questions/36485432/… 中提到的帖子。然后我建议检查维度关系:msdn.microsoft.com/en-us/library/ms166560.aspx 【参考方案1】:架构师接受的解决方案是将 3 次查找的所有组合放入 1 维表中以形成层次结构。 从这个新维度表中获取标识键并将其放入 Fact 表中。 使用 Merge 语句实现。 因为这是一个简单的 .Net 表转储,用于从 s-s-rS 进行快速查询;需要聚合。解决方案被认为是一个简单的解决方案。 感谢所有的帮助和意见。
【讨论】:
以上是关于反规范化 SQL Server 表的主要内容,如果未能解决你的问题,请参考以下文章
在 SQL Server 2008 中使用 Unpivot 或 Cross Apply 规范化数据