當開展一個大型項目時,其中一個想法是將所有東西都模塊化。現在是數據庫設計。現有的數據庫需要重新設計(它有超過200個表),其中一個建議是爲每個模塊製作單獨的數據庫。這種方法的問題是許多表是相關的,所以如果一些表將被移動到另一個數據庫,那麼它們中的一部分將具有對另一個數據庫的引用(id)。這甚至是推薦的方法,還是把所有東西放在一個數據庫中更好?是否推薦引用來自不同數據庫的表?
如果這種方法是正常的,那麼如何照顧參照完整性和什麼是最佳實踐?
當開展一個大型項目時,其中一個想法是將所有東西都模塊化。現在是數據庫設計。現有的數據庫需要重新設計(它有超過200個表),其中一個建議是爲每個模塊製作單獨的數據庫。這種方法的問題是許多表是相關的,所以如果一些表將被移動到另一個數據庫,那麼它們中的一部分將具有對另一個數據庫的引用(id)。這甚至是推薦的方法,還是把所有東西放在一個數據庫中更好?是否推薦引用來自不同數據庫的表?
如果這種方法是正常的,那麼如何照顧參照完整性和什麼是最佳實踐?
對於大多數問題的答案不幸的就是「它取決於」。沒有任何設置最適合任何商店。擴大數據庫可能是一個問題。如果一個模塊以指數級增長但未被廣泛使用(A歷史模塊),而另一個模塊具有頻繁讀取但增長很少(A用戶帳戶模塊),那麼將高增長模塊置於具有HDD的機器上並且高讀取如果成本是貴公司的問題,則可以在SSD上安裝模塊。顯然還有其他問題,但這是我可以從袖口中想到的。
你可以得到的唯一可靠答案主要與你對外鍵和引用的問題有關。您需要在多數據庫senario中處理它的方式是使用觸發器。由於您不能在數據庫之間使用外鍵關係,因此每個表上的觸發器都將用於強制數據庫之間的參照完整性。
我不會爲每個模塊使用單獨的數據庫。這只是沒有多大意義。對於現代系統來說,200張桌子是沒有用的這實際上相當小。我甚至不會試圖將相關表格放在不同的數據庫中。那會給你帶來巨大的痛苦。 – 2015-01-15 18:29:55