Vinzenz Mai: Instert Into über mehrere Tabellen

Beitrag lesen

Hallo,

Tut mir Leid. mySQL 5.0.15

danke für die Info.

Dein Versuch der "Normalisierung" scheint etwas schiefgegangen zu sein.

ja, Dein Versuch ist etwas schiefgegangen.

Tabelle User

ID, Name, Mail, Geschlecht, Passwort, PLZ, Wohnort, Punkte, IP, Onlinestatus, SESSION, usw. (ca.30 Spalten die ich

Beispieleintrag:

123, Heinz, blabla@web.de, 2, abcde, 89050....

Damals war alles in der Tabelle User drin. Weil viele gemeint haben, das wären zu viele Spalten, habe ich das ganze aufgeteilt.

Das ist ein miserables Argument. Wenn die Spalten erforderlich sind, dann
sind sie erforderlich.

Tabelle Userprofil:

ID, Hobbies, Motto, IchMag, IchMagNicht, FavoriteLink, MitgliedSeit, ICQ, Sport, Sternzeichen... (ca. 30 Spalten - Diese Spalten waren früher noch in der Tabelle User drin)

das tut weh. Das tut sehr weh. Dein Tabellendesign taugt wenig.

Beispiele:

Hobbies
IchMag
IchMagNicht
Sport

und Vergleichbares hat nichts, gar nichts, überhaupt gar nichts in dieser
Tabelle verloren. Das ist miserabelstes Tabellendesign.

Eine Person kann mehrere Hobbies haben, verschiedene Personen können das
gleich Hobby haben. Das ist eine typische n:m-Verknüpfung, für die Du die
Tabellen für

- Personen
 - Hobbies
 - die Zuordnung von Hobby zu Person

benötigst. Es ist eine ganz schlechte Idee, in solche Spalten kommagetrennte
Listen zu speichern. Ganz bestimmt willst Du doch überprüfen, wer ähnlich
Vorlieben und Abneigungen hat. Geht das mit Freitext oder kommagetrennten
Listen. Nur mit Aufwand. Mach' es also richtig.

Beim registrieren wollte ich nun in diese Tabelle den Zeile

123, , , Anlegen. Die Spalten blieben dann leer.

Verzichte solange auf einen Eintrag in der Tabelle, bis auch endlich Inhalt
dafür da ist.

Grundsätzlich solltest Du beim Datenbankdesign am besten von vorn anfangen.
Du hast eine ziemlich genaue Vorstellung, welche Daten Du speichern möchtest.
Versuche zu erkennen, welche Entitätstypen Du hast, welche Eigenschaften
diese Entitätstypen haben und wie die Beziehungen der Entitätstypen
untereinander sind (siehe oben Personen und Hobbies).

Aus dem Entity-Relationship-Modell, das Du erstellt hast, sollte sich Dein
Tabellendesign sehr leicht ableiten lassen :-)

Bitte denke daran, dass Fehler, die Du beim Tabellendesign machst, sich später
nur sehr schwer korrigieren lassen. Daher: Mach' es richtig!

Freundliche Grüße

Vinzenz