2011-08-30 66 views
1

如何存儲數據庫之間共享的數據?如何存儲數據庫之間共享的數據?

假設聯繫人管理系統的數據庫。每個用戶都有一個單獨的數據庫。用戶可以存儲他/她的聯繫人的教育信息。

目前在每個存儲國家每所學校名稱的數據庫中都有一個名爲School的表格。學校表通過聯繫表被引用爲FK。

學校每年都會更新一次,因爲新的學校被添加或現有學校改名。

由於學校信息在所有用戶數據庫中都很常見,因此將其移入單獨的公共數據庫似乎是一個更好的主意。但是當它移動到單獨的數據庫時,您不能在SchoolContact之間創建FK約束。

這種情況的最佳做法是什麼?

(附註:我使用的是SQL服務器,如果是相關的)

+0

你爲什麼要給每個用戶一個單獨的數據庫? – PedroC88

+0

我給每個用戶一個單獨的數據庫,因爲每個用戶都是一個使用該軟件並擁有大量數據的整個組織。 – Yeonho

+0

對於應該FKed到'Schools'表的表應該有多常見? – PedroC88

回答

1

需要考慮的事情

  • 數據庫備份是一個單位/恢復。
  • 可能無法將兩個數據庫恢復到同一時間點。
  • 跨數據庫不支持外鍵。

因此,我建議管理School - 和任何其他公用表 - 在一個參考數據庫,然後複製這些表的其他數據塊。

1

剛剛開箱的,外鍵約束是不會幫你的。你可以考慮複製個別學校的表格。

1

基於你不會經常查詢帶有SchoolID列的表,我會假設對這些表的插入/更新將非常罕見......在這種情況下,您可以在表上創建一個約束其中您需要檢查Schools表中是否存在SchoolID的FK。

請注意,對SchoolID列的每個表格進行插入/更新將逐字地執行對另一個DB的查詢,因此,數據庫之間的距離,它們彼此連接的方式以及許多其他因素可能會影響插入/更新語句。

儘管如此,如果他們在同一臺服務器上,並且您的索引和主鍵都已設置好,那麼查詢應該相當快。