powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Укажите ошибки и недочёты -- проектирование БД небольшого сайта
6 сообщений из 6, страница 1 из 1
Укажите ошибки и недочёты -- проектирование БД небольшого сайта
    #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
Укажите ошибки и недочёты -- проектирование БД небольшого сайта
    #35857541
TomasVercetti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Конечно, зависит от вашего форума, но не лучше ли вместо ForumParts, ForumSections сделать иерархию ForumPath к конкретному Forum'у? Вдруг потом понадобятся ForumSubSections? К тому же, обычно, голосования привязываются к конкретному форуму, в котором также можно писать ForumMessages.

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

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

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

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

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

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

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



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

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

PS: Остальным спасибо, сейчас буду читать предложенный материал.
...
Рейтинг: 0 / 0
Укажите ошибки и недочёты -- проектирование БД небольшого сайта
    #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]