Вопрос по проектированию БД (многосайтовость в cms)

igor_avr

Новичок
Вопрос по проектированию БД (многосайтовость в cms)

Задача:
Написать небольшую CMS c возможностью создавать на ней несколько независимых друг от друга сайтов.

Вопрос/проблема:
Задумался над проектированием БД.

Есть два варианта:

1. Хранить данные для всех сайтов в одной таблице, указывая к какому сайту эти данные принадлежат:

Table
- id
- sitename
- title
- text

2. Хранить данные в разных таблицах:

SITENAME_Table
- id
- title
- text

Первый вариант с точки зрения проектирования БД вроде как самый правильный. Но например у меня есть модуль "структура", данные там представляют собой дерево (Nested Sets). И есть у меня 3 сайта. Хранить 3 дерева в одной таблице? Мне кажется это не лучший вариант.

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

Спасибо.
 

bgm

 
>> Первый вариант с точки зрения проектирования БД вроде как самый правильный.

Самый-самый? А на основе каких фактов ты сделал такой вывод?

P.S. Три независимых сайта - три независимых базы.
 

igor_avr

Новичок
bgm
Может и не самый правильный. Просто при первом варианте все данные одно типа находятся в одной таблице. При втором же варианте мы данные одного типа раскидываем по разным таблицам.

stiff
Ничего не мешает. Просто хочу узнать мнение более опытных людей.
 

MadMike

Новичок
igor_avr, работать нормально будет и то, и то - без разницы. Но при переносе одного сайта на какую-нибудь другую машинку в первом варианте у тебя возникнет некоторый геморрой. Этот минус видно сразу, остальные можно придумать :)
 

bgm

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

Но, повторюсь, всё же лучше держать отдельные проекты в отдельных базах (даже если они работают на одном экземпляре скриптов).
 

FireTiger

Новичок
А по-моему можно сделать два варианта в зависимости от настройки системы. Как вы думаете?
 

FractalizeR

Новичок
Автор оригинала: FireTiger
А по-моему можно сделать два варианта в зависимости от настройки системы. Как вы думаете?
Думаю, что не стоит. Это усложнит формирование всех запросов, которые будут использоваться. Если система предназначена не для бедных, то можно сразу ориентироваться на разные базы данных. А если для всех - лучше префиксы таблиц использовать. Обычно количество баз данных на дешевых хостингах сильно ограничено.
 

Beavis

Banned
наверно надо делать так чтоб можно было разрешить кому-то доступ к данным одного сайта и запретить доступ к другим сайтам?
 
Сверху