Thread Datenbanknormalisierung
(11 answers)
Opened by pktm at 2009-09-10 16:51
Mit deiner Beschreibung kann ich ich irgendwie nicht all zu viel anfangen. Primär deswegen weil mir Persönlich die beschreibung irgendwie zu wirr ist.
Aber ansonsten ist das mit den Referenzen eigentlich ganz einfach. Als erstes solltest du dir ersteinmal nur die Haupttabellen überlegen die du Speichern möchtest. Hierbei überlegst du dir erstmal keine abhängigkeiten. Zum Beispiel folgende Tabellen. * Rechnung * Artikel Danach überlegst du dir die beziehung. Hier kannst du immer zwei sätze generieren. 1) 1 X hat mehrere Y? 2) 1 Y hat mehrere X? Ersetzt durch deine tabellen ergibt das folgende Sätze. 1) Eine Rechnung hat mehrere Artikel? 2) Ein Artikel kann auf mehreren Rechnungen sein? Je nachdem wie du die Sätze beantwortest kommt dabei eine andere beziehung dabei heraus. Beantwortest du eine Frage mit "Ja", Notierst du dir für die zuletzt genannte Tabelle im Satz ein "N", antwortest du mit "nein" notierst du dir eine "1". hier Mal alle Kombinationen die Möglich sind. 1)"nein" 2)"nein": Rechnung 1 <-> 1 Artikel 1)"nein" 2)"ja": Rechnung N <-> 1 Artikel 1)"ja" 2)"nein": Rechnung 1 <-> N Artikel 1)"ja" 2)"ja": Rechnung N <-> N Artikel Der erste und letzte ist etwas spezial. Sind beide Nein, ist es eine 1:1 beziehung daher du kannst daraus eine Tabelle machen. Allerdiengs stimmt das nicht immer. Sind es logisch zwei unterschiedliche dinge solltest du auch bei 1:1 die tabellen getrennt lassen. Hierbei solltest du dann in jeder Tabelle eine referenz haben die auf sich gegenseitig zeigt. Sprich Rechnung hat eine id von Artikel. Und Artikel hat eine id von Rechnung. Beim zweiten und dritten sprich 1:N oder N:1 packst du immer in die Tabelle wo du das N mackiert hast deine Referenz herein. Sprich im zweiten Beispiel hat rechnung eine "id" von Artikel, im dritten Beispiel ist es umgekehrt. Hast du bei beiden N:N spricht man von einer N:M beziehung. In diesem fall erzeugst du eine zusätzliche Tabelle, die deine beziehung speichert. In deinem Fall, würde ich sogar von einer N:M beziehung sprechen. Den eine Rechnung kann mehrere Artikel enthalten. Und jeder Artikel kann auf mehreren Rechnung zu finden sein. Daher du hast drei Tabellen Sachen wie "Rechnungsposition" ist weder direkt der rechnung, noch dem artikel zuordbar, sondern ist ein attribut das durch die verknüpfung beider entsteht. daher landet diese information in der zwischentabelle. Daher wenn du alle drei tabellen zusammen joinst, bekommst du nachher die rechnung mit den artikeln, und die genaue position die dieser artikel in einer spezifischen rechnung hat heraus. Mit diesem Wissen solltest du eigentlich selber in der lage sein die beziehungen deiner Tabelle heraus zu bekommen. Du musst dir nur einmal die tabellen sauber aufschreiben und dir die oberen sätze durchgehen. Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
|