通常,当我需要存储系统属性(如管理信息,版本等)时,我使用平面文件(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