使用父行ID设计事实表

时间:2014-02-09 20:19:25

标签: sql sql-server-2012 data-warehouse

我一直致力于我的第一个数据仓库设计,并遇到了一个我无法找到答案的问题。

我的事实表中的每一行都需要标识“父”记录的RowID。在我的情况下,每个货件事件都会导致后续事件属于该行。如果产品已重新装运,则以下产品属于该新行等等。

但是,由于各种原因,并非每个产品都有发货历史。因此,将这些行设为null。

我的事实表中的每一行都有一个唯一的ID,所以我可以参考它,但我应该在哪里存储这种关系?我是否将可空列添加到ParentRowId的事实表中?我是否创建了一个定义关系的无事实的事实表?

我倾向于第一种选择,但不确定在这种情况下什么是“适当的”。如果这对SQL Server 2012产生影响,那么每年查看大约3百万行。

1 个答案:

答案 0 :(得分:0)

我总是建立一个单独的表来做'桥牌表','覆盖表'和那种性质的东西。您将不得不进行连接(自联接)以找到父级,因此将该联接加入到有责任保持该关系的表中没有任何害处。