Aufgabenstellung
Loading
Loading
Vom konzeptionellen ER-Modell über die Normalisierung bis zu SQL-Abfragen, Transaktionen und ACID. Datenbanken sind der Standardweg, Information persistent und konsistent zu halten.
6Abschnitteca. 19Min Lesezeit4KompetenzenNiveauStandard 3 · Vertiefung 3Stand 06/2026
Lesetiefe: Vertiefung
Schriftgröße: Standard
ER-Diagramm Schüler - Belegt - Kurs
Wandle das ER-Diagramm Schüler -< belegt >- Kurs (n:m, mit Attribut Note) in ein relationales Schema um.
`Schüler(SNr PK, Name, Klasse)` und `Kurs(KNr PK, Titel, Lehrkraft)`.
`Belegung(SNr FK, KNr FK, Note)` mit zusammengesetztem Primärschlüssel (SNr, KNr).
Belegung.SNr -> Schüler.SNr; Belegung.KNr -> Kurs.KNr.
Bei 1:n könnte der Fremdschlüssel direkt in der "n"-Seite ergänzt werden, ohne separate Tabelle.
Ergebnis: Drei Tabellen, alle in 3NF. Note ist nur im Beziehungstuple speicherbar - so vermeidet man Anomalien.
Das ER-Modell ist die Sprache, in der Datenbankentwickler über den Anwendungsbereich sprechen.
ER-Diagramm Schüler - Belegt - Kurs
Kardinalitäten kommen aus den Geschäftsregeln - sie zu klären ist die wichtigste Modellierungsfrage.
Die Umwandlung in Tabellen folgt mechanischen Regeln - aber nur, wenn das ER-Modell sauber ist.
SRDP-Aufgaben
Aufgabenstellung
Typische Fehler
Aktive Wiederholung
Modelliere "Eine Lehrkraft unterrichtet mehrere Klassen, eine Klasse kann von mehreren Lehrkräften unterrichtet werden." Welche Kardinalität? Skizziere das ER-Diagramm und überführe in Tabellen.
Aktiv abrufen
Erinnere dich an die Kernpunkte — dann aufdecken.
Quellen: Chen: The Entity-Relationship Model (ACM TODS)
Normalformen 1NF - 2NF - 3NF
Transitive Abhängigkeit
Normalisiere `Bestellung(BNr, KdNr, KdName, ArtNr, ArtBez, Menge)` schrittweise bis 3NF.
Alle Zellen atomar, keine Wiederholungsgruppen -> bereits 1NF.
PK = (BNr, ArtNr). KdNr, KdName hängen nur von BNr ab, ArtBez nur von ArtNr -> Verletzung 2NF (Teilabhängigkeit).
`Bestellung(BNr PK, KdNr, KdName)` und `Position(BNr FK, ArtNr FK, Menge)` und `Artikel(ArtNr PK, ArtBez)`.
In Bestellung gilt: KdName transitiv abhängig von KdNr -> verletzt 3NF.
Kunden in `Kunde(KdNr PK, KdName)` auslagern. Bestellung enthält nur noch KdNr als FK.
Ergebnis: `Kunde(KdNr, KdName)` | `Artikel(ArtNr, ArtBez)` | `Bestellung(BNr, KdNr)` | `Position(BNr, ArtNr, Menge)`. Anomalien bei Updates und Löschungen sind eliminiert.
Die Normalformen sind eine Treppe von steigender Strenge - mit jedem Schritt verschwinden Anomalien.
Normalformen 1NF - 2NF - 3NF
Du brauchst funktionale Abhängigkeiten als Werkzeug, um die Normalformen anzuwenden.
Im Data Warehouse wird oft denormalisiert, weil Lesegeschwindigkeit wichtiger ist als Anomaliefreiheit.
SRDP-Aufgaben
Aufgabenstellung
Typische Fehler
Aktive Wiederholung
Prüfe `Mitarbeiter(MNr, Name, AbtNr, AbtName, Büro)` auf 3NF. Wenn nicht erfüllt, zerlege.
Aktiv abrufen
Erinnere dich an die Kernpunkte — dann aufdecken.
Quellen: Codd: A Relational Model of Data for Large Shared Data Banks (CACM)
SQL-Join-Typen als Mengen-Venn
"Liste alle Schüler-Namen, die im Kurs mit Titel 'Mathematik' eine Note besser als 3 haben."
Schüler, Kurs, Belegung.
Schüler.SNr = Belegung.SNr UND Kurs.KNr = Belegung.KNr.
Kurs.Titel = 'Mathematik' AND Belegung.Note < 3.
SELECT Schüler.Name.
```sql SELECT s.Name FROM Schüler s JOIN Belegung b ON s.SNr = b.SNr JOIN Kurs k ON b.KNr = k.KNr WHERE k.Titel = 'Mathematik' AND b.Note < 3; ```
Ergebnis: In Österreich gilt 1 = Sehr gut, 5 = Nicht genügend; "besser als 3" bedeutet Note < 3 (also 1 oder 2).
SQL ist eine deklarative Sprache - du beschreibst, was du willst, nicht wie es berechnet wird.
Joins verbinden Tabellen; entscheidend ist die ON-Bedingung, sonst entsteht ein kartesisches Produkt.
SQL-Join-Typen als Mengen-Venn
Aggregat- und Gruppierungsfunktionen verwandeln Detaildaten in zusammengefasste Berichte.
SRDP-Aufgaben
Aufgabenstellung
Typische Fehler
Aktive Wiederholung
Tabelle `Schüler(SNr, Name, Klasse)` und `Note(SNr, Fach, Wert)`. Schreibe Queries: (a) Durchschnittsnote pro Klasse; (b) Schüler ohne eingetragene Note; (c) Top 5 Schüler nach Durchschnittsnote.
Aktiv abrufen
Erinnere dich an die Kernpunkte — dann aufdecken.
Quellen: SQL Standard ISO/IEC 9075 (ISO) · PostgreSQL Documentation - SQL Tutorial (PostgreSQL Global Development Group)
Isolationslevel und Anomalien
Schreibe eine Transaktion, die 100 EUR von Konto A auf Konto B überweist.
`BEGIN TRANSACTION;`
`UPDATE Konto SET Saldo = Saldo - 100 WHERE KNr = 'A';`
Wenn Saldo < 0 -> `ROLLBACK;` und Fehler ausgeben.
`UPDATE Konto SET Saldo = Saldo + 100 WHERE KNr = 'B';`
`COMMIT;`
Ergebnis: Atomicity: ohne COMMIT bleibt der Stand unverändert. Bei Stromausfall vor COMMIT macht die DB beim Neustart automatisch ROLLBACK (Recovery via WAL).
ACID ist das Versprechen, das relationale Datenbanken seit Jahrzehnten machen.
Stell dir Atomicity wie eine "Alles-oder-Nichts"-Schaltung vor: entweder das gesamte Update zählt, oder gar nichts.
In verteilten Systemen ist ACID schwer - dort taucht das CAP-Theorem auf.
SRDP-Aufgaben
Aufgabenstellung
Typische Fehler
Aktive Wiederholung
Erläutere die ACID-Eigenschaften an einer Banktransaktion. Welches Problem entsteht, wenn Atomicity verletzt wird?
Aktiv abrufen
Erinnere dich an die Kernpunkte — dann aufdecken.
Quellen: Garcia-Molina, Ullman, Widom: Database Systems - The Complete Book (Pearson)
NoSQL-Datenbankklassen im Überblick
Welche CAP-Tradeoffs gehen typische Systeme ein?
MongoDB (Single Replica Set), HBase: bei Partition werden Schreibvorgänge blockiert -> Konsistenz, aber kurze Nicht-Verfügbarkeit.
Cassandra, DynamoDB: schreiben immer, akzeptieren später Konsistenz (eventual consistency).
Klassische relationale DB auf einem Server - aber das ist nicht verteilt, daher keine Partition Tolerance nötig.
Ergebnis: Wahl hängt vom Geschäftsfall ab. Bankkonten -> CP (Inkonsistenz verboten); soziale Likes -> AP (kurzzeitige Inkonsistenz akzeptabel).
NoSQL ist nicht Anti-SQL - es ist eine Ergänzung für spezielle Anforderungen.
Das CAP-Theorem ist ein scharfes mathematisches Ergebnis: in verteilten Systemen gibt es keinen Gratisluxus.
Wähle die Datenbank nach Datenmodell und Konsistenzanforderung - nicht nach Hype.
SRDP-Aufgaben
Aufgabenstellung
Typische Fehler
Aktive Wiederholung
Welche NoSQL-Klasse wählst du für (a) eine soziale Netz-App, (b) ein IoT-Sensor-Logging-System, (c) ein dokumentbasiertes CMS? Begründe.
Aktiv abrufen
Erinnere dich an die Kernpunkte — dann aufdecken.
Quellen: Brewer: CAP Twelve Years Later - How the "Rules" Have Changed (InfoQ) · MongoDB Manual (MongoDB Inc.)
Index - Nutzen und Kosten
Suchkosten mit B+-Baum-Index vs. Full Table Scan
Eine Tabelle `Bestellung` mit 2 Mio. Zeilen wird häufig mit `WHERE KundenNr = ?` abgefragt. Erläutere den Effekt eines Index auf `KundenNr`.
Ohne Index: Full Table Scan über 2 Mio. Zeilen, - bei jeder Abfrage werden alle Zeilen gelesen.
`CREATE INDEX idx_kunde ON Bestellung(KundenNr);` baut einen B+-Baum über die Spalte.
Suche sinkt auf Vergleiche statt 2 Mio. - drastisch schneller.
Jeder `INSERT`/`UPDATE` von `KundenNr` muss den Index mitpflegen; zusätzlicher Speicher für den B+-Baum.
Da die Tabelle leseintensiv ist und KundenNr selektiv (viele verschiedene Werte), überwiegt der Nutzen klar.
Ergebnis: Ein Index auf `KundenNr` lohnt sich: Lesezeit von auf ; geringe Mehrkosten beim Schreiben werden durch den Lesegewinn aufgewogen.
Gegeben ein Index auf `(Nachname, Vorname)`. Welche der Abfragen nutzen ihn?
`WHERE Nachname = 'Huber'` - nutzt den Index (Linksprefix erfüllt).
`WHERE Nachname = 'Huber' AND Vorname = 'Anna'` - nutzt den Index voll.
`WHERE Vorname = 'Anna'` - nutzt den Index nicht, da der führende Schlüsselteil fehlt.
Ergebnis: Nur Abfragen, die mit der führenden Spalte beginnen, profitieren; ein eigener Index auf `Vorname` wäre für Fall 3 nötig.
Ein Index ist wie das Stichwortverzeichnis eines Buches: man muss nicht jede Seite durchblättern.
Der Gewinn beim Lesen () wird mit Mehraufwand beim Schreiben erkauft - deshalb nicht jede Spalte indizieren.
Mit EXPLAIN zeigt die Datenbank, ob sie den Index nutzt oder doch scannt.
SRDP-Aufgaben
Aufgabenstellung
Typische Fehler
Aktive Wiederholung
Beurteile für die Abfrage `SELECT * FROM Bestellung WHERE KundenNr = 4711 AND Datum > '2024-01-01'`, welche Indizes sinnvoll sind, und begründe den Effekt auf Lese- und Schreiboperationen.
Aktiv abrufen
Erinnere dich an die Kernpunkte — dann aufdecken.
Quellen: Use The Index, Luke! - SQL Indexing (Markus Winand)
Belege & Quellen
PostgreSQL Global Development Group
MongoDB Inc.
Markus Winand