Datenbank Praxis - Cheatsheet
SQL-Abfragen: Joins und Sub-Abfragen
Definition:
Verknüpfung von Tabellen (Joins) und Einsatz von Unterabfragen zur Erstellung komplexer SQL-Abfragen.
Details:
- Joins: Kombinieren Daten aus mehreren Tabellen basierend auf einer verwandten Spalte.
- INNER JOIN: Gibt nur übereinstimmende Datensätze zurück.
- LEFT JOIN: Gibt alle Datensätze aus der linken Tabelle und die übereinstimmenden aus der rechten zurück; fehlende Werte als NULL.
- RIGHT JOIN: Umgekehrt zu LEFT JOIN.
- FULL JOIN: Gibt alle Datensätze zurück, wenn es eine Übereinstimmung in einer der beiden Tabellen gibt; fehlende Werte als NULL.
- Sub-Abfragen: Eine Abfrage, die in einer anderen Abfrage (Verschachtelung) enthalten ist.
- Scalar Subqueries: Rückgabe eines einzelnen Werts.
- Correlated Subqueries: Die innere Abfrage bezieht sich auf eine Spalte der äußeren Abfrage.
- Non-correlated Subqueries: Unabhängige Unterabfrage, die nur einmal ausgeführt wird.
Datenbankobjekte erstellen und verwalten
Definition:
Erstellung und Verwaltung von Datenbankobjekten wie Tabellen, Views, Indizes, Prozeduren und Triggern.
Details:
- Tabellen (\texttt{CREATE TABLE}): Struktur definieren, z.B. Spaltennamen, Datentypen
- Views (\texttt{CREATE VIEW}): Virtuelle Tabellen basierend auf SQL-Abfragen
- Indizes (\texttt{CREATE INDEX}): Verbesserung der Abfragegeschwindigkeit
- Prozeduren (\texttt{CREATE PROCEDURE}): Wiederverwendbare Codeblöcke für bestimmte Aktionen
- Trigger (\texttt{CREATE TRIGGER}): Automatische Ausführung von Code bei bestimmten Ereignissen
- Zugriffsrechte (\texttt{GRANT}, \texttt{REVOKE}): Benutzerrechte verwalten
ER-Diagramme und relationales Datenbankmodell
Definition:
Visuelle Darstellung von Datenbankstrukturen und deren Beziehungen; Basis für das relationale Schema von Datenbanken.
Details:
- Entitäten (Rechtecke) und Beziehungen (Rauten)
- Attribute (Ellipsen) und Primärschlüssel (unterstrichen)
- Kardinalität: 1:1, 1:N, N:M
- Relationales Modell: Tabellen mit Zeilen (Tupeln) und Spalten (Attributen)
- Primärschlüssel \textit{PK}, Fremdschlüssel \textit{FK}
Schema Design und Constraints
Definition:
Schema-Design umfasst die Strukturierung einer Datenbank, um Daten effizient zu verwalten; Constraints setzen Schranken für erlaubte Werte und Beziehungen in der Datenbank.
Details:
- Normalisierung: Zerlegung von Tabellen, um Redundanz zu vermeiden. Formen: 1NF, 2NF, 3NF, BCNF.
- Primärschlüssel (\texttt{PRIMARY KEY}): Eindeutige Identifikation einer Tabellenzeile.
- Fremdschlüssel (\texttt{FOREIGN KEY}): Sicherstellung von referenzieller Integrität zwischen Tabellen.
- Einzigartigkeit (\texttt{UNIQUE}): Keine doppelten Werte in einer Spalte erlaubt.
- Nicht-Null (\texttt{NOT NULL}): Keine Nullwerte in einer Spalte erlaubt.
- Standardwerte (\texttt{DEFAULT}): Vorgabewerte für Spalten, falls kein Wert eingefügt wird.
ACID-Eigenschaften und Transaktionsmanagement
Definition:
ACID-Eigenschaften: Atomarität, Konsistenz, Isolation, Dauerhaftigkeit. Transaktionsmanagement: Verwaltung und Überwachung von Transaktionen in einer Datenbank
Details:
- Atomarität (Atomicity): Alle Operationen einer Transaktion werden vollständig ausgeführt oder gar nicht
- Konsistenz (Consistency): Der Systemzustand bleibt konsistent nach Transaktionsabschluss
- Isolation (Isolation): Transaktionen beeinflussen sich gegenseitig nicht
- Dauerhaftigkeit (Durability): Nach Abschluss der Transaktion bleiben die Änderungen dauerhaft gespeichert
- Transaktionsverwaltung: Überwachung durch Commit und Rollback
- Protokollierung: Wichtiger Teil als Schutz vor Systemausfällen (Logging, Journaling)
Isolationsstufen und Locking-Mechanismen
Definition:
Isolationsstufen bestimmen, wie Transaktionen voneinander abgegrenzt werden und Locking-Mechanismen verhindern, dass mehrere Transaktionen gleichzeitig auf die gleichen Daten zugreifen.
Details:
- Isolationsstufen: Read Uncommitted, Read Committed, Repeatable Read, Serializable
- Read Uncommitted: keine Sperren, dirty reads möglich
- Read Committed: Sperren bei Lesezugriff, keine dirty reads
- Repeatable Read: Sperren für die Dauer der Transaktion, keine non-repeatable reads
- Serializable: höchsten Isolation, vollständig serialisierbare Transaktionen
- Locking-Arten: Shared Lock (S), Exclusive Lock (X)
- Shared Lock: erlaubt anderen Transaktionen ebenfalls Lesezugriff
- Exclusive Lock: blockiert alle anderen Zugriffe
- Deadlocks: gegenseitiges Blockieren von Transaktionen durch unaufgelöste Sperren
- Deadlock-Vermeidung: Wait-Die- oder Wound-Wait-Schema
Indexierung und Abfrageoptimierung
Definition:
Indexierung beschleunigt den Datenzugriff, Abfrageoptimierung verbessert die Effizienz von Datenbankanfragen.
Details:
- Indexierungstypen: B-Bäume, Hash-Indizes
- Abfrageoptimierer wählt besten Ausführungsplan für SQL-Queries
- Kostenbasierte Optimierung: Bewertet Ausführungspläne nach I/O, CPU
- Heuristische Optimierung: Regelbasierte Technik
- Wichtige SQL-Befehle: EXPLAIN, ANALYZE
- Normalisierung vs. Denormalisierung: Balance zwischen Speicherplatz und Geschwindigkeit finden
Datenbankperformance: Überwachung und Diagnosetools
Definition:
Überwachung und Diagnose von Datenbankleistung zur Identifizierung und Lösung von Performance-Problemen
Details:
- Monitoring-Tools: Erfassen und Protokollieren von Leistungsmetriken (z.B. CPU-Auslastung, Speicherverbrauch, I/O-Operationen)
- Diagnosetools: Analysieren von Abfrageausführungsplänen und Ermitteln von Engpässen
- Indikatoren: Latenzzeiten, Durchsatz, Sperrkonflikte
- Verwendung von SQL-Tracing, Profiler und Performance-Schema
- Proaktive und reaktive Ansätze zur Leistungsoptimierung