3.1.1.6
Lösungswege zu den Übungen
Die Aufgaben der Lernstrecke bündeln die zentralen Ideen: sinnvolle Tabellenstruktur, atomare Werte, feste SQL Syntax, Filter, Sortierung und Textmuster.
Übung 1: Klassentabelle
- Erstelle die Struktur einer Tabelle für die Daten der Schülerinnen und Schüler deiner Klasse.
- Bestimme passende Attribute mit Wertebereichen.
- Entscheide, ob Alter oder Geburtsdatum gespeichert werden sollte, und notiere wenige Beispieldatensätze.
Kernidee: Eine Tabelle braucht passende Attribute, passende Datentypen und klare Modellierungsentscheidungen.
Mögliche Struktur
Eine sinnvolle Tabelle speichert stabile Daten. Das Geburtsdatum ist meist besser als das Alter, weil das Alter sich automatisch aus dem Datum ergibt.
Tabelle schueler
Name: varchar
Vorname: varchar
Geburtsdatum: date
Kurs: varchar
E-Mail: varcharSpeichere möglichst Grunddaten, aus denen veränderliche Angaben berechnet werden können.
Übung 2: Lehrer und KFZ Kennzeichen
- Das Sekretariat möchte wissen, welches Auto von welchem Lehrer gefahren wird.
- Die vorhandene Lehrertabelle wurde dafür um KFZ Kennzeichen ergänzt.
- Begründe, warum diese Tabelle nicht gut gelungen ist und den Regeln relationaler Tabellen widerspricht.
Kernidee: Atomare Werte machen Daten eindeutig filterbar, zählbar und zuordenbar.
Problem
Mehrere Kennzeichen in einer Zelle sind keine atomaren Werte. Die Datenbank kann einzelne Kennzeichen dann schlecht filtern oder eindeutig zuordnen.
Bessere Modellidee
Eine eigene Tabelle für Autos oder Kennzeichen wäre sauberer. Pro Zeile steht dann genau ein Kennzeichen.
lehrer(Name, Kuerzel, Fach)
auto(Kennzeichen, LehrerKuerzel)Übung 3: Reihenfolge im SQL Befehl
Teste, ob die Datenbank auch eine andere Reihenfolge im SQL Befehl akzeptiert, zum Beispiel FROM ort SELECT ...
Kernidee: SQL hat eine feste Syntax. Die Datenbank versteht nicht jede Reihenfolge.
Erklärung
FROM ort SELECT ... ist kein gültiger SQL Satzbau. Auch wenn wir inhaltlich zuerst an die Tabelle denken, muss die Abfrage syntaktisch mit SELECT beginnen.
SQL ist sprachähnlich, aber nicht beliebig. Die Reihenfolge der Schlüsselwörter gehört zur Syntax.
Übung 4: Länder anzeigen, sortieren und filtern
- Gib alle Länder aus. Angezeigt werden sollen Name, Einwohner und Hauptstadt, sortiert nach Einwohnerzahl absteigend.
- Gib alle Länder in Europa aus. Angezeigt werden nur die Namen.
Kernidee: SELECT wählt Spalten, WHERE filtert Zeilen, ORDER BY sortiert das Ergebnis.
Musterlösung: Länder nach Einwohnerzahl
DESC sortiert absteigend. Große Einwohnerzahlen stehen zuerst.
SELECT Name, Einwohner, Hauptstadt
FROM land
ORDER BY Einwohner DESC;Musterlösung: Länder in Europa
Hier wird nur das Attribut Name ausgegeben.
SELECT Name
FROM land
WHERE Kontinent = 'Europa';Übung 5: BETWEEN, LIKE und Koordinaten
- Welche Länder haben zwischen 10 und 100 Mio. Einwohner? Sortiere absteigend nach Einwohnerzahl.
- Welche Länder haben „Arm“ oder „Bein“ im Namen?
- Gibt es Orte mit „Arm“ oder „Bein“ im Namen?
- Welche Orte in Deutschland liegen weiter westlich als Kaiserslautern bei 7.768° Ost?
Kernidee: Zahlenbereiche, Textmuster und Koordinaten verlangen jeweils passende Operatoren.
Musterlösung: 10 bis 100 Mio. Einwohner
BETWEEN 10 AND 100 passt hier zur Einheit der Terra Tabelle, weil Länder Einwohnerzahlen in Millionen speichern.
SELECT Name, Einwohner
FROM land
WHERE Einwohner BETWEEN 10 AND 100
ORDER BY Einwohner DESC;Musterlösung: Arm oder Bein im Ländernamen
LIKE sucht Textmuster. % erlaubt beliebige Zeichen davor und danach.
SELECT Name
FROM land
WHERE Name LIKE '%Arm%' OR Name LIKE '%Bein%';Musterlösung: deutsche Orte westlich von Kaiserslautern
Weiter westlich heißt bei östlicher Länge: Die Zahl ist kleiner als 7.768.
SELECT Name, Laenge
FROM ort
WHERE Land = 'Deutschland' AND Laenge < 7.768
ORDER BY Laenge;Übung 6: Länder in Asien und Australien
Welche Länder liegen in Asien und Australien?
Kernidee: Alltagssprache und SQL Logik müssen sauber übersetzt werden.
Musterlösung
Gemeint ist hier normalerweise: Länder, deren Kontinent Asien oder Australien ist. Es geht nicht darum, dass ein Land gleichzeitig in beiden Kontinenten liegen muss.
SELECT Name, Kontinent
FROM land
WHERE Kontinent = 'Asien' OR Kontinent = 'Australien'
ORDER BY Kontinent, Name;Das deutsche „und“ aus der Aufgabenformulierung wird in SQL oft zu OR, wenn zwei Gruppen gemeinsam ausgegeben werden sollen.
Die Ergebnistabellen zeigen dieselbe Idee wie die Terra Datenbank: SQL Anfragen liefern eine neue, gefilterte Sicht auf gespeicherte Daten. inf-schule Terra 3.1.1