2010-06-21 67 views
3

我們正在修改我們的產品,爲每個客戶獲得高度定製。目前我們必須爲每個客戶端維護單獨的數據庫,這嚴重影響了持久層。可擴展數據庫模式

我們的新數據庫模式的主要目標是可擴展性。我不是專家數據庫設計師,因此需要專家的意見:)。

我在考慮擴展(姊妹)表方法。對於每個核心表可能有一個姊妹表,其中擴展的字段將駐留。這樣,我們可以爲核心表和擴展表開發單獨的持久層。

如果我把它分成兩個數據庫會怎樣。核心和擴展數據庫。這將減輕維護。

回答

1

製作單獨的數據庫不會讓您使用PK和FK的本地參照完整性。它也增加了維護的可能性。

如果您的RDBMS支持模式,您應該利用單個數據庫中的多個模式。另外,如果您不熟悉數據庫,您應該瞭解規範化和數據庫設計(本網站有一些好的主題)。

1

在PostgreSQL中,您可以擁有繼承的表。例如,如果您有包含列(x,y,z)的表A,則可以使表A-sub-1從A繼承,但也會添加列(i,j,k)和表A-sub-2它增加了列(d,e,f)。

這樣做的一個好處是,你的一些SELECT語句可以保持不變:從父項選擇默認情況下也會從所有子表中進行選擇。那些只使用共同元素的陳述不需要改變。 INSERT/UPDATE/DELETE語句需要自定義以針對特定的派生表。

被警告,這裏需要支付的代價是PK和FK不能應用於整體結構。每個繼承的表格本身仍然是一個獨立的表格,並處理它自己的約束。也就是說,父表上不能有PK或FK,並且它也會自動應用於所有子項。