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, 14.10.2019:
Kapitel 0: Organisatorisches (Folie 0-1 bis 0-45)
Aufspaltung des Moduls "Datenbanken I". Geplante Inhalte. Bedeutung es relationalen Modells und der Sprache SQL. Motivation: Warum sind Datenbanken wichtig? Warum sind Datenbanken interessant? Prüfung (Termine, voraussichtlich elektronische Klausur, "legaler Spickzettel"). Studienleistung (Hausaufgaben). Bekannte Datenbank(management)systeme (Geschichte, Firmen, Downloads, Marktanteile, Popularität). Übungsmöglichkeiten über Web-Schnittstellen. Hinweise auf Literatur.
Kapitel 1: Einführung (Folie 1-1 bis 1-17)
Aufgabe einer Datenbank, Anfrage, Update, Zustand, Schema. SQL-Beispiel zum Ausprobieren eines DBMS (CREATE TABLE, INSERT, SELECT, DROP TABLE). Datenmodell.
2. Montag, 21.10.2019:
Kapitel 1: Einführung (Folie 1-16 bis 1-65)
Begriff Datenmodell, Beispiele für Datenmodelle, NoSQL-Datenmodelle (Graphdatenbanken am Beispiel Neo4J, Dokumentdatenbanken am Beispiel MongoDB), DDL, DML, Datenbankmanagementsystem (DBMS), Anwendungsprogramme, Client-Server-Architektur, Three-Tier-Architektur, 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 2: Das Relationale Modell (Folie 2-1 bis 2-16, 2-22, 2-31)
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. Ausblick auf Nullwerte, Schlüssel, Fremdschlüssel.
3. Montag, 28.10.2019:
Kapitel 2: Das Relationale Modell (Folie 21-37)
Schlüssel: Beispiel/Bedeutung, zusammengesetzte Schl"ussel, Diskussion über (Vorname, Nachname) als Schlüssel für Studenten einer Vorlesung (inklusive Identifikation an der Benutzerschnittstelle, Duplikatvermeidung), mehrere Schl"ussel für eine Tabelle, Prim&auuml;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 3: SQL: Geschichte und Lexikalische Syntax (Folie 1 bis 43)
Bedeutung von SQL, Geschichte von SQL, Übersicht über SQL-Standards, 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 4: SQL: Datentypen (Folie 1 bis 16)
Logik: Motivation, Beziehung zu Datenbanken, Alphabet, Signatur, Erweiterung einer Signatur.
4. Montag, 04.11.2019:
Kapitel 4: SQL: Datentypen (Folie 10 bis 80)
Signatur, Interpretation, Ü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).
5. Montag, 11.11.2018:
Kapitel 5: Logik in SQL, Teil I: AND, OR, NOT und Joins (Folie 5-1 bis 5-72)
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, Formeln. SQL-Kern (SELECT, FROM, WHERE) mit Begriffen der Logik. Wahrheitswert einer Formel.
6. Montag, 18.11.2018:
Kapitel 5: Logik in SQL, Teil I: AND, OR, NOT und Joins (Folie 5-18, 5-36, 5-40, 5-41, 5-43, 5-51, 5-56, 5-57, 5-62, 5-67 bis 5-86)
Wiederholung zu Variablendeklarationen in FROM-Klausel, Terme in Logik und SQL, SELECT-Klausel, atomare Formeln, quantorenfreie Formeln, WHERE-Klausel, 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.
Kapitel 6: Praxis einfacher SQL-Anfragen (Folie 6-1 bis 6-29)
Verbund-Bedingungen, fehlende Verbund-Bedingungen, Anfrageformulierung, Hinweise für Klausur-/Hausaufgaben, QBE als Hilfe zur Anfrageformulierung, Unnötige Joins, Selbstverbund, Join-Fehler, kurz: DISTINCT, ORDER BY.
7. Montag, 25.11.2019:
Kapitel 6: Praxis einfacher SQL-Anfragen (Folie 6-30 bis 6-67)
Bedingungen in der WHERE-Klausel, Vergleich, BETWEEN, LIKE, IN, Typ-Umwandlungen, Duplikate, SELECT DISTINCT, Algorithmus für hinreichende Bedingung, dass DISTINCT überflüssig ist, Sortieren der Ausgabe,
Kapitel 7: Logik in SQL II (Folie 7-1 bis 7-38)
Einschränkungen bisheriger Anfragen, Monotone und Nichtmonotone Anfragen, Beispiele für Fehler, Formeln mit Quantoren, EXISTS Unteranfragen, NOT EXISTS.
8. Montag, 02.12.2019:
Kapitel 7: Logik in SQL II (Folie 7-15 bis 7-78)
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)
9. Montag, 09.12.2019:
Kapitel 8: Sichten und CTEs in SQL (Folie 8-1 bis 8-13)
Unteranfragen unter FROM, Sichten, CREATE VIEW, WITH-Klausel ("Common Table Expression", CTE), Beispiel für Verwendung von WITH (Nachnamen extrahieren aus Namen mit Initialen), rekursives Beispiel.
Kapitel 9: Nullwerte in SQL (Folie 9-1 bis 9-32)
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.
10. Montag, 16.12.2019:
Kapitel 10: Aggregationsfunktionen in SQL (Folie 10-1 bis 10-59)
Motivation, Aggregationsfunktionen COUNT, SUM, AVG, MAX, MIN, Einfache Aggregationen (über ganzes Anfrage-Ergebnis), Nullwerte in Aggregationen, Leere Aggregationen, GROUP BY, HAVING, Syntaktische Restriktionen, Aggregationsunteranfragen, Geschachtelte Aggregationen, Aggregationen über mehrere Mengen, Aggregationen maximieren, mögliche Fehler.
Anhang F: Eine Feuerwerks-Datenbank
Ausblick auf Datenbank-Entwurf, Basisdaten von Artikeln, Aufbau von Feuerwerksbatterien, Sicherheits-Tipps.
11. Montag, 13.01.2020:
Kapitel 11: Relationale Algebra (Folie 11-1 bis 11-82)
Motivation: Bedeutung der relationalen Algebra, Grundlagen: Algebren, Relationale Algebra und Logik, Selektion, 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, äßerer Verbund (Outer Join).
Kapitel 12: Relationale Algebra in SQL (Folie 12-1 bis 12-13)
Von relationaler Algebra zu SQL, UNION, Andere Mengenoperationen in SQL: EXCEPT, INTERSECT.
12. Montag, 20.01.2020:
Kapitel 12: Relationale Algebra in SQL (Folie 12-5, 12-13, 12-15 bis 12-48)
Wiederholung zur Entsprechung von Projektion-Selektion-Join zu SELECT-FROM-WHERE, Wiederholung zu UNION, 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 13: Einführung in den Datenbank-Entwurf (Folie 13-1 bis 13-25)
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, Qualität von DB-Schemata.
Kapitel 14: Einführung in das Entity-Relationship-Modell (Folie 14-1 bis 14-25)
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.
13. Montag, 27.01.2020:
Kapitel 14: Einführung in das Entity-Relationship-Modell (Folie 14-1, 14-8, 14-19, 14-20 bis 14-83)
Wiederholung zum Entity-Relationship-Modell, Oracle SQL Developer Data Modeler, Warnung vor Fremdschlüssel-Attributen in ER-Diagrammen, Vermeidung von Redundanzen, Diagramme vs. Schemata, 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 15: Logischer Entwurf (ER -> Relationen) (Folie 15-1 bis 15-21)
Motivation für mehrphasigen DB-Entwurf, Ziel des logischen Entwurfs, Übersetzung von Entity-Typen, Übersetzung von Eins-zu-viele-Beziehungen (1:n), Übersetzung von Viele-zu-viele-Beziehungen (n:m), Diskussion zu Namen und Namens-Konflikten.
14. Montag, 03.02.2020:
Kapitel 15: Logischer Entwurf (ER -> Relationen) (Folie 15-8, 15-12 bis 15-47)
Wiederholung, warum man zuerst ein ER-Diagramm zeichnen sollte, und nicht gleich CREATE TABLE Statements schreiben. Typische Klausur-Aufgaben, Wiederholung zur Übersetzung von eins-zu-viele-Beziehungen, minimale Kardinalitä0 und 1, Namen von Fremdschlüssel-Spalten, zusammengesetzte Fremdschlüssel, viele-zu-viele-Beziehungen, 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 16: Einführung in relationale Normalformen (BCNF) (Folie 16-1 bis 16-57)
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.
Prof. Dr. Stefan Brass
Impressum