Aufgabenblock — AFB II
Zehn Aufgaben, die Wissen verknüpfen: Verbund, Gruppen, Klammern, Redundanz und Datenschutz am Material des Scooter-Verleihs.
Material für alle Aufgaben: E-Scooter-Verleih
Ein Verleih speichert Scooter, Nutzer und Fahrten. Akku in Prozent, Minuten ganzzahlig, Preis in Euro (Grundgebühr 1 € plus 0,20 € pro Minute).
Scooter(ScooterNr, Modell, Akku, Stadtteil)
Nutzer(NutzerNr, Name, Stadtteil)
Fahrt(FahrtNr, ScooterNr, NutzerNr, Datum, Minuten, Preis)
| ScooterNr | Modell | Akku | Stadtteil |
|---|---|---|---|
| S1 | Flink | 82 | Mitte |
| S2 | Flink | 25 | Nord |
| S3 | Volt | 64 | Mitte |
| S4 | Volt | 12 | Süd |
| S5 | Blitz | 47 | Nord |
| S6 | Flink | NULL | Süd |
| S7 | Blitz | 91 | Mitte |
| S8 | Volt | 30 | Nord |
| NutzerNr | Name | Stadtteil |
|---|---|---|
| N1 | Aylin | Mitte |
| N2 | Ben | Nord |
| N3 | Carla | Süd |
| N4 | Deniz | Mitte |
| FahrtNr | ScooterNr | NutzerNr | Datum | Minuten | Preis |
|---|---|---|---|---|---|
| F1 | S1 | N1 | 01.09. | 12 | 3.40 |
| F2 | S3 | N2 | 01.09. | 25 | 6.00 |
| F3 | S1 | N4 | 02.09. | 8 | 2.60 |
| F4 | S5 | N1 | 02.09. | 30 | 7.00 |
| F5 | S7 | N3 | 03.09. | 15 | 4.00 |
| F6 | S3 | N1 | 03.09. | 20 | 5.00 |
| F7 | S8 | N2 | 04.09. | 10 | 3.00 |
Wenden Sie die Abfrage auf das Material an und geben Sie die Zeilenzahl an.
SELECT Fahrt.FahrtNr
FROM Fahrt, Nutzer
WHERE Fahrt.NutzerNr = Nutzer.NutzerNr
AND Nutzer.Stadtteil = 'Mitte';
Lösung anzeigen
Ermitteln Sie die Zeilenzahl von SELECT ScooterNr, COUNT(*) FROM Fahrt GROUP BY ScooterNr; und die Zeilenzahl, wenn HAVING COUNT(*) > 1 ergänzt wird.
Lösung anzeigen
Stünde der Name der Nutzerin direkt in jeder Fahrt, müsste bei einer Namensänderung von Aylin mehrfach geändert werden. Bestimmen Sie, in wie vielen Zeilen.
Lösung anzeigen
Vergleichen Sie die Zeilenzahlen beider Abfragen.
-- (1)
SELECT * FROM Scooter
WHERE Stadtteil = 'Nord' OR Stadtteil = 'Süd' AND Akku > 26;
-- (2)
SELECT * FROM Scooter
WHERE (Stadtteil = 'Nord' OR Stadtteil = 'Süd') AND Akku > 26;
Lösung anzeigen
Erstellen Sie eine Abfrage, die die Namen aller Nutzer ausgibt, die mindestens einmal einen Scooter des Modells Volt gefahren sind — jeden Namen nur einmal.
Musterlösung anzeigen (zählt als erledigt)
SELECT DISTINCT Nutzer.Name
FROM Nutzer, Fahrt, Scooter
WHERE Nutzer.NutzerNr = Fahrt.NutzerNr
AND Fahrt.ScooterNr = Scooter.ScooterNr
AND Scooter.Modell = 'Volt';Ergebnis: Ben, Aylin.
Ermitteln Sie das Ergebnis von SELECT COUNT(*) FROM Fahrt WHERE Minuten BETWEEN 10 AND 20;
Lösung anzeigen
Bestimmen Sie SELECT SUM(Preis) FROM Fahrt; und überprüfen Sie mit der Preisformel, ob alle Preise stimmen (Anzahl falscher Preise).
Lösung anzeigen
Eine Tabelle Tarif(Modell, Wochentag, ProMinute) speichert Minutenpreise. Bestimmen Sie die höchstmögliche Zahl an Datensätzen für die Modelle des Verleihs.
Lösung anzeigen
Der Verleih will zusätzlich Start- und Zielkoordinaten jeder Fahrt dauerhaft speichern. Erläutern Sie, welches Datenschutzproblem entsteht, und nennen Sie zwei DSGVO-Grundsätze, die betroffen sind.
Musterlösung anzeigen (zählt als erledigt)
Zusammen mit NutzerNr entsteht ein Bewegungsprofil: Wohnung, Schule, Arzt, Freunde lassen sich ablesen. Betroffen sind Datenminimierung (für die Abrechnung reichen Minuten) und Speicherbegrenzung (Koordinaten nach der Abrechnung löschen), außerdem die Zweckbindung.
Ermitteln Sie SELECT AVG(Akku) FROM Scooter; auf zwei Nachkommastellen.
