2014-02-09 59 views
-1

我一直在研究我的第一個數據倉庫設計,並且遇到了一個我無法找到答案的問題。使用父行ID設計事實表

我的事實表中的每一行都需要標識「父」記錄的RowID。就我而言,每次發貨事件都會導致後續事件屬於該行。如果產品重新發貨,那麼以下產品屬於新的行等等。

但是,由於各種原因,並非每個產品都有運送歷史記錄都是可能的。因此使這些行爲空。

我的事實表中的每一行都有一個唯一的ID,所以我可以引用它,但我應該在哪裏存儲這種關係?我是否將可空列添加到ParentRowId的事實表中?我是否創建了一個定義關係的非事實性事實表?

我傾向於第一種選擇,但不確定在這種情況下什麼是「正確的」。如果在SQL Server 2012上有所不同,每年要查看大約3mil的行。

+0

每年有3米行,看起來性能和存儲不是您的擔憂。 – usr

+0

@usr因爲它可能,我仍然想要了解正確的方式 – ElPresidente

+0

我不明白你的例子。你的事實表是什麼?這是一個貨物?這是貨件歷史記錄?在任何情況下,事實表中的空鍵都不是「正確的」。 – momobo

回答

0

我一直建立一個單獨的表來完成'橋接表','覆蓋表'以及這種性質的事情。無論如何,你必須進行一個連接(一個自我連接)才能找到父母,因此將這個連接加入一個負責保持這種關係的表格並沒有什麼壞處。