2012-05-15 155 views
0

我正在開發一個項目管理應用程序,每個公司(使用我們的應用程序)都有一個個人子域:company.domain.com。由於很多原因,我決定爲每家公司使用一個單獨的數據庫。用戶和公司 - 數據庫計劃

公司可以邀請人們(通過電子郵件)在項目上一起工作。用戶可以屬於多個公司(所以應該出現在多個數據庫中)。但是,用戶數據和登錄信息存儲在單獨的數據庫中,因爲用戶使用相同的用戶名,每個公司的密碼以及他們的名字,而且每個公司的姓氏相同。

我現在做的,是這樣的:

  • 存在一個單獨的數據庫:用戶身份(user_ID的,用戶名,密碼)。
  • 在每個公司的每個數據庫中還存在一個用戶表,其中包含與用戶相同的數據(實際上只有3個字段:名,姓,時區)。

有沒有更好的解決方案呢? 如果您對該問題有疑問,請詢問。

我正在使用php + mysql。

回答

2

我認爲不會再有更多的之間的數據表中的用戶數據是正確的 - 想想冗餘...

如果你有一個包含用戶數據,爲什麼不具有鏈接到這個數據庫用戶公司數據庫數據庫數據?

一個簡單的圖像: Example on how to divide users tables

在你的公司的數據庫,然後你可以有用戶表內的其他基於公司的用戶數據,但常見的數據應該保持每個存儲只有一次......

編輯:ORA存儲只是例如,你也可以使用MySQL數據庫以及...

+0

正是!冗餘是這裏的問題。我不想存儲兩次相同的數據。感謝您的回答,併爲模式+1。 我會爲多個數據庫選擇和跨數據庫外鍵做一些基準測試。 –

+0

老實說,我從來沒有使用過'multidatabase'外鍵(但從來沒有),如果我不得不這樣做,我會考慮使用MS SQL或更好的ORACLE,但它應該也在MySQL內:http: //stackoverflow.com/questions/3905013/mysql-innodb-foreign-key-between-different-databases – shadyyx