Mehrfach empfänger, wie funktionierts?

String

Erfahrenes Mitglied
Hallöchen zusammen,

wie löst ihr einen Mehrfachempfänger bei Nachrichten? Also z.b. in einem Forum, einer Community. Nehmen wir an, der benutzer gibt ein:

An: UserA, UserB, UserC

Habt ihr dann eine Tabelle "Nachrichten_User" (ID des Sender, Empfängers, GelesenFlag ect.) und "Nachrichten_Text" (Der eigentliche Text, mit der ID zur verknüpfung aus "Nachrichten_User" und bei mehreren Empfänger, macht ihr mehrere Einträge in "Nachrichten_User" - beim löschen, prüft ihr ob kein User mehr diese PN hat und löscht gegebenenfalls den Text?

Oder schreibt ihr ein Array als "Empfänger" und MySQL sucht dann darin, ob der User drinne steht..

ooooder habt ihr nur eine Tabelle für die Nachrichten und macht hat x-beliebig viele Einträge für die User und wenn einer die halt löscht, ist sie gelöscht..

Wie löst man das am besten, schönsten, tollsten.... ? ;)

Danke schonmal
string
 
ooooder habt ihr nur eine Tabelle für die Nachrichten und macht hat x-beliebig viele Einträge für die User und wenn einer die halt löscht, ist sie gelöscht..

Genau so würde ich es machen. Das heißt es gibt nicht mehrere Empfänger, sondern beim Versenden wird die Nachricht eben an mehrere geschickt, aber als einzelne Nachricht. Ich finde das macht es am einfachsten, weil in der Regel werden sowieso Einzelnachrichten verschickt.
 
Und wie handhabst du das mit dem Postausgang?
Erstellst du nochmal extra einen Eintrag für den Postausgang?

string
 
Noja, die Nachrichten Tabelle hat Spalten für Empfänger und Sender. Außerdem noch Status-Felder für jeden von beiden, um einen sog. Soft-Delete durchführen zu können. Also ungefähr so (nur beispielhaft):

SQL:
CREATE TABLE messenger (
  id int not null auto_increment,
  sender_user_id int,
  recipient_user_id int,
  sender_flags int,
  recipient_flags int,
  subject varchar(200),
  message text,
  primary key(id)
)

Dann kann eine Nachricht von beiden Parteien als "Neu", "Gelesen", "Gelöscht", etc. markiert werden.

Bei der Postausgangsview kann man dann alle Nachrichten auslesen, bei denen die sender_user_id meiner Benutzer-ID entspricht. Posteingang wäre das dann mit recipient_user_id. Die Flags müssten dann abhängig von Postein- bzw. -ausgang auch geprüft werden (zb. durch sender_flags != FLAG_DELETED).

Meinst du sowas?
 
Zurück