hallo .. ..mal wieder ein hilfegesuch
ich habe heute mal versucht mich mit meiner datenbanktabelle auseinanderzusetzen und mich mit dem thema normalform zu befassen..
das mit der normalform habe ich nicht richtig begriffen und frage mich auch ob es nicht ein programm gibt , mit dem man die spalten gut hin und herschieben kann..(?) bei mir sind es ca. 1000 zeilen, und woanders bestimmt noch viel mehr, die kann man doch nicht nur per hand neu schreiben (?)
und vielleicht gibt es ja ein tool dass gleich die probleme meiner tabelle erkennt und anzeigt, da ich mich damit sehr schwer tue..
also falls..
wäre ich für einen tip dankbar
mfg, h.
------------------------------------------------
ps.:
so sieht die tabelle aus:
`id`, `url`, `w1`, `w2`, `w3`, `w4`, `w5`, `w6`, `w7`, `w8`, `w9`, `w10`, `ort`, `jahr`, `typ`
wobei 'w' prinzipiell erweiterbar sein müsste (personen auf einem bild 'url',) ..(und in 'ort', 'jahr', 'typ' und auch 'w' wiederholungen vorkommen)
Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge
Mir ist da kein entsprechendes Tool bekannt. Zumal sich das ganze auch nur bedingt automatisieren lässt. Woran sollte das Tool erkennen was Du willst? Vor allem wenn keine Fremdschlüssel verwendet werden.
Manchmal gibt es gute Gründe für Redundanzen und mit ein bisschen Erfahrung bekommt man dann ganz intuitiv ein sauberes Datenbankdesign. Gerade am Anfang kann es hilfreich sein wenn man ER-Diagramme auf Papier (!) zeichnet. Normalisierung ist eine sehr formale Geschichte und nicht gerade intuitiv.
Durch scharfes Hinsehen (und ein kleines bisschen Erfahrung mit n:m-Beziehungen, sowie Kenntnisse der Vorgeschichte):
img:
img_id, img_url, im_location, im_date, img_type
Primärschlüssel: img_id
user:
user_id, user_name, user_schuhgröße, user_usw
Primärschlüssel: user_id
imageuser:
img_id, user_id
Primärschlüssel: img_id, user_id
Index auf imageuser.user_id evtl. mit img_id als zweites Feld wäre sicher auch noch sinnvoll wenn Bilder zu einem User gesucht werden sollen.
Gruß
Borlander
puh..
also das mit dem index lass ich erstmal weg.. das ist noch zu hoch...
das andere sieht logisch aus.. am besten wirklich mal aufzeichnen, zumal dann bestimmt auch noch das thema joins kommt, welches mir auch noch unbekannt ist.
eins verstehe ich nicht:
wieso 2 primärschlüssel. da meckert doch phpmyadmin normalerweise (?)
wegen dem tool, ich dachte so, dass man gleich eine ganze spalte rausnehmen kann und woanders wieder einfügen.
ich werde es mal mit csv-dateien und dem openoffice "excel" probieren..
danke sehr
mfg, h.
Nicht zwei Primärschlüssel, sondern einen über beide Felder. Alternativ kannst Du auch ein zusätzliches AutoInc-Feld als Primärschlüssel erstellen. Es bietet sich aber an, das mehrfache anlegen der Verknüpfung zu unterbinden (z.B. das wäre beim Primärschlüssel gewährleistet, der ist automatisch auch ein UNIQUE-Index)
eine ganze spalte rausnehmen kann und woanders wieder einfügen.
Du kannst die Daten doch (relativ einfach) per SQL in die neue Form überführen:
1) Alle Benutzer in die user-tabelle (bei der die Spalte user_name sinnigerweise UNIQUE sein sollte) einfügen
2) Tabelle imageuser füllen
3) Implementierung umstellen
4) die jetzt nicht mehr benötigten spalten entfernen
Gruß
Borlander
Also du weisst sicher das fehlenes wissen durch irgendwelche tools schlecht zu ersetzen ist.
Aber nix desto trotz; mein persönlicher Liebling ist der EMS Manager.
das schlimme ist, im grunde könnte ich selber für mehr wissen sorgen.. ...hatte nur gedacht ich kapiere es eh nie, und muss wen fragen... ..vor kurzem gebraucht gekauft, ein ziemlicher wälzer.. man müsste nur mal mehr reinschauen 8\
http://img34.imageshack.us/img34/3704/dscf2353n.jpg
mfg, h.
Hallo,
Datenbankentwurf ist eine komplizierte Sache.
Schau Dir mal die Sache mit den Normalformen an:
http://de.wikipedia.org/wiki/Normalisierung_%28Datenbank%29
Ich habe mal gelent, dass man Datenbanken zumindest in die 3. Normalform bringen muss.
Der Schlüssel lautet: Redundanzvermeidung.
Schau, dass keine Entitäten (http://de.wikipedia.org/wiki/Entit%C3%A4t_%28Informatik%29)
doppelt abgespeichert werden. Immer Zeiger (Ids) für Verweise verwenden.
Gruss
ChrE