- 1 Section
- 10 Lessons
- unbegrenzt
- Datenintegrität & Transaktionen10
- 1.1Integritätstypen
- 1.2Primary Key, Foreign Key, Constraints
- 1.3Referenzielle Integrität: ON DELETE, ON UPDATE
- 1.4Was sind Transaktionen?
- 1.5ACID-Eigenschaften
- 1.6Transaktions-Isolation und Anomalien
- 1.7COMMIT, ROLLBACK und SAVEPOINT
- 1.8Deadlocks: Entstehung und Vermeidung
- 1.9Datenbankindizes und Performance
- 1.10Aufgaben Datenintegrität
Aufgaben Datenintegrität
Diese letzte Lektion des Kurses dient zur Prüfungsvorbereitung. Wir gehen 12 typische IHK-Aufgaben durch, die genau zu den Themen Integritätstypen, Constraints, ACID, Isolation, Deadlocks und Indizes passen. Lösungen sind ausklappbar – versuche die Antworten erst selbst zu formulieren.
Die Aufgabentypen entsprechen denen aus realen Prüfungen: Begriff & Definition, Szenario-Analyse, SQL-Konstrukt erzeugen, Fehler erkennen und Beratung mit Begründung. Diese fünf Muster decken alle prüfungsrelevanten Formate ab.
1) Überblick: Aufgabenverteilung
So setzt sich der Aufgaben-Block typischerweise zusammen:
2) Aufgaben Teil A – Datenintegrität
Klick eine Aufgabe um sie zu öffnen. Versuch erst selbst zu antworten, bevor du die Musterlösung aufklappst:
- Entitätsintegrität: jede Zeile einer Tabelle muss eindeutig identifizierbar sein – realisiert durch den Primary Key (NOT NULL + UNIQUE).
- Referenzielle Integrität: jeder Fremdschlüsselwert muss in der Zieltabelle als Primary Key existieren (oder NULL sein).
- Domänenintegrität: jeder Wert einer Spalte muss aus dem definierten Wertebereich (Datentyp, NOT NULL, CHECK, UNIQUE) stammen.
- Benutzerdefinierte Integrität: fachliche Geschäftsregeln, die das DBMS nicht von selbst kennt – via CHECK, Trigger oder Anwendungscode durchgesetzt.
bestellungen mit der Spalte kunden_id (Fremdschlüssel auf kunden.id) befindet sich eine Zeile mit kunden_id = 4711 – obwohl es in der Tabelle kunden keinen Datensatz mit dieser ID gibt. Welcher Integritätstyp ist verletzt, und welcher Constraint hätte das verhindert?FOREIGN KEY-Constraint:
ADD CONSTRAINT fk_kunde FOREIGN KEY (kunden_id) REFERENCES kunden(id);
ERROR 1452: foreign key constraint fails ablehnen.
mitarbeiter mit folgenden Anforderungen: eindeutige ID (auto-generiert), Nachname (Pflicht, max 50 Zeichen), E-Mail (eindeutig, Pflicht), Alter (mindestens 18), Abteilung-ID (Verweis auf Tabelle abteilungen).id BIGINT AUTO_INCREMENT PRIMARY KEY,
nachname VARCHAR(50) NOT NULL,
email VARCHAR(120) NOT NULL UNIQUE,
alter INT CHECK (alter >= 18),
abteilung_id BIGINT,
FOREIGN KEY (abteilung_id) REFERENCES abteilungen(id)
);
bestellungen (FK auf kunden) und bestellpositionen (FK auf bestellungen). Welches ON DELETE-Verhalten würden Sie für die zwei Beziehungen wählen und warum?- bestellpositionen → bestellungen: ON DELETE CASCADE. Eine Bestellposition ergibt ohne ihre Bestellung keinen Sinn – wird die Bestellung gelöscht, müssen die Positionen mit. Ohne CASCADE wären verwaiste Positionen die Folge.
- bestellungen → kunden: ON DELETE RESTRICT (oder SET NULL). Bestellungen sind buchhalterisch relevant und sollten nicht stillschweigend mit dem Kunden verschwinden. RESTRICT zwingt die Anwendung, eine bewusste Entscheidung zu treffen (Bestellung archivieren, dem System „Gelöschter Kunde" zuordnen, etc.). Bei vorhandenen Bestellungen kann der Kunde nicht einfach gelöscht werden.
- Mehrere Clients: sobald ein zweiter Client oder ein Migrations-Skript direkt auf die DB schreibt, wird die App-seitige Prüfung umgangen. Die DB ist die letzte Verteidigungslinie.
- Race Conditions: zwischen Prüfung und Insert kann der referenzierte Datensatz gelöscht werden. Ohne DB-Constraint bleiben verwaiste Zeilen.
- Bugs in der Anwendung: ein Logikfehler im Code wirft sofort schlechte Daten in die DB, ohne dass es jemand bemerkt. Mit Constraint kommt sofort ein Fehler.
PRIMARY KEY und einem UNIQUE-Constraint. Welche Gemeinsamkeiten haben sie?- Ein PRIMARY KEY pro Tabelle, beliebig viele UNIQUE-Constraints.
- PRIMARY KEY ist implizit
NOT NULL, UNIQUE erlaubtNULL-Werte (meist sogar mehrere NULLs, je nach DBMS). - PRIMARY KEY ist die zentrale Identität der Zeile – Fremdschlüssel verweisen darauf. UNIQUE ist „nur" eine zusätzliche Eindeutigkeitsregel.
- PRIMARY KEY bestimmt in InnoDB die physische Sortierung (Clustered Index).
3) Aufgaben Teil B – Transaktionen, ACID, Performance
- A – Atomicity (Atomarität): eine Transaktion wird vollständig oder gar nicht ausgeführt – nie halb.
- C – Consistency (Konsistenz): die Datenbank ist vor und nach jeder Transaktion in einem regelkonformen Zustand (alle Constraints eingehalten).
- I – Isolation: parallele Transaktionen sehen einander nicht (oder nur kontrolliert) – jede fühlt sich an als wäre sie allein im System.
- D – Durability (Dauerhaftigkeit): committed Änderungen sind permanent gespeichert und überleben Crashs (per Write-Ahead-Log).
- Das DBMS startet neu und liest das Transaktions-Log (Write-Ahead-Log).
- Es findet eine Transaktion ohne „committed"-Marker.
- Mithilfe der im Log gespeicherten alten Werte führt es einen automatischen
ROLLBACKaus. - Konto A wird auf den ursprünglichen Saldo zurückgesetzt.
menge = 1, beide rechnen 1 - 1 = 0, beide schreiben menge = 0. Tatsächlich wurden zwei Artikel verkauft, aber das System zeigt nur eine Verkaufstransaktion an. Wie heißt diese Anomalie? Welche Isolationsstufe würde sie verhindern?REPEATABLE READ – dort wird beim ersten Lesen einer Zeile in einer Transaktion eine Sperre gehalten (oder per MVCC ein Snapshot fixiert), sodass die zweite Transaktion warten muss oder einen Konflikt-Fehler bekommt.
Alternativ: optimistic locking auf Anwendungsebene mit einer Versionsspalte: UPDATE … WHERE id = ? AND version = ?. Wird die Version inzwischen geändert, schlägt das UPDATE fehl und die App kann retryen.
buchungen einfügt. Bei Fehler soll die ganze Operation zurückgenommen werden.-- 1) Abbuchen
UPDATE konten SET saldo = saldo - 100 WHERE id = 1;
-- 2) Gutschreiben
UPDATE konten SET saldo = saldo + 100 WHERE id = 2;
-- 3) Logeintrag
INSERT INTO buchungen (von_id, nach_id, betrag, zeitpunkt)
VALUES (1, 2, 100, NOW());
-- bei Erfolg:
COMMIT;
-- bei Fehler stattdessen: ROLLBACK;
ROLLBACK aufgerufen, sonst COMMIT.
CHECK-Constraint auf saldo >= 0 erwähnen – damit verhindert das DBMS automatisch negative Stände bei zu wenig Guthaben.- Konsistente Sperrreihenfolge: die beteiligten Konten immer in derselben Reihenfolge sperren – z.B. immer aufsteigend nach ID. Wenn beide Transaktionen Konto 1 vor Konto 2 sperren, kann kein Zyklus entstehen → kein Deadlock.low = LEAST(from_id, to_id);
high = GREATEST(from_id, to_id);
SELECT * FROM konten WHERE id IN (low, high) ORDER BY id FOR UPDATE; - Retry-Pattern in der Anwendung: Deadlock-Errors (SQL-State 40001) fangen und die Transaktion mit Random Backoff bis zu 3-mal wiederholen. Schützt vor verbleibenden seltenen Deadlocks.
SELECT … FOR UPDATE früh beim Lesen statt erst beim Schreiben.
mitarbeiter (1.500 Zeilen) hat die Spalten id, nachname, email, geschlecht, abteilung_id. Welche Spalten würden Sie mit einem Index versehen, welche nicht – und warum?id– automatisch durch PRIMARY KEY.email– wenn UNIQUE: automatisch indexiert. Wenn nicht: trotzdem sinnvoll für Login-Suche.abteilung_id– Foreign Key, oft in WHERE und JOINs verwendet. In MySQL/InnoDB automatisch indexiert.nachname– je nach Abfragen. Wenn oft per Nachname gesucht wird, ja.
geschlecht– niedrige Selektivität (2–4 unterschiedliche Werte). Ein Index würde nichts beschleunigen, weil das DBMS bei 50% Treffern sowieso Full Scan macht.
4) Mini-Quiz: schnelle Zuordnung
Vier kurze Multiple-Choice-Fragen zum Schluss – typisch für die ganzheitliche Aufgabe in Teil 1:
5) Cheatsheet – das musst du auswendig wissen
Kurz und kompakt zur Wiederholung vor der Prüfung:
BEGIN, COMMIT, ROLLBACK, SAVEPOINTCASCADE, RESTRICT, NO ACTION, SET NULL, SET DEFAULT40001, MySQL ERROR 1213Zusammenfassung & Kurs-Abschluss
Dieser Kurs hat dich durch die zwei zentralen Themen der Datenbankqualität geführt: Datenintegrität (welche Regeln gelten, wie das DBMS sie durchsetzt) und Transaktionen (wie Operationen verlässlich zusammenarbeiten, auch bei Crashs und Nebenläufigkeit). Mit den vier Integritätstypen, dem ACID-Akronym, den vier Anomalien plus Isolation Levels, dem Verständnis von Deadlocks und Indizes hast du das gesamte prüfungsrelevante Werkzeug-Set für die Themenbereiche B2b und A4e abgedeckt. Übe die obigen Aufgaben mehrfach – die Muster wiederholen sich in fast jeder IHK-Prüfung. Wer die zwölf Aufgaben hier sicher beantworten kann, ist auf den DB-Teil der Abschlussprüfung gut vorbereitet.
