|
|
|
| Суть в следующем -
Пишу справочник , и необходимо спроектировать базу так чтобы потом можно было легко добавлять поля к таблице, их может быть много, но мне не надо чтобы база росла в ширину, что то слышал про множественные ключи, или как то так.. Подскажите куда копать? | |
|
|
|
|
|
|
|
для: Alph[p]a
(17.10.2011 в 09:12)
| | Обычно, когда таблица регулярно растет вширь, стараются так нормализовать базу данных, чтобы это расширение сводилось к добавлению новых записей в таблицу.
Как часто вы планируете добавлять новые столбцы и завершиться ли этот процесс когда-нибудь? Может стоит хранить названия столбцов в отдельной таблице, а в целевой таблице использовать строку ключ-значение, где ключ - это первичный ключ "столбца" из первой таблицы, а значение, соответствующее ему значение в справочнике. Разумеется потребуется и дополнительный столбец для обозначения "строк". Тогда можно любую динамическую таблицу представить в виде двух, с которыми можно будет управляться операторами управления (INSERT, UPDATE, DELETE), а не определения (ALTER). | |
|
|
|
|
|
|
|
для: cheops
(17.10.2011 в 09:28)
| |
Разумеется потребуется и дополнительный столбец для обозначения "строк".
|
Вот тут я не понял поясните пожалуйста) | |
|
|
|
|
|
|
|
для: 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. | |
|
|
|