Dav*_*och 141 sql configuration database-design relational-database
在开发购物车应用程序时,我发现我需要根据管理员的偏好和要求保存设置和配置.此信息可以是公司信息,运输帐户ID,PayPal API密钥,通知首选项等.
创建一个表来在关系数据库系统中存储单行似乎非常不合适.
存储此信息的适当方法是什么?
注意:我的DBMS是SQL Server 2008,编程层是用ASP.NET实现的(在C#中).
adr*_*nks 182
我过去曾做过两种方式 - 单行表和键/值对表 - 每种方法都有正面和负面.
单行选项是迄今为止最容易使用的选项.这是因为您可以在数据库中以正确的类型存储每个设置,而不必在代码中存储设置的类型以及它们的查找键.
我关注使用这种方法的一件事是在"特殊"单行设置表中有多行.我通过(在SQL Server中)克服了这个问题:
这意味着表中只能存在一行,因为位列必须具有值0,但由于唯一约束,只能有一行具有该值.
Otá*_*cio 10
您应该创建一个表,其中包含信息类型和信息值的列(至少).这样,您可以避免每次添加新信息时都必须创建新列.
单排工作正常; 它甚至会有很强的类型:
show_borders bit
admin_name varchar(50)
max_users int
Run Code Online (Sandbox Code Playgroud)
一个缺点是它需要架构更改(alter table)来添加新设置.一种替代方法是规范化,最终得到如下表:
pref_name varchar(50) primary key
pref_value varchar(50)
Run Code Online (Sandbox Code Playgroud)
这有弱类型(一切都是varchar),但添加一个新设置只是添加一行,你可以只使用数据库写访问.