Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Укажите ошибки и недочёты -- проектирование БД небольшого сайта / 6 сообщений из 6, страница 1 из 1
08.03.2009, 08:59
    #35857444
deb-user1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Укажите ошибки и недочёты -- проектирование БД небольшого сайта
Добрый день!

Задание: спроектировать БД небольшого сайта (форум, опросы, файлообменник, и т.д.). Т.к. особо большого опыта в проектировании БД нет, то решил спросить на этом форуме. Проектирую в Visio, СУБД: SQL Server 2008.


Описание диаграммы, приведённой ниже:

Users -- основная таблица, содержащая все основные данные о пользователе;
Permissions -- группы и разграничение прав на всём сайте;
ForumParts -- основные разделы форума (на этом форуме: "Использование СУБД", "Дискуcсии", "Microsoft.NET", "Программирование", etc.);
ForumSections -- под-разделы каждого раздела (такие, как: "Сравнение СУБД", "Проектирование БД", "Работа", etc.);
ForumMessages -- каждое сообщение форума;
FileUploads -- закачки пользователей;
Polls -- все голосования (хранит только сами вопросы);
PollVariants -- возможные варианты ответа к каждому из опросов (foreign key poll_id определяет, к какому опросу относится данная строка варианта);
PollVotes -- непосредственно сами голосования пользователей (составной первичный ключ из трёх foreign key).


SQL запрос на создание всей БД и таблиц такой:

http://pastebin.com/f41966f0
(Привёл для того, чтобы было видно, какие типы данных выбрал для каждого из столбцов.)


Диаграмма БД:




PS: Сильно не пинать. Только учусь, и по мере проектирования буду выкладывать на критику новые более полные варианты БД. =) Заранее спасибо за ответы!
...
Рейтинг: 0 / 0
08.03.2009, 12:42
    #35857541
TomasVercetti
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Укажите ошибки и недочёты -- проектирование БД небольшого сайта
Конечно, зависит от вашего форума, но не лучше ли вместо ForumParts, ForumSections сделать иерархию ForumPath к конкретному Forum'у? Вдруг потом понадобятся ForumSubSections? К тому же, обычно, голосования привязываются к конкретному форуму, в котором также можно писать ForumMessages.

Не совсем понял, какую систему контроля доступа вы хотите осуществить. У вас только ForumParts будет иметь ограничения по доступу? Или ForumParts должен являться общим предком всех и любой части форума (Forums, Messages, Polls, etc.)?
...
Рейтинг: 0 / 0
08.03.2009, 12:58
    #35857557
deb-user1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Укажите ошибки и недочёты -- проектирование БД небольшого сайта
TomasVercettiКонечно, зависит от вашего форума, но не лучше ли вместо ForumParts, ForumSections сделать иерархию ForumPath к конкретному Forum'у? Вдруг потом понадобятся ForumSubSections?

Подумаю над этим, но пока хватает 3-х уровней в иерархии ('часть' -> 'секция' -> 'сообщение'). Усложнять пока не стоит, ИМХО.

TomasVercettiК тому же, обычно, голосования привязываются к конкретному форуму, в котором также можно писать ForumMessages.

Комментарии к каждому опросу?

TomasVercettiНе совсем понял, какую систему контроля доступа вы хотите осуществить. У вас только ForumParts будет иметь ограничения по доступу? Или ForumParts должен являться общим предком всех и любой части форума (Forums, Messages, Polls, etc.)?

Тут додумаю. Навскидку, вначале думалось так: Permissions содержит группы пользователей, которые имеют доступ к определённому разделу форума (ForumParts).
...
Рейтинг: 0 / 0
09.03.2009, 12:54
    #35858110
Senya_L
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Укажите ошибки и недочёты -- проектирование БД небольшого сайта
deb-user1,

По поводу users.permission_id. Если система разграничения прав будет несложной, то, в принципе, сойдет. Иначе советую продумать этот вопрос тщательнее. Советую почитать здесь . Хотя там не по MSSQL, но принцип один и тот же.
...
Рейтинг: 0 / 0
09.03.2009, 16:01
    #35858346
deb-user1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Укажите ошибки и недочёты -- проектирование БД небольшого сайта
Добавил ещё немного данных. Новый вариант:



Систему разграничения доступа решил оставить по-старому. Например, в таблице Permissions будут строки: 'administrator', 'privileged-user-group-1', 'user', 'guest'. Если например в строке таблицы ForumParts будет указан permission_id с 'user', то данный раздел смогут читать администраторы, зарегистрированные пользователи, пользователи из привилегированной группы, но не гости форума. Т.е. Permissions как-бы показывает "нижнюю границу" доступа.

Специфика форума такая, что более сложного ничего не требуется. Ну так, вообщем, ничего? Просто хочется того, чтобы после написания форума не выплыло "подводных камней", когда БД уже будет забита данными.

PS: Остальным спасибо, сейчас буду читать предложенный материал.
...
Рейтинг: 0 / 0
11.03.2009, 18:53
    #35863081
prompt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Укажите ошибки и недочёты -- проектирование БД небольшого сайта
1.зачем poll_id в PollVotes?
2.multiplicity в отношении Permissions-Users правильно определено? то же самое для ForumParts.
3.если файл присоединен к одному сообщению, то в таблице ForumMessageAttach PK не нужен (если не предполагается появление дочерних таблиц), PK создается на базе FK
4.в названиях структурных объектов в бд обычно используют единственное число, за исключением случаев, когда его использование невозможно, как например, Scissors.
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Укажите ошибки и недочёты -- проектирование БД небольшого сайта / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]