|
|
|
Укажите ошибки и недочёты -- проектирование БД небольшого сайта
|
|||
|---|---|---|---|
|
#18+
Добрый день! Задание: спроектировать БД небольшого сайта (форум, опросы, файлообменник, и т.д.). Т.к. особо большого опыта в проектировании БД нет, то решил спросить на этом форуме. Проектирую в 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: Сильно не пинать. Только учусь, и по мере проектирования буду выкладывать на критику новые более полные варианты БД. =) Заранее спасибо за ответы! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2009, 08:59 |
|
||
|
Укажите ошибки и недочёты -- проектирование БД небольшого сайта
|
|||
|---|---|---|---|
|
#18+
Конечно, зависит от вашего форума, но не лучше ли вместо ForumParts, ForumSections сделать иерархию ForumPath к конкретному Forum'у? Вдруг потом понадобятся ForumSubSections? К тому же, обычно, голосования привязываются к конкретному форуму, в котором также можно писать ForumMessages. Не совсем понял, какую систему контроля доступа вы хотите осуществить. У вас только ForumParts будет иметь ограничения по доступу? Или ForumParts должен являться общим предком всех и любой части форума (Forums, Messages, Polls, etc.)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2009, 12:42 |
|
||
|
Укажите ошибки и недочёты -- проектирование БД небольшого сайта
|
|||
|---|---|---|---|
|
#18+
TomasVercettiКонечно, зависит от вашего форума, но не лучше ли вместо ForumParts, ForumSections сделать иерархию ForumPath к конкретному Forum'у? Вдруг потом понадобятся ForumSubSections? Подумаю над этим, но пока хватает 3-х уровней в иерархии ('часть' -> 'секция' -> 'сообщение'). Усложнять пока не стоит, ИМХО. TomasVercettiК тому же, обычно, голосования привязываются к конкретному форуму, в котором также можно писать ForumMessages. Комментарии к каждому опросу? TomasVercettiНе совсем понял, какую систему контроля доступа вы хотите осуществить. У вас только ForumParts будет иметь ограничения по доступу? Или ForumParts должен являться общим предком всех и любой части форума (Forums, Messages, Polls, etc.)? Тут додумаю. Навскидку, вначале думалось так: Permissions содержит группы пользователей, которые имеют доступ к определённому разделу форума (ForumParts). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2009, 12:58 |
|
||
|
Укажите ошибки и недочёты -- проектирование БД небольшого сайта
|
|||
|---|---|---|---|
|
#18+
deb-user1, По поводу users.permission_id. Если система разграничения прав будет несложной, то, в принципе, сойдет. Иначе советую продумать этот вопрос тщательнее. Советую почитать здесь . Хотя там не по MSSQL, но принцип один и тот же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2009, 12:54 |
|
||
|
Укажите ошибки и недочёты -- проектирование БД небольшого сайта
|
|||
|---|---|---|---|
|
#18+
Добавил ещё немного данных. Новый вариант: Систему разграничения доступа решил оставить по-старому. Например, в таблице Permissions будут строки: 'administrator', 'privileged-user-group-1', 'user', 'guest'. Если например в строке таблицы ForumParts будет указан permission_id с 'user', то данный раздел смогут читать администраторы, зарегистрированные пользователи, пользователи из привилегированной группы, но не гости форума. Т.е. Permissions как-бы показывает "нижнюю границу" доступа. Специфика форума такая, что более сложного ничего не требуется. Ну так, вообщем, ничего? Просто хочется того, чтобы после написания форума не выплыло "подводных камней", когда БД уже будет забита данными. PS: Остальным спасибо, сейчас буду читать предложенный материал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2009, 16:01 |
|
||
|
Укажите ошибки и недочёты -- проектирование БД небольшого сайта
|
|||
|---|---|---|---|
|
#18+
1.зачем poll_id в PollVotes? 2.multiplicity в отношении Permissions-Users правильно определено? то же самое для ForumParts. 3.если файл присоединен к одному сообщению, то в таблице ForumMessageAttach PK не нужен (если не предполагается появление дочерних таблиц), PK создается на базе FK 4.в названиях структурных объектов в бд обычно используют единственное число, за исключением случаев, когда его использование невозможно, как например, Scissors. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2009, 18:53 |
|
||
|
|

start [/forum/topic.php?fid=32&tid=1543385]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
41ms |
get topic data: |
10ms |
get forum data: |
6ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 210ms |
| total: | 343ms |

| 0 / 0 |
