MINT lernen

Übungen: Verbundabfragen

Zehn Übungen zum Kreuzprodukt, zur Verbundbedingung und zu Abfragen über drei Tabellen.

Dein Fortschritt:
0 / 0 Aufgaben
1

Übungsaufgaben

Zehn Übungen zum Klicken, Ziehen und Knobeln — von AFB I bis AFB III. Jede Übung gibt dir sofort Rückmeldung; wenn du hängst, helfen dir die zwei gestuften Tipps.

A1
Was stimmt am Verbund?
AFB I

Die Schulbibliothek speichert Leser, Bücher und Ausleihen. Gib alle zutreffenden Aussagen an.

Leser
LeserNrNameKlasse
L1Emma11a
L2Jonas11b
L3Selin12a
Buch
BuchNrTitelAutor
B1FaustGoethe
B2Der ProcessKafka
B3Corpus DelictiZeh
B4Homo faberFrisch
Ausleihe
LeserNrBuchNrDatum
L1B103.02.
L1B310.02.
L2B311.02.
L3B212.02.
L3B414.02.
Mehrere Antworten sind richtig. Markiere alle zutreffenden und klicke dann auf „Prüfen“.
Mit Verbundbedingung entstehen 5 Zeilen — eine je Ausleihe, nicht je Leser. Ausleihe hat einen zusammengesetzten Primärschlüssel.
Frage: Welche Attribute gehören zusammen?Warum? Verbunden wird immer Primärschlüssel mit passendem Fremdschlüssel.
Hilfe: Kreuzprodukt: 3 · 5; mit Bedingung: eine Zeile pro Ausleihe.
A2
Stimmt's? — Verbund
AFB I

Fünf Aussagen zu Abfragen über mehrere Tabellen. Ordne jede als richtig oder falsch ein.

5 Aussagen nacheinander. Eine falsche Einschätzung reicht — dann startest du die Serie mit „Neue Runde“ neu.
Aussage 1 von 5

Der Verbund liefert nur Paare, die die Bedingung erfüllen — wer keinen Partner hat, fehlt im Ergebnis.
Frage: Wo steht die Verbundbedingung?Warum? Sie filtert Zeilenpaare.
Hilfe: Zeilen filtert man in WHERE. k Tabellen → k − 1 Bedingungen.
A3
Lückentext: Verbundabfrage
AFB I

Nenne die fehlenden Teile der Abfrage „Welche Titel hat Emma ausgeliehen?“ — ein Baustein bleibt übrig.

Wort anklicken, dann Lücke anklicken (oder umgekehrt) — mit Tab und Enter geht es genauso. Ein Klick auf eine gefüllte Lücke legt das Wort zurück.

SELECT FROM WHERE AND AND ;

Die Klasse wird für die Frage nicht gebraucht — ausgegeben wird nur, was gefragt ist.
Frage: Welche Tabellen enthalten Name und Titel?Warum? Leser und Buch sind nur über Ausleihe verbunden.
Hilfe: Zwei Verbundbedingungen plus eine Filterbedingung, alle mit AND.
A4
Verbund oder Filter?
AFB I

Ordne jede Teilbedingung zu: Verbindet sie zwei Tabellen oder filtert sie Zeilen?

Ziehe jede Karte in den passenden Korb — oder wähle sie mit Enter aus und drücke dann die Ziffer des Korbs (0 legt sie zurück).
1Verbundbedingung
2Filterbedingung
Eine Verbundbedingung vergleicht zwei Attribute aus verschiedenen Tabellen, eine Filterbedingung ein Attribut mit einem festen Wert.
Frage: Steht rechts ein Attribut oder ein Wert?Warum? Verbinden heißt: Spalte mit Spalte vergleichen.
Hilfe: Tabelle.Attribut = Tabelle.Attribut → Verbund; Attribut = 'Wert' → Filter.
A5
Wie lang wird das Kreuzprodukt?
AFB I

Bestimme, wie viele Zeilen SELECT * FROM Leser, Buch, Ausleihe; ohne jede Bedingung liefert.

Überlege selbst und trage das Ergebnis ein — Enter prüft direkt.
3 Leser · 4 Bücher · 5 Ausleihen = 60 Kombinationen — nur 5 davon sind echte Ausleihen.
Frage: Wie viele Kombinationen gibt es?Warum? Jede Zeile jeder Tabelle wird mit jeder anderen kombiniert.
Hilfe: Multipliziere die Zeilenzahlen aller drei Tabellen.
A6
Eine Verbundabfrage entwickeln
AFB II

Frage: „Welche Leserinnen und Leser haben ein Buch von Zeh ausgeliehen?“ Stelle das Vorgehen in der richtigen Reihenfolge dar.

Ziehe die Karten in die richtige Reihenfolge — mit der Tastatur: ↑/↓ verschiebt, Shift+↑/↓ wechselt nur den Fokus.
1Gebrauchte Attribute finden: Name (Leser), Autor (Buch).
2Den Weg im Schema suchen: Leser – Ausleihe – Buch.
3Alle drei Tabellen in FROM aufführen.
4Zwei Verbundbedingungen entlang der Fremdschlüssel schreiben.
5Filter Buch.Autor = 'Zeh' mit AND anhängen und SELECT Leser.Name ergänzen.
Der Weg im Schema bestimmt die Tabellen — auch Ausleihe, obwohl aus ihr kein Attribut ausgegeben wird.
Frage: Welche Tabelle verbindet Leser und Buch?Warum? Leser und Buch haben kein gemeinsames Attribut.
Hilfe: Erst Attribute, dann Weg, dann FROM, dann Verbund, zuletzt Filter.
A7
Den Verbund nachrechnen
AFB II

Wende die Abfragen auf die Tabellen oben an und gib jeweils die Zeilenzahl an.

Löse die Kette Schritt für Schritt: Erst wenn ein Schritt stimmt, wird der nächste freigeschaltet. Enter prüft.
  1. FROM Leser, Ausleihe WHERE Leser.LeserNr = Ausleihe.LeserNr Zeilen
  2. … AND Leser.Klasse = '12a' Zeilen
  3. FROM Ausleihe, Buch WHERE Ausleihe.BuchNr = Buch.BuchNr Zeilen
  4. … AND Buch.Titel = 'Corpus Delicti' Zeilen
Beim Verbund entlang eines Fremdschlüssels entsteht genau eine Zeile pro Datensatz der Tabelle mit dem Fremdschlüssel — hier also pro Ausleihe.
Frage: Wie viele Ausleihen gibt es?Warum? Jede Ausleihe findet genau einen Leser und genau ein Buch.
Hilfe: Ohne Filter: 5 Zeilen; mit Filter nur die passenden Ausleihen zählen.
A8
Frage und Tabellen
AFB II

Analysiere jede Frage: Welche Tabellen braucht die Abfrage mindestens?

Frage: Wo stehen die gefragten und die gefilterten Attribute?Warum? Man braucht jede Tabelle, aus der ein Attribut vorkommt — plus die Verbindungswege.
Hilfe: Name → Leser, Titel → Buch, Datum → Ausleihe; dazwischen immer über Ausleihe.
A9
Fehler in Verbundabfragen
AFB III

Gesucht: Namen der Leser, die ein Buch von Kafka ausgeliehen haben. Überprüfe die Zeilen eines Lösungsversuchs — drei sind falsch.

In diesem Text stecken Fehler. Klicke genau die falschen Zeilen an — die richtigen musst du stehen lassen.
Typisch: die Verbindungstabelle vergessen oder Schlüssel mit einem Nicht-Schlüssel-Attribut vergleichen.
Frage: Welche Tabelle fehlt in FROM?Warum? Jede Tabelle, die in WHERE vorkommt, muss in FROM stehen.
Hilfe: Prüfe FROM, dann jede Verbundbedingung (Schlüssel = Schlüssel), dann die Hochkommas.
A10
Was passiert beim Weglassen?
AFB III

Ausgangsabfrage (5 Zeilen): SELECT * FROM Leser, Ausleihe, Buch WHERE Leser.LeserNr = Ausleihe.LeserNr AND Ausleihe.BuchNr = Buch.BuchNr; Untersuche, wie viele Zeilen nach jeder Änderung entstehen.

Wähle für jede Zeile eine Stufe: 1 = 2 Zeilen, 2 = 5 Zeilen, 3 = 15 Zeilen, 4 = 20 Zeilen, 5 = 60 Zeilen. Mit der Tastatur: Tab zur Zeile, ←/→ zwischen den Stufen, Enter setzt.
1 = 2 Zeilen5 = 60 Zeilen
beide Verbundbedingungen weg
nur die Bedingung Leser–Ausleihe weg
nur die Bedingung Ausleihe–Buch weg
zusätzlich AND Leser.Name = 'Emma'
SELECT * wird zu SELECT Buch.Titel
Fehlt eine Verbundbedingung, multipliziert sich das Ergebnis mit der Zeilenzahl der losen Tabelle: 5 · 3 = 15 bzw. 5 · 4 = 20.
Frage: Welche Tabelle ist nach dem Weglassen „lose“?Warum? Eine lose Tabelle wird mit allem kombiniert.
Hilfe: Richtiger Verbund: 5 Zeilen; lose Leser ×3, loses Buch ×4, alles lose 3 · 5 · 4.