banderos120
@banderos120
Играю на балалайке

В каких случаях удобно использовать поле EntityID вместо дополнительных таблиц?

Здравствуйте.
Для примера:
есть таблица Notification (уведомления). Уведомления у нас могут быть системными (System), могут быть уведомления связанные с работой над сущностями БД. Соответственно, при получении уведомления нам необходимо узнать его тип, и получить данные, отталкиваясь от типа.
Далее вопрос, как будет более правильным : создавать дополнительные таблицы со связями OneToOne ?
Notifications:
  • - id
  • - user_id
  • - created_at
  • - active
  • - type (SYSTEM_TYPE, POST_TYPE, COMMENT_TYPE ...)

NotificationSystem:
  • - id (one-to-one)
  • - data
  • - system_type

NotificationPost:
  • - id (one-to-one)
  • - post_id

NotificationComments:
  • - id (one-to-one)
  • - comment_id

-----
Либо создавать одну таблицу для всех случаев с разными столбцами:
Notifications:
  • - id
  • - user_id
  • - created_at
  • - active
  • - type (SYSTEM_TYPE, POST_TYPE, COMMENT_TYPE ...)
  • - system_type
  • - post_id
  • - comment_id
  • ...

------
Либо использовать для дополнительных типов столбец EntityId:
Notifications:
  • - id
  • - user_id
  • - created_at
  • - active
  • - type (SYSTEM_TYPE, POST_TYPE, COMMENT_TYPE ...)
  • - system_type
  • - entity_id ("Post23", "Post24", "Comment12", "Comment13" ...)

Хотелось бы узнать ваше мнение.
*надеюсь все правильно написал
  • Вопрос задан
  • 316 просмотров
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
вам нужно наследование (table inheritance) и разные типы объектов для разных типов нотификаций. Это если брать "обычно".

p.s. при работе с доктриной проще оперировать сущностями и взаимоотношением оных а не таблицами. Это domain-centric штука, а не data-centric.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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