On Tuesday 16 November 2010, lago20@gmx.de wrote:
Am 16.11.10 20:52, schrieb Ottmar-Schmidt@web.de: Es gibt eine Apfelsorten-Tabelle und eine Schädigungs-Tabelle.
Apfelsorten und Schädigungen können durch eine dritte Tabelle verknüpft werden:
lfdNr Apfelsorte Schaden
1 A Schorf 2 A Milbe 3 B Schorf 4 D Apfelwickler 5 D Feuerbrand
wobei in Wahrheit statt "A" und "Schorf" die jeweilige ID der Sorte und der Schädigung in der Tabelle steht. Alle anderen Eigenschaften des Apfels und der Schädigung stehen in den jeweiligen Tabellen.
Die Eintragungen in der Zuordnungstabelle müssen in keiner Weise geordnet sein. Du kannst nach dem jeweils aktuellen Stand der Forschung den einzelnen Apfelsorten immer weitere Schädigungen zuordnen.
...deswegen bekommt diese Tabelle auch keine lfdNr Spalte.
In Natura sollte das etwa so aussehen: SortenId SchadenId -------------------- 1 1 1 3 4 1 2 3 5 2 ...etc.
Angelegt wird das etwa so: CREATE TABLE ApfelSchaden ( SortenId INT NOT NULL REFERENCES Apfelsorten(SortenId), SchadenId INT NOT NULL REFERENCES Schaden(SchadenId), PRIMARY KEY (SortenId,SchadenId) );
Je nach Datenbank muss man INT durch einen anderen Typ ersetzen (z.B. DECIMAL) und noch ein wenig Krempel für korrekte Transaktionen und Referenzen hinzufügen (MySQL kann das nicht auf MyISAM - es ist halt kaputt). Auch die Referenzen sollten natürlich auf die korrekte Tabelle/Spalte zeigen...
Zum Thema Abfrage haben die Manuals der jeweiligen Datenbanken ganze Kapitel (Stichwort "JOIN"). Hinweis: es ist nicht schlimm wenn die WHERE Klausel eines SELECT über mehrere Zeilen geht... ;-)
Konrad