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

Форум MySQL

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

 

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

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

тема: Динамическая расширяемость SQL-таблицы в ширину
 
 автор: Alph[p]a   (17.10.2011 в 09:12)   письмо автору
 
 

Суть в следующем -
Пишу справочник , и необходимо спроектировать базу так чтобы потом можно было легко добавлять поля к таблице, их может быть много, но мне не надо чтобы база росла в ширину, что то слышал про множественные ключи, или как то так.. Подскажите куда копать?

  Ответить  
 
 автор: cheops   (17.10.2011 в 09:28)   письмо автору
 
   для: Alph[p]a   (17.10.2011 в 09:12)
 

Обычно, когда таблица регулярно растет вширь, стараются так нормализовать базу данных, чтобы это расширение сводилось к добавлению новых записей в таблицу.

Как часто вы планируете добавлять новые столбцы и завершиться ли этот процесс когда-нибудь? Может стоит хранить названия столбцов в отдельной таблице, а в целевой таблице использовать строку ключ-значение, где ключ - это первичный ключ "столбца" из первой таблицы, а значение, соответствующее ему значение в справочнике. Разумеется потребуется и дополнительный столбец для обозначения "строк". Тогда можно любую динамическую таблицу представить в виде двух, с которыми можно будет управляться операторами управления (INSERT, UPDATE, DELETE), а не определения (ALTER).

  Ответить  
 
 автор: Alph[p]a   (17.10.2011 в 09:55)   письмо автору
 
   для: cheops   (17.10.2011 в 09:28)
 

Разумеется потребуется и дополнительный столбец для обозначения "строк". 


Вот тут я не понял поясните пожалуйста)

  Ответить  
 
 автор: cheops   (17.10.2011 в 10:11)   письмо автору
 
   для: Alph[p]a   (17.10.2011 в 09:55)
 

Смотрите, пусть у вас есть таблица
fld11  fld12  fld13
fld21  fld22  fld23
...
fldN1  fldN2  fldN3
Её можно представить следующим образом
1 1 1 fld11
2 1 2 fld12
3 1 3 fld13
4 2 1 fld21
5 2 2 fld22
6 2 3 fld23
...
124 N 1 fldN1
125 N 2 fldN2
126 N 3 fldN3
Чтобы добавить/удалить столбец в первой таблице, потребуется опереатор ALTER, во второй таблице будет достаточно операторов INSERT/DELETE.

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

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