In normalisierten Datenbanken kommen häufig "Beziehungstabellen" zum Einsatz, welche die Verbindung zwischen den Entitäten herstellen. n-m-Beziehungen benötigen immer eine solche Beziehungstabelle.
Die Struktur der Beziehungstabelle sieht so aus:
schauspieler_film(sfid, sid↑ , fid↑)
Der Surrogatschlüssel sfid
ist hier optional, man kann auch die Kombination der beiden "kpünstlichen" Schlüssel sid
und fid
als Primärschlüssel verwenden:
schauspieler_film(sid↑ , fid↑)
Das vollständige Schema sieht also so aus:
schauspieler_film(sfid, sid↑ , fid↑)
schauspieler(sid, SVorname, SNachname)
filme(fid, titel)
Eine kurze Recherche ergibt (unter anderem), dass Meg Ryan in "Harry And Sally" mitspielt. Um diese Beziehung abzubilden, muss in unserer schauspieler_film-Tabelle eine Zeile der Form
sfid | sid | fid |
---|---|---|
1 | 4 | 2 |
eingefügt werden. Der Umstand, dass John Belushi eine Rolle in Blues Brothers spielt, führt zu einer weiteren Zeile:
sfid | sid | fid |
---|---|---|
1 | 4 | 2 |
2 | 6 | 1 |
Ergänze die Beziehungstabelle unter Verwendung entsprechender Ressourcen (Suchmaschine).
In manchen Fällen macht es Sinn, dass Beziehungstabellen neben den eigentlichen Beziehungen zusätzliche Informationen speichern, die zu einer bestimmten Beziehung gehören. Im Fall der Filmdatenbank könnte das z.B. die Gage sein oder ob eine Schauspielerin für die Roll in diesem Film einen Oskar erhalten hat.
Ergänze das Scheme der Beziehungstabelle um die beiden im Beispiel genannten Felder.
Importiere für die folgenden Übungen die Tabellen der normalisierten Zahnarztbedarfsdatenbank in deine Übungsdatenbank. (zahnarztbedarf_2nf.zip)
Erstelle ein ER-Diagramm für die Datenbank. Überführe das ER Modell in ein relationales Datenbankschema.
WHERE hersteller.firma = 'Eisen Karl'
auflistet1).
Teste das folgende SQL Statement:
SELECT DISTINCT produkt, firma FROM produkte p INNER JOIN bestellungen b ON p.id=b.produkt_id INNER JOIN hersteller h ON h.id=b.hersteller_id WHERE h.firma = "Eisen-Karl"
Was wird hier abgefragt? Experimentiere mit der WHERE Bedingung und mit den angezeigten Feldern.