如何在数据库(Xml,Json)中存储键值或一对多用户设置?

时间:2014-01-15 08:46:09

标签: mysql xml json database-design setting

我们是否应该以数据库格式(如XML或JSON格式)将应用程序键值设置数据保存为序列化方式。 例如用户设置数据可以在单个nvarchar(2000)列中以序列化方式保存

或者我应该将它们保存为像BELOW

这样的列

用户ID,设置名称,设置值

  1. 123,AssignedQuiz,科学
  2. 123,AssignedQuiz,数学
  3. 456,AssignedQuiz,地理位置

2 个答案:

答案 0 :(得分:1)

以序列化方式存储时,很难更新其中的单个值。相反,您需要每次更新列 如果您存储在表格中,则可以轻松更新单行或从表中检索。

您可以将结构定义为:
表:setting
列(settingid,setting_name,setting_value)

表:user_settings
列(userid,settingid)

答案 1 :(得分:0)

我有最终结构 但是这个结构可以扩展到1000万用户* 100设置= 10亿设置Mysql ?? 是的,它会!

SettingType TABLE

   SettingTypeId    UNSIGNED SMALLINT(2)
    SettingName VARCHAR(100)
    SettingDescription  VARCHAR(300)
    Created DATETIME
    LastUpdated TIMESTAMP
    CreatedBy   UNSIGNED INT(4)
    ModifiedBy  UNSIGNED INT(4)
    Deleted BIT
    Disabled    BIT
    RecordVersion   UNSIGNED INT(4)

最终结构: -

设置表

   SettingId    UNSIGNED INT(4)
    SettingTypeId   UNSIGNED SMALLINT(2)
    UserId  UNSIGNED INT(4)
    SettingValue    VARCHAR(1000)
    Created DATETIME
    LastUpdated TIMESTAMP
    CreatedBy   UNSIGNED INT(4)
    ModifiedBy  UNSIGNED INT(4)
    Deleted BIT
    Disabled    BIT
    RecordVersion   UNSIGNED INT(4)