БД для многосайтовой CMS

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
 

Raziel[SD]

untitled00
>>б) Общие таблицы для всех сайтов отсутствуют

Из одной бд, можно обращаться в другую (MainDb.SomeTable.SomeField).
 

Shasoft

Новичок
Нашел команду
SHOW CREATE TABLE

Получаю для шаблонной таблицы строку создания, потом для той, что надо править. Если не совпадают, то пересоздаю таблицу с новами параметрами по таблице шаблона. А потом данные копирую из старой в новую.

to Raziel[SD]:
Мне как раз нужна система, чтобы из одной БД в другую обращений не было.
Я сделал одну БД, но для каждого сайта в ней создаются свои таблицы по образцам шаблонов. И каждый сайт работает со своими таблицами.
 

ustas

Элекомист №1
а какя разница где эти яйца? В правой корзинке или в левой?
 
Сверху