Схема базы данных для программного обеспечения Collaboration - PullRequest
0 голосов
/ 02 октября 2019

Я разрабатываю базу данных для приложения найма и сотрудничества музыканта. Основная идея - Существует два типа пользователей - Музыканты и Слушатели . Музыканты могут загружать аудио / видео сообщения и отправлять запрос о сотрудничестве другим музыкантам. Слушатели могут видеть сообщения музыкантов и отправлять им запросы на аренду.

Структура таблиц

  1. Пользователи
  2. Сообщения
  3. Likes
  4. Комментарии
  5. Аренда
  6. Совместная работа

Должен ли я создать отдельные таблицы для музыкантов и слушателей? У них много общих полей, но создавать сообщения могут только музыканты.

Ответы [ 2 ]

0 голосов
/ 02 октября 2019

Вы можете объявить поле user_type в таблице пользователей и дифференцировать пользователей по user_type .

0 голосов
/ 02 октября 2019

Вы говорите о разделении таблицы пользователей?

Если они имеют данные одного типа, оставьте их как одну таблицу. Если есть много различий, вы можете их разделить. Обратите внимание, что в их разделении нет ничего плохого, но передовой практикой является создание коллекций, содержащих одни и те же данные. Ваша база данных не несет ответственности за решение, что может делать конкретный пользователь, который принадлежит вашему коду контроля доступа. Также задайте себе вопрос, например, что, если музыкант хочет нанять другого музыканта? В итоге вы получите избыточность, которая обычно является плохим дизайном в реляционных базах данных.

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

...