【问题标题】:Database table structure for user settings用户设置的数据库表结构
【发布时间】:2010-06-04 13:00:02
【问题描述】:

我需要添加一个表来存储用户设置。用户将第一次拥有大约 10 种不同的设置,但我相信还会有更多。

您建议使用哪种可扩展的数据库表结构来存储用户设置?

任何帮助将不胜感激。

谢谢!

【问题讨论】:

    标签: mysql database database-design structure


    【解决方案1】:

    设置表列-:setting_id |设置代码 |设置名称 |设置描述

    用户表列 -: user_id |用户名 |用户密码 |等等

    用户设置表列 -: user_setting_id | user_id_fk | setting_code_fk |设置值

    结构如下:

    用户 --> 用户设置

    希望这会有所帮助。

    【讨论】:

    • 如果每个 setting_value 都具有相同的数据类型,则此方法有效。如果它们属于不同的类型,那么为每个创建一个列是有意义的。此外,如果每个设置都有一个列,那么您只需要一个表而不是三个。
    • 这是否属于经常不受欢迎的键值模式?
    • @sqlvogel 如果您将每个设置都包含为一列,我认为用户表会变得太宽。我认为 2 个表可能是最好的方法。
    • @tstyle 是的。使用用户设置,这就是它应该的样子。非规范化有它的位置。就是那个地方。
    【解决方案2】:

    取决于设置。
    如果只是标志,则可以使用位掩码。

    如果是字符串 - 只需创建单独的字段。
    不要让它“可扩展”。数据库的长度必须是可扩展的(而且它们是),而不是宽度。
    只需在开始编写代码之前规划您的数据库结构。

    如果这将是糟糕的计划 - 好的,您可以稍后添加一些字段。但不要定期进行。这是数据库设计不佳的标志。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-17
      • 2021-08-10
      • 1970-01-01
      • 1970-01-01
      • 2012-08-17
      • 1970-01-01
      • 2012-10-20
      • 2016-09-10
      相关资源
      最近更新 更多