MINT lernen

Abituraufgaben: Verbundabfragen

Zwei Abituraufgaben zu Abfragen über drei und vier Tabellen.

Dein Fortschritt:
0 / 0 Aufgaben
1

Der Pizza-Lieferdienst

AFB I–II

Ein 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.

Material 1: Relationenschema
KundeKNrNameStrassePLZBestellungBestNr↑KNrZeit↑FahrerNrFahrerFahrerNrNameFahrzeugPosition↑BestNr↑PizzaNrAnzahlPizzaPizzaNrSortePreis
Pfeile führen vom Fremdschlüssel zum Primärschlüssel.
  1. Beschreiben Sie die Beziehung zwischen Bestellung und Pizza und die Rolle der Tabelle Position. 3 BE
  2. Erstellen Sie eine SQL-Abfrage, die zu jeder Bestellung die Bestellnummer, den Kundennamen und den Namen des Fahrers ausgibt. 4 BE
  3. 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)
Wie viele Sorten hat eine Bestellung, in wie vielen Bestellungen kommt eine Sorte vor?
Hinweis zu Aufgabe b)
Drei Tabellen → zwei Verbundbedingungen; Name kommt zweimal vor.
Hinweis zu Aufgabe c)
Jede Zeile jeder Tabelle wird kombiniert.

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).

2

Wer bestellt Margherita?

AFB II–III

Die Geschäftsführung möchte wissen, welche Kundinnen und Kunden aus der PLZ 30159 schon einmal eine Pizza der Sorte „Margherita“ bestellt haben.

  1. Entwickeln Sie eine SQL-Abfrage, die die Namen dieser Kundinnen und Kunden jeweils nur einmal ausgibt. 6 BE
  2. Ein Schüler lässt in der Abfrage die Tabelle Bestellung weg und schreibt Kunde.KNr = Position.BestNr. Überprüfen diesen Ansatz. 3 BE
  3. Erläutern Sie, warum ohne DISTINCT derselbe Name mehrfach im Ergebnis stehen kann. 3 BE

Insgesamt 12 BE

Hinweise

Hinweis zu Aufgabe a)
Der Weg im Schema: Kunde – Bestellung – Position – Pizza.
Hinweis zu Aufgabe b)
Vergleicht die Bedingung zwei Attribute, die dasselbe bedeuten?
Hinweis zu Aufgabe c)
Wie viele Zeilen entstehen für eine Person, die dreimal Margherita bestellt hat?

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.