|
|
|
| Здравствуйте, подскажите как лучше хранить настройки сайта в базе данных
2 варианта, в первом хранить как обычно в линию то-есть название поля будет служить ключом
второй вариант все в столбик, в таблице 2 поля, name и value
какой из этих вариантов предпочтительней?
P.S. настроек примерно 100-120 | |
|
|
|
|
|
|
|
для: Max_Ivanov
(07.10.2009 в 18:28)
| | Если предполагается частое изменение - лучше второй вариант. | |
|
|
|
|
|
|
|
для: cheops
(07.10.2009 в 18:36)
| | ну обновления не частые, но это вообще нормально когда все в одну линию и в таблице более 100 полей?
в 1 варианте обновлять я примерно знаю как, UPDATE setting SET имя_поля1=значение1, имя_поля2=значение2... итд выборочно,
а как во втором варианте изменять если нужно переписать некоторые настройки? | |
|
|
|
|
|
|
|
для: Max_Ivanov
(07.10.2009 в 18:50)
| | В принципе нормально, но удобнее конечно пользоваться таблицей в режиме ключ=значение, особенно когда их так много.
>а как во втором варианте изменять если нужно переписать некоторые настройки?
У вас же значение в первом столбце будет уникальным - по нему можно будет поменять значение, составляя соответствующее WHERE-условие
UPDATE tbl SET val = 'new_val' WHERE fst = 'key';
|
| |
|
|
|
|
|
|
|
для: cheops
(07.10.2009 в 18:55)
| |
а если сразу несколько значений тогда вот так надо?
UPDATE tbl SET val1 = 'new_val1' WHERE fst1 = 'key1';
UPDATE tbl SET val2 = 'new_val2' WHERE fsе=2 = 'key2';
UPDATE tbl SET val3 = 'new_val3' WHERE fst3 = 'key3';
|
| |
|
|
|
|
|
|
|
для: Max_Ivanov
(07.10.2009 в 19:02)
| | Да, тогда придется выполнять количество запросов, кратное количеству изменений. Впрочем, если, изменять значения планируется не часто - в большой количестве запросов нет ничего страшного. | |
|
|
|
|
|
|
|
для: cheops
(07.10.2009 в 19:10)
| | Все понял спасибо за помощь | |
|
|
|
|
|
|
|
для: cheops
(07.10.2009 в 18:36)
| | Здравствуйте, еще один небольшой вопрос, по этой же теме, а вот по скорости вывода (чтения) из базы какой вариант лучше первый или второй?
в первом варианте можно все вывести одним запросом
а как быть со вторым вариантом
в голову только приходит что-то вроде этого
$req = mysql_query("SELECT * FROM `settings`;");
$set = array();
while ($res = mysql_fetch_row($req))
$set[$res[0]] = $res[1];
|
но так все равно лишнее действие, как лучше? | |
|
|
|
|
|
|
|
для: Max_Ivanov
(08.10.2009 в 23:53)
| | Если речь идет о 100 параметрах - разницы никакой не будет. А так, конечно, первый вариант будет более быстрый при выборке. | |
|
|
|