Пользователи, группы и теги дизайн базы данных - PullRequest
0 голосов
/ 21 марта 2012

Я испытываю трудности при попытке создать структуру базы данных для следующего сценария:

Моя база данных должна содержать общую информацию о пользователе, UserID, FirstName, LastName, JoiningDate.

Каждый пользователь может быть частью группы.

Каждая группа имеет прикрепленные к ней «теги» и может иметь несколько тегов. пользователей также должен иметь возможность возвращать список доступных групп (отфильтрованный по теги).

Уметь искать группу (по тегам, прикрепленным к группе), и поиск конкретных пользователей (по фамилии или уникальному идентификатору). ). Это также должно быть в состоянии вернуть список доступных групп (отфильтрованных по тегам) и члены определенной группы (отфильтрованные по фамилии и отфильтрованные по Дата присоединения).

Должен быть также способ обнаружить, какие группы пользователей принадлежат к ряду групп (запрос на «Кто является членами« Браво групп »и« Дельта » группа) и отслеживание сообщений, отправленных в группе (например, форум).

Это только две таблицы? Или это должны быть три таблицы ... Пользователи, группы и теги? Прошел почти год с тех пор, как я занимался реляционными базами данных, и мне было интересно, кто-нибудь может показать визуальное представление этого дизайна базы данных?

Ответы [ 2 ]

5 голосов
/ 21 марта 2012

Я предлагаю пять таблиц: пользователи, группы, теги и таблицы ссылок UserGroups и GroupTags.

Это связано с тем, что между пользователями и группами, а также между группами и тегами существует взаимосвязь "многие ко многим" - в реляционном дизайне требуется объект связи, чтобы объединить объекты с отношениями "многие ко многим" между ними.

 ---------   ------------   --------
 | Users |   |  Groups  |   | Tags |
 ---------   ------------   --------
     |         |      |        |
     |         |      |        |
    /|\       /|\    /|\      /|\
   --------------    -------------
   | UserGroups |    | GroupTags |
   --------------    -------------
0 голосов
/ 21 марта 2012

Определенно не менее 3: пользователь, группы и теги.

И поскольку вы используете отношение «многие ко многим» (исходя из вашего описания) между группами и тегами, вам, вероятно, потребуется перекрестная таблица для связи групп и тегов вместе.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...