使用父行ID设计事实表
问题描述:
我一直在研究我的第一个数据仓库设计,并且遇到了一个我无法找到答案的问题。使用父行ID设计事实表
我的事实表中的每一行都需要标识“父”记录的RowID。就我而言,每次发货事件都会导致后续事件属于该行。如果产品重新发货,那么以下产品属于新的行等等。
但是,由于各种原因,并非每个产品都有运送历史记录都是可能的。因此使这些行为空。
我的事实表中的每一行都有一个唯一的ID,所以我可以引用它,但我应该在哪里存储这种关系?我是否将可空列添加到ParentRowId的事实表中?我是否创建了一个定义关系的非事实性事实表?
我倾向于第一种选择,但不确定在这种情况下什么是“正确的”。如果在SQL Server 2012上有所不同,每年要查看大约3mil的行。
答
我一直建立一个单独的表来完成'桥接表','覆盖表'以及这种性质的事情。无论如何,你必须进行一个连接(一个自我连接)才能找到父母,因此将这个连接加入一个负责保持这种关系的表格并没有什么坏处。
每年有3米行,看起来性能和存储不是您的担忧。 – usr
@usr因为它可能,我仍然想要了解正确的方式 – ElPresidente
我不明白你的例子。你的事实表是什么?这是一个货物?这是货件历史记录?在任何情况下,事实表中的空键都不是“正确的”。 – momobo