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
Bisherige Trackbacks (0)
Es wurde noch kein Trackback empfangen!