How should I structure my settings table with MySQL?

后端 未结 4 1320
我在风中等你
我在风中等你 2021-02-18 12:35

What\'s the best way to structure a MySQL table for storing admin settings?

Like this?

Setting _|_ Value
setting1 |   a
setting2 |   b
setting3 |   c
set         


        
相关标签:
4条回答
  • 2021-02-18 13:10

    Consider the first option (Setting, Value) as columns. But also consider adding additional, meta columns as well, such as Description (would come in handy if you have alot of ambiguous settings), PreviousValue, LastUpdated, UpdatedBy, etc.

    0 讨论(0)
  • 2021-02-18 13:35

    Table name = 'settings'

    name  | varchar <-- primary key
    value | varchar
    

    Then you can query like this:

    SELECT * FROM settings WHERE name = 'default_printer';
    

    This option is nice and easy and it will work well with 10, or 10,000 settings. With the other option you'll have to add a new column, which would be a completely pointless waste of time.

    Edit

    After your 1st comment you could choose multiple values like this:

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

    :-)

    0 讨论(0)
  • 2021-02-18 13:36

    Your first example, name-value pairs or EAV, allows for a good deal more flexibility.

    Check out the wiki page about EAV modelling in databases.

    0 讨论(0)
  • 2021-02-18 13:36

    As usual, it depends. Solution 1 is simpler. Sol #2 easily integrates with ORMs, but may hit DB row size limitations. Google for OTLT (as in One True Lookup Table problem) How much settings do you have(few? dozens? hundreds?) How often will you need them?

    0 讨论(0)
提交回复
热议问题