Hallo zusammen,
ich möchte ein DB Modell entwerfen zu folgendem Szenario. Ich habe bereits eine Idee, bin aber gerne offen für Vorschläge und Verbesserungen.
Es soll eine Art Verteiler erstellt werden. D.h. ein User authentifiziert sich gegenüber dem System mit seinem Username (z.b. user_xy) und hat die Möglichkeit, eine unbestimmte Menge an Verteilerprofilen anzulegen. Als Bsp: Er legt zwei Profile an (Profil1 und Profil2).
Er kann eine unbestimmte Menge an Personen jedem Profil zuweisen.
Profil 1 werden z.b. 2 Personen zugeordnet (user_1 und user_2).
Profil 2 wird 1 Person zugeordnet (user_3).
Das ganze sieht dann so aus:
Angemeldeter User: user_xy
Erstelle profile: Profil1, Profil2
Personenzuordnung zu Profil1: user_1, user_2
Personenzuordnung zu Profil2: user_3
Folgendes sollte beachtet werden:
Die User id, mit der sich ein Benutzer am System authentifiziert, ist einmalig. Es können sich eine unbestimmte Menge an unterschiedliche User am System authentifizieren und profile erstellen sowie Personen zuweisen. Es kann vorkommen, dass unterschiedliche Personen zufällig den gleichen Profilnamen erstellen und teilweise gleiche Personen dem Profil zuordnen (muss aber nicht). Diese Profile sind also völlig unabhängig voneinander.
Folgende DB Struktur habe ich mir überlegt:
PHP-Code:
Tabelle1: USERACCOUNTS
id | user_name
--------------------
1 | user_xy
2 | user_1
3 | user_2
4 | user_3
…usw
Id ist der primary key
Der user_name repräsentiert den Namen, mit der sich ein User authentifiziert.
PHP-Code:
Tabelle2: PROFILES
id | profile_name | user_id
-----------------------------------
1 | Profil1 | 1
2 | otherProfile | 2
3 | Profil2 | 1
…usw
Id ist der primary key
Profile_name ist der vom user gewählte profilname
User_id repräsentiert die id des users aus tabelle USERACCOUNTS, d.h. in dem Bsp, dass user_xy 2 profile hat: Profil1 und Profil2.
User_1 hat 1 profil angelegt: otherProfile
PHP-Code:
Tabelle3: PROFILEMAPPING
id | user_id | profile_id
-------------------------------------
1 | user_1 | 1
2 | user_99 | 2
3 | user_2 | 1
…usw
Id ist der primary key
User_id ist die id der Person, die dem Profil zugeordnet wurde
Profile_id ist die id zur Zuordnung des Users zu einem Profilnamen. User_1 und user_2 sind beide der profile_id 1 zugeordnet. Die profile_id 1 steht in Tabelle PROFILES für „Profil1“. Es kann durchaus vorkommen, dass in unterschiedlichen profilen die gleichen Personen drin sind. Somit ist die Spalte user_id und profile_id nicht unique. Daher habe ich die Spalte id noch hinzugefügt.
Es besteht bereits eine weitere tabelle, die die user_id (z.b. user_1 oder user_2) als primary key hat und dazu dann personendaten wie anschrift etc beinhaltet.
Soweit meine Überlegung. Da unterschiedliche User einen gleichen Profilnamen wählen könnten, wüsste ich nicht, wie man das noch vereinfachen könnte. Falls jemand Vorschläge, Ratschläge oder Tipps zur Verbesserung hat, freue ich mich auf eure Antworten.
Grüße
Lesezeichen