bubble: Normalisierung angebracht?

Beitrag lesen

Der Thread ist zwar schon relativ alt und gelöst, möchte aber trotzdem noch meinen Senf zur Struktur abgeben:

Tabelle: Beitraege
id | text  | user_id | name | email           | email_notify
1 | bla   |       0 | Ulf  | ulf@example.com |            1
2 | blubb |       1 |      |                 |            1

Tabelle: Benutzer
id | name | email
1 | Alf  | alf@example.com

Ich find die Struktur unpassend, da sie relativ viel Redundanz beinhaltet. Wenn sowieso ein Feld für die User-ID existiert, sollte man dann nicht auch alle User-Informationen in die Benutzer-Tabelle stopfen und zwar nur dort?

Die Unterscheidung zwischen registriertem und nicht-registriertem Benutzer könnte man in ein eigenes Feld in der Benutzer-Tabelle auslagern, email_notify auch (wenn es nur global sein soll), wenn man einen globalen Standardwert dafür haben will, aber auch für jeden Beitrag entscheiden könen möchte halt in beiden.

Also Beitraege wäre dann
id, text, user_id (, email_notify)

und Benutzer
id, registered, name, email (, email_notify)

Vorteil: Einfach gehaltenes Query, dadurch besser wartbar.

Eventuell weiterer Vorteil: Falls sich ein nicht-registrierter Benutzer immer unter gleichen Namen und gleicher E-Mailadresse meldet und sich dann doch zur Registrierung entscheidet, wäre eine Zuordnung alter Beiträge möglich.

Nachteil: Wenn der Tabelle Benutzer weitere Informationen für registrierte Benutzer hinzukommen, hat man für unregistrierte Benutzer entweder ein haufen NULL-Felder, oder aber man muss eine extra Tabelle für Benutzerinformationen erzeugen.

(Hierbei interessiert mich auch die Meinung der Gurus)

MfG
bubble

--
If "god" had intended us to drink beer, he would have given us stomachs. - David Daye