2011-09-15 47 views
1

我想知道什麼是組織我的數據庫的最佳方式。讓我解釋一下:如何爲幾個項目設計一個數據庫

我開始一個新的「大」項目。這個大項目將由幾個litle組成。一般來說,這些小團體項目並不相互關聯,它們只是大團體的特徵。

所有項目都有一個共同點就是要使用它的用戶。

所以我的問題是:

  • 我應該創建痘痘項目的每一個不同的DB (目前每個項目將包含4-5表)
  • 如何應對用戶?我應該爲所有用戶創建一個數據庫嗎? 還是我應該在每個數據庫中複製users表?請記住,關於用戶的 信息在每個litle項目中都會使用很多,它不僅用於識別目的。

在此先感謝您的建議。

+0

爲用戶在項目中共享多少重複數據? – user937146

+0

很多用戶表(〜1000條記錄)都包含名稱,聯繫人,位置,部門,訪問級別(〜20列)等信息,所有小型項目在每個頁面上至少使用一次來自用戶表的信息,意味着如果我選擇爲用戶製作單獨的數據庫,我將需要像地獄一樣切換數據庫。 – Boris

+0

在沒有正常情況下,你應該複製一張表。 – gahooa

回答

1

這很大程度上取決於您選擇使用的數據庫。

如果這些「子項目」被設計爲作爲一個連貫的單位工作,那麼我強烈建議您將它保留在同一個數據庫中。一個備份,一個恢復,一個單元。

出於組織目的,如果您使用支持它的數據庫,請爲每個項目選擇不同的架構。 PostgreSQL和SQL Server是兩個數據庫(等等),它們毫不費力地支持這個數據庫。

對於像MySQL這樣的數據庫,我建議您爲每個子項目選擇一個簡短的前綴,並相應地爲所有表加上前綴。例如「P1_Customer」。

共享數據將存在於它自己的模式或前綴中,比如Global或類似的東西。

實際上,這是我們將主數據庫從MySQL切換到PostgreSQL的諸多原因之一。我們一直是這兩個人的重量級用戶,我非常欣賞PostgreSQL提供的功能。如果你在Windows環境中,SQL Server也是一個很好的數據庫IMO。

+0

很棒的回答。我們正在使用MySQL,我會得到一個大的數據庫。謝謝@gahooa – Boris

1

如果小項目是「大項目的特點」,那麼我不明白爲什麼你不想在主項目中只需要一個user表。您設置問題的方式使得這看起來是真實的「如果在小項目1中有用戶A,那麼在'大'項目中必須有用戶A.」如果這是真的,除非你有更多的資格細節,否則你應該讓用戶使用大分貝,而不是重複。

+0

你理解正確,閱讀所有帖子後,我認爲我會去一個大數據庫。謝謝@skaz – Boris

1

我認爲正確的答案是'它取決於'。

沿着單一集中式系統的路徑啓動組織,在很多層面上都很好。一般來說,我會推薦這個。

但是:

,如果你將有顯着不同的發展計劃,或顯着與各子項目不同的用戶體驗,那麼你可能會更好保持它們分開。

+0

謝謝@Randy,我想我試着集中它。 – Boris

1

根據您的應用程序的性質,我可以看看OpenID或其他單點登錄協議。 OpenID包含一種名爲「屬性交換」的機制,它允許應用程序從OpenID提供者檢索配置文件信息。

這允許您使用認證方案創建一箇中央用戶配置文件存儲庫,並讓您的各個應用程序查詢該存儲庫的配置文件信息。

關於如何設計數據庫的問題很難在沒有更多信息的情況下回答。在大多數體系結構中,應用程序中的「功能」往往是密切相關的 - 「用戶」與「帳戶」有關「組織」等。

我建議查看外鍵關係來回答這個問題題。如果你有很多外鍵,爲所有表建立一個單一的數據庫。如果您有外鍵的「集羣」,並且您希望每個應用程序具有不同的生命週期(假設集羣映射到應用程序),請考慮單獨的數據庫。通過「生命週期」,我的意思主要是開發生命週期 - 應用程序1可能每週部署一次,應用程序每月部署2次,應用程序3只部署一次,然後被凍結。

+0

謝謝@Neville K,我會試試看。 – Boris

相關問題