Как я должен структурировать свою таблицу настроек с MySQL?

Что лучший способ состоит в том, чтобы структурировать таблицу MySQL для хранения администраторских настроек?

Как это?

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

Или как это?

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

Или возможно некоторый другой путь?

23
задан reformed 1 September 2017 в 05:12
поделиться

3 ответа

Имя таблицы = 'settings'

name  | varchar <-- primary key
value | varchar

Тогда вы можете сделать запрос следующим образом:

SELECT * FROM settings WHERE name = 'default_printer';

Этот вариант хорош и прост, и он будет хорошо работать с 10 или 10 000 настроек. В другом варианте вам придется добавить новый столбец, что будет совершенно бессмысленной тратой времени.

Редактировать

После вашего 1-го комментария вы могли бы выбрать несколько значений следующим образом:

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

:-)

24
ответ дан 29 November 2019 в 02:39
поделиться

Как обычно, это зависит от обстоятельств. Решение 1 проще. Sol # 2 легко интегрируется с ORM, но может столкнуться с ограничениями размера строки БД. Google для OTLT (как в задаче с одной истинной таблицей поиска) Сколько у вас настроек (несколько? Десятки? Сотни) ?) Как часто они вам понадобятся?

0
ответ дан 29 November 2019 в 02:39
поделиться

Ваш первый пример, пары имя-значение или EAV, дает гораздо больше гибкости.

Посетите вики-страницу о моделировании EAV в базах данных .

1
ответ дан 29 November 2019 в 02:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: