PHP MySQL Mehrere Werte in einem Datensatz (Spalte)?

1 Antwort

Vom Beitragsersteller als hilfreich ausgezeichnet

Deine Tabellen müssen einatomig sein. Dh. Eine Tabelle mit einzelnen Spalten für ID, Anrede, Name, Vorname, Emailadresse usw.

Dann benötigst Du eine Tabelle für die Verteiler mit mindestens zwei Spalten Verteiler-ID und der ID des Empfängers.

Die Abfrage könntest Du dann mit einem Join machen.


speedwanted55 
Beitragsersteller
 09.07.2022, 12:01

Also ich habe eine Tabelle "users", in der alle Personen Daten stehen. Dann habe ich überlegt eine Tabelle "emails" zu machen, in der dann die Spalten Absender, Empfänger, Betreff, Inhalt, Zeit und Anhänge zu finden sind. Bei Absender / Empfänger habe ich überlegt Benutzer ID's zu verwenden, welche ich vorher Auslese und in einem Array Speichere (und dann per foreach verarbeiten kann). Kann ich dann irgendwie bei "Empfänger" mehrere ID's eintragen oder bei "Anhänge" mehrere Anhänge?

Was meintest du denn mit Verteiler?

stealthuser  09.07.2022, 12:21
@speedwanted55

Ein Verteiler ist eine Liste mit Empfängern, wenn es mehrere Verteiler gibt, dann müssen die Listen in der Verteilertabelle unterscheidbar sein.

Wenn Du keine Ahnung von Datenbankdesign hast, wird es schwierig dir zu erklären wo drauf es dabei ankommt.

speedwanted55 
Beitragsersteller
 09.07.2022, 12:49
@stealthuser

Die Frage ist ja, wofür brauche ich diese Verteilertabelle? Geht das denn nicht mit der von mir beschriebenen Variante?

stealthuser  09.07.2022, 14:43
@speedwanted55

Zunächst solltest Du dich mal fragen was eine Email überhaupt ausmacht und welche Eigenschaften eine Email überhaupt hat.

Mit fallen spontan folgende Eigenschaften ein:

-----------------------------

Sendedatum

Absender

Empfängerliste bzw. Verteiler (hier könnte man noch nach direkten Empfängern und CC unterscheiden)

Dringlichkeit

Empfangsbestätigung

Textinhalt

Anhänge

---------------------------------

Überall wo mehrere Einträge möglich sind, benötigst Du eine weitere Datentabelle die Du irgendwie verknüpfen musst.

Deshalb nennt man das übrigens auch relationale Datenbank.

Jetzt hast Du eventuell mehrere Empfänger, also benötigst Du in der Email-Tabelle eine Verknüpfung 1:n bzw "eins zu viele".

Deine Email hat in der Email-Tabelle vielleicht die ID 2389, Dann muss jeder Empfänger der in die Empfängerliste eingetragen wird über die ID 2389 der Email zugeordnet werden können.

Dieses Grundprinzip ist immer einzuhalten, sonst kommt am Ende nur Murks heraus.

Also wenn Du eine Mail an einen festen Verteiler senden möchtest solltest Du ebenfalls nach diesem Prinzip vorgehen und eine Verteiler-Tabelle verwenden in der alle Empfänger eingetragen werden.

Jetzt kann man in einer Verteilerliste unterschiedliche Verteiler anlegen, z. B. einen Verteiler für Newsletter, einen Verteiler für Aktionen usw.

Diese Verteiler sollten dann aber unterscheidbar sein - und zwar über eine ID

VerteilerID | EmpfängerID

Und weil man seine Tabellen immer einatomig anlegt benötigt man idR noch eine Tabelle wo die Empfänger gespeichert sind:

EmpfängerID | Anrede | Name | Vorname | Emailadr | Newsletter | Werbung |

Das ganze mag zwar im ersten Moment ein wenig umständlich anmuten, aber wenn man das nicht macht, fällt einem das irgendwann auf die Füße.