Database design 全局设置的数据库表
我正在为web应用程序设计一个数据库,希望有一个可配置全局设置的表。此表的设计是否有既定的最佳实践?我可以想出两种可能的解决办法,我相信肯定还有其他办法 最简单的方法是将键/值对作为字符串存储在其中。这只需要两列,但不能为单个项添加类型约束 另一种方法是为每个设置添加一列,但是整个表只有一行,这感觉有点奇怪Database design 全局设置的数据库表,database-design,Database Design,我正在为web应用程序设计一个数据库,希望有一个可配置全局设置的表。此表的设计是否有既定的最佳实践?我可以想出两种可能的解决办法,我相信肯定还有其他办法 最简单的方法是将键/值对作为字符串存储在其中。这只需要两列,但不能为单个项添加类型约束 另一种方法是为每个设置添加一列,但是整个表只有一行,这感觉有点奇怪 在大多数情况下,这是如何处理的?设置保存在(可能还有rails)中的方式是作为键/值对,但不是保存在数据库表中,而是保存在文件中,这样做的优点是既便于人读又易于解析。如果表中只有一行,那为什
在大多数情况下,这是如何处理的?设置保存在(可能还有rails)中的方式是作为键/值对,但不是保存在数据库表中,而是保存在文件中,这样做的优点是既便于人读又易于解析。如果表中只有一行,那为什么要使用数据库呢?以XML格式将配置存储在文件中
如果仍然需要使用数据库,则将配置以XML形式存储在数据库的一个表的一行中的一列中。如果要在数据库中执行此操作,我喜欢的方法是存储属性。属性具有键/值对。但它也有一个属性类型(指向AttributeType表),比如日志记录、siteConfig、externalReferences等等。然后,您还可以在AttributeType级别拥有一个表,该表指定要保存在attributes表中的数据类型。DataTypeID将与AttributeType一起存储。然后指向一个数据类型表进行查找。这样,您就可以知道您正在处理数字、日期、字符串、xml等。我发现这提供了最大的灵活性…如果您需要的话。在ASP.Net中,您可以将全局配置值以名称/值对的形式存储在Web.Config文件中。我喜欢STAii提倡的YAML方法
如果你是.NET或java应用程序,你也可以考虑XML,并使用序列化来方便地获取用户设置的实例。
< P>我们在当前项目中使用的是一个名为SySPARM的系统参数表。此表主要是一个键/值表。它对键和值都使用VARCHAR。这允许我们以任何形式指定键以及值(真正转换为动作)我喜欢使用DB,因为我们可以对应用程序进行实时调整。例如,当系统停止维护时,我们在其中设置了一个值,这样用户就无法访问web应用程序。我们可以在任何时候关闭或打开此功能,而无需部署任何应用程序。Zend Framework使用config.ini,并具有一个强大的解析器,可以根据点表示法将键拆分为数组和子数组。config.ini可以作为实例加载并存储在注册表中 例如: db.name“myname” db.host“myhost” db.user“myuser” db.password“mypassword” 我现在可以得到如下值:
$config->db->name;或完整数组$config->db 过去我使用数据库表存储应用程序设置,它非常有用。虽然,我同意你的担心,感觉应该有更好的方法来做到这一点。但是,我不知道,所以我们开始:
- id-int
- 名称-varchar(50)
- 值-文本
- 数据类型-varchar(50)
- 说明-文本
你在用什么平台?最好使用特定于平台的工具来处理配置。目前正在使用一个简单的php/mysql设置。我也不是死心塌地地使用数据库。如果有一个很好的非数据库解决方案,我对它非常开放。你肯定是在开玩笑吧?将XML粘贴到数据库中有什么意义?这将如何使事情比键/值表更简单呢?您可以使用。。。或3@ChssPly76:注意:我建议将其保存在一个文件中。与我的答案类似,但他想要一个“数据库”,而不仅仅是一个配置文件。@djangofan,他确实提到他想要一个“数据库”,但我们所说的问题