Design Frage: Wie würden Sie ein Messaging / Posteingang System entwerfen?

StackOverflow https://stackoverflow.com/questions/123783

  •  02-07-2019
  •  | 
  •  

Frage

Viele Websites haben das Konzept der Nachrichten von Benutzer zu Benutzer zu senden. Wenn Sie eine Nachricht an einen anderen Benutzer senden, würde zeigen, die Nachricht in ihrem Posteingang. Sie könnten auf die Nachricht reagieren, und es würde als neuer Eintrag in dem Nachrichtenthread angezeigt.

Es soll möglich sein, zu sehen, wenn Sie eine bestimmte Nachricht bereits gelesen haben, und Nachrichten, die eine neue Antwort bekommen haben sollte oben sein können.

Wie würden Sie die Klassen entwerfen (oder Tabellen oder was auch immer), ein solches System zu unterstützen?

War es hilfreich?

Lösung

user
 id
 name

messages
 id
 to_user_id
 from_user_id
 title
 date

message_post
 id
 message_id
 user_id
 message
 date

Klassen würden diese Art von Schema reflektieren

Andere Tipps

Sie möchten Owen Schema erweitern Massen-Nachrichten zu unterstützen, wo die Nachricht nur einmal gespeichert wird. verändert sich auch so nur ein Sender ist, und viele Empfänger (es gibt nie mehr als ein Sender in diesem Schema)

user
  id
  name

message
  id
  recipient_id
  content_id 
  date_time_sent
  date_time_read
  response_to_message_id (refers to the email this one is in response to - threading)
  expires
  importance
  flags (read, read reply, etc)

content
  id
  message_id
  sender_id 
  title
  message

Es gibt viele, viele andere Funktionen, die hinzugefügt werden könnten, natürlich, aber die meisten Leute denken, der die oben genannten Funktionen, wenn sie denken, „E-Mail“.

-Adam

Es ist eine ziemlich einfache Tabellenstruktur. Ein zu / von, Betreff und dann die Nachricht. Nun das Wichtigste ist, die Datumsfelder. Die DateSent sagt, wann sie gesendet wurde, die DateRead sagt, dass die Nachricht gelesen wurde, und die DateDeletedTo erzählt, dass der TO Benutzer gelöscht es, und die DateDeletedFROM sagt, dass der FROM-Benutzer gelöscht (diese sind logische Löschungen für dieses Beispiel).

tblMessage
ID  BIGINT 
ToUserID GUID/BIGINT
FromUserID GUID/BIGINT
Subject NVARCHAR(150)
Message NVARCHAR(Max)
DateDeletedFrom DATETIME
DateDeletedTo DATETIME
DateSent DATETIME
DateRead DATETIME

Ich mache eigentlich diese als Teil einer internen Entwicklung bei der Arbeit. Erstellen Sie eine Tabelle mit dem Namen [Messages] und geben Sie die folgenden Spalten.

  • mID (Message-ID)
  • Von_Nutzer
  • to_user
  • Nachricht
  • Zeit
  • tID (Thread-ID)
  • lesen (a boolean)

So etwas sollte für den Tabellenentwurf arbeiten. Die Klassen davon abhängen, welches System, das Sie es sind die Gestaltung auf.

Table Message:
id INTEGER
recipient_id INTEGER -- FK to users table
sender_id INTEGER -- ditto
subject VARCHAR
body TEXT

Table Thread
parent_id -- FK to message table
child_id -- FK to message table

Dann könnte man einfach die Garnfarbentabelle geht durch einen Thread von Nachrichten zu erhalten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top