MARTIN-LUTHER-UNIVERSITÄT HALLE-WITTENBERG VORLESUNG "DATENBANKEN I"
Institut für Informatik Wintersemester 2017/18
Prof. Dr. Stefan Brass [StudIP: Vorlesung]

 

 

Datenbanken I

Ablauf (Planung der zeitlichen Aufteilung)

Die folgende Liste enthält eine ungefähre Übersicht, wann welcher Stoff behandelt wird. Im Laufe des Semesters ist beabsichtigt, die Liste zu aktualisieren, und den tatsächlich behandelten Stoff einzutragen. Der Planungs-Stand entspricht dem Ablauf in einem früheren Semester, und wird voraussichtlich noch etwas komprimiert, um z.B. am Ende Anwendungsprogrammierung ausführlicher behandeln zu können. Selbstverständlich sind alle Angaben unverbindlich.

Tatsächlicher Ablauf:

1. Mo, 09.10.2017:
Kapitel 0: Informationen zur Vorlesung / Organisatorisches (Folie 0-1 bis 0-33)
Geplante Inhalte, Hausaufgaben, Klausur, Lehrbücher, Software.
Kapitel 1: Einführung (Folie 1-1 bis 1-13)
Aufgabe einer Datenbank, Anfrage, Update, Zustand, Schema.
2. Di, 10.10.2017:
Kapitel 1: Einführung (Folie 1-13 bis 1-51)
Strukturierung von Daten am Beispiel, Datenmodell, 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.
3. Mo, 16.10.2017:
Kapitel 1: Einführung (Folie 1-48 bis 1-87)
Wiederholung zur physischen Datenunabhägigkeit. Deklarative Programmier-/Abfrage-Sprachen, Logische Datenunabhängigkeit, Drei-Schema-Architektur, Transaktionen, Datensicherheit, DBMS-Anbieter. Zusammenfassung zu Vor- und Nachteilen von DBMSen.
Kapitel 2: Das relationale Datenmodell (Folie 2-1 bis 2-14)
Bedeutung des relationalen Modells, Beispiel-Datenbank, Datenwerte, Atomarität von Tabelleneinträgen, Beispiel zu geschachtelten Relationen, erweiterten Datentypen.
4. Di, 17.10.2017:
Kapitel 2: Das relationale Datenmodell (Folie 2-15 bis 2-55)
Relationales DB-Schema, erste CREATE TABLE Anweisung. Tupel, relationaler DB-Zustand, Notationen für Schemata. Erste Einführung in SQL: einfache Anfragen, Anfragen über mehrere Tabellen (Verbund). Nullwerte.
5. Mo, 23.10.2017:
Kapitel 2: Das relationale Datenmodell (Folie 2-53 bis 2-101)
Wiederholung zu SQL-Anfragen. Integritätsbedingungen. Schlüssel (Definition, Minimalität, Primär-/Alternativschlüssel, Notationen, Diskussion über natürliche und künstliche Schlüssel). Fremdschlüssel (Definition, Notationen, Beispiele), Fremdschlüssel und Schlüssel. Fremdschlüssel und Updates: Welche Updates können einen Fremdschlüssel verletzen? ("für alle" Bedingungen durch Einfügungen, "es gibt" durch Löschungen.) Passive vs. aktive Integritätssicherung (ON DELETE CASCADE).
6. Di, 24.10.2017:
Kapitel 3: Mathematische Logik mit Datenbank-Anwendungen (Folie 3-1 bis 3-73)
Einführung, Motivation, Signaturen, Interpretationen. Einbettung von Datenmodellen in Logik (Abbildung von DB-Schema auf Signaturen und DB-Zuständen auf Interpretationen), Tupelkalkü und Bereichskalkül für das relationale Modell als Spezialfälle der Prädikatenlogik. Zwei Varianten des Tupelkalküls: Mit Tupelvariablen nur über Datenbank-Relationen (wie in SQL, braucht UNION) oder mit beliebigen Tupeltypen (offizieller, theoretischer Tupelkalkül). Variablendeklaration, Terme. Atomare Formeln, Formeln, Klammerersparnis-Regeln, Variablendeklarationen, Terme, atomare Formeln, Formeln.
7. Mo, 30.10.2017:
Kapitel 3: Mathematische Logik mit Datenbank-Anwendungen (Folie 3-72 bis 3-105)
Wiederholung zur Syntax von Formeln, Vergleich mit SQL (FROM: Variablendeklaration, WHERE: Formel, SELECT: Terme). Geschlossene Formeln, freie Variablen. Variablenbelegung, Wert eines Terms, Wahrheitswert einer Formel, Modell, konsistent/inkonsistent, Tautologie. Formeln in Datenbanken, Integritätsbedingungen. Muster für Quantoren, die auf eine Teilmenge der Werte beschränkt sind: "für alle" mit Implikation ->, "es gibt" mit Konjunktion ^. Anfragen im Bereichskalkül, QBE.
8. Mo, 06.11.2017:
Kapitel 3: Mathematische Logik mit Datenbank-Anwendungen (Folie 3-105 bis 3-133)
Anfragen im Bereichskalkül, QBE. Anfragen im Tupelkalkül, Vergleich mit SQL. Wie kommt man von einer natürlichsprachlichen Aufgabe zu einer formalen Anfrage in BK, TK oder SQL? Bereichsunabhängigkeit, Bereichsbeschränkung.
9. Di, 07.11.2017:
Kapitel 3: Mathematische Logik mit Datenbank-Anwendungen (Folie 3-136 bis 3-176)
Anfragen im Bereichskalkül, QBE. Anfragen im Tupelkalkül, Vergleich mit SQL. Wie kommt man von einer natürlichsprachlichen Aufgabe zu einer formalen Anfrage in BK, TK oder SQL? Bereichsunabhängigkeit, Bereichsbeschränkung, Implikationen und Äquivalenzen, Bedeutung der Äquivalenzen für Datenbanken. Nullwerte, dreiwertige Logik.
Kapitel 4: Relationale Algebra (Folie 4-1 bis 4-22)
Einführung, Bedeutung der relationalen Algebra. Erstes Beispiel. Demonstration des Programms radb [https://users.cs.duke.edu/~junyang/radb/]. Selektion.
10. Mo, 13.11.2017:
Kapitel 4: Relationale Algebra (Folie 4-14 bis 4-57)
Wiederholung zur Bedeutung der relationalen Algebra. Selektion, erweiterte Selektion. Projektion, Projektion mit Umbennung und Datentyp-Operationen. Schachteln von Operationen, Basis-Operanden (Relationennamen, konstante Relationen), kartesisches Produkt, Umbenennung von Spalten, Basisoperationen vs. abgeleitete Operationen, Verbund, natürlicher Verbund.
11. Di, 14.11.2017:
Kapitel 4: Relationale Algebra (Folie 4-57 bis 4-87)
Verbund, natürlicher Verbund, Äquivalenz von Anfragen, algebraische Gesetze, Anfragemuster: Verbund-Selektion-Projektion, Selbstverbund, Mengenoperationen (Vereinigung, Mengendifferenz, Schnitt), Monotone und nichtmonotone Anfragen, Notwendigkeit der Differenz, Anti-Join. Exkurs zu nichtmonotoner Logik, Beweistheoretische Sicht vs. modelltheoretische Sicht zur Formalisierung (und Verallgemeinerung) relationaler Datenbanken.
12. Mo, 20.11.2017:
Kapitel 4: Relationale Algebra (Folie 4-87 bis 4-118)
Beispiel: höchste Punktzahl für HA 1, Beispiel: Wer hat alle Aufgaben gelöst?, Vereinigung vs. Verbund, Äußerer Verbund (Outer Join), Zusammenfassung/Präzisierung: Definition von Syntax und Semantik der relationalen Algebra, Grenzen der relationalen Algebra, streng relational vollständige Anfragesprachen.
13. Di, 21.11.2017:
Fällt aus wegen IT2-Tag (wird ggf. nachgeholt). [Flyer] [Anmeldung (kostenlos)]
14. Mo, 27.11.2017:
Kapitel 5: SQL I (Folie 5-1 bis 5-58)
Bedeutung von SQL, von Relationenalgebra zu SQL, von Tupelkalkül zu SQL, Geschichtliches zu SQL, SQL-Standards. Syntaxgraphen, SQL-Dialekte in verschiedenen Datenbanksystemen Lexikalische Syntax (Leerplatz, Kommentare, Zahlkonstanten, Zeichenkettenkonstanten, Bezeichner, Reservierte Wörter, Delimited Identifier, ' vs. "), Deklaration von Tupelvariablen in der FROM-Klausel, Verbunde/Joins, Naiver Auswertungsalgorithmus mit geschachtelten Schleifen.
15. Di, 28.11.2017:
Kapitel 5: SQL I (Folie 5-59 bis 5-129)
Konsequenzen von fehlenden Join-Bedingungen. Anfrageformulierung (von natürlicher Sprache zu SQL), Unnötige Verbunde, Selbstverbund, Beispiele für Fehler, inkonsistente Bedingungen. FROM-Syntax, Terme (Skalare Ausdrücke), Optionalität von Tupelvariablen in Attribut-Referenzen, Datentyp-Operationen, Bedingungen (WHERE-Klausel), Bindungsstärke/Prioritäten von AND, OR, NOT, Vergleiche, Vergleiche von Zeichenketten. BETWEEN, LIKE, IN (mit explizit aufgezählter Menge von Werten), dreiwertige Logik, Bedingungen mit Nullwerten, IS NULL, Überraschungen durch dreiwertige Logik, SELECT, *, DISTINCT.
Kapitel 6: SQL II (Folie 6-1 bis 6-13)
Wiederholung zu nichtmonotonem Verhalten von Anfragen, NOT IN mit Unteranfragen. Verwendung von IN statt normalen Join zur Eliminierung bestimmter Duplikate.
16. Mo, 04.12.2017:
Kapitel 5: SQL I (Folie 5-126 bis 5-138)
SELECT, *, DISTINCT. Algorithmus (hinreichende Bedingung) für "Wird eine gegebene Anfrage Duplikate liefern?", Diskussion über manchmal erwünschte Duplikate und "Schwache Schlüssel". Umbenennung von Ergebnisspalten, Wiederholung/Zusammenfassung: SELECT-Syntax.
Kapitel 6: SQL II (Folie 6-1 bis 6-38)
Wiederholung zu nichtmonotonem Verhalten von Anfragen, NOT IN mit Unteranfragen, Diskussion zu DISTINCT in Unteranfragen, Verwendung von IN statt normalen Join zur Eliminierung bestimmter Duplikate, NOT EXISTS, korrelierte vs. nicht korrelierte Unteranfragen, Gütigkeitsbereiche von Variablen.
17. Di, 05.12.2017:
Kapitel 6: SQL II (Folie 6-38 bis 6-80)
Gütigkeitsbereiche von Variablen, Verfeinerte Regel zur Optionalität von Tupelvariablen in Attributreferenzen, Diskussion zur SELECT-Klausel in EXISTS-Unteranfragen. Allaussagen mit NOT EXISTS, Häufige Fehler mit Unteranfragen, IN vs. EXISTS (Verhalten bei Nullwerten), Unteranfragen mit ALL/ANY/SOME, Unteranfragen als Terme, Unteranfragen unter FROM. Aggregationsfunktionen, Erste Beispiele für einfache Aggregationen in SQL. Aggregationsfunktionen in SQL, einfache Aggregationen (über das ganze Anfrageergebnis), syntaktische Restritionen bei einfachen Aggregationen, Nullwerte und Aggregationsfunktionen.
18. Mo, 11.12.2017:
Kapitel 6: SQL II (Folie 6-81 bis 6-115)
Leere Aggregationen. GROUP BY, HAVING, Aggregationsunteranfragen, geschachtelte Aggregationen. Aggregation über mehrere Mengen in einer Anfrage, Maximierung von Aggregationen, Diskussion möglicher Fehler bei Aggregationsanfragen. UNION, UNION ALL.
19. Di, 12.12.2017:
Kapitel 6: SQL II (Folie 6-115 bis 6-166)
UNION, UNION ALL, andere Mengenoperationen, bedingte Ausdrücke. ORDER BY, SQL-92 Verbundsyntax, Outer Join, Diskussion möglicher Fehler beim Outer Join, Syntax der FROM-Klausel mit Joins.
20. Mo, 18.12.2017:
Kapitel 7: Data Warehouses und neuere SQL-Konstrukte (Folie 7-1 bis 7-83)
Einführung in Data Warehouses, Charakteristika von OLAP-Datenbanken vs. OLTP-Datenbanken, Multidimensionale Daten: "Data Cube". Stern-Schema (Fakten-Tabelle, Dimensions-Tabellen). Fortgeschrittene Gruppierung (ROLLUP, CUBE, GROUPING SETS), Top-N Anfragen, Window Functions/Analytic Functions (OVER, RANK), Implizite und Explizite Fenster im OVER-Konstrukt, mögliche Auswertung.
Kapitel 8: Einführung in das Entity-Relationship-Modell (Folie 8-1 bis 8-8)
Zweck des Datenbankentwurfes, Programme vs. Daten, Phasen des Datenbankentwurfes, Einordnung des ER-Modells, Vergleich mit UML Klassendiagrammen.
21. Di, 19.12.2017:
Kapitel 8: Einführung in das Entity-Relationship-Modell (Folie 8-9 bis 8-60)
Integritätsbedingungen, Grundlegende ER-Elemente (Entities, Attribute, Relationships), Graphische Syntax (Barker-Notation), Semantik, Integritätsbedingungen, Schlüssel, Diskussion über künstliche Schlüssel vs. natürliche Schlüssel.
Diskussion über Fragen des Datenbank-Entwurfs am Beispiel einer Feuerwerksartikel-Datenbank.
22. Mo, 08.01.2018:
Kapitel 8: Einführung in das Entity-Relationship-Modell (Folie 8-61 bis 8-94)
Kartinalitäten, typische Fälle: Eins-zu-viele/Viele-zu-viele/eins-zu-eins Beziehungen, verpflichtende vs. optionale Teilnahme an Relationships. Alternative ER-Notationen (insbesondere für Kardinalitäten). Schwache Entity-Typen.
23. Di, 09.01.2018:
Kapitel 8: Einführung in das Entity-Relationship-Modell (Folie 8-96 bis 8-112)
Association-Entity-Typen, Umwandlung von Relationships in Entity-Typen, Qualität von ER-Schemata.
Kapitel 9: Einführung in den logischen Entwurf (Folie 9-1 bis 9-36)
Gründe für das mehrstufige Vorgehen beim DB-Entwurf, Ziel des logischen Entwurfs, Übersetzung von ER-Schemata in das relationale Modell (Entity-Typen, 1:n Beziehungen, n:m Beziehungen, schwache Entity-Typen, Umgang mit Namenskonflikten, Umbenennung von Spalten und Relationen), Grenzen der Übersetzung, Methoden der Integritäts-Überwachung.
24. Mo, 15.01.2018:
Kapitel 9: Einführung in den logischen Entwurf (Folie 9-37 bis 9-48)
1:1 Beziehungen. Grenzen der Übersetzung, Methoden zur Überwachung von allgemeinen Integritätsbedingungen. Letzte Prüfungen des relationalen Schemas, Warnungen vor möglichen Problemen von automatischen Transformationswerkzeugen.
Kapitel 10: Tabellendefinitionen in SQL (Folie 10-1 bis 10-76)
Klassische SQL-Datentypen (u.a. CHAR, VARCHAR, NUMERIC, INT, REAL), Überblick zu Datentyp-Funktionen, Überblick zu weiteren Datentypen (u.a. CLOB, BLOB, DATE), CREATE TABLE Syntax (u.a. Unterschied Spaltenconstraints zu Tabellenconstraints). Grundidee effizienter Integritätsüberwachung, Einschränkungen bei CHECK-Constraints, Constraint-Namen (Gründe dafür), Möglichkeiten zur aktiven Integritätssicherung bei Fremdschlüsseln, Defaultwerte für Spalten, Hinweis auf systemabhängige Möglichkeiten zur Generierung eindeutiger Nummern (IDs), CREATE SCHEMA, DROP TABLE, Hinweis auf ALTER TABLE.
25. Di, 16.01.2018:
Kapitel 10: Tabellendefinitionen in SQL (Folie 10-77 bis 10-149)
CREATE TABLE Syntax (u.a. Unterschied Spaltenconstraints zu Tabellenconstraints). Grundidee effizienter Integritätsüberwachung, Einschränkungen bei CHECK-Constraints, Constraint-Namen (Gründe dafür), Möglichkeiten zur aktiven Integritätssicherung bei Fremdschlüsseln, Defaultwerte für Spalten, Hinweis auf systemabhängige Möglichkeiten zur Generierung eindeutiger Nummern (IDs), CREATE SCHEMA, DROP TABLE, Hinweis auf ALTER TABLE.
Kapitel 11: Einführung in relationale Normalformen (Folie 11-1 bis 11-32)
Motivation, Beispiel, Redundanz, Update-Anomalie, Einfügeanomalie, Löschanomalie, Funktionale Abhängigkeiten (FAen), FAen und Schlüssel, Triviale FAen, Implikation von FAen, Armstrong Axiome, Attribut-Hülle, Entscheidung der Implikation mittels Attribut-Hülle. Ausblick: Definition von BCNF.
26. Mo, 22.01.2018:
Kapitel 11: Einführung in relationale Normalformen (Folie 11-33 bis 11-57)
Ausführliche Wiederholung zu funktionalen Abhängigkeiten und zu Redundanzen und Anomalien. Bestimmung von Schlüsseln aus FAen, Motivation für BCNF (Boyce-Codd-Normalform), Definition von BCNF, Prüfung auf BCNF. Dritte Normalform (3NF). Aufspaltung von Relationen.
27. Di, 23.01.2018:
Kapitel 11: Einführung in relationale Normalformen (Folie 11-57 bis 11-73)
Aufspaltung von Relationen, Synthesealgorithmus für 3NF, Ausführliche Diskussion zu 3NF vs. BCNF, Beispiel für Relation in 3NF und nicht in BCNF (mündlich), Verlustlosigkeit, Dekompositionssatz, Diskussion zur Schema-Inäquivalenz bei Aufspaltungen.
Kapitel 12: Updates in SQL / Mehrbenutzerbetrieb (Folie 12-1 bis 12-37)
INSERT, UPDATE, DELETE, COMMIT, ROLLBACK, autocommit, mündlicher Bericht über Undo-Möglichkeiten in SQL und in Oracle, TRUNCATE (kurz), MERGE (kurz). ACID-Merkregel für Transaktionen: Atomarität, Dauerhaftigkeit, Isolation, Konsistenz (Consistency). Typische Beispiele für Transaktionen. Diskussion eines Stromausfalls, während ein COMMIT läuft. Illusion exklusiven Zugriffs auf ganze DB: "Ein-Terminal-Betrieb", Gründe für verschachtelte/parallele Abarbeitung von Transaktionen.
Kapitel 12: Updates in SQL / Mehrbenutzerbetrieb (Folie 12-111 bis 12-127)
Theoretisches Modell für Transaktionen als Folge von read- und write-Anweisungen, Schedules, semantische Serialisierbarkeit, Konflikt-Serialisierbarkeit, Test mittels Konfliktgraph.
28. Mo, 29.01.2018:
Kapitel 12: Updates in SQL / Mehrbenutzerbetrieb (Folie 12-38 bis 12-84, 12-94, 12-109 bis 12-110)
Zielkonflikt: Isolation vs. Leistung, Sperren (X-Locks, S-Locks), Deadlock. Dirty Read Problem, Lösung mit Sperren und mit Multi-Version-Concurrency-Control, Lost Update Problem, FOR UPDATE, Diskussion zu zusätzlichem Sperrmodus "Update". Nonrepeatable Read Problem, Inconsistent Analysis Problem, Phantom Problem, LOCK TABLE, Isolationsstufen in SQL, Sperren auf verschiedenen Ebenen: Intent-Sperren, Vergröberung von Sperren ("Lock Escalation").
29. Di, 30.01.2018:
Kapitel 13: Datenschutz: Zugriffsrechte in SQL (Folie 13-1 bis 13-71)
Motivation für DB-Sicherheit, Anforderungen, Benutzer-Authentifikation, Angriffs-Szenarien, Subjekt-Verb-Objekt-Modell für Zugriffsrechte in SQL, Einschränkungen/Probleme und Lösungen, Verkapselung von Objekten (Tabellen) durch Sichten und serverseitige Prozeduren (stored procedures). Schutz der Datenbank-Dateien, Hinweis auf Mitbestimmung des Betriebsrats beim Auditing. Discretionary Access Control vs. Mandatory Access Control. (Hinweis auf das deutsche Datenschutzrecht.) GRANT-Kommando in SQL, Zugriff auf Tabellen anderer Nutzer in Oracle, TO PUBLIC, WITH GRANT OPTION, Rechte des Besitzers einer Tabelle, REVOKE.
Kapitel 14: Sichten (Views, Virtuelle Tabellen) (Folie 14-1 bis 14-38)
Motivation, Konzept, Übersetzung von Anfragen an Sichten, Vergleich mit Tabelle mit Anfrageergebnis, Materialisierte Sichten, Rekursive Sichten, Anwendungen von Sichten, "View Update Problem", Gründe/Anwendungen für Updates auf Sichten, Übersetzung von Updates von Sichten auf Basistabellen, Beispiele für unmögliche und mehrdeutige Übersetzungen, Updatebare Sichten nach dem SQL-Standard. Bedeutung von "WITH CHECK OPTION" in Sicht-Definitionen.

 


Stefan Brass (brass@informatik.uni-halle.de), 03. Februar 2018

Original URL: http://www.informatik.uni-halle.de/~brass/db17/ablauf.html   [XHTML 1.0 Checked]   [CSS Checked]   [Links Geprüft]   [Impressum]