Die Gärtnerei im Netz
AFB I–IIEine Gärtnerei bietet ihre Pflanzen online an. Die Daten liegen in der Tabelle Pflanze (Material 1); Hoehe in cm, Preis in Euro, Winterhart ist 1 (ja) oder 0 (nein).
| PflanzeNr | Name | Art | Standort | Hoehe | Preis | Winterhart |
|---|---|---|---|---|---|---|
| 1 | Lavendel | Staude | Sonne | 60 | 6.9 | 1 |
| 2 | Funkie | Staude | Schatten | 45 | 8.5 | 1 |
| 3 | Olivenbaum | Baum | Sonne | 180 | 49.0 | 0 |
| 4 | Farn | Staude | Schatten | 70 | 7.2 | 1 |
| 5 | Zitronenbaum | Baum | Sonne | 120 | 39.0 | 0 |
| 6 | Buchsbaum | Strauch | Halbschatten | 50 | 12.0 | 1 |
- Geben Sie das Ergebnis der folgenden Abfrage an:
2 BESELECT Name, Preis FROM Pflanze WHERE Standort = 'Schatten'; - Erstellen Sie SQL-Abfragen für: (1) alle Angaben zu Pflanzen, die höher als 100 cm werden; (2) die Namen aller nicht winterharten Pflanzen; (3) jede vorkommende Pflanzenart genau einmal. 6 BE
- Beschreiben Sie, in welcher Reihenfolge ein DBMS die Klauseln der Abfrage aus a) auswertet. 3 BE
Insgesamt 11 BE
Hinweise
Hinweis zu Aufgabe a)
Hinweis zu Aufgabe b)
Hinweis zu Aufgabe c)
Erwartungshorizont
Erwartungshorizont zu Aufgabe a)
Funkie | 8.50 und Farn | 7.20.
Erwartungshorizont zu Aufgabe b)
SELECT * FROM Pflanze WHERE Hoehe > 100;
SELECT Name FROM Pflanze WHERE Winterhart = 0;
SELECT DISTINCT Art FROM Pflanze;Je 2 BE; Winterhart != 1 ist ebenfalls richtig.
Erwartungshorizont zu Aufgabe c)
FROM: Tabelle Pflanze bereitstellen; WHERE: nur Zeilen mit Standort = Schatten behalten; SELECT: von diesen die Spalten Name und Preis ausgeben.
Rabattaktion
AFB II–IIIIm Herbst gibt es auf alle winterharten Pflanzen 20 % Rabatt. Die Webseite soll dazu eine Liste mit Name, altem Preis und neuem Preis anzeigen.
- Entwickeln Sie eine SQL-Abfrage, die diese Liste liefert. Die berechnete Spalte soll
Aktionspreisheißen. 4 BE - Eine Mitarbeiterin schreibt
SELECT Name FROM Pflanze WHERE Standort = Sonne;Analysieren Sie den Fehler und korrigieren Sie die Abfrage. 3 BE - Beurteilen Sie den Vorschlag, den Aktionspreis als eigene Spalte in der Tabelle Pflanze zu speichern, statt ihn in der Abfrage zu berechnen. 4 BE
Insgesamt 11 BE
Hinweise
Hinweis zu Aufgabe a)
Hinweis zu Aufgabe b)
Hinweis zu Aufgabe c)
Erwartungshorizont
Erwartungshorizont zu Aufgabe a)
SELECT Name, Preis, Preis * 0.8 AS Aktionspreis
FROM Pflanze
WHERE Winterhart = 1;Ergebnis: Lavendel 5.52, Funkie 6.80, Farn 5.76, Buchsbaum 9.60.
Erwartungshorizont zu Aufgabe b)
Ohne Hochkommas wird Sonne als Spaltenname interpretiert; die Spalte existiert nicht, das DBMS meldet einen Fehler. Richtig: WHERE Standort = 'Sonne'.
Erwartungshorizont zu Aufgabe c)
Eine gespeicherte Spalte ist redundant: Sie lässt sich aus Preis und Rabatt berechnen. Bei Preisänderungen droht Inkonsistenz (Änderungsanomalie), und nach der Aktion muss die Spalte gelöscht werden. Die Berechnung in der Abfrage ist flexibler; eine Speicherung wäre nur bei sehr aufwendigen Berechnungen sinnvoll.
