2017-07-19 51 views
0

我有一個包含許多條目的事實表,它們具有非常密切相關的'發往'列,但沒有列總是唯一的。我想爲此創建一個維度表,並使用一個鍵引用新的維度錶行。PostgreSQL - 如何從「select distinct」查詢創建「維度」表並創建主鍵和外鍵?

我可以創建新的維度表與創建表作爲選擇不同,我可以爲它添加一個行號主鍵,但我不知道如何將匹配的外鍵放入事實表,其中他們匹配。

我可以很容易地創建一個新的外鍵列,並使用where表將事實表中的舊的不同行與維表中的不同行進行匹配,但是沒有簡單的列匹配(因爲那裏現在還沒有關鍵),所以我需要創建一個匹配所有列的'where'匹配,然後從維度表中分配主鍵?

我可能只是懶惰,不想研究如何創建alter query以及如何創建複雜的匹配,但它似乎是一個非常常見的數據庫管理操作,所以我覺得它可能會幫助其他人。

回答

0

我想要做的一種方法是創建新維度中每一行的所有列的所有值的連接,以便從數據中創建唯一標識符,然後對列執行相同操作在事實維度。現在兩者之間有一個唯一的密鑰,並且可以將其轉換爲整數ID。在新維度中添加一個新序列列,然後在該事實中創建一個新列,並將其設置爲連接ID相同的新維度中的整數ID。

這顯然是非常低效的,因爲新維度的全部內容必須重複,以及再次在事實維度中 - 只是爲了創建鏈接。

+0

這不是數據庫管理的常見操作嗎?爲什麼我找不到有人遇到這個問題? –