2010-03-18 2 views
19

Каков наилучший способ структурирования таблицы 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  | 

Или, может быть, каким-то другим способом?

ответ

20

имя таблицы = «Настройки»

name | varchar <-- primary key 
value | varchar 

Тогда вы можете запросить так:

SELECT * FROM settings WHERE name = 'default_printer'; 

Этот вариант хорошо и легко, и это будет хорошо работать с 10 или 10000 установок. С помощью другого варианта вам нужно будет добавить новый столбец, который будет совершенно бессмысленной тратой времени.

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

После Вашего 1 комментарий Вы можете выбрать несколько значений, например:

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

:-)

+0

+1 за явно указывает на то, что мне нужно было первичным ключ, так как я забыл об этом в своем оригинальном посте;) ... Выглядит неплохо. Мне особенно нравится, используя эту настройку, я мог бы создать функцию, которая позволила бы мне выбрать настройку (или несколько настроек за раз), что было бы очень удобно. – Cam

+2

Я согласен, я добавил еще один возможный оператор SQL, мы используем этот метод в нашей ERP-системе, содержит множество настроек. :-) –

+0

Что делать, если вы хотите хранить разные типы в «Значении», допустимо ли позднее сделать бросок в коде кодом ожидаемого вами типа? Если у вас очень мало настроек, и все они разные, то есть строка, int, float, было бы разумнее использовать вторую схему? – radtek

0

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

+0

Десятки. Мне могут понадобиться некоторые из них так же часто, как и каждый просмотр страницы. То есть параметр администратора может влиять на просмотр определенных страниц каждый раз, когда они отображаются. Например, одним из параметров будет имя признанного продукта, а другим параметром будет имя файла для изображения gif указанного продукта. – Cam

3

Рассмотрите первый вариант (Setting, Value) в виде столбцов. Но также рассмотреть вопрос о добавлении дополнительных, мета-столбцы, а также, например, как Description (пригодится, если у вас есть много неоднозначных настроек), PreviousValue, LastUpdated, UpdatedBy и т.д.

+1

Хороший совет, добавляющий мета столбцы – afarazit

 Смежные вопросы

  • Нет связанных вопросов^_^