Мне нужно руководство, какую стратегию картирования использовать - PullRequest
2 голосов
/ 05 июля 2011

Я пишу процесс отправки уведомления по электронной почте. В настоящее время я пишу уведомления по электронной почте в таблице со следующими столбцами:

  • email_notification_id => PK
  • tification_id => уведомление
  • sender_id => Объект пользователя или группы
  • receient_id => Объект пользователя или группы

отправитель и получатель могут быть типа Пользователь или Группа. Очевидно, что в настоящий момент я не могу иметь FK для отправителя или получателя.

1) Первый вариант - использовать Any в отображении и добавить два дополнительных столбца для типа.

2) Второй вариант - создать 4 класса для каждой комбинации и отобразить их с помощью дискриминатора:

class1 => отправитель типа Group, получатель типа Group
class2 => отправитель типа Group, получатель типа User
class3 => отправитель типа Пользователь, получатель типа Группа
class4 => отправитель типа Пользователь, получатель типа Пользователь

3) Другие варианты?

Что вы думаете об этом?

С наилучшими пожеланиями

Ответы [ 2 ]

1 голос
/ 05 июля 2011

Если бы я и я имели контроль над базой данных, я бы изменил два столбца sender_id и receient_id на отправитель и получатели . Это будут строковые поля, содержащие необработанные адреса электронной почты, которые вы собираетесь использовать.

Это просто еще один способ сделать это. Не обязательно лучший с точки зрения проектирования баз данных, но простой с точки зрения реализации и отображения.

0 голосов
/ 06 июля 2011

Вы также можете создать класс EmailEntityBase (или что-то лучшее, что вы можете найти), от которого наследуются и Group, и User.
тогда ваша сущность Notification будет ссылаться на EmailEntityBase свойства отправителя и получателя.

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