@Lepilov

Архитектура связей между таблицами в БД?

Строю связь между таблицами. бизнес логика такая. Есть мероприятие (таблица event), в нем могут принимать участие от двух до бесконечности пользователей (таблица users). После окончания мероприятия какждый из участников может оставить другому участнику отзыв (таблица feedbacks) со ссылкой на это мероприятие. Таким образом есть 3 таблицы . Свзязи я определил следующим образом:
events:
  id
  ....

users:
  id
  ...


feedbacks:
  id
  ivent_id(OnetoOne to events)
  from_id(ForeignKey to users)
  to_id(ForeignKey to users)


Правильная ли эта структура и если нет, то как сделать оптимально?
  • Вопрос задан
  • 68 просмотров
Решения вопроса 1
Assargin
@Assargin
Перед ответом смотрю наличие ✔ в ваших вопросах
events:
  id (PK)
  ....

users:
  id (PK)
  ...

event_users
  event_id (PK, FK to events)
  user_id (PK, FK to users)

feedbacks:
  id (PK)
  event_id (FK to events)
  user_id_from (FK to users)
  user_id_to (FK to users)
  
  idx_unique (event_id, user_id_from, user_id_to) - уникальный индекс


В event_users каждый пользователь на каждое событие может быть записан только 1 раз (т.к. оба поля входят в PK)
В feedbacks на уровне приложения позволяете добавлять только те записи, где и user_id_from и user_id_to присутствуют в event_users к данному event.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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