Einführung in Datenbanken

Ablauf (Planung der zeitlichen Aufteilung)

Hier wird eine ungefähre Übersicht gegeben, wann welcher Stoff behandelt werden soll. Im Laufe des Semesters ist beabsichtigt, die Liste zu aktualisieren, und den tatsächlich behandelten Stoff einzutragen. Selbstverständlich sind alle Angaben unverbindlich.

Tatsächlicher Ablauf:

1. Montag, 07.10.2024:
Kapitel 0: Organisatorisches (Folie 0-1 bis 0-42)
Aufspaltung des Moduls "Datenbanken I". Geplante Inhalte. Bedeutung es relationalen Modells und der Sprache SQL. Motivation: Warum sind Datenbanken wichtig? Warum sind Datenbanken interessant? Organisatorisches: Erreichbarkeit des Dozenten, Vorlesungsaufzeichnung, Übungen, Studienleistung (Hausaufgaben, aktive Mitarbeit, ChatGPT, Quellenangaben), Datenschutz-Hinweise (Forschungsprojekt), Prüfung (Termine, elektronische Klausur, „legaler Spickzettel”, Ausprobieren von SQL-Anfragen, Wichtigkeit der Modulanmeldung). Literatur. In dieser Vorlesung verwendete Software, Übungsmöglichkeit über Web-Schnittstelle.
Kapitel 1: Grundlegende Begriffe (Folie 1-1 bis 1-36)
Aufgabe einer Datenbank, Anfrage, Update, Zustand, Schema. SQL-Beispiel zum Ausprobieren eines DBMS (CREATE TABLE, INSERT, SELECT, DROP TABLE). Begriff Datenmodell, Beispiele für Datenmodelle, NoSQL-Datenmodelle (Graphdatenbanken am Beispiel Neo4J, Dokumentdatenbanken am Beispiel MongoDB, Key-Value-Stores am Beispiel von Redis), DDL, DML, abstrakte Definition von „Anfragesprache” (Äquivalenz von Anfragen, Mächtigkeit von Anfragesprachen), DBMS (Datenbankmanagementsystem).
2. Montag, 14.10.2024:
Kapitel 1: Grundlegende Begriffe (Folie 1-35 bis 1-39)
Vergleich von DBMS mit Webserver, Anwendungsprogramme, Client-Server-Architektur, Dreischichten-Architektur (Three-Tier-Architektur).
Kapitel 2: Datenbank-Managementsysteme (Folie 2-1 bis 2-42)
Persistente Daten, Vergleich Datenbankanwendung - klassisches Programm mit Dateien. (Physische) Datenunabhängigkeit, Beispiel: Nachträgliches Hinzufügen eines Index, Trennung von konzeptuellem Schema und internem Schema. Deklarative Programmier-/Abfrage-Sprachen, Transaktionen, Datensicherheit, Zusammenfassung zu Vorteilen von DBMSen. Bekannte Datenbank(management)systeme (Geschichte, Firmen, Downloads, Marktanteile, Popularität).
3. Montag, 21.10.2024:
Kapitel 3: SQL: Lexikalische Syntax (Folie 3-1 bis 3-51)
Syntax-Formalismen, Syntax-Graphen, Formale Syntax einer kleinen SQL-Teilmenge (eine Tabelle), Lexikalische Syntax, Leerplatz, Kommentare, Zahlkonstanten, Zeichenkettenkonstanten, andere Konstanten (Datumswerte), Bezeichner, reservierte Wörter, Delimited Identifier, Bedeutung der Unterscheidung zwischen '...' und "...".
4. Montag, 28.10.2024:
Kapitel 4: Logische Grundlagen für Datentypen (Folie 4-1 bis 4-27)
Logik: Motivation, Beziehung zu Datenbanken, Alphabet, Signatur, Erweiterung einer Signatur, Interpretation, Datenbanken und Logik.
Kapitel 5: SQL: Datentypen (Folie 5-1 bis 5-64)
Übersicht über Datentypen im SQL-Standard, Hinweis auf Portabilitätsprobleme von Datentyp-Operationen, Zeichenketten: CHAR(n), VARCHAR(n), Prädikate für Zeichenketten (Vergleichsoperatoren, LIKE, SIMILAR TO), blank-padded Vergleichssemantik vs. non-padded Sematik, Collations, Zeichenketten-Funktionen: Konkatenation ||, Länge einer Zeichenkette (CHAR_LENGTH/LENGTH), Umwandlung in Klein- oder Grossbuchstaben (LOWER/UPPER), Teilzeichenkette suchen (POSITION), Teilzeichenkette selektieren über Startposition und Länge (SUBSTRING), Leerzeichen am Anfang oder Ende entfernen (TRIM), unsichtbare Leerzeichen am Ende sichtbar machen, Datentypen in SQL ausprobieren, Zahl-Datentypen: NUMERIC(p), NUMERIC(p,s), INT, REAL, DOUBLE PRECISION, Warnung vor Fließkommazahlen für Geldbeträge, Hinweis zur Division: Ganzzahlige Division bei einigen Systemen für INT, nicht für NUMERIC! Überblick über weitere Datentypen: Lange Zeichenketten, binäre Daten, Datums-/Zeittypen (inklusive Hinweis zu DATE in Oracle).
...

Planung (unverbindlich, wird noch aktualisiert):

5. Montag, 04.11.2024:
Kapitel 6: Das Relationale Modell (Folie 6-1 bis 6-49)
Beispiel-Datenbank (STUDENTEN, AUFGABEN, BEWERTUNGEN), Erläuterung von Schlüsseln und Fremdschlüsseln am Beispiel. Formale Definitionen von "Relationenschema", "Relationales Datenbank-Schema". Schema-Notationen, einfache CREATE TABLE-Anweisung. Wiederholung des kartesischen Produkts, Definition von „Tupe” (für Tabellen-Zeilen). Definition von „Relationaler Datenbank-Zustand”. Konsequenzen der Definition, dass Relationen Mengen von Tupeln sind (keine definierte Reihenfolge, keine Duplikate). Kurze Erläuterung zu Duplikaten in SQL. Nullwerte. Schlüssel: Beispiel/Bedeutung, zusammengesetzte Schlüssel, Diskussion über (Vorname, Nachname) als Schlüssel für Studenten einer Vorlesung (inklusive Identifikation an der Benutzerschnittstelle, Duplikatvermeidung), mehrere Schlüssel für eine Tabelle, Primär-/Alternativschlüssel, künstliche vs. natürliche Schlüssel, Minimalität vom Schlüsseln, Notationen (Kurznotation: Unterstreichen, CREATE TABLE), Fremdschlüssel: Beispiel, Definition, Notationen (Kurznotation: Pfeil, CREATE Table).
Kapitel 7: Logik in SQL, Teil I: AND, OR, NOT und Joins (Folie 7-1 bis 7-8)
Abbildung relationaler Datenbank-Schemata und -Zustände in Logik mit Bereichskalkül, Tupelkalkül (theoretische Variante), Tupelkalkül (SQL-Variante).
6. Montag, 11.11.2024:
Kapitel 7: Logik in SQL, Teil I: AND, OR, NOT und Joins (Folie 7-9 bis 7-87)
Abbildung relationaler Datenbank-Schemata und -Zustände in Logik mit Bereichskalkül, Tupelkalkül (theoretische Variante), Tupelkalkül (SQL-Variante). Logik: Variablendeklarationen, Variablenbelegungen. SQL: FROM-Klausel, Beispiel füber Join zweier Tabellen, naiver Auswertungsalgorithmus mit geschachtelten Schleifen, um alle möglichen Variablenbelegungen durchzugehen. Logik: Terme, Infixnotation und andere Abkürzungen, Operatorbäme. Wert eines Terms. SQL: skalare Ausdrücke, SELECT-Klausel, Atomare Formeln, quantorenfreie Formeln. SQL-Kern (SELECT, FROM, WHERE) mit Begriffen der Logik. Prioritäten von AND und OR, Vergleiche. Wahrheit einer quantorenfreien Formel. Formale Definition der Antwort auf eine Anfrage. Modell einer Formel, Modell einer Formelmenge, konsistente/inkonsistente Formel, Tautologie, Implikation, Logische Äquivalenz. Liste wichtiger logische Äquivalenzen.
7. Montag, 18.11.2024:
Kapitel 8: Praktische Aspekte einfacher SQL-Anfragen (Folie 8-1 bis 8-69)
Verbund-Bedingungen, fehlende Verbund-Bedingungen, Anfrageformulierung, Hinweise für Klausur-/Hausaufgaben, QBE als Hilfe zur Anfrageformulierung, Unnötige Joins, Selbstverbund, Join-Fehler. Bedingungen in der WHERE-Klausel, Vergleich, BETWEEN, LIKE, IN, Typ-Umwandlungen, Duplikate, SELECT DISTINCT, Sortieren der Ausgabe.
(Der Algorithmus „Hinreichende Bedingung für überflüssiges DISTINCT” wurde nicht in der Vorlesung, sondern in der Übung besprochen.)
8. Montag, 25.11.2024:
Kapitel 9: Logik in SQL, Teil II: Quantoren, Unteranfragen (Folie 9-1 bis 9-79)
Einschränkungen bisheriger Anfragen, Monotone und Nichtmonotone Anfragen, Beispiele für Fehler, Formeln mit Quantoren, Wiederholung zur Bedeutung von Logik für SQL, Inkonsistente Formeln, Tautologien, Äquivalenz, Logische Folgerung, Äquivalenzen mit Quantoren, EXISTS-Unteranfragen, NOT EXISTS, korrelierte/unkorrelierte Unteranfragen, syntaktische Details zum Attribut-Zugriff bei Unteranfragen, Verschattung, Anmerkung zur SELECT-Liste bei EXISTS-Unteranfragen, EXISTS ohne NOT, Allaussagen, verschachtelte Unteranfragen, häufige Fehler, IN Unteranfragen, NOT IN, IN vs. EXISTS, Unteranfragen mit ALL/ANY/SOME, Ein-Wert-Unteranfragen (Unteranfragen als Terme).
Kapitel 10: Sichten und CTEs in SQL (Folie 10-1 bis 10-17)
Unteranfragen unter FROM, Sichten, CREATE VIEW, WITH-Klausel („Common Table Expression”, CTE).
9. Montag, 02.12.2024:
Kapitel 11: Nullwerte in SQL (Folie 11-1 bis 11-33)
Verschiedene Bedeutungen/Anwendungen von Nullwerten, Vorteile und Probleme von Nullwerten, Terme mit Nullwerten, Dreiwertige Logik, IS NULL Bedingung in SQL, IN vs. EXISTS unter Berücksichtigung von Nullwerten, COALESCE-Funktion, NULLIF-Funktion, Bedingte Ausdrücke mit CASE.
Kapitel 12: Aggregationsfunktionen in SQL (Folie 12-1 bis 12-26 und 12-49)
Motivation, Aggregationsfunktionen COUNT, SUM, AVG, MAX, MIN, Einfache Aggregationen (über ganzes Anfrage-Ergebnis), Beispiel für inkrementelle Berechnung, Syntaktische Restriktionen, Nullwerte in Aggregationen, Beispiel zu Aggregationsunteranfrage.
Kapitel 12: Aggregationsfunktionen in SQL (Folie 12-27 bis 12-60)
Leere Aggregationen, GROUP BY, HAVING, Syntaktische Restriktionen, Aggregationsunteranfragen, Geschachtelte Aggregationen, Aggregationen über mehrere Mengen, Aggregationen maximieren, mögliche Fehler.
10. Montag, 09.12.2024:
Kapitel 13: Relationale Algebra (Folie 13-1 bis 13-46)
Motivation: Bedeutung der relationalen Algebra, Grundlagen: Algebren, Relationale Algebra und Logik, Selektion, Projektion, Umbenennung von Spalten bei der Projektion, Basis-Operanden der relationalem Algebra.
Kapitel 13: Relationale Algebra (Folie 13-1 bis 13-82)
Wiederholung zur Bedeutung der relationalen Algebra, Übungsprogramme für relationale Algebra, Wiederholung zu Selektion und Projektion, Umbenennung von Spalten bei der Projektion, Basis-Operanden der relationalem Algebra, Kartesisches Produkt, Umbenennungs-Operator, Verbund/Join, Semijoin, Natürlicher Verbund, Algebraische Gesetze, Unentscheidbarkeit der Äquivalenz von Ausdrücken der relationalen Algebra, häufiges Anfragemuster, Mengenoperationen, Vereinigung, äußerer Verbund (Outer Join).
11. Montag, 16.12.2024:
Kapitel 14: Relationale Algebra in SQL (Folie 14-1 bis 14-49)
Von relationaler Algebra zu SQL, Entsprechung von Projektion-Selektion-Join zu SELECT-FROM-WHERE, UNION, Andere Mengenoperationen in SQL: EXCEPT, INTERSECT. Bedingte Ausdrücke, Verbunde in SQL-92, Äußerer Verbund/Outer Join in SQL, Fehlermöglichkeiten beim äußeren Verbund Verbundbedingung mit ON/NATURAL/USING, alte Oracle-Syntax für äußeren Verbund.
Kapitel 15: Einführung in den Datenbank-Entwurf (Folie 15-1 bis 15-27)
Stellung des Datenbank-Entwurfs bei der Programmentwicklung für datenintensive Programme, Modellierung eines Weltausschnitts, Schwierigkeiten beim DB-Entwurf, Entwicklungsphasen beim Datenbank-Entwurf, Konzeptioneller Entwurf, Logischer Entwurf, Physischer Entwurf. Ziel des DB-Entwurfs (Korrektheits-Anforderungen), Integrit"atsbedingungen, Gründe für Integritästbedingungen, Sicherstellung allgemeiner Integritätsbedingungen, CHECK-Constraints, Qualität von DB-Schemata.
Kapitel 16: Einführung in das Entity-Relationship-Modell (Folie 16-1 bis 16-32)
Einführung, Vergleich mit relationalem Modell, "semantisches Datenmodell", Entities, Attribute, Relationships am Beispiel, Barker-Notation, Erklärung der Krähenfuß-Notation am Beispiel, Entities, Attribute, Relationships, Entity-Typen, Relationship-Typen, Notation für Attribute, Notation für Relationships.
12. Montag, 13.01.2025:
Kapitel 16: Einführung in das Entity-Relationship-Modell (Folie 16-1, 16-8, 16-10, 16-19, 16-20 bis 16-83)
Wiederholung zum Entity-Relationship-Modell, Vergleich mit UML Klassendiagrammen, Beziehung zur Logik. ER-Diagramm vs. vollständiges ER-Schema. Warnung vor Fremdschlüssel-Attributen in ER-Diagrammen, Vermeidung von Redundanzen, Semantik von ER-Schemata, Schlüssel, Diskussion von künstlichen Schlüsseln, Kardinalitäten, Klassifikation über maximale Kardinalität: Eins-zu-eins-Beziehungen, eins-zu-viele-Beziehungen, viele-zu-viele-Beziehungen, verpflichtende vs. optionale Teilnahme an einer Beziehung (minimale Kardinalität), alternative Notationen für Kardinalitäten, schwache Entities, Assoziations-Entities.
Kapitel 17: Logischer Entwurf (ER -> Relationen) (Folie 17-1 bis 17-18)
Motivation für mehrphasigen DB-Entwurf (Warum man zuerst ein ER-Diagramm zeichnen sollte, und nicht gleich CREATE TABLE Statements schreiben). Ziel des logischen Entwurfs, Übersetzung von Entity-Typen, Übersetzung von Eins-zu-viele-Beziehungen (1:n). Namen von Fremdschlüssel-Spalten, Diskussion zu Namen und Namens-Konflikten. Zusammengesetzte Fremdschlüssel.
13. Montag, 20.01.2025:
Kapitel 17: Logischer Entwurf (ER -> Relationen) (Folie 17-1 bis 17-51)
Minimale Kardinalität 0 und 1. Viele-zu-viele-Beziehungen (n:m), Problem bei minimaler Kardinalität 1, Alternative Übersetzung für 1:n, Übersetzung schwacher Entities, mehrstufige Hierarchien, Assoziations-Entities, 1:1-Beziehungen, Zusammenfassung zu Einschränkungen der Übersetzung von Kardinalitäten.
Kapitel 18: Einführung in relationale Normalformen (BCNF) (Folie 18-1 bis 18-47)
Einführung, redundante Information, Updateanomalie, Vermischung verschiedener Konzepte in einer Tabelle, Einfügeanomalie, Löschanomalie, Bedeutung von Normalformen, funktionale Abhängigkeiten, triviale FAen, Amstrong Axiome zur Berechnung implizierter FAen, Attribut-Hülle, Test für Implikation mittels Attribut-Hülle, Bestimmung von Schlüsseln aus funktionalen Abhängigkeiten, Definition von Boyce-Codd-Normalform (BCNF).
14. Montag, 27.01.2025:
Kapitel 18: Einführung in relationale Normalformen (BCNF) (Folie 18-1 bis 18-74)
Einführung, redundante Information, Updateanomalie, Vermischung verschiedener Konzepte in einer Tabelle, Einfügeanomalie, Löschanomalie, Bedeutung von Normalformen, funktionale Abhängigkeiten, triviale FAen, Amstrong Axiome zur Berechnung implizierter FAen, Attribut-Hülle, Test für Implikation mittels Attribut-Hülle, Bestimmung von Schlüsseln aus funktionalen Abhängigkeiten, Definition von Boyce-Codd-Normalform (BCNF), Test auf BCNF, Motivation für BCNF: Warum ist das eine gute Definition?, Aufspaltung von Relationen. Synthesealgorithmus für 3NF. Verlustlosigkeit, Dekompositionssatz. Inäquivalenz der Schemata durch Aufspaltung von Relationen.
Kapitel 19: Updates und Transaktionen (Folie 19-1 bis 19-20)
...
Prof. Dr. Stefan Brass
Impressum