有人建議移動臺充滿設置,其中,每個列是一個設置名稱(或類型),並且行是客戶&其每個設置相應的設置。表設計SystemSettings,最佳模式
ID | IsAdmin | ImagePath
------------------------------
12 | 1 | \ path \ to \ images
34 | 0 | \ path \ to \ images
這個缺點是每當我們想要一個新的設置名稱(或類型)時,我們都會改變表格(通過sql)並添加新的(列)設置名稱/類型。然後更新行(以便每個客戶現在具有該設置的值)。
新表設計方案。建議是有一個設置名稱的列和另一個設置列。
ID |設置名稱| SettingValue
----------------------------
12 | IsAdmin | 1
12 | ImagePath | \ path \ to \ images
34 | IsAdmin | 0
34 | ImagePath | \ path \ to \ images
他們提出的一點是,添加一個新的設置就像插入一條簡單的聲明到行一樣簡單,沒有添加列。
可是,我感覺不對關於第二個設計,它看起來不錯,但我不能想出反對任何參數。我錯了嗎?
我認爲在設置上使用EAV是可以的。圍繞EAV設計完整的數據庫是一個完全不同的故事,而不是OP詢問的內容。但是我沒有看到從你的角度來看,根本不同的文檔數據庫是怎麼樣的,我也不明白爲什麼使用它們會得到保證。 – 2010-03-08 18:30:18
@Johannes Rudolph:對於一個簡單的系統設置表,那麼是的。就像web.config中的appsetting,說。但是,像web.config一樣,您可以使用專用部分來進行更復雜的設置:您不會擴展應用程序。最終,情況會變得更糟,因爲有人會認爲「這是一個好主意」。說,我已經使用它們,但你必須要小心...... – gbn 2010-03-08 18:39:31
感謝您的領導這是一個(粗糙)版本的EAV,在鏈接和谷歌之間,我應該得到的東西。參照完整性似乎確實存在一些問題。比如創建一個設置DefaultReportID,10在1到9的報表中存在。 – 2010-03-08 21:25:15