Database Research Group

WSI – Database Systems Research Group

Datenbanksysteme I



Im Forum zu DB I klären wir alle organisatorischen und inhaltlichen Fragen, die sich im Laufe des Semesters auftun werden. Bitte dort regelmäßig vorbei schauen und keine Scheu zu fragen.

Vorlesung

Die Vorlesung Datenbanksysteme I ist die klassische Einführung in das spannende Gebiet der Datenbanksysteme. Zentrales Thema sind die Relationalen Datenbanksysteme, in denen Daten in tabellarischer Form modelliert, gespeichert und angefragt werden. Dieser strikt tabellarische Blick auf Daten ist elegant, intuitiv aber dennoch formal und durch Datenbanksysteme effizient implementierbar, wirft aber auch interessante Fragen auf, denen wir uns in dieser Vorlesung widmen werden:

  • [ Datenbankbegriff ] Genau welche Services kann ein Datenbanksystem eigentlich bieten?

  • [ Datenmodellierung, ER-Modelle ] Wie bringt man Daten sinnvoll in tabellarische Form, auch wenn Daten zunächst in Form von Objekten, Bäumen, etc. vorliegen?

  • [ Relationales Modell, Normalformen ] Welche Charakteristika von Tabellen können wir ausnutzen, um Daten effizient und redundanzfrei speichern und wieder extrahieren zu können?

  • [ Relationale Algebra, SQL ] Welche Sprachen eignen sich für den Zugriff auf Massen von Tabellendaten?

Sowohl Vorlesung als auch Übung werden von Beispielen und Aufgaben begleitet, die wir mittels des relationalen Datenbanksystems PostgreSQL realisieren werden. PostgreSQL (in Version 9.x oder 10) ist für viele Plattformen (u.a. MS Windows, Linux, macOS) frei verfügbar.

Mit IBM Db2 Express-C und MySQL stehen weitere relationale Datenbanksysteme frei zur Verfügung.

Klausur und Benotung

Die 90-minütige Klausur zu dieser Vorlesung wird am Montag, den 5. Februar 2018, von 10:00–12:00 Uhr stattfinden. Details dazu geben wir im Laufe des Semesters bekannt.

An der Klausur dürfen alle Studierenden teilnehmen, die im Übungsbetrieb dieser Vorlesung mindestens 2/3 der Punkte erreicht haben. Für darüber hinaus erzielte Punkte gewähren wir einen Punktebonus in der Klausur.

Nur für Studierende der Bioinformatik: In dieser Vorlesung können ausnahmsweise auch nur 6 (anstatt regulär 9) ECTS erworben werden. Diese Studierenden steigen dann nach Weihnachten aus dem Vorlesungsbetrieb aus und schreiben am 5. Februar 2018 eine entsprechend angepasste Klausur.

Literatur

  • Ramakrishnan, Gehrke: Database Management Systems

    (3rd International Edition)

    McGraw-Hill, 2003

    ISBN 0-07-246563-8

    Part I dieses Buch deckt die Inhalte zu relationalen Datenbanksystemen gut ab. Part II widmet sich den Inhalten der Vorlesungen Datenbanksysteme II.

  • Kemper, Eickler: Datenbanksysteme

    (10. Auflage)

    De Gruyter Studium, 2015

    ISBN 3-11-044375-9

    Deutsches Standardlehrbuch, das auch Inhalte der Vorlesung Datenbanksysteme II bespricht. Eine hervorragende Quelle für weiterführende Referenzen.

PostgreSQL, Python und JSONiq

  • Das relationale Datenbanksystem PostgreSQL ist das Hauptwerkzeug in dieser Vorlesung und auch in den Übungen. Effizient, unkompliziert, standardkonform, erweiterbar und generally awesome. Hinweise zum Download und zur Installation von PostgreSQL. (Für User von Apples macOS bietet Postgres.app eine Installation innerhalb von Sekunden.) [ PostgreSQL Version 9.6 oder 10 ]

  • Gelegentlich werden wir in Vorlesung, Übung und Übungsblättern die Programmiersprache Python einsetzen, um einfache Skripte zur Verarbeitung von Tabellendaten zu entwerfen oder die Funktionsweise von Datenbanksystemen zu illustrieren. Frei verfügbar für alle gängigen Sytsteme und oft bereits vorinstalliert. [ Python Version 2.7 ]

  • Zu Beginn der Vorlesung werden wir JSON als Datenmodell und seine Sprache JSONiq thematisieren. Eine Implementation von JSONiq zum freien Download findet sich auf zorba.io.


Slides
NrChapterDownload
1Welcomepdf
2Data Models and Languagespdf
3Typed Data, Declarativity, Data Independence, Persistencepdf
Additional material (code, data)
NrFileDownload
1GenBank-Eintrag für Bakers' Yeast

Datenmodell Text

txt
2LEGO Set 5610

Datenmodell Text

txt
3Gesamtgewicht des LEGO Set 5610

Shell-Skript, basierend auf sed und awk (Datenmodell Text).

Usage (UNIX-Shell): weight-of-set5610.sh < set5610-1.txt

sh
4LEGO Set 5610

Datenmodell JSON

json
5USGS Earthquake Data

Datenmodell JSON

json
6Gesamtgewicht des LEGO Set 5610

(JSONiq-Query)

Usage (UNIX-Shell): zorba -r -i -f -q weight-of-set5610.jq

jq
7Stärke des schwersten Erdbebens auf der Nordhalbkugel

(JSONiq-Query)

Usage (UNIX-Shell): zorba -r -i -f -q worst-northern-quake-mag.jq

jq
8Stärke und Ort des schwersten Erdbebens auf der Nordhalbkugel

(JSONiq-Query)

File enthält drei Varianten der Query (zwei Varianten sind derzeit via (: ... :) auskommentiert).

Usage (UNIX-Shell): zorba -r -i -f -q worst-northern-quake-mag-place.jq

jq
9USGS Earthquake Data

Datenmodell Tabular (CSV)

csv
10Python-Modul "DB1" (Python 2.7)

Einfache Query-Library (PyQL und relationale Algebra) für Python 2.7. Einbindung in Python-Code via

from DB1 import Table

py
11Python-Modul "DB1v3" (Python 3)

Einfache Query-Library (PyQL und relationale Algebra) für Python 3. Einbindung in Python-Code via

from DB1v3 import Table

py
12Stärke und Ort des schwersten Erdbebens auf der Nordhalbkugel

(PyQL-Query, liest CSV-File earthquakes.csv)

Usage (UNIX-Shell): python worst-northern-quake-mag-place.py

py