Dr. Julian Timpner

FDIS

The code is now available on GitHub!

This project description is only available in German so far. For further information in English please leave a comment with your request or check out GitHub.

Im Rahmen dieser Arbeit [1] wurde ein Informationssystem für funktionale Abhängigkeiten (engl. functional dependency information system, kurz FDIS) in PostgreSQL-Datenbanken entwickelt, welches die Visualisierung und Manipulation funktionaler Abhängigkeiten, sowie eine automatische Normalisierung relationaler Datenbankschemata ermöglicht. Dazu wurde zunächst eine Einführung in die relationale Entwurfstheorie gegeben (s. Kapitel 3) und Lösungsstrategien für die wesentlichen Problemstellungen entwickelt (s. Kapitel 4.3). Daraufhin erfolgte eine Beschreibung der resultierenden Softwarearchitektur (Kapitel 5) und der Entwurf einer grafischen Benutzeroberfläche. Eines der Hauptanliegen während der Entwicklung war es, die GUI möglichst benutzerfreundlich und robust zu gestalten, um das Informationssystem auch in der Praxis einsetzbar zu machen.

Dabei eignet es sich insbesondere für den Einsatz in der Lehre, um Studierenden die wesentlichen Konzepte der Datenbanktheorie interaktiv und anschaulich zu vermitteln. Außerdem wird Lehrenden ein Werkzeug zur Verfügung gestellt, mit dem auf einfache Weise Übungsaufgaben gestellt und überprüft werden können.

Ein weiteres Anwendungsgebiet findet sich in der gezielten Bewertung und Verbesserung von Datenbankschemata. Denn anders als ähnliche Systeme, die zu reinen Lehrzwecken entwickelt wurden und daher nur theoretisch bzw. modellbasierte Zerlegungen durchführen können (vgl. [Sel05]), ist das in dieser Arbeit entwickelte System in der Lage, beliebige bestehende Relationenschemata zu normalisieren und die Änderungen, d. h. die Zerlegung, in der Datenbank zu implementieren.

Wie mittels Performanceanalyse in Kapitel 7.1 gezeigt werden konnte, läuft das System auch bei relativ großen Datenbanken bzw. Relationen schnell und stabil. Dass bei Relationen mit Attributmengen einer bestimmten Größe der Speicherverbrauch stark ansteigt, ist aufgrund der NP-Vollständigkeit der Bestimmung der Schlüsselkandidaten nicht zu vermeiden (vgl. [RG03]). Dies sollte bei den typischen Anwendungsszenarien jedoch zu vernachlässigen sein.

Ein konsequenter nächster Schritt in der Weiterentwicklung wäre es, ein Normalisierungsverfahren für BCNF zu implementieren. Durch den modularen Aufbau des Systems und die klare Aufgabentrennung sollte dies keine Probleme bereiten, da nur ein weiterer Zerlegungsalgorithmus zu realisieren wäre. Die Erweiterung auf 4NF hingegen würde die Implementierung neuer Datenstrukturen und Algorithmen, die auch MVDs unterstützen, erfordern. Für den Einsatz in der Lehre sind die höheren Normalformen jedoch uninteressant und auch ihre praktische Bedeutung ist relativ gering, sodass hier wenig Weiterentwicklungsbedarf besteht. Eine weitere mögliche Richtung für zukünftige Entwicklungen ist die Unterstützung von graphischen Verfahren zur Darstellung von FAen. In dieser Arbeit wurde bewusst darauf verzichtet, neben der tabellarischen weitere Darstellungsformen zu unterstützen, da bei einer großen Zahl von FAen graphische Darstellungen schnell unübersichtlich werden, wohingegen die tabellarische für beliebige Größen gut skaliert.

[1] [pdf] J. Timpner, Functional Dependencies in PostgreSQL Databases: Information System, 2009.
[Bibtex]
@misc{ba-timpner,
title = {Functional Dependencies in PostgreSQL Databases: Information System},
author = {Julian Timpner},
year = {2009},
month = sep,
date = {2009-09-04},
abstract = {This thesis describes the development of an application for manipulating functional dependencies, as well as for normalizing PostgreSQL data bases. The information system is suitable for evaluating and improving relational schemas and for teaching purposes.},
howpublished = {Bachelor's thesis, TU Braunschweig},
keywords = {Funktionale Abh\"angigkeiten, Normalisierung, Zerlegungsalgorithmus, Synthesealgorithmus, Informationssystem, Trigger, Integrit\"atsbedingungen, PostgreSQL, Java, SQL, JDBC},
}