2012-06-19 20 views
0

我們開發了一個基於每個實例配置運行多個實例的系統。如何區分應用程序的多個實例的用戶設置(ERD)

在配置您可以定義設計應該用於實例,這應該可以訪問系統等

的情況下(我們稱之爲網站)是有區別的通過URL

例如

  • abc.company.org(A)
  • cde.company.org(B)
  • fgh.company.org(C)

我檢查當前的URL,用戶是訪問並知道我應該爲實例使用哪種配置(設計,組)。

用戶可以訪問多個實例。這通過與用戶關聯的組來檢查,並且通過檢查其中一個組是否已經訪問此實例(站點)。

這已經設計好了。

但現在我user_setting應該是每個實例也多變(網站

站點的用戶A有一個不同的國家,組織,標題等比站點B相同的用戶(這是很不幸這種情況下,即使它看起來不合邏輯)。

因此,我創建了一個名爲user_settings的表,其中存儲了所有這些信息並且有一個外鍵爲site。但是這個表格會隨着時間的推移而橫向增長,因爲我無法分辨上面提到的列是否是我在此表中唯一需要的列。最終,我們必須添加100個屬性才能在每個站點上進行更改。

有沒有更好的方法來設計這個?

我不知道如果我進一步規範化這個設計,是否會遇到問題。例如創建一個表格(圖像中綠色)。

以便更好地觀察見圖片:這個

enter image description here

任何人的經驗?建議不只是歡迎...

回答

1

您正在考慮的表(圖中的綠色)使用的方法稱爲實體屬性值(EAV)。 EAV通常被認爲是反模式。

你可以找到許多關於使用谷歌的EAV的邪惡咆哮。我個人認爲EAV有一個地方,用戶設置可能就是其中之一。

但是,在下定決心之前,您應該先了解EAV的缺點。

在我看來,擁有非常寬的設置表並不會那麼糟糕,特別是如果大多數用戶將爲大多數設置設置值。

+0

謝謝我同意,只是想確定。 –

相關問題