代码之家  ›  专栏  ›  技术社区  ›  Cam

我应该如何用MySQL构建设置表?

  •  20
  • Cam  · 技术社区  · 15 年前

    Setting _|_ Value
    setting1 |   a
    setting2 |   b
    setting3 |   c
    setting4 |   d
    setting5 |   e
    

    或者像这样?

    |--------|_setting1_|_setting2_|_setting3_|_setting4_|_setting5_|
    Settings |    a     |    b     |    c     |    d     |    e     |
    

    或者其他方式?

    4 回复  |  直到 7 年前
        1
  •  30
  •   Cam    8 年前

    表名='设置'

    name  | varchar <-- primary key
    value | varchar
    

    然后可以这样查询:

    SELECT * FROM settings WHERE name = 'default_printer';
    

    这个选项很好,很简单,它可以很好地与10,或10000设置。在另一个选项中,您必须添加一个新的列,这完全是毫无意义的浪费时间。

    编辑

    在您的第一条评论之后,您可以选择如下多个值:

    SELECT * FROM settings WHERE name IN ('default_printer','default_page_size');
    

    :-)

        2
  •  4
  •   reformed Ezequiel García    8 年前

    考虑第一个选择( Setting , Value Description (如果你有很多模棱两可的设置,那就派上用场了), PreviousValue , LastUpdated , UpdatedBy

        3
  •  1
  •   Paul Sasik    15 年前

    您的第一个示例,名称-值对(name-value pairs)或EAV,允许更大的灵活性。

    wiki page about EAV modelling in databases .

        4
  •  0
  •   Dercsár    15 年前

    和往常一样,要看情况。解决方案1更简单。Sol#2很容易与ORMs集成,但可能会遇到DB行大小的限制。 你有多少设置(很少?几十个?你多久需要一次?