Что лучший способ состоит в том, чтобы структурировать таблицу MySQL для хранения администраторских настроек?
Как это?
Setting _|_ Value
setting1 | a
setting2 | b
setting3 | c
setting4 | d
setting5 | e
Или как это?
|--------|_setting1_|_setting2_|_setting3_|_setting4_|_setting5_|
Settings | a | b | c | d | e |
Или возможно некоторый другой путь?
Имя таблицы = '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');
:-)
Как обычно, это зависит от обстоятельств. Решение 1 проще. Sol # 2 легко интегрируется с ORM, но может столкнуться с ограничениями размера строки БД. Google для OTLT (как в задаче с одной истинной таблицей поиска) Сколько у вас настроек (несколько? Десятки? Сотни) ?) Как часто они вам понадобятся?
Ваш первый пример, пары имя-значение или EAV, дает гораздо больше гибкости.
Посетите вики-страницу о моделировании EAV в базах данных .