Dies ist eine alte Version des Dokuments!
In normalisierten Datenbanklen kommen häufig „Beziehungstabellen“ zum Einsatz, welche die Verbindung zwischen den Entitäten herstellen. n-m-Beziehungen benötigen immer eine solche Beziehungstabelle.
Importiere für die folgenden Übungen die Tabellen der normalisierte Zahnarztbedarfsdatenbank in deine Übungsdatenbank. (zahnarztbedarf_2nf.zip)
(A1)
Erstelle ein ER-Diagramm für die Datenbank.
(A2)
Gib ein SQL-Statement an, das alle Produkte der Firma mit Hilfe des Filters
WHERE hersteller.firma = 'Eisen Karl'
auflistet
1).
Gib ein SQL-Statement an, das alle Bestellungen 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, deren Rechungsbetrag über 12EUR liegt
Lösung 1
SELECT * FROM hersteller,doktoren, produkte, bestellungen
WHERE bestellungen.produkt_id = produkte.id
AND bestellungen.doktor_id = doktoren.id
AND bestellungen.hersteller_id = hersteller.id
AND hersteller.firma = "Eisen-Karl"
Lösung 2
SELECT * FROM hersteller,doktoren, produkte, bestellungen
WHERE bestellungen.produkt_id = produkte.id
AND bestellungen.doktor_id = doktoren.id
AND bestellungen.hersteller_id = hersteller.id
AND doktoren.vorname = "Viktoria"
Lösung 3
SELECT * FROM hersteller,doktoren, produkte, bestellungen
WHERE bestellungen.produkt_id = produkte.id
AND bestellungen.doktor_id = doktoren.id
AND bestellungen.hersteller_id = hersteller.id
AND doktoren.name = "Blutgesicht"
Lösung 5
SELECT SUM(preis) AS rechnung, doktoren.name FROM hersteller,doktoren, produkte, bestellungen
WHERE bestellungen.produkt_id = produkte.id
AND bestellungen.doktor_id = doktoren.id
AND bestellungen.hersteller_id = hersteller.id
GROUP BY doktoren.name
HAVING rechnung >12
++++
----
{{:aufgabe.png?nolink |}}
=== (Bonus 1) ===
Teste das folgende SQL Statement:
<code sql>
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.