Benutzerverwaltung - Gute Datenbank-Aufteilung?

fraco

Mitglied
Hallo,
da ich z.Z. an einem relativ kleinen CMS arbeite, bzw. ich mir dies als mein nächstes Projekt vorgenommen habe, mache ich mir gerade Gedanken über die Datenbankaufteilung. Ich hatte gerade die spontane Idee die Benutzerinformationen in 3 Tabellen einzuteilen. Siehe hier:
Benutzer-Verwaltung

User
- ID
- Mail
- Passwort

User_Details
- ID
- Geburtstag
- Wohnort
- Hobbies
- Signatur

User_Hardware
- ID
- Prozessor
- Mainboard
- Maus
- Tastatur
- Monitor
- Arbeitsspeicher
- Grafikkarte
- Soundkarte
- Soundausgabe

Ist diese Anordnung sinnvoll? Habt ihr bessere Ideen? Was ist üblich? (Bin noch ziemlich neu auf diesem Gebiet..)

Vielen Dank schonmal!
Netten Gruß
Marco F.
 
Also ich finde die Aufteilung in Ordnung, bin aber auch kein Profi!

Aber so viel ich sehe, verletzt diese Aufteilung keine der Normalformen und ist somit o.k.!

War zwar keine große Hilfe, aber immerhin :-)
 
Ich sehe auf den ersten Blick nur ein Problem: Warum ist mail Bestandteil der User Tabelle? M.E. ist die Addi genauso ein Attribut der User Details wie der Wohnort oder das Geburtsdatum.
 
Hi

ich würde Stammdaten, die eindeutig dem User zugeordnet sind, in einer Tabelle speichern.

Jetzt kommt es darauf an, wie Du z.B. Hobbys auswerten willst. Sind Hobbys nun userspez. (in einer Spalte mit Komma getrennt) oder haben sie z.B. noch einen anderen evtl. statistischen Wert, z.B. wieviele User spielen Tennis?

Bei letzterem würde ich denn diese Hobbys in einer sep. Tabelle speichern und mit dem User über eine Brückentabelle verbinden.

Man sollte sehen, dass man keine Redundanzen erzeugt.
 
Um die Verwirrung noch etwas zu erhöhen, noch ein Gedanke meinerseits:

Ich benutze meistens eine Personentabelle, die persönliche Informationen enthält, wie Anrede, Name, Vorname, Email, etc

Zusätzlich habe ich eine Tabelle User, die nur die Informationen enthält, die ich für einen User wirklich brauche: Also:
Benutzername, Passwort, ActiveFlag, Verweis auf den Personenrecord in der Personentabelle

Damit kann ich einen Personenstammsatz einem User zuordnen, kann die Personentabelle aber auch nutzen um zB Kontakte und Ansprechartner zu verwalten, die keine User sind
 
Denke, daß er die eMail-Adresse als Benutzername verwendet und sie darum in der Tabelle mit ID (Primärschlüssel) und dem Passwort ist.

Eine Möglichkeit wäre auch, die ID wegzulassen und die eMail(Benutzername) und das Passwort als zusammengesetzten Primärschlüssel zu verwenden. Damit hättest du auch gleich die Eindeutigkeit gesichert und mußt nicht nochmals prüfen, ob die Email (Benutzername) in Kombination mit dem Kennwort schon vorkommt.

Aber stimmt schon, die eMail würde ich auch eher in die Tabelle mit den pers. Informationen geben und in der Login-Tabelle vielleicht nur eine Referenz auf die eMail in der Tabelle mit den pers. Informationen setzen.

Wenn ein User mehr als ein Hobby hat, würd´ ich für die Hobbies ebenfalls eine eigene Tabelle erstellen (sonst n:m - Beziehung).
Das gleiche eventuell falls es mehrere Telefonnummern, .... geben kann.
 
Zuletzt bearbeitet:
Vielen Dank schonmal!

Meine Frage war eigentlich eher allgemeiner gedacht und zwar einfach nur, ob es überhaupt sinnvoll ist die Tabellen zu unterteilen. ;) Hab das bei einem CMS mal gesehen, dass alle Informationen in der Tabelle User gespeichert werden, finde es persönlich mit mehreren Tabellen einfach übersichtlicher.

Hobbies war auch mehr als Beispiel gedacht und ich hatte die Idee, das jeder über ein einfaches Input-Feld seine Hobbies eintragen kann, also eine spätere Auswertung, o.Ä. ist nicht erforderlich.

Tja, warum hab ich die E-Mail in die Haupttabelle gepackt, gute Frage.. :-) Ich möchte es aber auf jedenfall so haben, dass jeder Benutzer, der erfolgreich registriert wird, eine eindeutige ID erhält, sodass er später auch mal den Usernamen, sowie seine E-Mailadresse ändern kann.

Ein kurze Frage hab ich da noch: Wenn ich die Daten dann alle in einer Art Profil-Übersicht auslesen will, muss ich dann auch 3 verschiedene MySQL-Querys stellen?

Netten Gruß
Marco
 
Zurück