在SQL Server数据库中使用单行配置表,是一个不好的想法吗?

166

在开发购物车应用程序时,我发现需要根据管理员的偏好和要求保存设置和配置。这些信息可以是公司信息、运输账户ID、PayPal API密钥、通知偏好等任何内容。

在关系型数据库系统中创建一个表来存储单行数据似乎非常不合适。

那么,应该采用什么方法来存储这些信息呢?

注意:我的DBMS是SQL Server 2008,编程层使用ASP.NET(使用C#实现)。

12个回答

0
我不确定单行是配置的最佳实现方式。您最好为每个配置项设置一行,每行有两列(configName,configValue),尽管这将需要将所有值转换为字符串并再次转换回来。
无论如何,在全局配置中使用单行也没有问题。在 DB 中存储它的其他选项(全局变量)更糟糕。您可以通过插入第一行配置,然后禁用表上的插入以防止多个行来控制它。

0

抱歉我来晚了,但是我做的事情很简单有效。我只需创建一个带有三个 () 列的表:

ID - int (11)

name - varchar (64)

value - text

在创建、更新或读取新的配置列之前,我会对“value”进行序列化!这样我就可以确定类型(好吧,php可以 :) )

例如:

b:0; 表示BOOLEAN (false)

b:1; 表示BOOLEAN (true)

i:1988; 表示INT

s:5:"Kader"; 表示长度为 5 的STRING

希望能对你有所帮助 :)


1
为什么不为类型创建一个新列?i:1988似乎是想将两个信息合并到单个列中。 - maraaaaaaaa
因为一旦反序列化,您将获得确切的类型,而无需在之后使用循环(if或switch)...等。 - Kader Bouyakoub
不需要任何循环或开关等,实际上这将消除从每行解析信息的步骤,而如果您有一个额外的列用于类型,则组件提取信息时已经可用类型信息,而无需执行任何进一步的步骤,只需进行初始查询即可。 - maraaaaaaaa
您的意思是对于整数使用 echo (int) $var,而对于其他类型则使用其他方式吗? - Kader Bouyakoub

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接