Der Pizza-Lieferdienst
AFB I–IIEin Lieferdienst speichert Kunden, Bestellungen, Fahrer und bestellte Pizzen (Material 1). Eine Bestellung kann mehrere Pizzasorten enthalten; die Tabelle Position hält fest, wie oft jede Sorte bestellt wurde.
- Beschreiben Sie die Beziehung zwischen Bestellung und Pizza und die Rolle der Tabelle Position. 3 BE
- Erstellen Sie eine SQL-Abfrage, die zu jeder Bestellung die Bestellnummer, den Kundennamen und den Namen des Fahrers ausgibt. 4 BE
- Erklären Sie, was die Abfrage aus b) liefern würde, wenn beide Verbundbedingungen fehlen. 3 BE
Insgesamt 10 BE
Hinweise
Hinweis zu Aufgabe a)
Hinweis zu Aufgabe b)
Hinweis zu Aufgabe c)
Erwartungshorizont
Erwartungshorizont zu Aufgabe a)
Zwischen Bestellung und Pizza besteht eine m:n-Beziehung. Position löst sie auf: Jeder Datensatz verbindet genau eine Bestellung mit genau einer Pizzasorte und speichert die Anzahl. Der Primärschlüssel ist die Kombination (BestNr, PizzaNr).
Erwartungshorizont zu Aufgabe b)
SELECT Bestellung.BestNr, Kunde.Name, Fahrer.Name
FROM Bestellung, Kunde, Fahrer
WHERE Bestellung.KNr = Kunde.KNr
AND Bestellung.FahrerNr = Fahrer.FahrerNr;Punktschreibweise wegen des doppelten Attributnamens Name.
Erwartungshorizont zu Aufgabe c)
Es entstünde das kartesische Produkt: Anzahl Bestellungen · Anzahl Kunden · Anzahl Fahrer Zeilen, fast alle ohne Bedeutung (z. B. Bestellungen mit fremden Kunden).
Wer bestellt Margherita?
AFB II–IIIDie Geschäftsführung möchte wissen, welche Kundinnen und Kunden aus der PLZ 30159 schon einmal eine Pizza der Sorte „Margherita“ bestellt haben.
- Entwickeln Sie eine SQL-Abfrage, die die Namen dieser Kundinnen und Kunden jeweils nur einmal ausgibt. 6 BE
- Ein Schüler lässt in der Abfrage die Tabelle Bestellung weg und schreibt
Kunde.KNr = Position.BestNr. Überprüfen diesen Ansatz. 3 BE - Erläutern Sie, warum ohne DISTINCT derselbe Name mehrfach im Ergebnis stehen kann. 3 BE
Insgesamt 12 BE
Hinweise
Hinweis zu Aufgabe a)
Hinweis zu Aufgabe b)
Hinweis zu Aufgabe c)
Erwartungshorizont
Erwartungshorizont zu Aufgabe a)
SELECT DISTINCT Kunde.Name
FROM Kunde, Bestellung, Position, Pizza
WHERE Kunde.KNr = Bestellung.KNr
AND Bestellung.BestNr = Position.BestNr
AND Position.PizzaNr = Pizza.PizzaNr
AND Pizza.Sorte = 'Margherita'
AND Kunde.PLZ = '30159';3 Verbundbedingungen (3 BE), 2 Filter (2 BE), DISTINCT (1 BE).
Erwartungshorizont zu Aufgabe b)
Kundennummer und Bestellnummer bezeichnen verschiedene Dinge; ihr Vergleich ist fachlich sinnlos. Zufällige Übereinstimmungen liefern falsche Kunden. Der Weg über Bestellung ist nötig, weil nur dort KNr und BestNr gemeinsam stehen.
Erwartungshorizont zu Aufgabe c)
Der Verbund liefert eine Zeile je passender Position. Hat eine Person mehrfach Margherita bestellt, entstehen mehrere Zeilen mit demselben Namen. DISTINCT fasst sie zusammen.
