Интересно, я не совсем понимаю, потому что, кажется, вы уже ответили на свой вопрос?Может быть некоторая путаница, потому что вы используете термины «пользователь» вместе с «отправитель» и «получатель».
Отправители и получатели - это все пользователи, идентифицированные по идентификатору пользователя, но поведение получателя отличается от поведения отправителя.Его следует рассматривать как другой элемент в модели.
Отправитель имеет отношение один-ко-многим с сообщением, поэтому сообщение знает, кто является его отправителем.
Тем не менее, сообщение имеет отношение один-ко-многим со своими получателями - поэтому в типичных шаблонах проектирования сообщение не знает, кто его получатели, а получатели, которые все знают, кто их сообщение.Поэтому обычно требуется какой-либо объект отображения messageRecipients, который имел бы messageID и получателя (через идентификатор пользователя).
User Message MessageReceiver
-------------------- -------------------- --------------------
UserID MessageID MessageReceiverID
UserName Sender (FK UserID) Message (FK MessageID)
. MessageBody Recipient (FK UserID)
. (other fields) . .
. . (other fields) . (other fields)
. .
Может показаться странным говорить об отдельном объекте messageRecipient, когда мызаново представьте, что наша сущность сообщения имеет те же поля, что и обычные редакторы электронной почты или мгновенных сообщений - в них всегда есть место для перечисления получателей.Но это гоча.Если наше поле данных представляет собой список элементов, в которых нам нужно будет работать с этими элементами по отдельности, то нам, вероятно, потребуется новый объект для управления ими.
Во всяком случае, это мое мнение.Надеюсь, это поможет.