通常,當我需要存儲系統屬性(如管理信息,版本等)時,我使用平面文件(database.properties,init.properties等)。這在我每天看到並使用的其他程序中似乎很常見。在數據庫中擁有一個屬性表是一個壞主意嗎?
有時一個平面文件由於多種原因不理想。將Web應用程序部署到衆多客戶端通常會受到限制。在這些情況下,我使用數據庫表來保存信息。例如,假設我有一些我想要保存的管理數據,也許還有一些關於我的環境的細節。我可能會做這樣的事情:
property_entry_table
[id, scope, refId, propertyName, propertyValue, propertyType]
1, 0, 1, "DB_VER", "2.3.0", "FLOAT"
2, 0, 1, "LICENCE", "88475", "INT"
3, 0, 1, "TOP_PROJECT", "1", "INT"
4, 0, 1, "SHOW_WELCOME", "F", "BOOL"
5, 0, 1, "SMTP_AUTH", "SSH", "STRING"
6, 1, 1, "ADMIN_ALERTS", "T", "BOOL"
我意識到這打破了SQL的打字讓我各種類型存儲爲字符串。這是一種好的做法,還是我一直在以這種錯誤的方式進行討論?
如果沒有,我應該用什麼方式存儲這種類型的信息?
只要它是一些系統屬性的存儲等,它沒有問題。只是不要想法存儲**所有**這樣的數據!請參閱這裏討論,爲什麼:也許是推動的原因:http://www.simple-talk.com/sql/database-administration/five-simple--database-design-errors-you-should-avoid/ – 2010-02-23 19:26:26
這個問題,爲什麼我在這裏投票:http://stackoverflow.com/questions/2300356/using-a-single-row-configuration-table-in-sql-server-database-bad-idea/2300450#2300450 – Stephano 2010-02-23 20:03:17