Shasoft
Новичок
БД для многосайтовой CMS
Делаю многосайтовый CMS (точнее многосайтовый движок, так CMS это назвать сложно
)
Дошел до разделения БД для каждого сайта. Почитал тему "Много данных в одной БД или много БД" но там рассматривается этот вопрос со стороны скорости доступа и больших объемов.
Меня же интересует удобство внесения изменений и работы с таким CMS
Изначально варианта 3:
1. Сделать общие таблицы с полем-идентификатором для каждого сайта
Плюсы:
а) При изменении структуры достаточно изменить структуру всего одной таблицы
б) можно использовать общие для всех сайтов БД
Минусы:
а) везде в запросах надо писать первое условие вида IDSITE = id
2. Сделать отдельную БД для каждого сайта
Плюсы:
а) Избавляемся от условия вида IDSITE = id
б) Общие таблицы для всех сайтов отсутствуют
Минусы:
а) При изменении структуры нужно вносить аналогичные изменения во ВСЕ БД для каждого сайта
3. Сделать одну БД, но для каждого сайта таблицы должны иметь вид <название><id-сайта>
Плюсы:
а) Избавляемся от условия вида IDSITE = id
б) Доступны общие таблицы
Минусы:
а) При изменении структуры нужно вносить аналогичные изменения во ВСЕ аналогичные таблицы БД
Я остановился на 3-ем варианте (количество сайтов у меня будет небольшим, порядка 10)
Всё вроде замечательно. Но пока не пойму, как бороться с минусом третьего варианта?
С одной стороный всё-таки изменить структуру 10 аналогичных таблиц, а не 1 не особо и много, с другой - не дай бог забуду изменить одну из таблиц и крантец.
Чтобы этого избежать хочу сделать шаблонные таблицы, структура с которых будет копироваться во все остальные при создании нового сайта и при изменении структуры исходной таблицы.
Хотелось бы у профи узнать - есть ли в природе какие-нибудь скрипты/библиотеки для этого дела? В идеале ,конечно, хотелось бы функцию
CopyStructure("Table1","Table2")
-~{}~ 25.10.08 13:34:
Точнее нужен скрипт, который
а) Выгружает структуру таблицы
б) обновляет структуру таблицы в соответствии с данными из XML
Делаю многосайтовый CMS (точнее многосайтовый движок, так CMS это назвать сложно

Дошел до разделения БД для каждого сайта. Почитал тему "Много данных в одной БД или много БД" но там рассматривается этот вопрос со стороны скорости доступа и больших объемов.
Меня же интересует удобство внесения изменений и работы с таким CMS
Изначально варианта 3:
1. Сделать общие таблицы с полем-идентификатором для каждого сайта
Плюсы:
а) При изменении структуры достаточно изменить структуру всего одной таблицы
б) можно использовать общие для всех сайтов БД
Минусы:
а) везде в запросах надо писать первое условие вида IDSITE = id
2. Сделать отдельную БД для каждого сайта
Плюсы:
а) Избавляемся от условия вида IDSITE = id
б) Общие таблицы для всех сайтов отсутствуют
Минусы:
а) При изменении структуры нужно вносить аналогичные изменения во ВСЕ БД для каждого сайта
3. Сделать одну БД, но для каждого сайта таблицы должны иметь вид <название><id-сайта>
Плюсы:
а) Избавляемся от условия вида IDSITE = id
б) Доступны общие таблицы
Минусы:
а) При изменении структуры нужно вносить аналогичные изменения во ВСЕ аналогичные таблицы БД
Я остановился на 3-ем варианте (количество сайтов у меня будет небольшим, порядка 10)
Всё вроде замечательно. Но пока не пойму, как бороться с минусом третьего варианта?
С одной стороный всё-таки изменить структуру 10 аналогичных таблиц, а не 1 не особо и много, с другой - не дай бог забуду изменить одну из таблиц и крантец.
Чтобы этого избежать хочу сделать шаблонные таблицы, структура с которых будет копироваться во все остальные при создании нового сайта и при изменении структуры исходной таблицы.
Хотелось бы у профи узнать - есть ли в природе какие-нибудь скрипты/библиотеки для этого дела? В идеале ,конечно, хотелось бы функцию
CopyStructure("Table1","Table2")

-~{}~ 25.10.08 13:34:
Точнее нужен скрипт, который
а) Выгружает структуру таблицы
б) обновляет структуру таблицы в соответствии с данными из XML