n-m Beziehungen
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.
Beispiel
Die Struktur der Beziehungstabelle sieht so aus:
schauspieler_film(sfid, 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 |
(A1)
Ergänze die Beziehungstabelle unter Verwendung entsprechender Ressourcen (Suchmaschine).
Importiere für die folgenden Übungen die Tabellen der normalisierten Zahnarztbedarfsdatenbank in deine Übungsdatenbank. (zahnarztbedarf_2nf.zip)
(A2)
Erstelle ein ER-Diagramm für die Datenbank. Überführe das ER Modell in ein relationales Datenbankschema.
(A3)
- Gib ein SQL-Statement an, das alle Produkte der Firma mit Hilfe des Filters
WHERE hersteller.firma = 'Eisen Karl'
auflistet1). - Gib ein SQL-Statement an, das alle Bestellungen (Produkt und Anzahl) von Viktoria auflistet.
- Gib ein SQL-Statement an, das den Rechnungsbetrag von Dr. Blutgesicht ausgibt.
- Gib ein SQL-Statement an, das alle Doktoren ausgibt, die Zement gekauft haben
- Gib ein SQL-Statement an, das alle Doktoren ausgibt, deren Rechnungsbetrag über 100EUR liegt
(Bonus 1)
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.