Как разработать обсуждение для нескольких лиц - PullRequest
0 голосов
/ 21 июля 2011

У меня есть объекты, такие как Project, Client, Task, и у каждого из них должен быть список сообщений (или обсуждение). Проблема в том, что, поскольку каждая сущность (проект, клиент, ..) сопоставлена ​​с собственной таблицей, я не могу ссылаться на эту сущность из обсуждения по параметру owner_id, потому что было бы неоднозначно иметь клиента с id = 1 и проект с идентификатором = 1 и обсуждение не будет знать, принадлежит ли оно проекту или клиенту. Я хотел бы избежать наличия независимой сущности обсуждения для клиента и другой независимой сущности обсуждения для проекта ... (потому что позже я мог бы захотеть добавить обсуждение к другой сущности, чтобы она не была действительно "масштабируемой"). Я знаю, что я могу добавить атрибут дискриминатора (столбец) к обсуждению, который будет различать clientDiscussion и projectDiscussion. Мне интересно, правильно ли это делать или нет. что ты думаешь?

Ответы [ 2 ]

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

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

Мой инстинкт заключается в том, что в реальном мире дискуссии не всегдаотносятся к одному виду вещей.Таким образом, вам также может понадобиться объект «Темы», так как в «Обсуждениях» много тем, но вам по-прежнему не нужен дискриминатор.

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

Лично это звучит так, как будто вам нужно создать абстрактную сущность.

EntityType<-Entity<-EntityDiscussion->Discussion

enter image description here

Насколько отличаются поля в Project / Client / Task?

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