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, 02.11.2020:
Kapitel 0: Organisatorisches (Folie 0-1 bis 0-48)
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, Prüfung (Termine, voraussichtlich elektronische Klausur, "legaler Spickzettel", Ausprobieren von SQL-Anfragen, Wichtigkeit der Modulanmeldung), Studienleistung (Hausaufgaben, Präsenzaufgaben, aktive Mitarbeit). Literatur. Bekannte Datenbank(management)systeme (Geschichte, Firmen, Downloads, Marktanteile, Popularität). Übungsmöglichkeiten über Web-Schnittstellen.
Kapitel 1: Grundlegende Begriffe (Folie 1-1 bis 1-39)
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", DBMS (Datenbankmanagementsystem), Vergleich von DBMS mit Webserver, Anwendungsprogramme, Client-Server-Architektur, Dreischichten-Architektur (Three-Tier-Architektur).
2. Montag, 09.11.2020:
Kapitel 2: Funktionen von DB-Managementsystemen (Folie 2-1 bis 2-36)
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.
Kapitel 3: Das Relationale Modell (Folie 3-1 bis 3-37)
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 "Tupel" (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).
3. Montag, 16.11.2020:
Kapitel 4: SQL: Geschichte und Standards (Folie 4-1 bis 4-18)
Bedeutung von SQL, Geschichte von SQL, Übersicht über SQL-Standards.
Kapitel 5: SQL: Lexikalische Syntax (Folie 5-1 bis 5-41)
Syntax-Formalismen, Syntax-Graphen, Lexikalische Syntax, Leerplatz, Kommentare, Zahlkonstanten, Zeichenkettenkonstanten, andere Konstanten (Datumswerte), Bezeichner, reservierte Wörter, Delimited Identifier, Bedeutung der Unterscheidung zwischen '...' und "...".
Kapitel 6: Logische Grundlagen für Datentypen (Folie 6-1 bis 6-21)
Logik: Motivation, Beziehung zu Datenbanken, Alphabet, Signatur, Erweiterung einer Signatur. Interpretation.
4. Montag, 23.11.2020:
Kapitel 6: Logische Grundlagen für Datentypen (Folie 6-13, 6-21 bis 6-27)
Interpretation, Datenbanken und Logik.
Kapitel 7: SQL: Datentypen (Folie 7-1 bis 7-60)
Ü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).
Kapitel 8: Logik in SQL, Teil I: AND, OR, NOT und Joins (Folie 8-1 bis 8-8)
Abbildung relationaler Datenbank-Schemata und -Zustände in Logik mit Bereichskalkül, Tupelkalkül (theoretische Variante), Tupelkalkül (SQL-Variante).
5. Montag, 30.11.2020:
Kapitel 8: Logik in SQL, Teil I: AND, OR, NOT und Joins (Folie 8-9 bis 8-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.
6. Montag, 07.12.2020:
Kapitel 9: Praktische Aspekte einfacher SQL-Anfragen (Folie 9-1 bis 9-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.)
7. Montag, 14.12.2020:
Kapitel 10: Logik in SQL, Teil II: Quantoren, Unteranfragen (Folie 10-1 bis 10-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).
8. Montag, 04.01.2021 (Aufzeichnung 21.12.2020):
Kapitel 11: Sichten und CTEs in SQL (Folie 11-1 bis 11-17)
Unteranfragen unter FROM, Sichten, CREATE VIEW, WITH-Klausel ("Common Table Expression", CTE).
Kapitel 12: Nullwerte in SQL (Folie 12-1 bis 12-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 13: Aggregationsfunktionen in SQL (Folie 13-1 bis 13-26 und 13-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.
9. Montag, 11.01.2021:
Kapitel 13: Aggregationsfunktionen in SQL (Folie 13-27 bis 13-60)
Leere Aggregationen, GROUP BY, HAVING, Syntaktische Restriktionen, Aggregationsunteranfragen, Geschachtelte Aggregationen, Aggregationen über mehrere Mengen, Aggregationen maximieren, mögliche Fehler.
Kapitel 14: Relationale Algebra (Folie 14-1 bis 14-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.
10. Montag, 18.01.2021:
Kapitel 14: Relationale Algebra (Folie 14-1 bis 14-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).
Kapitel 15: Relationale Algebra in SQL (Folie 15-1 bis 15-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.
11. Montag, 25.01.2021:
Kapitel 16: Einführung in den Datenbank-Entwurf (Folie 16-1 bis 16-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 17: Einführung in das Entity-Relationship-Modell (Folie 17-1 bis 17-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, 01.02.2021:
Kapitel 17: Einführung in das Entity-Relationship-Modell (Folie 17-1, 17-8, 17-10, 17-19, 17-20 bis 17-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 18: Logischer Entwurf (ER -> Relationen) (Folie 18-1 bis 18-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.
...

Planung (unverbindlich, wird noch aktualisiert):

13. Montag, 08.02.2021:
Kapitel 18: Logischer Entwurf (ER -> Relationen) (Folie 18-1 bis 18-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 19: Einführung in relationale Normalformen (BCNF) (Folie 19-1 bis 19-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, 15.02.2021:
Kapitel 19: Einführung in relationale Normalformen (BCNF) (Folie 19-1 bis 19-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 20: Updates und Transaktionen (Folie 20-1 bis 20-20)
...
Prof. Dr. Stefan Brass
Impressum