Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как лучше хранить настройки сайта
 
 автор: Max_Ivanov   (07.10.2009 в 18:28)   письмо автору
 
 

Здравствуйте, подскажите как лучше хранить настройки сайта в базе данных

2 варианта, в первом хранить как обычно в линию то-есть название поля будет служить ключом
второй вариант все в столбик, в таблице 2 поля, name и value
какой из этих вариантов предпочтительней?

P.S. настроек примерно 100-120

  Ответить  
 
 автор: cheops   (07.10.2009 в 18:36)   письмо автору
 
   для: Max_Ivanov   (07.10.2009 в 18:28)
 

Если предполагается частое изменение - лучше второй вариант.

  Ответить  
 
 автор: Max_Ivanov   (07.10.2009 в 18:50)   письмо автору
 
   для: cheops   (07.10.2009 в 18:36)
 

ну обновления не частые, но это вообще нормально когда все в одну линию и в таблице более 100 полей?
в 1 варианте обновлять я примерно знаю как, UPDATE setting SET имя_поля1=значение1, имя_поля2=значение2... итд выборочно,

а как во втором варианте изменять если нужно переписать некоторые настройки?

  Ответить  
 
 автор: cheops   (07.10.2009 в 18:55)   письмо автору
 
   для: Max_Ivanov   (07.10.2009 в 18:50)
 

В принципе нормально, но удобнее конечно пользоваться таблицей в режиме ключ=значение, особенно когда их так много.

>а как во втором варианте изменять если нужно переписать некоторые настройки?
У вас же значение в первом столбце будет уникальным - по нему можно будет поменять значение, составляя соответствующее WHERE-условие
UPDATE tbl SET val = 'new_val' WHERE fst = 'key';

  Ответить  
 
 автор: Max_Ivanov   (07.10.2009 в 19:02)   письмо автору
 
   для: 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';

  Ответить  
 
 автор: cheops   (07.10.2009 в 19:10)   письмо автору
 
   для: Max_Ivanov   (07.10.2009 в 19:02)
 

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

  Ответить  
 
 автор: Max_Ivanov   (07.10.2009 в 19:36)   письмо автору
 
   для: cheops   (07.10.2009 в 19:10)
 

Все понял спасибо за помощь

  Ответить  
 
 автор: Max_Ivanov   (08.10.2009 в 23:53)   письмо автору
 
   для: 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];


но так все равно лишнее действие, как лучше?

  Ответить  
 
 автор: cheops   (09.10.2009 в 12:06)   письмо автору
 
   для: Max_Ivanov   (08.10.2009 в 23:53)
 

Если речь идет о 100 параметрах - разницы никакой не будет. А так, конечно, первый вариант будет более быстрый при выборке.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования