Mastodon

renephoenix.de

Internes Messagesystem

Wie baut man am besten (datentechnisch) ein internes Message/Mail-System auf? Mir fielen drei Varianten ein, nur welches ist die beste?

Angenommen, wir haben eine Community und die Mitglieder können untereinander kleine Nachrichten austauschen. Dabei sollte berücksichtigt werden, daß die Nachrichten in Ordnern liegen können, und sowohl der Empfänger als auch der Versender ein Exemplar besitzen sollte, was sie unabhängig voneinander in ihrer Messagebox löschen können ...

  • Alles wird in einer Tabelle gespeichert, einschließlich der Ordner des Senders und Empfängers, und der ganzen Attribute wie gelesen/gelöscht (Nachteil: nur ein Empfänger möglich)
  • Sowohl Empfänger als auch Versender erhalten ein Exemplar der E-Mail (1 Tabelle, aber redundante Einträge)
  • Es wird eine Mail als solches gespeichert, und jeder besitzt eine Ausprägung in seinem Ordner

Bisherige Kommentare (4)

Kommentar von Thiemo

Das ist eine Frage zum Thema relationale Datenbanken.

Identifikation der Entities:

User, Message, Folder.

Identifikation der Relationships:

User 1 — 0..* Folder
Folder 1..* — 0..* Message

Tabellen:

user(id, login)
folder(id, name, user_id)
message(id, text)
message_folder(message_id, folder_id)

Ein User kann mehrere Folder haben, ein Folder gehört genau einem User. Ein Folder kann beliebig viele Messages enthalten, eine Message kann in mehr als einem Folder liegen. Ist die Message keinem Folder mehr zugeordnet, kann sie im Zuge einer Garbage Collection gelöscht werden.

Kommentar von Thiemo

Nachtrag: Wenn du erlauben willst, dass die Mitglieder alle ihre Nachrichten bearbeiten können, musst du natürlich Variante 2 wählen. Das ist in vielerlei Hinsicht auch einfacher zu implementieren.

Kommentar von Phips

naja, wenn sowas nichts großes werden soll, sondern wirklich nur kleines mailsystem zum mail verschicken, ohne nachträgliches ändern etc würde sich meiner meinung nach das 1. am besten anbieten...
dann halt eine tabelle mit
id, time, betreff, text, empf, absender, sichtbarempf, sichtbarabs, gelesen

Kommentar von alex

Also du nimmst am besten Variante 4^^

Postfach
---------
id
betreff
massage
user_id
from_id
status_user_id
status_from_id
datum

wenn einer eine massage schreibt.
dann wird sie nur einmal gespeichert und beide können sie sehen.

wenn einer sie löscht dan status_user_id = 1
wenn der der das geschrieben sie löscht dann status_from_id = 1

dann nur noch eine abfrage if status_user_id = 1 && status_from_id = 1 delete

:)

Kommentar verfassen

Freiwillige Angabe
Freiwillige Angabe
Der Text kann mit Textile formatiert werden, z.B. *fett* _kursiv_ "link":url. Wie das geht?
Wieviel ist 40 plus 2?

Bisherige Trackbacks (0)

Es wurde noch kein Trackback empfangen!