Как можно сделать последовательную структуру в БД (ER-модель)?

Суть в том, что все таблицы должны быть связаны последовательно, не должно быть круговых связей, как сейчас на диаграмме.
Есть таблицы Users, Projects, Tasks, Messages.
Пользователь может создавать проект, задачи в проекте. При создании проекта создается чат, принадлежащий этому проекту. В этот чат могут писать все пользователи, состоящие в проекте.
Пользователи могут создавать таски в проекте, у которых есть поля:
- project_id (id проекта, которому таск принадлежит)
- creator_id (id создателя задачи)
- performer_id (id исполнителя)

Суть в том, чтобы пользователь был связан с проектом один раз, а сейчас он связан три раза: через чат, через таск и напрямую
61ab9fc8d9776486564021.png
  • Вопрос задан
  • 71 просмотр
Решения вопроса 1
tsklab
@tsklab
Здесь отвечаю на вопросы.
В Task должны быть ссылки не на User, а на Project_User (id). Ведь задания создавать и выполнять могут только те, кто работает с проектом.
создается чат, принадлежащий этому проекту
А почему у вас наоборот? К одному чату привязаны несколько проектов.
Если чат ограничивается участниками проекта, то можно удалить Chat, а в Message должна ссылаться на Project и Project_User (id).
И в Project_User должна быть ссылка на отдельную таблицу Role (ID, Name). Не надо нарушать третью нормальную форму.

Предлагаю универсальную структуру Chat:
ID
Name. "Игра", например.
Project Проект, "Игра, шарики", например. Если NULL - общий.
Role Роль - групповой по роли, "Игра, шарики, тестер", например. Если NULL - общий для проекта. Если и проект NULL - общий по роли. "Игра, тестер", например.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы