Andy: Interne Mitteilung an mehrere Benutzer in einem Portal

Beitrag lesen

Hallo,

Hallo

mach das Feld für die Empfänger-ID nulllable. Und für den Empfänger änderst du die Query (welche die für ihn bestimmten Nachrichten anzeigen soll) einfach darauf ab:

...
WHERE (Empfaenger_ID IS NULL) OR (Empfaenger_ID = @variable@)

NULL würde nicht funktionieren, denn wenn nun andere Nachrichten dazu kommen, die eben für einen anderen Benutzerkreis bestimmt sind als jenen einer älteren Nachricht, dann habe ich mehrere Mitteilungen, welche aber alle als Empfänger-Kennung NULL haben, aber an eben verschiedene Benutzer gerichtet sind, so würden alle Benutzer alle Mitteilungen ja lesen können. Zudem kann der Benutzer dann eine solche Mitteilung mit NULL-Empfänger nicht einfach löschen (in seinem Postfach), da diese Mitteilung ja dann für alle anderen, für die die Mitteilung auch bestimmt wäre, garnicht mehr existieren würde. Im schlimmsten Fall ist also so dann eine Nachricht an 8912 Leute gerichtet, der erste liest es und klickt "löschen" und weg ist es. Alle anderen 8911 bekommen das nie zu Gesicht. Und wie schon gesagt, es sind ja durchaus mehrere Mitteilungen an unterschiedliche Gruppen von Benutzern.

Es muss also tatsächlich für jeden mit der Nachricht angesprochenen auch eine eigenen existieren, damit der die eben dann nach dem lesen auch löschen kann. Ich suche quasi nur einen Weg viele Datensätze möglichst ohne viel unsinniges und doppeltes Drumherum in die Tabelle zu bekommen.

Ich könnte mir auch (nun) vorstellen, dass das Empfänger-Feld mehrere Benutzerkennungen beinhalten würde, und je nachdem, wer das dann bereits gelesen und/oder gelöscht (in seinem Postfach jedenfalls) hat, dessen BEnutzerkennung aus dem Empfängerfeld entfernt wird. Aber bei der von mir eingesetztem MySQL-Datenbank würde mir nun kein vernünftiger Datentyp für sowas einfallen - oder gibt es da doch etwas?
Ich kann ja nun schließlich nicht ein SET-Feld anlegen, mit den Werten 1 bis MAXINT (der Wertebreich meiner Benutzerkennungen) und dann per Default eben die angesprochenen Benutzerkennungs-Werte setzen und (nach dem lesen/entfernen) dieses wieder aufheben. Das wird schon wegen der "Spannweite" des SET-Typs nicht gehen. Aber genau sowas würde ich wohl benötigen.
Wäre es denn sinnvoll ein Extrafeld einzurichten indem alle BEnutzerkennungen (der Empfänger) enthalten sind (meinetwegen vom Typ TEXT, mitunter also bei 8000 Empfängern als ellenlangen String) und die dann ggf. einfach da heraus zu löschen? Ist das nicht dann nebst der Datenbank ebenfalls für das ausführende Skript eine Zumutung bei solchen Operationen?

Fragen über Fragen :(

Ciao, Frank