MINT lernen

Übungen: Datenbanken im Abitur

Schlüssel, Anomalien, WHERE und HAVING — zehn Aufgaben rund um Datenbanken.

Dein Fortschritt:
0 / 0 Aufgaben
1

Übungsaufgaben

Zehn Aufgaben vom Lesen eines Schemas (AFB I) bis zur Abschätzung von Ergebnisgrößen (AFB III). A5 und A7 nutzen dieselbe Beispieltabelle.

A1
Schlüssel erkennen
AFB I

Schema: Mitglied(MNr, Name, ↑AbtKuerzel), Abteilung(Kuerzel, Bezeichnung). Gib alle zutreffenden Aussagen an.

Mehrere Antworten sind richtig. Markiere alle zutreffenden und klicke dann auf „Prüfen“.
Der Fremdschlüssel steht auf der n-Seite: Jedes Mitglied hat genau eine Abteilung, eine Abteilung viele Mitglieder. Für mehrere Abteilungen je Mitglied bräuchte man eine eigene Tabelle.
Frage: Was bedeutet der Pfeil ↑ in der Kurzschreibweise?Warum? Er markiert Fremdschlüssel.
Hilfe: Unterstrichen = Primärschlüssel, eindeutig.
A2
Stimmt's? — SQL-Regeln
AFB I

Fünf Aussagen zum SQL-Umfang der Prüfung. Ordne sie 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

Zwei Platzhalter, zwei Filter-Orte: _ und %, WHERE und HAVING.
Frage: Wie viele Zeichen ersetzt _?Warum? Genau eins.
Hilfe: WHERE vor dem Gruppieren, HAVING danach.
A3
Anomalien
AFB I

Erläutere die Probleme einer redundanten Tabelle, indem du die Lücken füllst — ein Wort 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.

Stehen Trainername und Telefonnummer in jeder Zeile eines Spielers, entsteht . Beim der Nummer muss jede Zeile angepasst werden. Beim des letzten Spielers geht der Trainer verloren. Ein neuer Trainer ohne Spieler lässt sich beim nicht erfassen. Abhilfe: eine eigene Tabelle Trainer und ein .

Auslagern in eine eigene Tabelle mit Fremdschlüssel beseitigt alle drei Anomalien.
Frage: Wie oft steht dieselbe Telefonnummer in der Tabelle?Warum? Mehrfach gespeicherte Daten heißen Redundanz.
Hilfe: Einfügen, Ändern, Löschen — jede Operation hat ihr Problem.
A4
Wohin gehört die Bedingung?
AFB I

Ordne jede Bedingung der passenden Klausel zu.

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).
1WHERE
2HAVING
3ORDER BY
Die Verbundbedingung a.KNr = k.KNr steht im WHERE-Teil, weil der Verbund in dieser Notation über FROM und WHERE entsteht.
Frage: Enthält die Bedingung eine Aggregatfunktion?Warum? Aggregate gibt es erst nach dem Gruppieren.
Hilfe: Sortierangaben mit ASC/DESC gehören hinter ORDER BY.
A5
Zeilen zählen
AFB I
Tabelle Ausleihe
IDSchuelerGeraetTage
1AliTablet3
2BeaKamera5
3AliKamera2
4CemTablet7
5BeaTablet1

Lies ab, wie viele Zeilen SELECT * FROM Ausleihe WHERE Geraet = 'Tablet' AND Tage > 2 liefert.

Überlege selbst und trage das Ergebnis ein — Enter prüft direkt.
Tablet mit mehr als 2 Tagen: Ali (3) und Cem (7). Bea mit 1 Tag fällt heraus.
Frage: Welche Zeilen erfüllen die erste Bedingung?Warum? AND verlangt beide Bedingungen.
Hilfe: Drei Tablets — wie viele davon mit mehr als 2 Tagen?
A6
Eine Abfrage aufbauen
AFB II

Gesucht: die Namen aller Schülerinnen und Schüler, die insgesamt mehr als 4 Tage ausgeliehen haben, absteigend nach Summe. Stelle die Klauseln in der korrekten Reihenfolge dar.

Ziehe die Karten in die richtige Reihenfolge — mit der Tastatur: ↑/↓ verschiebt, Shift+↑/↓ wechselt nur den Fokus.
1SELECT Schueler, SUM(Tage) AS Summe
2FROM Ausleihe
3GROUP BY Schueler
4HAVING SUM(Tage) > 4
5ORDER BY Summe DESC
Die feste Reihenfolge lautet SELECT – FROM – WHERE – GROUP BY – HAVING – ORDER BY – LIMIT. Ergebnis mit den Daten aus A5: Ali 5, Bea 6, Cem 7 — alle drei.
Frage: Welche Klausel steht immer direkt nach SELECT?Warum? FROM nennt die Tabellen.
Hilfe: HAVING braucht vorher GROUP BY.
A7
Aggregate berechnen
AFB II
Tabelle Ausleihe
IDSchuelerGeraetTage
1AliTablet3
2BeaKamera5
3AliKamera2
4CemTablet7
5BeaTablet1

Berechne die Ergebnisse der Abfragen auf der Tabelle aus A5.

Arbeite die Kette Schritt für Schritt ab: Erst wenn ein Schritt stimmt, wird der nächste freigeschaltet. Enter prüft.
  1. SELECT COUNT(*) FROM Ausleihe
  2. SELECT SUM(Tage) FROM Ausleihe WHERE Schueler = 'Bea'
  3. SELECT MAX(Tage) FROM Ausleihe WHERE Geraet = 'Kamera'
  4. SELECT AVG(Tage) FROM Ausleihe
Summe aller Tage: 3 + 5 + 2 + 7 + 1 = 18; 18 : 5 = 3,6.
Frage: Welche Zeilen gehören zu Bea?Warum? Zeile 2 und Zeile 5.
Hilfe: AVG = Summe durch Anzahl.
A8
Vom ER-Modell zur Tabelle
AFB II

Erläutere die Umsetzung, indem du jede Beziehung mit ihrer Tabellenlösung verbindest.

Frage: Auf welcher Seite steht bei 1:n der Fremdschlüssel?Warum? Auf der n-Seite, weil dort jede Zeile genau einen Partner hat.
Hilfe: n:m braucht immer eine eigene Tabelle.
A9
Mias Abfrage
AFB II

Mia will je Gerät die Anzahl der Ausleihen, aber nur Geräte mit mindestens 2 Ausleihen. Überprüfe ihre Abfrage zeilenweise.

In diesem Text stecken Fehler. Klicke genau die falschen Zeilen an — die richtigen musst du stehen lassen.
GROUP-BY-Regel der Vorgaben: Jede Spalte im SELECT ist aggregiert oder steht im GROUP BY.
Frage: Welche Spalten dürfen bei GROUP BY Geraet im SELECT stehen?Warum? Nur Geraet und Aggregate.
Hilfe: Eine Bedingung an COUNT(*) kann erst nach dem Gruppieren geprüft werden.
A10
Wie groß wird das Ergebnis?
AFB III

Tabelle Schueler hat 20 Zeilen, Tabelle Kurs 5 Zeilen, jeder Schüler hat genau einen Kurs (Fremdschlüssel KursNr). Beurteile die Zeilenzahl des Ergebnisses.

Wähle für jede Zeile eine Stufe: 1 = 0 Zeilen, 2 = 5 Zeilen, 3 = 20 Zeilen, 4 = 25 Zeilen, 5 = 100 Zeilen. Mit der Tastatur: Tab zur Zeile, ←/→ zwischen den Stufen, Enter setzt.
1 = 0 Zeilen5 = 100 Zeilen
SELECT * FROM Schueler, Kurs
SELECT * FROM Schueler s, Kurs k WHERE s.KursNr = k.KursNr
SELECT * FROM Kurs
SELECT DISTINCT s.KursNr FROM Schueler s — wenn alle Kurse belegt sind
SELECT * FROM Schueler s, Kurs k WHERE s.KursNr = k.KursNr AND 1 = 2
Ohne Verbundbedingung entsteht das kartesische Produkt 20 · 5 = 100. Mit Bedingung bleibt für jeden Schüler genau der eine passende Kurs.
Frage: Was passiert, wenn die WHERE-Bedingung fehlt?Warum? Jede Zeile wird mit jeder kombiniert.
Hilfe: DISTINCT entfernt doppelte Kursnummern.