Skript: Datenbanksysteme und Datenmodellierung - Praktische ...
Skript: Datenbanksysteme und Datenmodellierung - Praktische ...
Skript: Datenbanksysteme und Datenmodellierung - Praktische ...
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
<strong>Skript</strong>:<br />
<strong>Datenbanksysteme</strong> <strong>und</strong> <strong>Datenmodellierung</strong><br />
Herausgeber: Prof. Dr. Nane Kratzke<br />
21. Februar 2011
Vorwort<br />
Dieses <strong>Skript</strong> ist im Rahmen einer Lehrveranstaltung zur “Datenbank-gestützten Server-seitigen Programmierung”<br />
im Wintersemester 2010 durch Studenten <strong>und</strong> Studentinnen der Informatik an der Fachhochschule<br />
Lübeck initial entstanden <strong>und</strong> wird kontinuierlich fortgeschrieben <strong>und</strong> erweitert.<br />
Diese Lehrveranstaltung dient Studenten <strong>und</strong> Studentinnen wesentliche Prinzipien der serverseitigen <strong>und</strong><br />
vor allem datenbankgestützten Programmierung zu verstehen. Hierzu wird im ersten Drittel der Lehrveranstaltung<br />
ein Einblick in <strong>Datenbanksysteme</strong> <strong>und</strong> die <strong>Datenmodellierung</strong> gegeben, die vor allem das Ziel hat,<br />
die das Datenmodell betreffenden Entwicklungsschritte eines Datenbankentwurfs (Anforderungserhebung,<br />
konzeptionelle Modellbildung, logische Modellbildung) sauber zu gliedern. In den folgenden Anteilen der<br />
Lehrveranstaltung wird dieses Wissen dazu genutzt, webbasierte Informationssysteme mittels Apache, PHP<br />
<strong>und</strong> MySQL aufzusetzen.<br />
Im Wesentlichen greift dieses <strong>Skript</strong> die gängige Einsteigerliteratur (vgl. z.B. [Vet98, EN09, Gei09, SZTZ09,<br />
BJK11, TB10]) zu Datenbanken, Entwicklungsphasen des Datenbankentwurfs <strong>und</strong> Datenmodellbildung auf<br />
<strong>und</strong> gliedert diese in folgender Form:<br />
• Einführung in ein Phasenmodell der Datenbankentwicklung (vgl. Teil I)<br />
• Modellierungen von Datenmodellen mittels semantischen Modellen (Entity-Relationship Modellierung,<br />
vgl. Teil II Kapitel 6) <strong>und</strong> logischen Modellen (Relationenmodell, vgl. Teil II Kapitel 7)<br />
• sowie der Überführung von semantischen Modellen auf konzeptioneller Ebene in Relationenmodellen<br />
auf logischer Ebene mittels Transformations- <strong>und</strong> Normalisierungstechniken (vgl. Teil II Kapitel 8)<br />
Dieses <strong>Skript</strong> ersetzt die oben genannten Quellen aber in keinster Weise. Es gibt aber auf knappe Art einen<br />
Überblick über diese Thematiken <strong>und</strong> ist daher als begleitendes Material zu unseren Lehrveranstaltungen<br />
geeignet <strong>und</strong> auch für all diejenigen ggf. von Interesse, die sich mit dem Entwicklung von datenbankgestützten<br />
Informationssystemen erstmalig befassen. Dies gilt insbesondere für eine erstmalige systematische<br />
<strong>Datenmodellierung</strong>.<br />
Die in diesem <strong>Skript</strong> vorgestellten Themen sind im übrigen nicht auf Websysteme beschränkt, sondern gelten<br />
für alle datenbankgestützten Informationssysteme (insbesondere jedoch relationale <strong>Datenbanksysteme</strong>).<br />
Ohne unsere Studenten wäre dieses <strong>Skript</strong> jedoch niemals entstanden. Besonderer Dank gebührt daher<br />
Wiebke Amann, Janina Britze, Wladimir Daibert, Robert Dabrowski, Anna-Karina Drews, Anne<br />
Fidelak, Jana Geduhn, Stefanie Gramm, Christina Heiden, Thomas Plenius, Dan Röndigs, Eduard<br />
Schmalz, Katharina Schrader, Alena Wagner <strong>und</strong> Elena Wagner.<br />
Vielen Dank.<br />
3<br />
Nane Kratzke<br />
Lübeck, im Februar 2011
Inhaltsverzeichnis<br />
I <strong>Datenbanksysteme</strong> 9<br />
1 Einleitung 11<br />
1.1 Erste Generation: Lochkarten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11<br />
1.2 Zweite Generation: Random Access Dateisysteme . . . . . . . . . . . . . . . . . . . . . . . 12<br />
1.3 Dritte Generation: Prärelationale <strong>Datenbanksysteme</strong> . . . . . . . . . . . . . . . . . . . . . . 12<br />
1.4 Vierte Generation: Relationale Datenbanken . . . . . . . . . . . . . . . . . . . . . . . . . . 12<br />
1.5 Fünfte Generation: Postrelationale <strong>Datenbanksysteme</strong> . . . . . . . . . . . . . . . . . . . . . 12<br />
2 Begriffsdefinitionen 15<br />
2.1 Datenbank . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15<br />
2.2 Datenbankmanagementsysteme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16<br />
2.2.1 Konsistente <strong>und</strong> integrierte Datenhaltung . . . . . . . . . . . . . . . . . . . . . . . 16<br />
2.2.2 Datenunabhängigkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16<br />
2.2.3 Gängige Operationen auf Datenbanken . . . . . . . . . . . . . . . . . . . . . . . . . 17<br />
2.2.3.1 Dateneingabe/-erfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . 17<br />
2.2.3.2 Suche/Sortierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18<br />
2.2.3.3 Datenausgabe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18<br />
2.2.4 Katalog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18<br />
2.2.5 Benutzersichten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18<br />
2.2.6 Datenschutz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18<br />
2.2.7 Transaktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19<br />
2.2.8 Datensicherung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20<br />
2.3 Datenbanksystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20<br />
2.3.1 Hierarchisches Datenbankmodell . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20<br />
2.3.2 Das Netzwerk-Datenbankmodell . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21<br />
2.3.3 Das Relationenmodell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21<br />
2.3.3.1 Operationen auf Relationen . . . . . . . . . . . . . . . . . . . . . . . . . 22<br />
2.3.3.2 SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22<br />
2.4 Gr<strong>und</strong>sätzlicher Aufbau von <strong>Datenbanksysteme</strong>n . . . . . . . . . . . . . . . . . . . . . . . . 22<br />
5
6 INHALTSVERZEICHNIS<br />
3 Phasenmodell der Datenbankentwicklung 25<br />
3.1 Anforderungsanalyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25<br />
3.2 Konzeptioneller Entwurf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26<br />
3.3 Verteilungsentwurf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27<br />
3.4 Logischer Entwurf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27<br />
3.5 Entwurf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28<br />
3.6 Implementierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28<br />
3.7 Betrieb <strong>und</strong> Wartung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28<br />
4 Die Drei Ebenen Architektur 29<br />
4.1 Konzeptionelles Modell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30<br />
4.2 Externes Modell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31<br />
4.3 Internes Schema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33<br />
II <strong>Datenmodellierung</strong> 35<br />
5 Einleitung 37<br />
5.1 Hierarchisches Datenmodell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38<br />
5.2 Netzwerk-Datenmodell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38<br />
5.3 Entity-Relationship Modell <strong>und</strong> Relationenmodell . . . . . . . . . . . . . . . . . . . . . . . 39<br />
6 Das Entity-Relationship Modell 41<br />
6.1 Entitäten (Objekte) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42<br />
6.2 Relationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42<br />
6.3 Attribute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43<br />
6.4 Exemplarische Veranschlaulichung des ER-Modells an einem durchgehenden Beispiel . . . . 44<br />
7 Das Relationale Datenmodell 45<br />
7.1 Tabellenanalogie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46<br />
7.2 Schlüsselattribute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47<br />
7.3 Relationale Operationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48<br />
7.3.1 Projektion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49<br />
7.3.2 Selektion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50<br />
7.3.3 Kartesisches Produkt <strong>und</strong> JOINS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51<br />
7.3.4 Umbenennung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51<br />
7.3.5 Vereinigung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52<br />
7.3.6 Schnittmengenbildung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53<br />
7.3.7 Differenz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53<br />
7.4 Vollständigkeit der relationalen Algebra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
INHALTSVERZEICHNIS 7<br />
8 Transformation <strong>und</strong> Normalisierung 55<br />
8.1 Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55<br />
8.1.1 Transformationsregel zur Überführung von Entities . . . . . . . . . . . . . . . . . . 55<br />
8.1.2 Transformationsregel zur Überführung von n:m Relationen . . . . . . . . . . . . . . 56<br />
8.1.3 Transformationsregel zur Überführung von 1:n Relationen . . . . . . . . . . . . . . . 56<br />
8.2 Normalisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57<br />
8.2.1 Erste Normalform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58<br />
8.2.2 Zweite Normalform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59<br />
8.2.3 Dritte Normalform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59<br />
Literaturverzeichnis 61
8 INHALTSVERZEICHNIS
Teil I<br />
<strong>Datenbanksysteme</strong><br />
9
Kapitel 1<br />
Einleitung<br />
Teil I des <strong>Skript</strong>s wurde von den Studentinnen Wiebke Amann, Anne Fidelak, Jana Geduhn,<br />
Alena Wagner <strong>und</strong> Elena Wagner im Rahmen der Lehrveranstaltung Datenbank-gestützte<br />
Server-seitige Programmierung im Wintersemester 2010 an der Fachhochschule Lübeck verfasst.<br />
Ihnen gilt besonderer Dank.<br />
Dieser Teil widmet sich der Einführung in das Thema der <strong>Datenbanksysteme</strong>. Er gibt einen Überblick über<br />
alle wichtigen Begriffe der Datenbankentwicklung <strong>und</strong> hilft, in das Thema einzusteigen. Zu Beginn werden<br />
die Begriffe Datenbank, Datenbankmanagementsystem <strong>und</strong> Datenbanksystem erklärt. Außerdem wird ihre<br />
Beziehung zur serverseitigen Programmierung betrachtet. Darauf folgt eine Einordnung der relationalen<br />
Datenbanken in den geschichtlichen Kontext. Das nächste Kapitel befasst sich mit den wesentlichen Funktionen<br />
eines Datenbankmanagementsystems. Es wird ferner ein Phasenmodell der Datenbankentwicklung<br />
behandelt <strong>und</strong> die einzelnen Phasen dieses Modells erläutert. Das letzte erklärende Kapitel ist eine Erklärung,<br />
wie die Drei-Ebenen-Schemaarchitektur funktioniert <strong>und</strong> was in den einzelnen Ebenen geschieht. Im<br />
Anschluss an die Kapitel, die sich mit Begriffsklärung befassen, wird erläutert, welche Bereiche des vorliegenden<br />
<strong>Skript</strong>s skizzierte Themen in dieser Einleitung weiter vertiefen. Zudem wird das in der Vorlesung<br />
genutzte durchgehende Beispiel erläutert <strong>und</strong> beschrieben.<br />
Schon vor Jahrtausenden begannen die Menschen zu zählen. Sie entwickelten Zahlensysteme <strong>und</strong> ihre Darstellungsmöglichkeiten.<br />
Beispielsweise existiert eine Tontafel aus dem Jahre 3000 v.Chr. mit Angaben über<br />
Mengen von Tieren <strong>und</strong> Getreide in 10er <strong>und</strong> 60er Darstellung. In unserem heutigen komplexen Weltgeschehen<br />
heißen diese vergleichbaren, rechnergestützten Hilfsmittel zur Organisation, Erzeugung, Manipulation<br />
<strong>und</strong> Verwaltung großer Datensammlungen <strong>Datenbanksysteme</strong>. Ihre Entwicklungsgeschichte wird häufig in<br />
der Literatur in fünf Generationen gegliedert.<br />
1.1 Erste Generation: Lochkarten<br />
Das Augenmerk der ersten Generation lag hauptsächlich auf dem Rechnen, Zählen <strong>und</strong> Ordnen von Daten,<br />
welche auf langsame <strong>und</strong> fehleranfällige Lochkarten basierten. Weil Lochkarten nur sequentiell, also hintereinander,<br />
gelesen werden konnten, mussten alle Informationen verarbeitet werden, die vor der gesuchten<br />
standen. Ähnliches gilt für Magnetbänder, auf denen Daten nur sequentiell gespeichert werden konnten.<br />
Diese wesentlichen Einschränkungen machten das System nicht gerade populär.<br />
11
12 KAPITEL 1. EINLEITUNG<br />
1.2 Zweite Generation: Random Access Dateisysteme<br />
In der zweiten Generation um 1960 begann man die Daten auf Festplatten zu halten. Der schnelle, wahlfreie<br />
Zugriff auf Informationen <strong>und</strong> die Möglichkeit, dass mehrere Nutzer gleichzeitig Zugriff auf die Datenbank<br />
haben können, war äußerst vorteilhaft. Jedes Programm hatte aber immer noch seine speziellen Datensätze<br />
<strong>und</strong> –bestände. Eine Programmänderung zog auch Änderungen der Datenverwaltung nach sich. Die<br />
Gefahr der Datenred<strong>und</strong>anz, Dateninkonsistenz <strong>und</strong> natürlich die Probleme des Datenschutzes <strong>und</strong> der<br />
Datensicherheit waren nicht gelöst.<br />
1.3 Dritte Generation: Prärelationale <strong>Datenbanksysteme</strong><br />
Die dritte Generation in den 70er Jahren zeigte erste Unterschiede zwischen der logischen <strong>und</strong> der physischen<br />
Datenverwaltung auf. Es wurden erstmalig Datenmodelle zur logischen Beschreibung physikalischer<br />
Strukturen benutzt. Insbesondere entstanden das hierarchische Datenmodell <strong>und</strong> das Netzwerkmodell. Sie<br />
wurden für die Implementierung der ersten "echten" <strong>Datenbanksysteme</strong> verwendet. Ein hierarchisches Datenbankmodell<br />
bildet die reale Welt durch eine hierarchische Baumstruktur ab. Jeder Datensatz (Record)<br />
hat genau einen Vorgänger, mit Ausnahme eines "Wurzel"-Satzes der so entstehenden Baumstruktur. Das<br />
Netzwerkmodell als Erweiterung des hierarchischen Datenmodells bietet die Möglichkeit der Mehrfachbeziehungen<br />
zu den Vorgängern. Ein Nachfolger kann einen oder mehrere Vorgänger haben. Eine heute noch<br />
häufig eingesetzte Netzwerkdatenbank ist IDMS der Firma Computer Associates.<br />
1.4 Vierte Generation: Relationale Datenbanken<br />
Das Relationale System der vierten Generation wurden Anfang der 80er Jahre kommerziell verfügbar. Es<br />
basiert auf einem völlig anderen Ansatz zur Organisation von Daten, welcher eine wesentlich klarere Unterscheidung<br />
zwischen einem physischen <strong>und</strong> einem logischen Datenmodell erlaubt. Die physische Speicherung<br />
nach außen ist transparent <strong>und</strong> man kann sowohl auf der logischen als auch auf der physischen Seite<br />
Veränderungen vornehmen, ohne dass die jeweils andere Seite davon betroffen ist. Die Datenverarbeitung<br />
erfolgt tabellarisch <strong>und</strong> mengenorientiert. Die Sprache, welche dem Benutzer eines relationalen Systems zur<br />
Verfügung steht, befreit ihn im Allgemeinen weitgehend von Problemen des "Wie" beim Verwalten von<br />
<strong>und</strong> dem Arbeiten mit Daten, er kann sich jetzt zunehmend auf das "Was" konzentrieren. Die Gr<strong>und</strong>steine<br />
dafür legte Edgar F. Codd mit seiner Forschungsarbeit am IBM Almaden Research Center. Dabei war er<br />
wesentlich beteiligt an der Entwicklung des Systems R. Es ist neben Ingres der erste Prototyp eines relationalen<br />
Datenbankmanagementsystems <strong>und</strong> verwendete die Abfragensprache SEQUEL (= Structured English<br />
Query Language), aus der die SQL-Abfragesprache hervorging. Auf System R basieren auch die späteren<br />
IBM-Produkte SQL/DS <strong>und</strong> DB2 sowie die <strong>Datenbanksysteme</strong> von Oracle. Für seine fortwährenden Arbeiten<br />
auf dem Gebiet der Datenbanken erhielt Codd 1981 den Turing Award, der als höchste Auszeichnung<br />
in der Informatik gilt.<br />
1.5 Fünfte Generation: Postrelationale <strong>Datenbanksysteme</strong><br />
In den 90ern, also in der fünften Generation, bilden die <strong>Datenbanksysteme</strong> die Datenbasis nicht zweidimensional<br />
ab, sondern multidimensional in sogenannten Datenwürfeln. Dadurch arbeiten diese postrelationalen<br />
<strong>Datenbanksysteme</strong> wesentlich schneller <strong>und</strong> effizienter. Die Speicherung bzw. Verknüpfung erfolgt in Objektform<br />
<strong>und</strong> die Zugriffe erfolgen objektorientiert. Da Datenstrukturen äußerst komplex abgebildet werden<br />
können, findet diese Technik hauptsächlich Einsatz bei Internet-Suchmaschinen. Bei der parallelen Entwicklung<br />
der objektorientierten Datenbank werden im Unterschied zur relationalen Datenbank Daten als Objekte
1.5. FÜNFTE GENERATION: POSTRELATIONALE DATENBANKSYSTEME 13<br />
im Sinn der objektorientierten Programmierung verwaltet. Objektdatenbank <strong>und</strong> Objektdatenbankmanagementsystem<br />
bilden ein Objektdatenbanksystem.
14 KAPITEL 1. EINLEITUNG
Kapitel 2<br />
Begriffsdefinitionen<br />
2.1 Datenbank<br />
Eine Datenbank besteht aus einem strukturierten <strong>und</strong> integrierten Datenbestand, in dem die Daten miteinander<br />
in Beziehung stehen. Technisch gesehen stellt eine Datenbank ein häufig verteiltes, integriertes<br />
Computersystem dar, welches Nutzdaten <strong>und</strong> Metadaten enthält. Unter Nutzdaten versteht man Daten,<br />
die der Benutzer in der Datenbank anlegen kann. Aus diesen Daten wird Information gewonnen. Metadaten<br />
hingegen sind Daten über die vom Nutzer eingegebenen Informationsdaten, mit deren Hilfe man die<br />
Möglichkeit hat die Nutzdaten zu strukturieren.<br />
Abbildung 2.1 zeigt ein einfaches Beispiel einer Datenbank für die K<strong>und</strong>enverwaltung.<br />
Abbildung 2.1: Bsp. K<strong>und</strong>enverwaltungsprogramm<br />
Jede Überschrift verdeutlicht, was der Inhalt der jeweiligen Spalte bedeutet <strong>und</strong> beschreibt diese Spalte.<br />
Die Überschriften sind hier die Metadaten. Die einzelnen Adressen stehen hierbei in keiner Beziehung zu<br />
einander.<br />
In der Spalte K<strong>und</strong>enPLZ befinden sich die Postleitzahlen aller K<strong>und</strong>en. K<strong>und</strong>enPLZ ist eine Eigenschaft<br />
des K<strong>und</strong>en (Entität). Dieses Segment wird als „Feld“ bezeichnet, in relationalen Datenbanken auch als<br />
Relationenschema bekannt. Eine komplette Zeile der Nutzdaten stellt den „Datensatz“ dar. Einzelne Segmente<br />
der Nutzdaten werden als „Daten“ bezeichnet. Metadaten <strong>und</strong> Nutzdaten ergeben zusammen die<br />
Datei. Genauso wie eine Ansammlung von zusammengehörigen Datensätzen.<br />
Bei dem Erstellen einer Datenbank ist auf das Design der Datenbank zu achten. Mit Design sind die Struktur<br />
der Tabellen, in denen die Nutzdaten vorhanden sind <strong>und</strong> die Beziehung zwischen mehreren Tabellen<br />
15
16 KAPITEL 2. BEGRIFFSDEFINITIONEN<br />
gemeint. Ein schlechtes Datenbankdesign kann dazu führen, dass Daten mehrfach in einer Datenbank auftreten.<br />
Diese Daten heißen red<strong>und</strong>ante Daten <strong>und</strong> werden über ein <strong>und</strong> dieselbe Entität mehrfach gespeichert.<br />
Eine Entität stellt ein Objekt der realen Welt dar, wie zum Beispiel eine Person oder einen Gegenstand. Ein<br />
Beispiel dafür ist, wenn Kontaktdaten eines K<strong>und</strong>en in jedem Datensatz gespeichert werden, in dem auch die<br />
Rechnung gespeichert wird. Bei Änderung der Kontaktdaten müssen diese in JEDEM Rechnungsdatensatz<br />
geändert werden. Das führt zu einer erhöhten Fehlerquote.<br />
2.2 Datenbankmanagementsysteme<br />
Die Verwaltung solcher Datenbanken geschieht über das Datenbankmanagementsystem (DBMS). Eine<br />
DBMS stellt eine Verwaltungssoftware dar <strong>und</strong> ermöglicht es auf die Nutzdaten zuzugreifen. Ein Beispiel für<br />
ein DBMS wäre Microsoft Access - im Rahmen der Lehrveranstaltungen wird üblicherweise MySQL genutzt.<br />
Ein Datenbankmanagementsystem kann entweder aus einem oder auch mehren Programmen bestehen.<br />
Datenbankmanagementsysteme dienen der effizienten <strong>und</strong> rechnergestützten Organisation, Erzeugung, Manipulation<br />
<strong>und</strong> Verwaltung großer Datenmengen. Die Datenverwaltung, die aus dem Schreiben, Ändern <strong>und</strong><br />
Löschen von Daten besteht, erfolgt mit ihrer Hilfe. Des Weiteren werden leistungsfähige Suchfunktionen<br />
zur Verfügung gestellt um den Zeitaufwand, der für das Finden von Daten benötigt wird, zu minimieren.<br />
Der große Vorteil von DBMS besteht darin, dass jegliche Art von Daten (Namen, Adressen, etc.) an einem<br />
logisch zusammengehörigen Platz gespeichert <strong>und</strong> bereitgestellt werden können.<br />
Datenbankmanagementsysteme haben alle die Aufgabe die nachfolgenden Funktionen bereitzustellen.<br />
2.2.1 Konsistente <strong>und</strong> integrierte Datenhaltung<br />
Datenintegrität bedeutet logische Widerspruchsfreiheit der Daten. Von daher ermöglicht DBMS die einheitliche<br />
Verwaltung der Daten. Alle in einer Datenbank gespeicherten Daten müssen unter sich <strong>und</strong> vor allem<br />
auch in ihrer Beziehungen zueinander in einem logisch stimmigen Zustand stehen. Somit wird jedes logische<br />
Datenelement, wie beispielsweise der Name eines K<strong>und</strong>en, an nur einer Stelle in der Datenbank gespeichert.<br />
Außerdem muss ein DBMS die Möglichkeit bieten, eine Vielzahl komplexer Beziehungen zwischen den Daten<br />
zu definieren sowie zusammenhängende Daten schnell <strong>und</strong> effizient miteinander zu verknüpfen. Auch<br />
die Sichtweise der Daten muss einheitlich <strong>und</strong> logisch dargestellt werden. Zum Beispiel bei einem relationalen<br />
Datenbanksystem müssen sämtliche Daten dem Benutzer in Tabellen- oder Relationenform dargestellt<br />
werden. Auch Systemdaten werden in Relationen verwaltet.<br />
Abbildung 2.2 zeigt einen Fall inkonsistenter Datensätze, in denen die Daten nicht korrekt eingetragen<br />
wurden.<br />
2.2.2 Datenunabhängigkeit<br />
Wesentliches Ziel bei Einsatz eines Datenbanksystems besteht darin, Datenunabhängigkeit zu erreichen, das<br />
heißt eine weitgehende Unabhängigkeit von Daten <strong>und</strong> Programmen oder Benutzern, die mit diesen Daten<br />
arbeiten.<br />
Die Notwendigkeit der Datenunabhängigkeit wird in den folgenden Punkten deutlich:<br />
1. Alle Daten einer bestimmten Anwendung sollen in einem integrierten Bestand der Datenbank, jeweils<br />
einmal <strong>und</strong> dauerhaft gespeichert werden, sodass der Bestand weitgehend frei von Red<strong>und</strong>anzen bleibt.<br />
2. Alle Benutzer sollen zeitgleich auf physischer Ebene mit dem gleichen Datenbestand arbeiten können,<br />
so dass einheitliche Integritätskontrollen sowie Schutz <strong>und</strong> Sicherungsmechanismen anwendbar sind.
2.2. DATENBANKMANAGEMENTSYSTEME 17<br />
Abbildung 2.2: Inkonsistente Datensätze<br />
3. Einzelne Benutzer oder Benutzergruppen sollen unterschiedliche logische Sichten auf die Datenbank<br />
haben, damit die Daten anwendungsbezogen strukturiert werden können.<br />
Datenunabhängigkeit schließt ein, dass ein Datenbanksystem anpassungsfähig ist, d.h. neue Anwendungen<br />
<strong>und</strong> Benutzersichten sollen keinen Einfluss auf bereits existierende Anwendungen <strong>und</strong> Sichten haben. Anwendungsprogramme<br />
<strong>und</strong> Datenorganisation müssen unabhängig voneinander sein. Änderungen der physischen<br />
Organisation der Daten müssen möglich sein, ohne dass sämtliche Anwendungsprogramme geändert werden<br />
müssen. Erweiterungen der Datenstruktur (z.B. Aufnahme eines neuen Datenelementes) dürfen nicht dazu<br />
führen, dass bisherige Anwendungsprogramme, die diese neuen Informationen nicht benötigen, geändert<br />
werden müssen.<br />
2.2.3 Gängige Operationen auf Datenbanken<br />
Alle Datenbankmanagementsysteme unterstützten gewisse Standardfunktionen. Hiezu gehören Datenmanipulationen<br />
(Eingabe, Änderung, Löschen), Datenselektion (Suche) <strong>und</strong> Datenausgabe. All die werden<br />
in einer einheitlichen Datenbanksprache angeboten <strong>und</strong> sind möglichst einfach in der jeweiligen Sprache<br />
formulierbar.<br />
2.2.3.1 Dateneingabe/-erfassung<br />
Bei der Dateneingabe (über Tastatur) oder -erfassung (über Messgeräte etc.) ist besonders darauf zu achten,<br />
dass keine falschen oder unvollständigen Daten in die Datenbank gelangen. Ab einer gewissen Größe<br />
sind die Daten nicht mehr wirklich korrigierbar. Entsprechende Maßnahmen dagegen (Konsistenzprüfungen)<br />
werden von den meisten <strong>Datenbanksysteme</strong>n unterstützt. Die Dateneingabe durch Menschen stellt insofern<br />
einen besonderen Problembereich dar, da Menschen üblicherweise "Fehler" machen, die vielleicht für den<br />
anderen Menschen harmlos erscheinen doch für ein Datenverarbeitungssystem katastrophale Folgen haben<br />
können. Je stärker der formale Charakter von Daten ist, desto eher ist der Computer in der Lage, ihre Richtigkeit<br />
zu prüfen (z.B. Prüfziffer am Ende einer mehrstelligen Zahl, Tippfehler durch Rechtschreibkorrektur,<br />
Vollständigkeit eines Datums etc.).
18 KAPITEL 2. BEGRIFFSDEFINITIONEN<br />
2.2.3.2 Suche/Sortierung<br />
Nach Daten in einer Datenbank zu suchen bedeutet, eine Auswahl (Selektion) zu treffen: eine Teilmenge<br />
von Datensätzen aus der Gesamtmenge wird festgelegt. Für den Benutzer präsentiert sich die Suche oft<br />
in einer Maske mit den suchbaren Datenfeldern. Üblicherweise werden boolesche Operationen unterstützt<br />
(logisches UND, logisches ODER, logisches NICHT). Auf jeden Fall ist ein Datenbanksystem darauf zu<br />
prüfen, was es in der Hinsicht auf Suchmöglichkeiten kann <strong>und</strong> vor allem nicht kann. Die Sortierung von<br />
Daten ist eigentlich eher der Datenausgabe zu zurechnen. Sortierungen erfolgen absteigend oder aufsteigend,<br />
numerisch, alphabetisch oder alphanumerisch, mehrere Sortierebenen sind möglich (die letzte Ebene ist<br />
damit immer die wichtigste).<br />
2.2.3.3 Datenausgabe<br />
Für die Datenausgabe ("Reports") gibt es eine Vielzahl verschiedener Modelle <strong>und</strong> Möglichkeiten. Die<br />
Daten können sich in der Ausgabe auch völlig anders präsentieren als in der Eingabe. Dies ist in erster Linie<br />
vom Zweck der Datenbank abhängig. Zu beachten ist auch, wohin die Ausgabe erfolgt bzw. erfolgen kann:<br />
Bildschirm, Drucker, Datei, andere Schnittstellen.<br />
2.2.4 Katalog<br />
Das DBMS hat einen Katalog, vergleichbar mit einem Datenverzeichnis, das Daten über die Namen, Struktur,<br />
Attribute, Lage <strong>und</strong> Typen der abgelegten Daten enthält. Alle diese Daten werden als Metadaten bezeichnet.<br />
Beispielsweise: Eigentümer, Erzeugungszeit von Datenbankobjekten, Beschreibung von Tabellen<br />
<strong>und</strong> ihren Spalten bei relationaler Datenbank (Datentyp, Länge). In diesem Metadaten-Verzeichnis werden<br />
alle logischen <strong>und</strong> physikalischen Informationen <strong>und</strong> Änderungen während der gesamten Lebensdauer der<br />
Daten gespeichert: vom Einlesen bis zu Löschen.<br />
Diese Metadaten können mit den Mitteln der Datenbanksprache genauso gelesen werden wie die normalen<br />
Nutzdaten.<br />
2.2.5 Benutzersichten<br />
Eine Benutzersicht (oder einfach Sicht, engl. view) ist eine Darstellung der Daten, die an die Anforderungen<br />
individueller Benutzer oder Anwendungsfälle angepasst ist. Für unterschiedliche Klassen von Benutzern sind<br />
verschiedene Sichten erforderlich, die bestimmte Ausschnitte aus dem Datenbestand beinhalten <strong>und</strong> dese<br />
in unterschiedlichen Detaillierungsstufen sehen. Ein Benutzer kennt lediglich die für ihn vorgesehene Sicht.<br />
Er kann sie abfragen <strong>und</strong> verändern, wie eine eigenständige Datenbank. Durch dieses Konzept bleibt dem<br />
Benutzer die konzeptionelle Komplexität der eigentlichen Datenbank verborgen, wodurch eine Vereinfachung<br />
im Umgang mit der Datenbank erreicht wird. Die Sichten sind im externen Schema der Datenbank definiert<br />
<strong>und</strong> werden durch Anfragen an die Datenbank beschrieben <strong>und</strong> reflektieren zu jeder Zeit das Ergebnis<br />
dieser Anfragen. Die Definition von Sichten ist mit den Möglichkeiten des Datenschutzes stark verknüpft<br />
<strong>und</strong> bietet einen sehr flexiblen Mechanismus zur Zugriffsbeschränkung auf Informationen. So können manche<br />
Informationen in einzelnen Sichten vor dem Benutzer verborgen werden, während sie in anderen Sichten<br />
oder für andere Benutzer verfügbar sind.<br />
2.2.6 Datenschutz<br />
Datenschutz umfasst mehrere Aspekte, von denen zwei besonders wichtig sind. Zunächst müssen aufgr<strong>und</strong><br />
des Datenschutzgesetzes die personenbezogenen Informationen vom Zugriff der nicht berechtigten dritten
2.2. DATENBANKMANAGEMENTSYSTEME 19<br />
Personen geschützt werden. Auch der Zugriff auch unternehmensrelevante Daten muss aus Wettbewerbsgründen<br />
geeignet beschränkt werden.<br />
Hauptaufgabe eines Datenbankmanagementsystem hinsichtlich des Datenschutzes ist es also, unautorisierter<br />
Zugriff auf die gespeicherte Daten zu verhindern. In einem Unternehmen, welches eine Datenbank für<br />
K<strong>und</strong>en- <strong>und</strong> Zulieferdaten hat, ist es mit Sicherheit erwünscht, dass nicht jeder Benutzer Zugriff auf die<br />
gesamten Daten hat <strong>und</strong> diese beliebig verändern kann. Beispielsweise sollte ein Mitarbeiter der Abteilung<br />
“Einkauf” nicht die Rechnungsdaten der Endk<strong>und</strong>en verändern, vielleicht nicht einmal einsehen, dürfen. Die<br />
Rechnungsdaten dürfen nur die Mitarbeiter der Abteilung “Verkauf/Vertrieb” bearbeiten. Die Geschäftsführung<br />
soll aber alle Daten einsehen <strong>und</strong> verändern dürfen. Vielleicht gibt es auch Zulieferer oder Endk<strong>und</strong>en,<br />
die bestimmte Daten aus der Datenbank lesen oder sogar verändern dürfen.<br />
Hierzu können für jeden Benutzer Berechtigungen für den Zugriff auf Daten definiert <strong>und</strong> in der Datenbank<br />
gespeichert werden. Für verschiedene Benutzer oder Benutzerklassen kann festgelegt werden, auf welchen<br />
Originaldaten oder Sichten sie welche Operationen ausführen dürfen. Ein DBMS verwaltet Zugriffsrechte,<br />
die von den Datenbank-Administratoren eingerichtet werden. So müssen nicht alle Daten der gesamten<br />
Belegschaft oder Dritten anvertraut werden müssen.<br />
Wenn Sichten, Benutzerklassen <strong>und</strong> Operationen mit der Datenbanksprache sehr detailliert festgelegt werden<br />
können, lassen sich unberechtigte Zugriffe auf die Daten gut ausschließen.<br />
2.2.7 Transaktionen<br />
Eine Transaktion ist eine Folge von Datenbankaufrufen, die logisch zusammengehören <strong>und</strong> eine Datenbank<br />
von einem konsistenten Zustand in einen anderen konsistenten Zustand überführen. Eine Transaktion arbeitet<br />
nach dem „Alles oder Nichts“ - Prinzip. Das heißt sie muss entweder vollständig durchgeführt oder<br />
ganz zurückgesetzt werden. Beispiel einer Transaktion: Vermutlich hat jeder schon Geld am Bankautomat<br />
abgehoben. Das Konto wird natürlich datenbankunterstützt verwaltet. Beginnend von der Identifikation<br />
der Bankkarte bis zur kompletten Auszahlung des Geldes muss alles ein kompletter Geschäftsvorfall (eine<br />
Transaktion) sein. Wenn irgendetwas „schief läuft“, muss der Zustand des Kontos so sein, als wäre nie ein<br />
Auszahlungsversuch unternommen worden. Dabei ist es gleich, wie viele Leute an wie vielen Automaten<br />
gleichzeitig abheben, sogar wenn dies vom gleichen Konto geschehen würde. Eine Datenbank ist eine integrierte<br />
Ansammlung von Daten, die unterschiedlichen Anwendungen als gemeinsame Datenbasis dient. Um<br />
diesen Dienst konsistent <strong>und</strong> fehlertolerant anbieten zu können, wurde das Transaktionskonzept entwickelt.<br />
Eine Transaktion sorgt dafür, dass eine logisch zusammengehörige Folge von Operationen ohne negative<br />
Begleiterscheinungen auf der Datenbank ausgeführt werden kann.<br />
Eine Transaktion hat bestimmte Leistungen abzudecken, die durch so genannten ACID - Eigenschaften<br />
beschreiben werden: Atomarität: Eine Transaktion ist unteilbar. Sie wird entweder ganz oder gar nicht<br />
ausgeführt. Wird eine laufende Transaktion abgebrochen, so ist die Datenbank so zu hinterlassen, als hätte<br />
es die Transaktion nie gegeben. Konsistenz: Sind die von einer Transaktion betroffenen Daten vor der<br />
Transaktion konsistent, so sind sie es auch nach der Transaktion (Konsistenzerhaltung). Diese Forderung<br />
kann aber nicht automatisch durch das DBMS garantiert werden. Trotz Konsistenzbedingungen kann nicht<br />
ausgeschlossen werden, dass ein inkorrekter Wert eingefügt wurde (z.B. der Name „Meyer“ statt „Maier“).<br />
Isolation: Trotz der möglicherweise existierenden Parallelarbeit vieler Benutzer auf der Datenbank muss das<br />
DBS so agieren, als würde jeder Benutzer isoliert, d.h. alleine, auf der DB arbeiten. Das geschieht durch die<br />
Synchronisation der Transaktionen, die gleichzeitig ausgeführt werden. Irgendwelche Beeinflussungen durch<br />
den Parallelbetrieb sind dabei auszuschließen. Daten werden von Wettlaufsituationen durch den parallelen<br />
Zugriff mehrerer Benutzer geschützt.<br />
Am Markt erhältliche DBMS realisieren heutzutage zumeist das so genannte Zweiphasensperrprotokoll,<br />
bei dem alle Daten, die von einer Transaktion genutzt werden, zunächst gesperrt werden müssen. Die gemeinsame<br />
Sperre erlaubt paralleles Lesen. Exklusive Sperre ist für das Ändern der Daten zuständig. Dabei<br />
besteht eine Transaktion aus zwei Phasen. In der ersten dürfen nur Sperren erworben werden, in der zweiten
20 KAPITEL 2. BEGRIFFSDEFINITIONEN<br />
nur wieder freigegeben werden. Dauerhaftigkeit: Änderungen, die in einer Transaktion erfolgt sind, sind<br />
in der Datenbank festgeschrieben <strong>und</strong> stehen allen zur Verfügung. Bei einem Systemausfall werden alle<br />
abgeschlossen Transaktionen festgeschrieben <strong>und</strong> offene zurückgerollt. Die Auswirkungen einer abgeschlossenen<br />
Transaktion auf der Datenbank können immer wieder hergestellt werden, unabhängig davon, welcher<br />
Fehlerfall auch auftreten mag (bis hin zum kompletten Verlust der eigentlichen Datenbank).<br />
2.2.8 Datensicherung<br />
Im Falle eines Betriebsmittelsausfalles oder eines Systemfehlers kann der interne Zustand der Datenbank in<br />
einen nicht definierten Zustand geraten. Ein DBMS verfügt deshalb über Mechanismen, die den Benutzer<br />
vor den Auswirkungen von Systemfehlern schützen <strong>und</strong> das System wieder in einen konsistenten Zustand<br />
überführen. Meist nachts werden Sicherungskopien der Datenbank auf Bändern vorgenommen (backup).<br />
Während des Tagesablaufs wird diese Maßnahme gewöhnlich durch ein Protokoll der durchgeführten Änderungen<br />
ergänzt. Wird die Datenbank modifiziert, erfolgt ein Protokolleintrag. Bei einem Systemabsturz<br />
werden die Bänder <strong>und</strong> das Protokoll dazu benutzt, in der Datenbank den zuletzt aktuellen Zustand automatisch<br />
wiederherzustellen (recovery). Das Rücksetzen der Datenbank soll weitgehend automatisch erfolgen.<br />
2.3 Datenbanksystem<br />
Ein Datenbanksystem (DBS) besteht aus einer oder mehreren Datenbanken <strong>und</strong> einem Datenbankmanagementsystem.<br />
Es dient zur elektronischen Datenverwaltung <strong>und</strong> bietet dafür eine Datenbanksprache an (bei relationalen<br />
<strong>Datenbanksysteme</strong>n ist dies zumeist die noch im Detail erläuterte Sprache SQL). Die gängigsten Sprachelemente<br />
der SQL (<strong>und</strong> auch anderer Datenbanksprachen) sind die Data Manipulation Language (DML),<br />
die Data Definition Language (DDL) <strong>und</strong> die Data Control Language (DCL). Mit DML können Daten<br />
eingefügt, geändert oder gelöscht werden. Mit DDL können Tabellen (Datenstrukturen) erstellt werden <strong>und</strong><br />
mit DCL dient der Rechtsverwaltung <strong>und</strong> der Transaktionskontrolle.<br />
Die wichtigsten Aufgaben eines Datenbanksystems sind das dauerhafte, widerspruchsfreie <strong>und</strong> wirksame<br />
Speichern von großen Datenmengen <strong>und</strong> die Bereitstellung von Teilmengen in unterschiedlichen Darstellungsformen<br />
für User <strong>und</strong> Anwenderprogramme. Eine gängige Darstellungsform ist die Relation. Mit welcher<br />
Art ein Datenbanksystem Daten speichert <strong>und</strong> verwaltet legt das logischen Datenbankmodell fest. Es wird<br />
zwischen dem Hierarchischen, Netzwerk-, Relationen, Entity Relationship- <strong>und</strong> Objektorientierten Modell<br />
unterschieden.<br />
Historisch betrachtet sind die drei folgenden logischen Datenbankmodelle die wichtigsten gewesen, von<br />
denen sich vor allem das relationale Datenmodell durchgesetzt hat.<br />
2.3.1 Hierarchisches Datenbankmodell<br />
Man stelle sich eine Baumstruktur vor, einen Baum mit Verbindungsknoten. Die Knoten werden Records<br />
genannt <strong>und</strong> die Baumstruktur stellt die Beziehung zwischen den Records dar. Ein Knoten kann mehrere<br />
Nachfolger besitzen. Ein Knoten kann maximal einen Vorgänger haben, aber mehre Nachfolger, Söhne genannt.<br />
Die Nachfolger eines Knotens werden als Kindknoten bezeichnet <strong>und</strong> der Vorgänger als Elternknoten.<br />
Hat ein Knoten keinen Elternknoten, wird dieser als Wurzelknoten bezeichnet <strong>und</strong> wenn ein Knoten keine<br />
Nachfolgerknoten hat, ist es ein Blattknoten. Blattknoten bilden die letzte Ebene.<br />
In dem Fall, dass zwei verschiedene Knoten den gleichen Record als Nachfolger haben, muss dieser mehrfach<br />
in der Baumstruktur vorkommen, also red<strong>und</strong>ant sein. Die Technische Umsetzung der Beziehungen zwischen<br />
den Records geschieht über Pointer. Ein Pointer ist eine Variable, die eine Speicheradresse enthält. Dort
2.3. DATENBANKSYSTEM 21<br />
können Daten, wie zum Beispiel Variablen oder Objekte stehen, aber auch Programmcode. Der Zugriff<br />
erfolgt beispielsweise über eine Pre-Order-Traversierung der Struktur. Man geht vom Wurzelknoten aus.<br />
Unter Traversierung versteht man das Untersuchen von Knoten eines Baumes in einer bestimmten Reihenfolge.<br />
Man unterscheidet zwischen Preorder-, Postorder-, Inorder- <strong>und</strong> Levelorder-Traversierung. Für eine<br />
Preorder-Traversierung lautet die Regel: "Besuche die Wurzel, besuche dann den linken Unterbaum, besuche<br />
dann den rechten Unterbaum". Die Postorder-Traversierung sagt: „Besuche den linken Unterbaum,<br />
besuche dann den rechten Unterbaum <strong>und</strong> dann die Wurzel“.<br />
Bei der Inorder-Traversierung wird zuerst der linke Unterbaum besucht, dann die Wurzel <strong>und</strong> dann der<br />
rechte Unterbaum. Laut der Levelorder-Traversierung wird zuerst die Wurzel besucht, dann die Söhne <strong>und</strong><br />
dann die nächste Reihe. Der Durchlauf erfolgt von oben nach unten <strong>und</strong> von links nach rechts.<br />
Das Einfügen, Löschen <strong>und</strong> Ändern ist nur im Rahmen der Hierarchie möglich, also nur durch Zugriff über<br />
den Vater. Der Nachteil von dem hierarchischen System ist, dass es zwar 1:N-Beziehungen gibt, aber keine<br />
M:N-Beziehung. Des Weiteren können gleiche Datensätze an mehreren Stellen benötigt werden <strong>und</strong> müssten<br />
demnach mehrmals auftreten. Das erzeugt Datenred<strong>und</strong>anz.<br />
2.3.2 Das Netzwerk-Datenbankmodell<br />
Das Netzwerk-Datenbankmodell entspricht in groben Zügen dem hierarchischen Datenbankmodell. Die Probleme<br />
der Red<strong>und</strong>anz von Knoten werden mit den so genannten Link-Records behoben. Link-Records können<br />
Mehrfachzuweisungen darstellen. Die Elternknoten heißen hier Owner <strong>und</strong> die Söhne heißen Member. Anders<br />
als im hierarchische Datenbankmodell kann ein Knoten mehrere Kindknoten UND mehre Elternknoten<br />
besitzen.<br />
Für die Beziehungen zwischen Knoten sind wie im hierarchischen System Pointer zuständig. Bei den Beziehungen<br />
wird nun zwischen 1:1- <strong>und</strong> 1:N-Beziehungen unterschieden <strong>und</strong> die Darstellung erfolgt durch<br />
einen gerichteten Graphen. Die Beziehung zwischen Knoten wird Menge genannt. Die Elternkonten sind<br />
die Besitzer <strong>und</strong> Kindknoten die Mitglieder der Menge. Das erlaubt einem Knoten in mehreren Beziehungen<br />
gleichzeitig vertreten zu sein. M:N-Beziehungen kommen zustande, in dem ein künstliches Kett-Record<br />
eingefügt wird. Dieser wird in beide Richtungen als Member angegeben, der einen ungerichteten Graphen<br />
erzeugt <strong>und</strong> somit die Traversierung überflüssig macht. Im Netzwerk-Modell wird ein Mengenmitglied nur<br />
definiert, wenn es einen Besitzer (Owner) der Menge gibt. Dadurch wird die Datenintegrität verbessert. Die<br />
Datenintegrität besagt, dass sich die Daten einer Datenbank in einem widerspruchsfreien Zustand befinden,<br />
also konsistent sind.<br />
Nachteil des Netzwerk-Datenbankmodells ist die schwere Implementierung <strong>und</strong> Verarbeitung der Datenbank.<br />
2.3.3 Das Relationenmodell<br />
In diesem Datenbank-Modell werden keine Zeiger benutzt um Beziehungen darzustellen. Beziehungen werden<br />
über inhaltliche Angaben realisiert <strong>und</strong> durch Werte <strong>und</strong> Attribute dargestellt. Die Daten der Datenbank<br />
werden in Form einer Relation festgelegt. Relationen sind Tabellen, die wiederum Mengen von Tabellen darstellen.<br />
Diese Relation besteht aus einem Namen <strong>und</strong> Attributen <strong>und</strong> Datensätzen. Attribute sind die Spalten<br />
<strong>und</strong> die Datensätze – auch Tupel genannt – die Zeilen. Attribute bestehen aus den Spaltenüberschriften<br />
<strong>und</strong> bilden die Struktur der Tabelle, auch Relationenschema genannt. Um einen Datensatz eindeutig zu<br />
identifizieren wird ein so genannter Primärschlüssel verwendet, wie beispielsweise eine Matrikelnummer eines<br />
Studenten. Des Weiteren besitzt ein Datensatz auch einen Fremdschlüssel um auf einen Datensatz<br />
einer weiteren Tabelle zu verweisen. Dieser Schlüssel wird auch Pointer genannt. Der Fremdschlüssel ist als<br />
eine fortlaufende ID gekennzeichnet. Diese ID taucht in der ersten Tabelle als Fremdschlüssel auf <strong>und</strong> in<br />
dem Datensatz, auf den dieser verweist, als Primärschlüssel. So stehen Datensatz A <strong>und</strong> Datensatz B in<br />
Beziehung zu einander. Die Mastertabelle steht mit der Detailtabelle in einer 1:N-Beziehung. Das bedeutet,
22 KAPITEL 2. BEGRIFFSDEFINITIONEN<br />
dass ein Datensatz der Mastertabelle mit beliebig vielen Datensätzen der Detailtabelle in Beziehung steht.<br />
Eine weitere Besonderheit der Attribute ist die Bezeichnung. Es sind keine zusammengesetzten Attribute erlaubt.<br />
Das Relationale Datenbanksystem bietet den Vorteil, dass es im Vergleich zu anderen Systemen keine<br />
strukturelle Abhängigkeit gibt, also kein Navigieren durch die Struktur. Der Zugriff des Rationalen DBMS<br />
muss nicht geändert werden, wenn sich die Struktur der Datenbank ändert. Außerdem ist die physikalische<br />
Struktur der Daten nicht relevant, da diese durch das RDBMS abgetrennt wird.<br />
2.3.3.1 Operationen auf Relationen<br />
Auf die Daten der Relationalen Datenbank wird mit folgenden Gr<strong>und</strong>operationen zugegriffen: Selektion,<br />
Projektion <strong>und</strong> Mengenoperationen, die aus Vereinigung, Durchstoß <strong>und</strong> Differenz bestehen sowie mit dem<br />
Kartesischen Produkt.<br />
Mit der Selektion ist es möglich, eine Zeile auszuwählen <strong>und</strong> mit Projektion eine Spalte. Mit der Vereinigung<br />
werden alle Datensätze der Tabelle A mit der Tabelle B vereint, wobei gemeinsame Datensätze nicht doppelt<br />
aufgeführt werden. Die Operation Durchstoß liefert nur die gemeinsamen Attribute von zwei Relationen.<br />
Die Differenz zweier Relationen drückt aus, dass die gemeinsamen Daten der Relationen A <strong>und</strong> B von A<br />
abgezogen werden. Dabei sind keine N:M-Beziehungen möglich. Das Kartesische Produkt zweier Relationen<br />
besagt, dass jede Zelle der Tabelle mit jeder Zelle der Tabelle B verknüpft wird. Dabei sind N:M-Beziehungen<br />
möglich. Diese Operation wird auch mathematisches Kreuzprodukt genannt.<br />
Des Weiteren werden noch die Operationen Join, Natural Join, Restriktion <strong>und</strong> Division angewendet um<br />
Daten ausfindig zu machen. Die Join-Operation entspricht einem Kreuzprodukt mit einer anschließenden<br />
Selektion. Natural Join arbeitet ebenfalls mit dem Kartesischen Produkt <strong>und</strong> verknüpft zwei Relationen über<br />
gemeinsame Attribute. Zwei Tupel verschmelzen, wenn sie in den gemeinsamen Attributen gleiche Werte<br />
besitzen.<br />
2.3.3.2 SQL<br />
Die Konkretisierung des Relationenmodells in Form einer Programmiersprache kann in der Datenbanksprache<br />
SQL gesehen werden. Die im Relationenmodell definierten Prinzipien <strong>und</strong> Operationen sind in der SQL<br />
realisiert.<br />
SQL hat sich als Standardsprache für den Zugriff auf relationale Datenbanken durchgesetzt. Mit ihr ist es<br />
möglich, Datenbanken zu erzeugen, zu verwalten <strong>und</strong> Daten in einer Datenbank zu verändern. Sie ist keine<br />
prozedurale Sprache, wie beispielsweise Pascal oder C++, bei denen der Nutzer definieren muss, wie eine<br />
Aufgabe zu lösen ist. SQL ist eine sogenannte deklarative Sprache: Der Nutzer gibt dem Datenbankmanagementsystem<br />
über SQL die Information, was er als Ergebnis erwartet.<br />
2.4 Gr<strong>und</strong>sätzlicher Aufbau von <strong>Datenbanksysteme</strong>n<br />
Ein komplexes Datenbanksystem ist im allgemeinen in vier Schichten gegliedert. Ein DBS besteht aus einer<br />
Hardware-, Daten-, Software- <strong>und</strong> Personenschicht.<br />
1. Erste Schicht: Hardware Die Hardwareschicht beinhaltet alle physikalischen Geräte wie den Server,<br />
die Clientrechner, Kabel, Hubs, Router, Bridges, Firewalls <strong>und</strong> Peripheriegeräte.<br />
2. Zweite Schicht: Daten Sie enthält alle Daten, die in der Datenbank gespeichert sind. Wenn die Daten<br />
in Zusammenhang gebracht werden, liefern diese auch sinnvolle Informationen. Da die Daten gut<br />
geschützt werden müssen, greift nur das Datenbankmanagementsystem auf die Daten zu.
2.4. GRUNDSÄTZLICHER AUFBAU VON DATENBANKSYSTEMEN 23<br />
3. Dritte Schicht: Software Diese Schicht besteht aus dem Datenbankmanagementsystem, verschiedenen<br />
Anwendungsprogrammen, wie beispielsweise Windows-Anwendungen oder Webanwendungen.<br />
Des Weiteren gehören Dienstprogramme zur Softwareschicht, die ausschließlich von Administratoren,<br />
Datenbankdesignern <strong>und</strong> Programmierern verwendet werden. Sie dienen zu Wartungsarbeiten an der<br />
Datenbank. Zu Wartungsarbeiten gehören Datensicherung <strong>und</strong> Überprüfung der Datenbank. Als letzte<br />
Software ist das Betriebssystem zu nennen. Dazu zählt das Betriebssystem des Servers <strong>und</strong> der<br />
Clientrechner<br />
4. Vierte Schicht: Personen Personen, die mit dem Datenbanksystem arbeiten, werden in verschiedene<br />
Gruppen unterteilt. Diejenigen, die nur Daten erfassen <strong>und</strong> auswerten, verwenden nur die Anwendungsprogramme.<br />
Die nächste Personengruppe besteht aus den Datenbankadministratoren. Sie verwalten<br />
das Datenbanksystem <strong>und</strong> sorgen für die fehlerfreie Funktion des Datenbanksystems. Weitere<br />
Aufgaben der Administratoren wären das zur Verfügung stellen von Speicherplatz, die Vergabe von<br />
Berechtigungen <strong>und</strong> die Anlage von Benutzern. Für die Struktur des Datenbanksystems sorgen die<br />
Datenbankdesigner <strong>und</strong> Programmierer.
24 KAPITEL 2. BEGRIFFSDEFINITIONEN
Kapitel 3<br />
Phasenmodell der<br />
Datenbankentwicklung<br />
Um die Prozesse der Systementwicklung planen, steuern <strong>und</strong> kontrollieren zu können, wird häufig ein Phasenmodell<br />
verwendet. Dieses Modell reicht von der Beschreibung der Anforderungen bis hin zur Realisierung<br />
der Datenbank <strong>und</strong> ist wichtig, um alle gestellten Ansprüche des Anwenders an die Datenbank zu berücksichtigen.<br />
Die Abarbeitung der einzelnen Schritte ist allerdings nicht bindend. Je nach Problemlage können<br />
Phasen auch mehrmals durchlaufen werden.<br />
Das Phasenmodell gliedert sich in sieben Phasen, die im folgenden Text genauer betrachtet <strong>und</strong> erläutert<br />
werden. Die folgende Abbildung 3.1 zeigt die einzelnen Phasen des Datenbankentwurfs wobei eine<br />
Vorgehensweise strikt nach diesem Schema ein Idealzustand ist, der nahezu nie so erreicht werden kann.<br />
3.1 Anforderungsanalyse<br />
Abbildung 3.1: Phasenmodell der DB-Entwicklung<br />
In der ersten Phase geht es darum, alle relevanten Informationen einzuholen, die für alle weiteren Schritte<br />
der Datenbankentwicklung wichtig sind. Alle Anforderung potentieller Datenbanknutzer <strong>und</strong> die des Auf-<br />
25
26 KAPITEL 3. PHASENMODELL DER DATENBANKENTWICKLUNG<br />
traggebers müssen berücksichtigt werden. Wichtig ist, dass nicht nur auf die Funktionalität eingegangen<br />
wird, sondern dass vor allem die Häufigkeit der Datenabfrage <strong>und</strong> deren Speicherung beachtet werden.<br />
Um genügend <strong>und</strong> vor allem aussagekräftige Informationen zu erhalten, werden die bestehenden Arbeitsprozesse<br />
<strong>und</strong> existierende Dokumente analysiert, sodass später die Erwartungen an das auf die Datenbank aufbauende<br />
Informationssystem erfüllt werden können. Eine weitere wichtige Maßnahme ist die Befragung von<br />
zukünftigen Benutzern des Systems. So kann in der Entwicklung speziell auf die Forderungen der Endnutzer<br />
eingegangen werden. Außerdem muss festgestellt werden, wo welche Daten warum gespeichert werden.<br />
Dabei ist zu beachten, wie oft Daten abgefragt oder geändert werden sollen <strong>und</strong> welche Personen das Recht<br />
haben, auf die Daten zuzugreifen <strong>und</strong> diese zu ändern.<br />
Damit die Integrität <strong>und</strong> Persistenz der Daten garantiert werden kann, ist die Einhaltung verschiedener<br />
Bedingungen wie Wertebereiche, Plausibilitäten <strong>und</strong> Abhängigkeiten von großer Bedeutung. Beispiele zum<br />
Verständnis der Begriffe: Wertebereich: Das Attribut „Alter“ darf keine negative Zahl enthalten <strong>und</strong> muss<br />
kleiner als 150 sein. Plausibilitäten: Das Geburtsjahr bei der Immatrikulation darf nicht größer sein als<br />
„das aktuelle Jahr“ – 18 (Studierende müssen volljährig sein) Anhängigkeiten: Die Steuerklasse hängt vom<br />
Familienstand ab, d.h., eine verheiratete Person darf nicht Steuerklasse I haben.<br />
Ziel dieser Phase ist eine (in)formelle Beschreibung der Problemstellung <strong>und</strong> Anforderungen muss<br />
in Form von Texten, Tabellen, Diagrammen, Formblättern etc. erstellt werden. Diese dient dann in den<br />
folgenden Phasen zur Verständigung zwischen den Beteiligten.<br />
Methoden des Requirementsmanagement <strong>und</strong> -engineering sind jedoch nicht Gegenstand dieser Lehrveranstaltung<br />
<strong>und</strong> werden auch nicht im Detail behandelt. Im Rahmen dieser Lehrveranstaltung gehen wir davon<br />
aus, dass analysierte Anforderungen bereits existieren.<br />
3.2 Konzeptioneller Entwurf<br />
In der zweiten Phase wird anhand der gesammelten Anforderungen eine erste formale Beschreibung der<br />
Informationsstruktur <strong>und</strong> Spezifikation der Datenbankinhalte erstellt. Es wird ein semantisches Entwurfsmodell<br />
entwickelt, das meist als Entity Relationship (ER) oder Enhanced Entity Relationship (EER) Modell<br />
beschrieben wird. Entity Relationship Modelle dienen dazu, Eigenschaften Objekte (Entity) <strong>und</strong> Beziehungen<br />
(Relationship) als Attribute zuzuordnen.<br />
Der konzeptionelle Entwurf gliedert sich in drei Teilphasen.<br />
• Sichtentwurf Es werden verschiedene individuelle Sichten der einzelnen Benutzer bzw. Benutzergruppen<br />
oder Fachabteilungen modelliert.<br />
• Sichtanalyse Die verschiedenen Sichten müssen auf eventuell auftretende Konflikte untersucht werden:<br />
– Namenskonflikte: Es wird zwischen zwei Begriffen unterschieden. Bei Synonymen haben verschiedene<br />
Begriffe dieselbe Bedeutung bzw. dasselbe Konzept (Bsp.: Werbung = Reklame).<br />
Bei Homonymen wird derselbe Begriff für verschiedene Konzepte benutzt (Bsp.: Tau = Seil &<br />
Niederschlag).<br />
– Wertebereichskonflikte: Unterschiedliche Wertebereiche werden für gleiche Elemente verwendet<br />
(Bsp.: Matrikelnummer wird als Zahl oder Zeichenkette festgelegt)<br />
– Bedingungskonflikte: In verschiedenen Sichten werden unterschiedliche Integritätsbedingungen<br />
angegeben (Bsp.: verschiedene Schlüssel für ein Element, also zur Erkennung des Studenten wird<br />
entweder die Matrikelnummer oder der Name <strong>und</strong> das Geburtsdatum benötigt)
3.3. VERTEILUNGSENTWURF 27<br />
– Typ- <strong>und</strong> Strukturkonflikte: Der gleiche Sachverhalte wird durch unterschiedliche Konstrukte<br />
ausgedrückt (Bsp.: Aufteilung von „Person“ in „Mann“ <strong>und</strong> „Frau“ also auch durch „Geschlecht“<br />
mit dem Datentyp {m;w} möglich)<br />
• Sichtintegration Es erfolgt die Eingliederung der Sichten in ein Gesamtschema. Dabei müssen die<br />
Konflikte, die erkannt wurden, gelöst werden, damit ein einheitliches, durchdachtes Gesamtschema<br />
entsteht.<br />
Es soll ein erstes konzeptionelles Datenbankmodell entstehen, das unabhängig vom später eingesetzten<br />
Datenbankmanagementsystem (DBMS) <strong>und</strong> <strong>und</strong> produktspezifischem Datenmodell ist.<br />
3.3 Verteilungsentwurf<br />
In der dritten Phase wird festgelegt, auf welche Art <strong>und</strong> Weise die verteilte Speicherung erfolgt, sofern<br />
Daten auf mehreren Rechnern verteilt vorliegen sollen. Hierbei wird zwischen horizontaler <strong>und</strong> vertikaler<br />
Fragmentierung unterschieden.<br />
• Eine horizontale Verteilung ist nur dann sinnvoll, wenn es möglich ist, Daten zu gruppieren. Um<br />
das zu erreichen werden die Daten einer Tabelle auf mehrere Tabellen verteilt, wobei die Struktur der<br />
Spalten erhalten bleibt.<br />
• Eine vertikale Verteilung sollte eingesetzt werden, wenn Teile einer Tabelle zwar viel Speicherplatz<br />
verbrauchen, aber nur selten abgefragt werden oder nur an einem Standort eine Abfragung der Daten<br />
erfolgen soll. Dabei verteilt man die Daten einer Tabelle auf mehrere einzelne Tabellen, jedoch ohne<br />
die Spaltenstruktur zu erhalten.<br />
Das Ziel ist die Beschreibung der Verteilung von Daten <strong>und</strong> Programmen, die auf Daten zugreifen in Form<br />
eines Verteilungsmodells.<br />
3.4 Logischer Entwurf<br />
Das Sprachmittel der vierten Phase ist das Datenmodell des ausgewählten Realisierungs-Datenbankmanagementsystems.<br />
Diese Phase erfolgt in zwei Schritten.<br />
• Transformation: Im ersten Schritt erfolgt die Abbildung vom konzeptionellen Modell ins logische<br />
Modell des Datenbankentwurfs. Es wird also das ER- oder EER-Modell in das relationale Modell<br />
übersetzt. Dieser Vorgang wird Transformation genannt. Werden die Transformationsregeln konsequent<br />
angewandt, ist die Durchführung von Schritt 2 möglicherweise nicht mehr nötig.<br />
• Normalisierung: Im zweiten Schritt wird das logische Schema verbessert. Dies erfolgt anhand von<br />
Gütekriterien um Red<strong>und</strong>anzen zu eliminieren. Dieser Schritt wird als Normalisierung bezeichnet.<br />
Es entsteht ein logisches Modell wie zum Beispiel eine Sammlung von Relationenschemata. Außerdem soll<br />
eine red<strong>und</strong>ante Speicherung minimiert, die Integrität optimiert <strong>und</strong> das Relationenmodell optimiert werden.
28 KAPITEL 3. PHASENMODELL DER DATENBANKENTWICKLUNG<br />
3.5 Entwurf<br />
In der fünften Phase wird ein internes Schema festgelegt. In diesem Schema erfolgen Angaben zu effizienten<br />
Speicherung wozu Zugriffspfade, Speicherbedarf <strong>und</strong> die Häufigkeit von Anfragen zählen. Es müssen<br />
Bearbeitungsanforderungen bezüglich Datenvolumen <strong>und</strong> Performance berücksichtigt werden.<br />
Die Durchführung erfolgt durch Festlegung der Speicherungsmerkmale wie Indizes zur Beschleunigung von<br />
Zugriffen. Es werden also verschiedene Indizes für Selektionskriterien in Suchanfragen angelegt. Dies gilt<br />
für Attribute, auf die später vermutlich öfter zugegriffen wird.<br />
3.6 Implementierung<br />
In der sechsten Phase wird das zuvor erstellte interne Schema mit Hilfe der Datenbanksprache (Data<br />
Definition Language DDL) eines konkreten Datenbankmanagementsystems angelegt <strong>und</strong> eventuell weiter<br />
optimiert. Die Indizes der vorangegangenen Phase wie auch die Sichten werden implementiert .<br />
3.7 Betrieb <strong>und</strong> Wartung<br />
In der siebten <strong>und</strong> letzten Phase wird das System in Betrieb genommen <strong>und</strong> im Folgenden unterliegt es der<br />
dauernden Wartung um Fehler zu beheben <strong>und</strong> Optimierungen <strong>und</strong> Verbesserungen durchzuführen.<br />
Zu Beginn des letzten Arbeitsschrittes wird die Datenbank mit den benötigten Daten gefüllt <strong>und</strong> diese<br />
werden während der gesamten Laufzeit geändert, abgefragt oder gelöscht. Anpassungen an geänderte<br />
Rahmenbedingungen oder Änderungswünsche des Anwenders werden ebenfalls vorgenommen. Hierzu kann<br />
es eventuell nötig sein, die Konzeption der Datenbank neu zu überdenken <strong>und</strong> die Dokumente der vorangegangenen<br />
Phasen nochmals auf ihre Korrektheit zu überprüfen oder eine komplett neue Konzeption<br />
vorzunehmen.
Kapitel 4<br />
Die Drei Ebenen Architektur<br />
In den siebziger Jahren wurden <strong>Datenbanksysteme</strong> als monolithische Systeme wie „aus einem Guss“ entwickelt.<br />
Die Aufmerksamkeit galt vielmehr nur den Eigenschaften von Datenmodellen. Hierarchie-, Netzwerk<strong>und</strong><br />
Relationenmodell wurden gegenübergestellt <strong>und</strong> es entstanden regelrechte Kontroversen unter Experten,<br />
welches Datenbankmodell optimal als Beschreibungsrahmen dienen könnte. 1975 wurde im Rahmen<br />
einer Studie des nationalen Normierungsausschuss der USA ein Modell für den prinzipiellen Aufbau einer<br />
Datenbankarchitektur entwickelt. Dieses Modell hat die Datenintegration <strong>und</strong> logische sowie physische Datenunabhängigkeit<br />
als Ziel. Es unterscheidet sich damit von der bisherigen Betrachtungsweise, da es die<br />
Vielzahl der Komponenten <strong>und</strong> ihre Beziehungen untereinander berücksichtigt. Es werden hier drei Ebenen<br />
differenziert, wodurch sich der Name Drei-Ebenen-Architektur ergab. Das Modell ist auch unter dem Namen<br />
ANSI/SPARC-Modell bekannt. ANSI steht hierbei für den Namen des entwickelnden Insitutes „American<br />
National Standards Institute“, SPARC für den Namen des Ausschusses „Standards Planning And Requirements<br />
Commitee“.<br />
Die drei Ebenen Schemaarchitektur basiert auf drei unterschiedlichen Abstraktionsebenen <strong>und</strong> den ihnen<br />
zugeordneten Schemata. Auf jeder der drei Ebenen können jeweils verschiedene Typen von Daten <strong>und</strong><br />
Schemata identifiziert werden. Insgesamt ist mit der Drei-Ebenen-Schemaarchitektur die Trennung der<br />
logischen Datenmodelle <strong>und</strong> physischen Datenmodelle möglich. Durch die Abstraktionsebenen wird die<br />
Datenunabhängigkeit ermöglicht.<br />
Die drei Ebenen des ANSI/SPARC Modells gliedern sich wie folgt: Als zentraler Kern zeigt sich die konzeptionelle<br />
Ebene, die die gemeinschaftliche Sicht beinhaltet. Individuelle Benutzersichten werden in der externen<br />
Ebene bestimmt. Um die physische Datenorganisation geht es in der internen Ebene. Konkrete Objekte werden<br />
durch die jeweilige Sprache ihrer Ebene bzw. Schnittstelle beschrieben. Man bezeichnet diese Beschreibung<br />
dann als Schema. Abbildung 4.1 zeigt den allgemeinen Aufbau der Drei-Ebenen-Schemaarchitektur.<br />
Hierbei wird vor allem in komplexen Gebilden davon ausgegangen, dass für das konzeptionelle Schema<br />
der Unternehmens(daten)architekt, für das interne Schema der Datenbank-Entwickler <strong>und</strong> für das externe<br />
Schema Anwendungs-Entwickler verantwortlich sind. Einzelne Komponenten des Datenbanksystems werden<br />
also von unterschiedlichen Rollen zur Verfügung gestellt.<br />
Durch eine einheitliche Datenbeschreibung sind typübergreifende Operationen <strong>und</strong> die Integration von Daten<br />
aus verschiedenen Datenbeständen möglich. Anwenderprogramme verschiedenster Art <strong>und</strong> Programmierweise<br />
sind damit durch Datentypkonvertierung kompatibel. Die Trennung der drei Ebenen verwirklicht logische<br />
<strong>und</strong> physische Datenunabhängigkeit. Eine höhere Ebene wird nicht durch Änderungen auf der nächst tieferen<br />
beeinflusst. Die logische Datenunabhängigkeit ergibt sich durch die Trennung der konzeptionellen von<br />
der externen Ebene. Änderungen an der Datenbankstruktur bewirken damit keine Änderungen an der externen<br />
Ebene. So müssen beispielsweise Anwenderprogramme nicht geändert oder neu übersetzt werden.<br />
Physische Datenunabhängigkeit ist durch die Trennung der internen von der konzeptionellen <strong>und</strong> externen<br />
29
30 KAPITEL 4. DIE DREI EBENEN ARCHITEKTUR<br />
Abbildung 4.1: Drei Ebenen Architektur (ANSI/SPARC)<br />
Ebene sichergestellt. Wird beispielsweise das Speichermedium geändert, so hat dies keinen Einfluss auf die<br />
Datenbankstruktur <strong>und</strong> die externe Ebene. Alle drei Ebenen müssen durch die jeweiligen Schemata definiert<br />
werden. Erst dann kann zusammen mit einem Datenbankmanagementsystem das Datenbanksystem umgesetzt<br />
werden. Die Drei-Ebenen-Architektur soll als Orientierung für Hersteller von Datenbanksoftware <strong>und</strong><br />
für Betreiber von Datenbanken dienen.<br />
4.1 Konzeptionelles Modell<br />
Die konzeptionelle Ebene ist die logische Gesamtsicht der Datenbank. In die konzeptionelle Ebene werden<br />
das ER-Modell <strong>und</strong> das Relationenmodell eingesetzt. Damit die physische Datenunabhängigkeit gewahrt<br />
bleibt, muss das konzeptionelle Schema frei von Datenstruktur- oder Zugriffsaspekten sein.<br />
Das konzeptionelle Modell enthält die systemunabhängige Datenbeschreibung. Hier werden die Daten <strong>und</strong><br />
ihre Beziehungen modelliert. Es enthält alle wichtigen Daten sowie auch Beschreibungen von Konsistenzbedingungen.<br />
Hierfür kann beispielsweise das Entity-Relationship-Modell verwendet werden. Es steht dabei<br />
nicht in direkter Beziehung zu einem konkreten Datenbanksystem <strong>und</strong> dessen Datenstruktur. Hierdurch<br />
wird Datenunabhängigkeit gewährleistet. Seine Gestaltung hängt vielmehr vom verwendeten Datenmodell<br />
<strong>und</strong> Datenbankentwurf ab. Die Daten werden als Entitäten verstanden, die repräsentativ für Objekte stehen.<br />
Auch Datenbanken, die auf mehreren Rechnern abgelegt werden, besitzen nur ein konzeptionelles Schema.<br />
Abbildung 4.2 zeigt ein ER-Modell für das durchgängige Beispiel dieser Lehrveranstaltung. Im Rahmen<br />
der Lehrveranstaltung werden wir uns immer wieder mit einem kleinen Ausschnitt der realen Welt einer<br />
Hochschule befassen, die für die gedachte Entwicklung eines Hochschulverwaltungssystems von Interesse<br />
sind.
4.2. EXTERNES MODELL 31<br />
Aus den Requirements für das Verwaltungssystem können wir entnehmen, dass die Datensätze „Studenten“,<br />
„Lehrveranstaltungen“ <strong>und</strong> „Studiengang“ festgelegt werden müssen. Der Datensatz „Studenten“ enthält<br />
unter anderem einen Namen, eine Anschrift, sowie eine Telefonnummer, der Datensatz „Lehrveranstaltungen“<br />
enthält einen Titel, einen Raum, eine Zeit <strong>und</strong> eine Semesterangabe. Der Datensatz „Studiengang“<br />
enthält eine Bezeichnung <strong>und</strong> einen Abschluss.<br />
Die Beziehungen unter den Datensätzen verhalten sich wie folgt:<br />
• Studenten studieren einen Studiengang <strong>und</strong> besuchen Lehrveranstaltungen.<br />
• Ein Studiengang besteht aus Lehrveranstaltungen.<br />
Die Eigenschaften <strong>und</strong> Beziehungen werden nun mit Hilfe des Entity-Relationship-Modells dargestellt. Ergänzt<br />
wurden hier die Matrikelnummer der Studenten sowie eine Identifikationsnummer des Studiengangs,<br />
hier „SGID“ genannt. Diese dienen später als Primär- <strong>und</strong> Fremdschlüssel.<br />
Abbildung 4.2: Konzeptionelles Modell eines Sachverhalts (ER Modell)<br />
4.2 Externes Modell<br />
Die externe Ebene umfasst alle individuellen Sichten der einzelnen Benutzer oder Benutzergruppen auf die<br />
Datenbank. Die Sichten werden jeweils einzeln in einem eigenen externen Schema beschrieben. Darin ist<br />
genau der Ausschnitt der konzeptionellen Gesamtsicht enthalten, den der Benutzer sehen möchte oder darf.<br />
Ausgehend vom konzeptionellen Schema werden die individuellen Benutzersichten entwickelt. Es wird festgelegt,<br />
welche Daten von Benutzern <strong>und</strong> Programmen gesehen <strong>und</strong> bearbeitet werden können. Jedes Anwenderprogramm<br />
kann sein eigenes externes Schema haben. Dieses stellt die jeweils relevanten Daten der
32 KAPITEL 4. DIE DREI EBENEN ARCHITEKTUR<br />
Datenbank so zur Verfügung, dass das Anwenderprogramm diese verarbeiten kann. Das externe Schema<br />
wird somit den Bedürfnissen des Anwenders bzw. des Anwendungsprogramms angepasst. Die Festlegung<br />
eines externen Schemas bringt mit sich, dass Datentypen des Anwenderprogramms auf die des Datenbanksystems<br />
abgebildet <strong>und</strong> damit konvertiert werden. So stellen unterschiedliche Programmiersprachen kein<br />
Problem dar. Anwendungsprogramme <strong>und</strong> das Datenbanksystem sind kompatibel.<br />
Da der Anwender nur die Datenobjekte einsehen kann, die in seinem externen Schema definiert sind, wird<br />
er vor der Komplexität der Datenbank abgeschirmt. Die Handhabung wird vereinfacht. Außerdem entsteht<br />
auf diese Weise ein Zugriffschutz, da er nicht auf alle Daten zugreifen <strong>und</strong> diese verändern kann. Die Drei-<br />
Ebenen-Schemaarchitektur fördert <strong>und</strong> unterstützt somit eine Robustheit gegenüber Modifikationen. Daten<br />
werden vor Manipulation <strong>und</strong> auch vor Programmierfehlern geschützt. Nutzungsrechte werden definiert.<br />
Für unser Beispiel können zwei externe Schemata definiert werden, da wir zwei unterschiedliche Benutzergruppen<br />
haben. So kann in einem externen Schema festgelegt werden, dass die Verwaltungsangestellten<br />
Zugriff auf alle Daten haben. Durch ein entsprechendes Anwendungsprogramm können sie Daten aktualisieren,<br />
löschen, neue Datensätze anlegen <strong>und</strong> Auskünfte erteilen. Das externe Schema für die Nutzung<br />
durch die Studenten darf dagegen nicht alle Daten mit einbeziehen. Hier brauchen wir ein Schema, das eine<br />
eingeschränkte Sicht auf die Daten definiert. Eine Passwortabfrage im Anwendungsprogramm könnte die<br />
Daten der Studenten vor ungewollten Modifikationen schützen. So kann jeder Student nur seine eigenen<br />
persönlichen Daten einsehen. Des Weiteren wäre vorstellbar, dass Studenten mit Hilfe des Programms eine<br />
Übersicht über besuchte Lehrveranstaltungen erhalten können.<br />
Abbildung 4.3: Externe Schemata für mögliche Anwendungsprogramme
4.3. INTERNES SCHEMA 33<br />
4.3 Internes Schema<br />
Die interne Ebene liegt dem physikalischen Speicher am nächsten, ist aber nicht mit diesem zu verwechseln.<br />
Denn die physisch gespeicherten Daten werden nicht als Seiten oder Blöcke sondern als Datensätze betrachtet.<br />
Im internen Schema sind Informationen über die Art <strong>und</strong> den Aufbau der verwendeten Datenstrukturen<br />
<strong>und</strong> spezieller Zugriffsmechanismen darauf oder über die Anordnung der Sätze im (logischen) Adressraum<br />
enthalten. Ferner wird die Lokalisierung der Daten auf den zur Verfügung stehenden Sek<strong>und</strong>ärspeichermedien<br />
geregelt.<br />
In dieser Ebene der Drei-Ebenen-Schemaarchitektur geht es darum, datentechnische Aspekte zu bestimmen.<br />
Das interne Modell repräsentiert diese Aspekte durch das physikalische Modell. Das interne Modell wird<br />
aus dem konzeptionellen Modell abgeleitet.<br />
Im konzeptionellen Modell wurden die Entitäten, ihre Beziehungen untereinander <strong>und</strong> Eigenschaften festgelegt<br />
<strong>und</strong> durch ein Entity-Relationship-Modell dargestellt. Dieses Modell einer Datenbank als Verständigung<br />
zwischen Anwender <strong>und</strong> Entwickler muss für die weitere Entwicklung des Datenbanksystems zunächst in<br />
ein logisches <strong>und</strong> dann in ein physikalisches Modell übersetzt werden. Es geht darum, die Brücke von der<br />
entwickelten Sachlogik zu den Tabellen einer Datenbank zu erschaffen.<br />
Es findet eine Zuordnung von Datentypen, Tabellen <strong>und</strong> Feldern an die Attribute der Entitäten <strong>und</strong> Klassen<br />
statt. Zudem werden Primär- <strong>und</strong> Fremdschlüssel festgelegt. Das relationale Datenbankmodell ist ein<br />
Beispiel für ein logisches Datenbankmodell. Die Entitäten <strong>und</strong> Beziehungen werden hier in einem Zwischenschritt<br />
durch Relationen dargestellt, welche sich dann in ein Tabellensystem transformieren lassen.<br />
Die Widerspruchsfreiheit <strong>und</strong> damit die Qualität der Daten wird unter Berücksichtigung der Datenkonsistenz<br />
<strong>und</strong> Datenintegrität sichergestellt. Identifikationsnummern dürfen zum Beispiel nicht doppelt vergeben<br />
werden. Durch Integritätsregeln lassen sich Fehler in der Datenbank vermeiden.<br />
Für die Definition eines internen Schemas müssen wir also zunächst das zuvor erstellte Entity-Relationship-<br />
Modell in ein Relationenmodell umwandeln. Auf diese Art erhalten wir beispielsweise für den Datensatz<br />
„Studenten“ folgendes Ergebnis 1 :<br />
Studenten(Matrikelnr, Name, Straße, PLZ, Wohnort, Telefonnr,<br />
E-Mail-Adresse, SGID → Studiengang.SGID)<br />
Um nun die Daten in einer Datenbank speichern zu können, brauchen wir SQL-Befehle. Wir müssen also<br />
das Relationenmodell in SQL-Befehle, auch Statements genannt, transformieren. Zur Definition eines<br />
Datenbankschemas werden DDL-Befehle genutzt. DDL steht für Data Definition Language. Mit dem Befehl<br />
„Create Table“ wird eine Tabelle angelegt. Der folgenden Ausdruck erstellt somit eine Tabelle mit der<br />
Bezeichnung „Studenten“ <strong>und</strong> den gewünschten Attributen 2 :<br />
CREATE TABLE Studenten (<br />
MatrNr VARCHAR(16) NOT NULL,<br />
Name VARCHAR(64),<br />
Strasse VARCHAR(64),<br />
PLZ VARCHAR(5),<br />
Telefon VARCHAR(16),<br />
EmailAdresse VARCHAR(64),<br />
SGID INT,<br />
PRIMARY KEY (MatrNr),<br />
FOREIGN KEY (SGID) REFERENCES Studiengang (SGID)<br />
1 Wie dies im Detail funktioniert, wird das Kapitel ... zeigen.<br />
2 Mehr hierzu im Kapitel ...
34 KAPITEL 4. DIE DREI EBENEN ARCHITEKTUR<br />
);<br />
Auf diese Art <strong>und</strong> Weise erstellt man nun alle weiteren Tabellen mit den entsprechenden Attributen um die<br />
physikalischen Datenstrukturen innerhalb der Datenbank anzulegen.
Teil II<br />
<strong>Datenmodellierung</strong><br />
35
Kapitel 5<br />
Einleitung<br />
Teil II des <strong>Skript</strong>s wurde von den Studenten <strong>und</strong> Studentinnen Janina Britze, Wladimir Daibert,<br />
Robert Dabrowski, Katharina Schrader, Stefanie Gramm, Anna-Karina Drews,<br />
Christina Heiden, Dan Röndigs, Eduard Schmalz <strong>und</strong> Thomas Plenius im Rahmen der<br />
Lehrveranstaltung Datenbank-gestützte Server-seitige Programmierung im Wintersemester 2010<br />
an der Fachhochschule Lübeck verfasst. Ihnen gilt besonderer Dank.<br />
In diesem Teil werden wir auf die <strong>Datenmodellierung</strong> eingehen. Es werden insbesondere die Datenmodelle des<br />
Relationenmodells <strong>und</strong> des Entitity Relationship Modells erläutert <strong>und</strong> durch Beispiele erklärt. Die beiden<br />
Modelle werden in der Vorlesung ausführlich behandelt. Als erstes wird ein allgemeiner Überblick über die<br />
<strong>Datenmodellierung</strong> gegeben. Hierbei gehen wir auf die hierarchischen Modelle <strong>und</strong> auf die Netzwerkmodelle<br />
ein. In diesem Kapitel findet außerdem ein Vergleich zwischen Relationenmodell <strong>und</strong> Entity Relationship<br />
Modell statt. Danach gehen wir auf das Relationenmodell ein. Wir zeigen kurz die Geschichte auf, geben<br />
eine Definition <strong>und</strong> zeigen die wichtigsten Bestandteile anhand eines Beispiels. Danach erklären wir die<br />
Schlüsselattribute <strong>und</strong> zeigen die Beziehungen zu Tabellen. Weiterhin gehen wir auf die Operationen <strong>und</strong><br />
mathematischen Gr<strong>und</strong>lagen ein. Zum Schluss geben wir Beispiele für SQL Befehle. Das nächste Kapitel<br />
beschäftigt sich mit dem Entity Relationship Modell, auch hier gehen wir auf die Geschichte ein <strong>und</strong> geben<br />
eine allgemeine Definition. Wir erläutern was Entitäten <strong>und</strong> Attribute sind <strong>und</strong> erklären die unterschiedlichen<br />
Beziehungen untereinander. Danach stellen wir die einzelnen Nationen dar <strong>und</strong> verdeutlichen das Modell<br />
anhand eines Beispiels.<br />
Eine Datenbank kann als eine elektronische Form eines Karteikastens bezeichnet werden, welche als Gesamtheit<br />
aller gespeicherten Daten, die für eine rechner-gestützte Bearbeitung fachlicher Informationen<br />
erforderlich sind, bezeichnet wird. Zusammen mit dem Datenbankverwaltungssystem bildet sie ein Datenbanksystem.<br />
Ein Datenbankverwaltungssystem sind Programmsysteme zur Speicherung, Bereit-stellung,<br />
Pflege <strong>und</strong> Sicherung von großen Datenbeständen bzw. Datenbanken. Aufgr<strong>und</strong> dessen sind <strong>Datenbanksysteme</strong><br />
in der heutigen Zeit die Stütze jedes größeren Softwaresystems. Ein Datenbanksystem hat im<br />
wesentlichen zwei Vorteile gegenüber einem Dateiver-waltungssystem: Auf der einen Seite wird die erhöhte<br />
Sicherheit der Daten vor Zerstörung, Verfälschung <strong>und</strong> Missbrauch <strong>und</strong> auf der anderen Seite die Möglichkeit<br />
der red<strong>und</strong>anzfreien Datenspeicherung sowie die einfachere Austauschbarkeit von Programmen <strong>und</strong><br />
Dateien garantiert. Die <strong>Datenmodellierung</strong> wird bei der Entstehung <strong>und</strong> dem Entwurf von Informationssystemen<br />
verwendet, wenn es um die Identifikation <strong>und</strong> Beschreibung der relevanten Informationsobjekte<br />
<strong>und</strong> ihrer Beziehungen geht. Unter <strong>Datenmodellierung</strong> versteht man dabei die formale Abbildung der Informationsobjekte<br />
mittels ihrer Attribute <strong>und</strong> Beziehungen. Jede Datenbank kann nach der Art Beziehungen<br />
der einzelnen Datengruppen einem Datenbankmodell zugeordnet werden. Ein Datenbankmodell ist dabei die<br />
theoretische Gr<strong>und</strong>lage für ein Datenbanksystem <strong>und</strong> bestimmt, auf welche Art <strong>und</strong> Weise Daten prinzipiell<br />
gespeichert <strong>und</strong> wie sie manipuliert werden. Historisch bedeutsam waren insbesondere das hierarchische<br />
37
38 KAPITEL 5. EINLEITUNG<br />
Datenmodell sowie das NetzwerkDatenmodell. Beide sind jedoch durch den heute de-facto Standard des<br />
relationalen Datenmodells im wesentlichen verdrängt worden.<br />
5.1 Hierarchisches Datenmodell<br />
Das hierarchische Datenbankmodell ist das älteste Datenbankmodell. Dieses bildet die Realwelt durch eine<br />
hierarchische Baumstruktur ab <strong>und</strong> speichert die Daten, die in einer 1:1-oder 1:n-Beziehung zueinander stehen.<br />
Das Modell ging aus den Informationsmanagementsystemen in den 1950er <strong>und</strong> 1960er Jahren hervor<br />
<strong>und</strong> wurden von vielen Banken <strong>und</strong> Versicherungsunternehmen eingesetzt, wo sie zum Teil noch heute zu finden<br />
sind. Eine solche Struktur lässt sich leicht modellieren <strong>und</strong> bietet effiziente Such-<strong>und</strong> Einfüge- Strategien<br />
für einzelne Themen. Verknüpfungen zwischen den Datensatzabbildern werden als Eltern-Kind-Beziehungen<br />
realisiert. Das hierarchische Modell baut auf Datensätzen (Record-Typen) auf, die zu Satz-klassen zusammengefasst<br />
werden. Die Satzexemplare einer Klasse haben gleich benannte Felder mit jeweils gleichen Datentypen.<br />
Zwischen den Satzklassen können hierarchische Beziehungen bestehen. Ein Record-Typ entspricht<br />
einem Knoten, während die 1:n-Beziehungen zwischen den Record- Typen den Kanten entsprechen.<br />
Die übergeordnete Klasse ist die Elternklasse ("Mutter" im nachfolgenden Beispiel), während die untergeordnete<br />
Klasse Kinderklasse ("Tochter" bzw. "Sohn" im nach-folgenden Beispiel) genannt wird.<br />
Ein Satz aus der Elternklasse kann mit mehreren Sätzen aus der Kinderklasse in Beziehung stehen, wobei<br />
diese Beziehung nicht benannt werden kann. Das Datenbankschema besteht daher aus einer oder mehreren<br />
Hierarchien von Satzklassen. Die Hierarchien werden immer von oben nach unten dargestellt, somit sind die<br />
Eltern- <strong>und</strong> die Kinderrolle von Satzklassen direkt erkennbar.<br />
Abbildung 5.1: Beispiel hierarchisches Datenmodell<br />
Eine Mutter kann beliebig viele Kinder haben. Jedes Kind kann wiederum eigene Kinder haben. Die Tatsache,<br />
dass ein Kind auch einen Vater hat, lässt sich jedoch in der gleichen Hierarchie nicht darstellen.<br />
Der Nachteil von hierarchischen Datenbanken ist es, dass sie nur mit einem Baum umgehen können. Verknüpfungen<br />
zwischen verschiedenen Bäumen oder über mehrere Ebenen innerhalb eines Baumes sind nicht<br />
möglich. Komplexe Strukturen sind also nicht modellierbar <strong>und</strong> somit ist der Einsatz für raumbezogene<br />
Daten nicht besonders sinnvoll. Das hierarchische Modell ist heute weitgehend von dem relationalen Datenmodell<br />
abgelöst worden.<br />
5.2 Netzwerk-Datenmodell<br />
Das Netzwerk-Datenbankmodell hat sich aus dem hierarchischen Datenbankmodell entwickelt <strong>und</strong> wurde<br />
1971 von dem Normungsausschuss CODASYL/ DBTG (Conference on Data Systems Languages & Data<br />
Base Task Group) festgelegt. Beim Netzwerkmodell kann jeder Entitätstyp mehrere Nachfolger <strong>und</strong> – im<br />
Gegensatz zum hierarchischen Modell – auch mehrere Vorgänger besitzen. Es erlaubt die Modellierung von<br />
hierarchischen <strong>und</strong> netzartigen Strukturen, d.h. es sind 1:1-, 1:n-<strong>und</strong> m:n-Beziehungen zugelassen. Zwischen
5.3. ENTITY-RELATIONSHIP MODELL UND RELATIONENMODELL 39<br />
zwei Satzklassen kann es mehrere 1:n-Beziehungen geben. Da die Beziehungstypen (auch "Set" genannt)<br />
im Netzwerkmodell benannt werden, ist es möglich, zwischen zwei Satzklassen auch mehrere Beziehungen<br />
anzugeben.<br />
Abbildung 5.2: Beispiel eines Netzwerk-Datenmodells<br />
Seine Vorteile sind die platzsparende Speicherung komplexer Strukturen <strong>und</strong> der schnelle Zugriff darauf.<br />
Dem steht als wesentlicher Nachteil die Schwerfälligkeit bei der Anpassung an geänderte Bedingungen<br />
gegenüber. Dieses Modell ist für Anwendungen geeignet, die vorhersehbar <strong>und</strong> weitgehend stabil sind, weil<br />
die Einführung neuer Datenelemente <strong>und</strong> neuer Zugriffspfade im Allgemeinen eine Neuorganisation der<br />
gesamten Datenbank bedeutet. Seit den 1990er Jahren wird es vom relationalen Datenbankmodell mehr<br />
<strong>und</strong> mehr verdrängt.<br />
5.3 Entity-Relationship Modell <strong>und</strong> Relationenmodell<br />
Relationenmodell <strong>und</strong> semantische Modellierungsansätze wie das Entity-Relationship-Modell haben heutzutage<br />
weitgehend hierarchische <strong>und</strong> Netzwerk-Datenmodelle verdrängt.<br />
Das Entity-Relationship-Modell beinhaltet eine graphische Methode der <strong>Datenmodellierung</strong>, die Ausschnitte<br />
aus der realen Welt (Unternehmensrealität) darstellen <strong>und</strong> beschreiben. Im Gegensatz zum Entity-<br />
Relationship-Modell (oder Gegenstands-Beziehungs-Modell), das ein konzeptuelles Modell darstellt, handelt<br />
es sich beim Relationenmodell, um ein logisches Datenmodell, welches dazu dient Datenstrukturen einer<br />
Klasse von Datenbanken (den sogenannten relationalen Datenbanken) zu erfassen <strong>und</strong> zu beschreiben. Dieses<br />
Modell liegt in gewisser Hinsicht eine Stufe „tiefer“ als das Entity-Relationship Modell. Es werden hier<br />
keine abstrakten Gegenstände oder Gegenstandstypen mehr betrachtet, sondern nur noch deren Umsetzung<br />
in relationale Datenstrukturen. Das Ziel der logischen <strong>Datenmodellierung</strong> ist das Anordnen der zu speichernden<br />
Informationen mit Hilfe eines Modells, das eine möglichst red<strong>und</strong>anzfreie Speicherung unterstützt<br />
<strong>und</strong> geeignete Operationen für die Datenmanipulation <strong>und</strong> -abfrage zur Verfügung stellt.<br />
Mit dem Entity-Relationship-Modell kann die gr<strong>und</strong>legende Objekt- <strong>und</strong> Beziehungsstruktur eines Sachverhalts<br />
der realen Welt für eine Datenbank strukturiert analysiert <strong>und</strong> visualisiert werden. Das Entity-<br />
Relationship-Modell kann ferner in das relationale Datenmodell mittels sogenannter Transformationsregelen<br />
strukturiert überführt werden.
40 KAPITEL 5. EINLEITUNG
Kapitel 6<br />
Das Entity-Relationship Modell<br />
Das ER-Modell ist ein abstraktes Modell, in dem Datenbestände durch abstrakte Datensätze (Entities),<br />
beliebige Beziehungen (Relationships) <strong>und</strong> Attribute modelliert werden. Dieses Modell wird hauptsächlich<br />
für den Entwurf von Datenbanken eingesetzt. Der Begriff des Entity-Relationship-Modells geht zurück auf<br />
einen gr<strong>und</strong>legenden Artikel von P.P. Chen im Jahre 1976. Seit dieser Zeit hat sich dieses Datenmodell<br />
fest im Bereich der Datenbankmodelle etabliert <strong>und</strong> wird - in abgewandelter Form- heutzutage faktisch als<br />
Standardmodell für frühe Entwurfsphasen der Datenbankentwicklung eingesetzt. Das ER-Modell basiert auf<br />
den drei Gr<strong>und</strong>konzepten Entity als zu modellierende Informationseinheit, Relationship zu Modellierung von<br />
Beziehungen zwischen Entitys <strong>und</strong> Attribut als Eigenschaft von einem Entity oder einer Beziehung.<br />
Abbildung 6.1: Modellierungsobjekte in ER-Modellen<br />
Das Entity Relationship Modell ist das bekannteste <strong>und</strong> einfachste semantische Datenmodell für die konzeptionelle<br />
Modellierung im Rahmen einer Datenbankentwicklung. Es dient dazu, Sachverhalte der realen<br />
Welt mittels eines formalen Modells abzubilden. In diesem Modell werden die relevanten Sachverhalte eines<br />
Weltausschnitts modelliert <strong>und</strong> diese in Relation zueinander gesetzt. Die Modellierung erfolgt ohne<br />
Berücksichtigung technischer Aspekte, wie sie zum Beispiel bei der Speicherung von Daten in einer Datenbank<br />
zu beachten sind. Das ERM wird in der Phase des konzeptionellen Entwurfes in einer Datenbank<br />
eingesetzt. Die semantische Modellbildung ist Standard in der konzeptionellen Modellbildungsphase der<br />
Datenbandkentwicklung. Es ist unabhängig von einem bestimmten Datenbanksystem <strong>und</strong> dient der Analyse<br />
<strong>und</strong> dem Design von Datenstrukturen. Es unterscheidet sich zum Relationenmodell durch die semantische<br />
Modellierung, d.h. die formale Erfassung eines Ausschnitts der realen Welt mittels eines Modells. Das relationale<br />
Datenmodell hingegen ist die geeignete Modellierungssprache, wenn man sich auf die Nutzung eines<br />
sogenannten relationalen Datenbanksystems festlegt.<br />
ER-Modell <strong>und</strong> Relationenmodell sind mittels Transformationsregeln systematische in einander überführbar.<br />
Dies wird im Teil III behandelt.<br />
41
42 KAPITEL 6. DAS ENTITY-RELATIONSHIP MODELL<br />
6.1 Entitäten (Objekte)<br />
Entitäten sind Objekte, die in der abzubildenden Realität zu beobachten <strong>und</strong> eindeutig identifizierbar sind.<br />
Es sind Objekte der realen oder der Vorstellungswelt, über die Informationen zu speichern sind. Auch Informationen<br />
über Ereignisse wie Bestellungen oder Prüfungen können Objekte im Sinne des ER-Modells sein.<br />
Es sind unterschiedliche Darstellungsformen in Gebrauch. Für den Entitätstyp wird meistens ein Rechteck<br />
verwendet (vgl. Abbildung 6.2), wobei der Name des Typs in das Rechteck eingetragen wird.<br />
Eine Entity ist ein physisches oder logisches Objekt der realen Welt. Eine Entity kann bspw. ein Buch, eine<br />
Person (beides physische Entities) oder etwa eine Lehrveranstaltung (logische Entity) sein.<br />
Es sind unterschiedliche Darstellungsformen in Gebrauch. Für den Entitätstyp wird meistens ein Rechteck<br />
verwendet (vgl. Abbildung 6.2).<br />
6.2 Relationen<br />
Abbildung 6.2: ERM Diagramm Elemente<br />
Entitäten können miteinander in Beziehung stehen. Dies wird durch eine Raute gekennzeichnet. Beziehungen<br />
können nur existieren, wenn Entitäten existieren. Relationen bezeichnen Beziehungen zwischen Entitäten.<br />
Das ER-Modell sieht drei Arten von Kardinalitäten prinzipiell vor.<br />
• 1:1 Kardinalitäten von Relationen bilden den Sachverhalt ab, dass eine Entität nur genau eine Beziehungen<br />
mit einer anderen Entität eingehen kann (bspw. die monogame Ehe-Relation)<br />
• 1:n (bzw. n:1) Kardinalitöten von Relationen bilden den Sachverhalt ab, dass eine Entität in eine<br />
Richtung genau eine Beziehung mit einer anderen Entität eingehen kann, in der anderen Richtung<br />
können aber beliebig viele Beziehungen eingegangen werden (bspw. die polygame Ehe-Relation wie sie<br />
bei den Mormonen praktiziert wird, ein Ehemann kann mehrere Ehefrauen haben, aber eine Ehefrau<br />
nur einen Ehemann)<br />
• m:n Kardinalitäten von Relationen schränken die Möglichkeit der Beziehungen nicht ein. In beide<br />
Richtungen können beliebig viele Beziehungen eingegangen werden (in unserem Ehe-Beispiel wäre<br />
das so etwas wie eine “wilde Ehe-Relation”).<br />
Es sind unterschiedliche Darstellungsformen in Gebrauch. Für den Relationen wird meistens eine Raute<br />
verwendet (vgl. Abbildung 6.2 <strong>und</strong> 6.1 sowie 6.4). Die Kardinalitäten werden an die Kanten links <strong>und</strong> rechts<br />
einer Relation geschrieben. Bei 1:n (n:1) Relationen hat sich ferner die sogeannte Pfeilnotation etabliert,<br />
hier wird an der Stelle an der die 1 notiert wird, ein Pfeil in Richtung auf die Entität gesetzt. Werden<br />
keine Kardinalitäten an den Kanten angeben, so bedeutet dies den allgemeinsten Fall einer m:n Relation<br />
(sie können jedoch auch die Kardinalitäten an die Kanten schreiben).
6.3. ATTRIBUTE 43<br />
6.3 Attribute<br />
(a) m:n Relation (b) 1:n Relation (c) 1:1 Relation<br />
Abbildung 6.3: Kardinalitäten von Relationen<br />
(a) m:n ER Relation (b) 1:n ER Relation<br />
(c) 1:n ER Relation (Pfeilnotation) (d) 1:1 ER Relation<br />
Abbildung 6.4: Kardinalitäten in ER-Modellen<br />
Des Weiteren können Entities <strong>und</strong> Relationen mittels Attributen beschrieben werden. Attribute können<br />
ferner als Schlüsselattribute oder als optional ausgezeichnet werden. Schlüsselattribute sollten für eine<br />
Entität eindeutig sein <strong>und</strong> pro Entitätsvorkommen nur einmal eindeutig existieren. Optionale Attribute<br />
können für Relationen oder Entitäten angegeben werden, müssen aber nicht. So hat ein Buch zum Beispiel<br />
die Attribute Erscheinungsdatum, Verlag, Titel oder Auflage.<br />
Es sind unterschiedliche Darstellungsformen in Gebrauch. Für Attribute wird meistens eine Oval verwendet<br />
(vgl. Abbildungen 6.2 <strong>und</strong> 6.1) welches mit einer Verbindungslinie an die zugehörige Entität oder Relation<br />
geb<strong>und</strong>en wird.<br />
Sollen Attribute als Schlüsselattribute ausgezeichnet werden, so hat es sich durchgesetzt, dies durch einen<br />
ausgefüllten Kreis an der Verbindungslinie zwischen Attribut <strong>und</strong> Entität/Relation zu kennzeichnen. Optionale<br />
Attribute werden durch einen nicht ausgefüllten Kreis an der Verbindungslinie gekennzeichnet (vgl.<br />
Abbildung 6.5).
44 KAPITEL 6. DAS ENTITY-RELATIONSHIP MODELL<br />
(a) Schlüsselattribute (b) Optionale Attribute<br />
Abbildung 6.5: Kennzeichnung von Schlüsselattributen <strong>und</strong> optionale Attribute<br />
6.4 Exemplarische Veranschlaulichung des ER-Modells an einem<br />
durchgehenden Beispiel<br />
Das durchgehende Beispiel wird im Rahmen der Lehrveranstaltung im Detail beschrieben. Hier ist es noch<br />
auszuarbeiten.<br />
[TBD]
Kapitel 7<br />
Das Relationale Datenmodell<br />
Das bekannteste Datenmodell ist das relationale Datenmodell. Die Prinzipien hinter dem Relationalen Datenmodell<br />
sind dabei der Kern einer jeden relationalen Datenbank. Relationale Datenbanken sind vermutlich<br />
der am meisten verwendete Datenbanktyp <strong>und</strong> werden in vielfältigen (betrieblichen) Anwendungssystemen<br />
eingesetzt. Beispielsweise folgen die folgenden (kommerziellen) Produkte den Prinzipien des relationalen<br />
Datenmodells:<br />
• Oracle Sybase<br />
• Microsoft (Access, SQL Server)<br />
• Postgres (Freeware)<br />
• IBM (DB2, Informix)<br />
• MySQL (Freeware)<br />
Die Gr<strong>und</strong>lagen der Theorie der relationalen Datenbank wurden von Edgar F. Codd in den 1960ern <strong>und</strong><br />
1970ern gelegt. Eine darauf basierende Datenbank dient zur elektronischen Datenverwaltung in Computersystemen<br />
<strong>und</strong> beruht auf dem relationalen Datenbankmodell. Die Umsetzung von der Theorie in die Praxis<br />
wurde durch System/R (IBM) <strong>und</strong> Ingres um 1975 vollzogen. Es ist bis heute trotz einiger Kritikpunkte ein<br />
etablierter Standard für Datenbanken.<br />
Das zugehörige Datenbankmanagementsystem wird als relationales Datenbankmanagementsystem oder<br />
RDBMS (Relational Database Management System) bezeichnet. Zum Abfragen <strong>und</strong> Manipulieren der Daten<br />
wird überwiegend die Datenbanksprache SQL (Structured Query Language) eingesetzt.<br />
Gr<strong>und</strong>lage des Konzeptes relationaler Datenbanken ist die Relation. Sie stellt eine mathematische Beschreibung<br />
einer Tabelle dar, die der Mengenalgebra ähnlich ist. Operationen auf diesen Relationen werden durch<br />
die relationale Algebra bestimmt. Die relationale Algebra ist somit die theoretische Gr<strong>und</strong>lage von SQL.<br />
Trotz der mathematischen, abstrakten Definition des Datenbankmodells sind relationale Datenbanken vergleichsweise<br />
einfach <strong>und</strong> flexibel zu handhaben.<br />
Das Relationenmodell bietet die wenigsten Modellierungskonstrukte. Es gibt kein explizites Konstrukt, um<br />
Beziehungen zwischen Relationen zu modellieren, diese werden über die Werte der Attribute dargestellt.<br />
45
46 KAPITEL 7. DAS RELATIONALE DATENMODELL<br />
7.1 Tabellenanalogie<br />
Eine relationale Datenbank kann man sich als eine Sammlung von Tabellen (den Relationen) vorstellen,<br />
in welchen Datensätze abgespeichert sind. Jede Zeile (Tupel) in einer Tabelle ist ein Datensatz. Jedes<br />
Tupel besteht aus einer Reihe von Attributwerten (Attribute = Eigenschaften), den Spalten der Tabelle.<br />
Das Relationenschema legt dabei die Anzahl <strong>und</strong> den Typ der Attribute für eine Relation fest. Das Bild<br />
illustriert die Relation Studenten mit Attributen MatNr (Matrikelnummer), Vorname, Nachname, LVID<br />
(Lehrveranstaltungs-ID) in den Spalten.<br />
Abbildung 7.1: Begriffserklärung Relationenmodell<br />
Zum Beispiel wird ein Student in einer Fachhochschule durch den Datensatz (MatNr, Vorname, Nachname,<br />
LVID) beschrieben. Ein Datensatz muss über einen oder mehrere Schlüssel eindeutig identifizierbar sein. In<br />
diesem Fall enthält MatNr die Schlüssel. Ein Schlüssel darf sich niemals ändern. Er bezieht sich auf den<br />
Datensatz <strong>und</strong> nicht auf die Position in der Tabelle.<br />
Abbildung 7.2: Primärschlüssel<br />
Weiterhin können Verknüpfungen genutzt werden, um die Beziehungen zwischen Tabellen auszudrücken.<br />
Eine Studentendatenbank könnte mit Primär- <strong>und</strong> Fremdschlüsseln damit etwa wie in Abbildung [] gezeigt<br />
implementiert werden:<br />
• Domäne: Eine Domäne besteht aus einem Namen D <strong>und</strong> einer Menge atomarer Werte. Ein anderer<br />
Name für Domäne ist Wertebereich. Domänen definierenden Wertebereich von Attributen.<br />
• Tupel: Ein Tupel ist eine endliche Liste, in der, wenn sie nicht leer ist, hintereinander Angaben nicht<br />
not-wendig voneinander verschiedener mathematischer Objekte stehen.Er ist also eine Liste mit n<br />
Werten t = , wobei jeder Wert di ein Element der Domäne Di, oder NULL sein<br />
muss.<br />
• Attribut: Ein Attribut A bezeichnet die Funktion, die eine Domäne D in einem Relationenschema R<br />
ausübt. Es kann auch als Abbildung der Tupel einer Relation auf den Wert des jeweiligen Tupels (für
7.2. SCHLÜSSELATTRIBUTE 47<br />
Abbildung 7.3: Fremdschlüssel<br />
dieses Attribut) verstanden werden, wobei jeder Wert di ein Element der Domäne oder NULL sein<br />
muss.<br />
• Relationenschema: Ein Relationenschema R, Schreibweise: R(A1, A2, ..., An), bezeichnet eine Menge<br />
von Attributen {A1, A2, ..., An}.<br />
• Relation: Eine Relation r ist eine Instanz (Ausprägung) des Relationenschemas R(A1, A2, ..., An).<br />
Sie ist eine Teilmenge des kartesischen Produkts (Kreuzprodukt) der beteiligten Domänen.<br />
• Relationales Datenbankschema: Ein relationales Datenbankschema ist eine Menge von Relationenschemata<br />
S = {R1, ..., Rn} zusammen mit einer Menge von Integritätsbedingungen. Eine relationale<br />
Datenbankinstanz ist die Menge {r1, ..., rn}, wobei ri Instanz von Ri ist <strong>und</strong> alle Integritätsbedingungen<br />
erfüllt sind. Eine relationale Datenbank ist ein relationales Datenbankschema mit einer<br />
entsprechenden Datenbankinstanz.<br />
7.2 Schlüsselattribute<br />
Eine wichtige Eigenschaft einer Datenbanktabelle ist Eindeutigkeit, d.h.dasskeineZeilemehrfach<br />
vorkommt, sich also nicht wiederholt. Ist die Tabelle frei von Wiederholungen, so werden die Zeilen durch<br />
die Werte von mindestens einer Spalte <strong>und</strong> von höchstens allen Spalten der Tabelle eindeutig. Spalten,<br />
die alleine für die Eindeutigkeit der ganzen Zeile sorgen, die Zeile also identifizieren, nennt man Schlüssel.<br />
Gr<strong>und</strong>sätzlich können in einer Tabelle unterschiedliche Spalten bzw. Spaltenkombi-nationen als Kandidaten<br />
zur Identifizierung der Zeilen herangezogen werden. Diejenige Spalte oder Spaltenkombination, die konkret<br />
zur Identifizierung herangezogen wird, heißt Primärschlüssel.<br />
Ein Primärschlüssel ist demnach also eine Spalte (oder eine Spaltengruppe) in einer Tabelle. Er ist alleine<br />
hinreichend dafür, dass alle Zeilen eindeutig sind. Es gibt also keine zwei gleichen Schlüsselwerte<br />
in einer Tabelle mit Primärschlüssel-spalte(n). Wird ein Schlüssel von mehr als einer Spalte repräsentiert,<br />
so spricht man auch von einem Kombinations- oder Verb<strong>und</strong>schlüssel. Jede Tabelle kann höchstens einen<br />
Primärschlüssel haben. (Eine weitere übliche Bezeichnung für Primärschlüssel ist Identifikationsschlüssel.)<br />
Beispiele für Primärschlüssel sind die Spalte Matrikelnummer in der Tabelle Studenten <strong>und</strong> LVID in Kurse.
48 KAPITEL 7. DAS RELATIONALE DATENMODELL<br />
Sek<strong>und</strong>ärschlüssel sind Spalten, über deren Werte Zeilengruppen eindeutig gekennzeichnet sind. Alle Zeilen<br />
einer Gruppe enthalten also gleiche Sek<strong>und</strong>är-schlüsselwerte. Eine Tabelle kann mehrere Sek<strong>und</strong>ärschlüsselspalten<br />
haben. Beispiel: die Spalte LVID in der Tabelle Studenten.<br />
Fremdschlüssel dienen dagegen nicht der Identifikation von Zeilen <strong>und</strong> Zeilengruppen, sondern sind Zeiger<br />
oder Verweise auf Schlüssel in anderen Tabellen. In unserem Beispiel ist LVID in Kurse ein Primärschlüssel,<br />
<strong>und</strong> LVID in Studenten verweist als Fremdschlüssel auf die entsprechenden Zeilen in der Tabelle Kurse.<br />
Abbildung 7.4: Schlüsselattribute<br />
Join-Operationen erfolgen meist über die Verknüpfung von Primär- <strong>und</strong> Fremdschlüsseln <strong>und</strong> gehören zu<br />
den sogenannten relationalen Operatoren. Zu diesen kommen wir im folgenden.<br />
7.3 Relationale Operationen<br />
Die Relationale Algebra ist ein algebraisches Modell, das beschreibt, wie Daten gespeichert, abgefragt<br />
<strong>und</strong> manipuliert werden können. Die wesentlichen Operationen, aus denen alle weiteren abgeleitet werden<br />
können, sind die folgenden:<br />
• Projektion<br />
• Selektion<br />
• Kreuzprodukt oder Kartesisches Produkt<br />
• Umbenennung<br />
• Vereinigung<br />
• Differenz<br />
Alle Anfragen, die mittels SQL an eine relationale Datenbank gestellt werden, werden vom Datenbankmanagementsystem<br />
auf diese Operatoren abgebildet, das heißt übersetzt. In der Praxis gibt es weitere Operatoren,<br />
wie zum Beispiel den Join-Operator (Verb<strong>und</strong>operator), was die beiden hintereinander ausgeführten Operationen<br />
kartesisches Produkt <strong>und</strong> Selektion bezeichnet.
7.3. RELATIONALE OPERATIONEN 49<br />
7.3.1 Projektion<br />
Durch Projektion einer Tabelle wird aus den vorhandenen Spalten ausgewählt. Das Resultat ist wiederum<br />
eine Tabelle, die im Allgemeinen weniger Spalten als die ursprüngliche hat.<br />
Im folgenden Beispiel (vgl. Abbildung 7.5) wird so aus der Tabelle Studenten mit den drei Spalten nachname,<br />
vorname <strong>und</strong> matr. Nr. durch Projektion eine Tabelle mit den beiden Spalten nachname <strong>und</strong> matr. Nr.<br />
erzeugt.<br />
Abbildung 7.5: Projektion<br />
In der Datenbanksprache SQL erfolgt die Projektions-Operation mittels des SELECT Schlüsselworts. SE-<br />
LECT leitet in SQL aber außerdem eine ganze Klasse von Ausdrücken ein, die alle eine Auswahl in einer oder<br />
mehreren verknüpften Tabellen bewirken (Query oder Abfrage), ist also sowohl das Schlüsselwort für Abfragen<br />
als auch der Name des Projektionsoperators. Die SQL-Anweisung für die im Bild gezeigte Projektion<br />
ist:<br />
SELECT nachname, matrNr<br />
FROM Studenten<br />
Wähle die Spalten nachname <strong>und</strong> matr. Nr. aus der Tabelle Personen.<br />
Die Projektion ist also die Auswahl bestimmter Attribute einer Relation, das heißt, die Projektion blendet<br />
Attribute (Spalten) aus (vgl. Abbildung 7.6).<br />
Abbildung 7.6: Projektion (allgemein)<br />
Mathematisch lässt sich dies in der Relationenalgebra wie folgt ausdrücken:<br />
Sei R eine Relation über {A1,...,Ak} <strong>und</strong> β ⊆{A1,...,Ak} dann ist die Projektion von β auf R wie folgt<br />
definiert:<br />
Πβ := {tβ|t ∈ R}<br />
tβ bezeichnet dabei die Teilmenge eines Tupels mit der in β festgelegten Attributliste. Nicht in β auftauchende<br />
Attribute werden durch die Projektionsoperation der relationalen Alegbra also ausgeblendet.
50 KAPITEL 7. DAS RELATIONALE DATENMODELL<br />
7.3.2 Selektion<br />
Selektion in einer Tabelle bewirkt die Auswahl von Zeilen. Das Resultat ist wiederum eine Tabelle, die<br />
höchstens gleich viele, in der Regel aber weniger Zeilen hat als die ursprüngliche. In der Datenbanksprache<br />
SQL erfolgt die Selektions-Operation mittels des WHERE Schlüsselworts.<br />
Im Beispiel wird so aus der vierzeiligen Tabelle Studenten durch Selektion eine Tabelle mit nur zwei Zeilen<br />
(vgl. Abbildung 7.7).<br />
Die dem Bild entsprechende SQL-Anweisung lautet:<br />
SELECT *<br />
FROM Studenten<br />
WHERE nachname LIKE ’S%’<br />
(Nachname fängt mit S an)<br />
Die Tabelle Studenten wird mit<br />
SELECT * FROM Studenten<br />
Abbildung 7.7: Selektion<br />
also erst auf sich selbst projiziert, <strong>und</strong> aus dieser Tabelle werden dann mittels WHERE diejenigen Zeilen<br />
selektiert, in denen jeweils der entsprechende Wert in der Spalte nachname mit dem Buchstaben S beginnt<br />
(LIKE ’S%’) 1<br />
Die Selektion kann also als eine Art Filter angesehen werden, denn es werden aus einer gegebenen Relation<br />
alle Tupel herausgesucht, welche der vorgegebenen Bedingung genügen. Das heißt, es werden Tupel<br />
(Zeilen) ausgeblendet. Man schreibt σAusdruck(R) oder in der linearen Schreibweise R[Ausdruck]. Ausdruck<br />
beinhaltet die logische Selektionsbedingung. Mathematisch ist dies in der Relationenalgebra wie folgt<br />
definiert:<br />
σ := {t|t ∈ R ∧ terfüllt Bedingung}<br />
Die Bedingung bezeichnet dabei eine Formel. Diese kann bestehen aus:<br />
wird.<br />
• Konstantenselektionen AttributθKonstante um Attributwerte mit Konstanten zu vergleichen. θ ist<br />
dabei ein üblicher Vergleichsoperator =, ≤,<br />
• Attributselektionen AttributθAttribut um Attributwerte mit anderen Attributwerten einer Relation<br />
zu vergleichen<br />
• Verknüpfungen von Selektionsausdrücken der obigen Art mit logischen Prädikaten UND, ODER,<br />
NICHT (∧, ∨, ¬) um komplexe logische Bedingungen formulieren zu können<br />
1 Man beachte, dass in SQL-Strings als Joker das Prozentzeichen % <strong>und</strong> nicht der sonst üblichere Asteriskus * verwendet
7.3. RELATIONALE OPERATIONEN 51<br />
7.3.3 Kartesisches Produkt <strong>und</strong> JOINS<br />
Das Resultat des Kartesischen Produkts ist die Menge aller Kombinationen der Tupel aus R <strong>und</strong> S, d.h.<br />
jede Zeile der einen Tabelle wird mit jeder Zeile der anderen Tabelle kombiniert. Wenn alle Merkmale<br />
(Spalten) verschieden sind, so umfasst die Resultatstabelle die Summe der Merkmale der Ausgangstabellen.<br />
Die Anzahl der Tupel (Zeilen) in der Resultatstabelle ist das Ergebnis der Multiplikation der Zeilenanzahlen<br />
der Ausgangstabellen (vgl. Abbildung 7.8).<br />
Abbildung 7.8: Kartesisches Produkt<br />
Mathematisch lässt sich dies in der Relationenalgebra wie folgt ausdrücken:<br />
Es seien zwei beliebige Relationen R =(a1,a2,...,an) <strong>und</strong> S =(b1,b2,...,bm) gegeben. Dann ist das<br />
karteische Produkt zweier Relationen wie folgt definiert:<br />
R × S := {(a1,...,an,b1,...,bm)|(a1,...,an) ∈ R ∧ (b1,...,bm) ∈ S}<br />
Wie sich sogenannte JOINS mittels kartesischem Produkt <strong>und</strong> Selektion ausdrücken lassen, wird in Abschnitt<br />
7.4 erläutert.<br />
7.3.4 Umbenennung<br />
Durch diese Operation können Attribute <strong>und</strong> Relationen umbenannt werden. Diese Operation ist wichtig,<br />
um kartesische Produkte über Relationen zu ermöglichen, in denen es gleiche Attributnamen gibt, insbesondere<br />
auch mit der gleichen Relation, <strong>und</strong> Mengenoperationen zwischen Relationen mit unterschiedlichen<br />
Attributen zu ermöglichen.<br />
Abbildung 7.9: Umbenennung<br />
Hierzu wird in der Relationenalgebra die Umbennungs-Operation wie folgt geschrieben:
52 KAPITEL 7. DAS RELATIONALE DATENMODELL<br />
• ρS(R) <strong>und</strong> bedeutet, dass die Relation R in S umbenannt wird.<br />
• ρ (B1,...Bn)(R) <strong>und</strong> bedeutet, dass die Attribute von R in B1,...,Bn umbenannnt werden.<br />
• Sollen nur einzelne Attribute umbenannt werden, so kann dies auch wie folgt notiert werden: ρ (neu←alt)(R)<br />
<strong>und</strong> bedeutet, dass das Attribut alt der Relation R in neu umbenannt wird. Innerhalb der Klammer<br />
können mehrere Umbenennung vorgenommen werden.<br />
• Relations- <strong>und</strong> Attributumbenennung geht auch in kombinierter Form. ρ S(B1,B2,...,Bn)(R) bedeutet,<br />
dass die Relation R in S umbenannt <strong>und</strong> deren Attribute in B1,B2,...Bn wird.<br />
Auf die genaue mathematische Definition verzichten wir an dieser Stelle, da diese für den einfachen Sachverhalt<br />
unangemessen komplex ist, <strong>und</strong> dadurch dem Verständnis kaum förderlich ist.<br />
7.3.5 Vereinigung<br />
Die Vereinigung zweier Relationen A <strong>und</strong> B ergibt die Vereinigung beider Relationen, die diejenigen Zeilen<br />
der beiden Tabellen enthält, die zumindest in einer der beiden enthalten sind (vgl. Abbildung 7.10).<br />
Nachname Vorname Geburtsdatum<br />
Mike Lise 03.06.1985<br />
Huber Karl 16.12.1980<br />
Trunstein Helga 30.07.1986<br />
A ∪ B<br />
Nachname Vorname Geburtsdatum<br />
Kelz Andreas 21.07.1965<br />
Huber Karl 16.12.1980<br />
Ernsbach Elli 29.06.1956<br />
(a) Studenten<br />
(b) Dozenten<br />
Nachname Vorname Geburtsdatum<br />
Mike Lise 03.06.1985<br />
Huber Karl 16.12.1980<br />
Trunstein Helga 30.07.1986<br />
Kelz Andreas 21.07.1965<br />
Ernsbach Elli 29.06.1956<br />
(c) Studenten ∪ Dozenten<br />
Abbildung 7.10: Beispiel einer Vereinigung<br />
In der Datenbanksprache SQL erfolgt die Vereinigungs-Operation mittels des UNION Schlüsselworts. Ein<br />
typischer SQL Ausdruck um die Relationen Studenten <strong>und</strong> Dozenten gem. Abbildung 7.10 mit einander zu<br />
vereinigen sähe wie folgt aus:<br />
SELECT * FROM Studenten<br />
UNION<br />
SELECT * FROM Dozenten<br />
Bei der Vereinigung R∪S werden alle Tupel der Relation R mit allen Tupeln der Relation S zu einer einzigen<br />
Relation vereint. Voraussetzung dafür ist, dass R <strong>und</strong> S das gleiche Relationenschema haben (weicht es nur<br />
in Reihenfolge <strong>und</strong> Attributbenennung um, kann dieses mittels der Projektions- <strong>und</strong> Umbenennungsoperation<br />
angeglichen werden). Das heißt, sie haben gleiche Attribute <strong>und</strong> Attributtypen. Duplikate werden bei<br />
der Vereinigung gelöscht.<br />
Mathematisch ist die Vereinigungsoperation in der Relationenalgebra wie folgt definiert:<br />
R ∪ S := {t|t ∈ R ∨ t ∈ S}
7.3. RELATIONALE OPERATIONEN 53<br />
7.3.6 Schnittmengenbildung<br />
Die Schnittmenge zweier Relationen A <strong>und</strong> B ergibt die Schnittmenge beider Relationen, die diejenigen<br />
Zeilen der beiden Tabellen enthält, die in beiden enthalten sind (vgl. Abbildung 7.11).<br />
Nachname Vorname Geburtsdatum<br />
Mike Lise 03.06.1985<br />
Huber Karl 16.12.1980<br />
Trunstein Helga 30.07.1986<br />
A ∩ B<br />
Nachname Vorname Geburtsdatum<br />
Kelz Andreas 21.07.1965<br />
Huber Karl 16.12.1980<br />
Ernsbach Elli 29.06.1956<br />
(a) Studenten<br />
(b) Dozenten<br />
Nachname Vorname Geburtsdatum<br />
Huber Karl 16.12.1980<br />
(c) Studenten ∩ Dozenten<br />
Abbildung 7.11: Beispiel einer Schnittmenge<br />
In der Datenbanksprache SQL erfolgt die Schnittmengen-Operation mittels des INTERSECT Schlüsselworts.<br />
Ein typischer SQL Ausdruck um die Schnittmenge zwischen Studenten <strong>und</strong> Dozenten gem. Abbildung 7.11<br />
zu bestimmen, sähe wie folgt aus:<br />
SELECT * FROM Studenten<br />
INTERSECT<br />
SELECT * FROM Dozenten<br />
Bei der Schnittmengenbildung R ∩ S werden alle Tupel die sowohl in der Relation R als auch in der<br />
Relation S vorkommen zu einer einzigen Relation vereint. Voraussetzung dafür ist, dass R <strong>und</strong> S das<br />
gleiche Relationenschema haben (weicht es nur in Reihenfolge <strong>und</strong> Attributbenennung um, kann dieses<br />
mittels der Projektions- <strong>und</strong> Umbenennungsoperation angeglichen werden).<br />
Mathematisch ist die Schnittmengenoperation in der Relationenalgebra wie folgt definiert:<br />
7.3.7 Differenz<br />
R ∩ S := {t|t ∈ R ∧ t ∈ S}<br />
Die Differenz zweier Relationen A <strong>und</strong> B sind die diejenigen Zeilen die in Tabelle A aber nicht in Tabelle B<br />
sind. (vgl. Abbildung 7.12).<br />
A/B<br />
In der Datenbanksprache SQL erfolgt die Differenz-Operation mittels des EXCEPT Schlüsselworts. Ein<br />
typischer SQL Ausdruck um die Differenzmenge zwischen Studenten <strong>und</strong> Dozenten gem. Abbildung 7.12<br />
zu bestimmen, sähe wie folgt aus:<br />
SELECT * FROM Studenten<br />
EXCEPT<br />
SELECT * FROM Dozenten
Kapitel 8<br />
Transformation <strong>und</strong> Normalisierung<br />
Transformation bezeichnet die systematische Ableitung eines relationalen Datenbankschemas aus einem<br />
konzeptionellen (ER-)Modell. Anzuwendende Transofrmationsregeln resultieren in normalisierten Relationen.<br />
Transformation ist also eine Top-Down Methode im Datenbankdesign.<br />
Normalisierung befasst sich mit der Qualität eines relationalen Datenbankschemas. Um mehrfaches Festhalten<br />
von gleichen Sachverhalten (Red<strong>und</strong>anzen) innerhalb eines Datenschemas zu vermeiden, werden<br />
Relationen normalisiert. Hier sind mehrere Normalformen bekannt. In diesem <strong>Skript</strong> wird die erste bis dritte<br />
Normalform behandelt, da diese die praxisrelevantesten sind. Würde man im Rahmen der Bottom-Up<br />
Entwicklung von Datenbanken den Normalisierungsprozess auslassen, so könnten Anomalien (Inkonsistenz<br />
von Daten) nach der Änderung von Daten im Datenbestand entstehen <strong>und</strong> es könnte unnötig Speicherplatz<br />
aufgr<strong>und</strong> red<strong>und</strong>anter Datenhaltung verbraucht werden. Im Rahmen der Normalisierung nimmt man ein<br />
gegebenes relationales Datenbankschema <strong>und</strong> überführt dieses schrittweise in die erste, zweite <strong>und</strong> dritte,<br />
usw. Normalform.<br />
8.1 Transformation<br />
Wendet man auf Basis eines gegebenen ER-Modells Transformationsregeln an, so ist sichergestellt, dass<br />
das resultierende relationale Datenbankschema der dritten Normalform genügt - also qualitativ so gestaltet<br />
ist, dass Änderungs-, Lösch- <strong>und</strong> Einfügeanomalien im Datenbankbetrieb nicht entstehen können. Ferner<br />
ist eine weitesgehend red<strong>und</strong>anzfreie Datenhaltung gewährleistet.<br />
8.1.1 Transformationsregel zur Überführung von Entities<br />
Die Entitätstypen werden als Tabelle(Relation) dargestellt, wobei die Entitätstypschlüssel später auch zu<br />
den jeweiligen Tabellenschlüsseln werden. Es werden Relationenschemata erstellt welche der Abbildungen<br />
der Objekttypen entsprechen.<br />
Gesucht werden Entity-Muster in einem ER-Modell wie sie in Abbildung 8.1 allgemein angegeben sind.<br />
Derartige Muster werden pro Muster in folgendes Relationschema überführt. Die Schlüssel werden dabei<br />
als Relationenschlüssel gekennzeichnet (unterstrichen). Die Schlüsselattribute sind Key_1,...,Key_n, die<br />
weiteren Attribute sind Attr_1, ..., Attr_n.<br />
Entity(Key_1,...,Key_n,Attr_1,...,Attr_n)<br />
55
56 KAPITEL 8. TRANSFORMATION UND NORMALISIERUNG<br />
Abbildung 8.1: Entity-Muster<br />
8.1.2 Transformationsregel zur Überführung von n:m Relationen<br />
Für jede n:m Relation eines ER-Modells muss eine zusätzliche Tabelle im Relationenmodell eingeführt<br />
werden. Diese hat den Namen der Relation wie er im ER-Modell festgelegt wurde.<br />
Gesucht werden n:m Relations-Muster in einem ER-Modell wie sie in Abbildung 8.2 allgemein angegeben<br />
sind.<br />
Abbildung 8.2: n:m Relations-Muster<br />
Derartige in Abbildung 8.2 angegebene Muster werden pro Relation in folgende Relationschema überführt.<br />
rel(<br />
)<br />
Key_E1_1->E1.Key_E1_1, ..., Key_E1_n->E1.Key_E1_n,<br />
Key_E2_1->E2.Key_E2_1, ..., Key_E2_m->E2.Key_E2_m,<br />
Attr_rel_1, ...,Attr_rel_k<br />
8.1.3 Transformationsregel zur Überführung von 1:n Relationen<br />
Liegen 1:n Relationen (oder n:1 Relationen - nur andere Lesrichtung vor) kann man sich die Ableitung einer<br />
eigenen Tabelle für die 1:n Relation sparen. Den Verweis eines Entities des Typs E1 auf ein Entity des Typs<br />
E2 kann in einem Attribut des Entities E1 untergebracht werden. Sollte die Relation Attribute haben, so<br />
werden auch diese Relationsattribute in E1 geführt. Man macht dies, um sich das Anlegen einer Tabelle zu<br />
sparen. Auch der Speicherverbrauch sinkt hierdurch.
8.2. NORMALISIERUNG 57<br />
Gesucht werden 1:n Relations-Muster in einem ER-Modell wie sie in Abbildung 8.3 allgemein angegeben<br />
sind.<br />
Abbildung 8.3: 1:n Relations-Muster<br />
Derartige in Abbildung 8.3 angegebene Muster resultieren nicht in der Ableitung einer neuen Tabelle, sondern<br />
nur in der Erweiterung der Tabelle des Entitättyps E1 (Kardinalitätseite n der 1:n Relation). Das Entity<br />
E1 wird wie in Abschnitt 8.1.1 gezeigt abgeleitet (schwarz dargestellt) <strong>und</strong> zusätzlich um die folgenden<br />
Referenzinformationen <strong>und</strong> Relationsattribute erweitert (kursiv <strong>und</strong> rot gekennzeichnet).<br />
E1(<br />
)<br />
Key_E1_1, ..., Key_E1_n,<br />
Attr_E1_1, ..., Attr_E1_l,<br />
Key_E2_1->E2.Key_E2_1, ..., Key_E2_m->E2.Key_E2_m,<br />
Attr_rel_1, ..., Attr_rel_k<br />
8.2 Normalisierung<br />
Werden Relationenschemata nicht auf Basis eines konzeptionellen Modells mittels Transformationsregeln abgeleitet,<br />
so ist Vorsicht geboten. Die so gebildeten Datenstrukturen können sogenannte Einfüge-, Änderungsoder<br />
Löschanomalien verursachen, die letztlich auf red<strong>und</strong>anter Datenspeicherung beruhen. Durch Normalisierung<br />
wird dieses Problem angegangen. Man versucht sogenannte Normalformen in seinen Datenstrukturen<br />
herzustellen.<br />
Unter Normalisierung eines relationalen Datenschemas versteht man die schrittweise Zerlegung von Relationen,<br />
um Red<strong>und</strong>anzen innerhalb des Datenschemas zu vermeiden. Die Normalisierung kommt vor allem<br />
beim Design einer relationalen Datenbank zum Einsatz. Innerhalb der relationalen Entwurfstheorie wird<br />
das konzeptionelle Schema der zu entwerfenden Datenbank auf der Gr<strong>und</strong>lage funktionaler Abhängigkeiten<br />
durch den Prozess der Normalisierung red<strong>und</strong>anzfrei <strong>und</strong> ohne Datenverlust entwickelt. Für die Normalisierung<br />
gibt es Algorithmen die automatisiert werden können. Für den Nachweis der Verlustfreiheit kann der<br />
Satz von Delobel herangezogen werden. Ohne Normalisierungsprozess läuft der Entwickler einer Datenbank
58 KAPITEL 8. TRANSFORMATION UND NORMALISIERUNG<br />
Gefahr, infolge der Datenred<strong>und</strong>anzen bei der Änderung von Daten Inkonsistenzen hervorzurufen. Diese<br />
Inkonsistenzen werden auch Anomalien genannt, die nur unnötig Speicherplatz belegen. Das relationale<br />
Datenschema wird schrittweise in die erste, zweite, dritte Normalform überführt. Damit ein relationales<br />
Datenschema in einer Normalform vorliegt, muss es die Kriterien der jeweiligen Normalform erfüllen.<br />
Bei der Normalisierung wird zunächst eine erste, dann eine sogenannte zweite <strong>und</strong> dann eine dritte Normalform<br />
auf gegebenen Relationen hergestellt (Bottom-Up). Die Normalisierung hat den Zweck, Red<strong>und</strong>anzen,<br />
mehrfaches Festhalten des gleichen Sachverhalts, zu verringern <strong>und</strong> dadurch verursachte Anomalien zu verhindern,<br />
um so die Aktualisierung einer Datenbank zu vereinfachen, sowie die Konsistenz der Daten zu<br />
gewährleisten. Normalisierung ist ein probates Mitel sogenannte monothematische Relationen zu bilden.<br />
8.2.1 Erste Normalform<br />
Jedes Attribut der Relation muss einen atomaren Wertebereich haben. (Anm.: statt „atomar“ wird auch die<br />
Bezeichnung „atomisch“ verwendet.)<br />
Das heißt, zusammengesetzte, mengenwertige oder geschachtelte Wertebereiche (relationenwertige Attributwertebereiche)<br />
sind nicht erlaubt. Damit sind auch Wiederholungsgruppen nicht zugelassen. Kurz: Kein<br />
Attributwertebereich kann in weitere (sinnvolle) Teilbereiche aufgespalten werden (Beispiel: Die Adresse<br />
darf nicht als Attribut verwendet werden, sondern muss – sofern es der zugr<strong>und</strong>e liegende Prozess erfordert<br />
– in PLZ, Ort, Straße <strong>und</strong> Hausnummer aufgeteilt werden).<br />
Dass die Relation frei von Wiederholungsgruppen sein muss, bedeutet, dass Attribute, die gleiche oder<br />
gleichartige Information enthalten, in eine andere Relation ausgelagert werden müssen.<br />
Ein Beispiel für eine Wiederholungsgruppe wäre eine Spalte Telefon, die mehrere Telefonnummern enthält.<br />
Wichtig ist anzumerken, dass zum Beispiel die Attribute {Telefon1, Telefon2, Telefon3} nicht notwendigerweise<br />
immer eine Wiederholungsgruppe bilden. Ob das der Fall ist, <strong>und</strong> man diese Attribute daher auslagert,<br />
ist eine Frage der Anforderungen an die Anwendung (siehe Alternative Formulierungen).<br />
Abfragen der Datenbank werden durch die 1NF erleichtert bzw. überhaupt erst ermöglicht, da die Attributwertebereiche<br />
atomar sind. So ist es beispielsweise in einem Feld, das einen ganzen Namensstring aus<br />
Titel, Vorname <strong>und</strong> Zuname enthält, schwierig bis unmöglich, nach Zunamen zu sortieren.<br />
CD_ID Album Jahr der Gründung Titelliste<br />
4711 Anastacia - Not That Kind 1999 {1. Not That Kind, 2. I’m Outta<br />
Love, 3. Cowboys & Kisses}<br />
4712 Pink Floyd - Wish You Were Here 1964 {1. Shine On You Crazy<br />
Diamond}<br />
4713 Anastacia - Freak of Nature 1999 {1. Paid my Dues}<br />
(a) Beispiel einer Relation, die die 1. NF verletzt<br />
CD_ID Albumtitel Interpret Jahr der Gründung Track Titelliste<br />
4711 Not That Kind Anastacia 1999 1 Not That Kind<br />
4711 Not That Kind Anastacia 1999 2 I’m Outta Love<br />
4711 Not That Kind Anastacia 1999 3 Cowboys & Kisses<br />
4712 Wish You Were Here Pink Floyd 1964 1 Shine On You Crazy<br />
Diamond<br />
4713 Freak of Nature Anastacia 1999 1 Paid my Dues<br />
Tabelle 8.1 zeigt eine Verletztung der 1. NF:<br />
(b) Überführung der Relation in eine 1. NF<br />
Tabelle 8.1: Verletzung der 1NF am Beispiel
8.2. NORMALISIERUNG 59<br />
• Das Feld Album beinhaltet die Attributwertebereiche Interpret <strong>und</strong> Albumtitel.<br />
• Das Feld Titelliste enthält eine Menge von Titeln.<br />
Dadurch hat man ohne Aufspaltung folgende Probleme bei Abfragen:<br />
• Zur Sortierung nach Albumtitel muss das Feld Album in Interpret <strong>und</strong> Albumtitel aufgeteilt werden.<br />
• Die Titel können (mit einfachen Mitteln) nur alle gleichzeitig als Titelliste oder gar nicht dargestellt<br />
werden.<br />
Die Lösung zeigt ebenfalls Tabelle 8.1. Die Attributwertebereiche werden in atomare Attributwertebereiche<br />
aufgespalten:<br />
• Das Feld Album wird in die Felder Albumtitel <strong>und</strong> Interpret gespalten.<br />
• Das Feld Titelliste wird in die Felder Track <strong>und</strong> Titel gespalten sowie auf mehrere Datensätze aufgeteilt.<br />
Da jetzt jeder Attributwertebereich atomar ist sowie die Tabelle einen eindeutigen Primärschlüssel (Verb<strong>und</strong>schlüssel<br />
aus den Spalten CD_ID <strong>und</strong> Track) besitzt, befindet sich die Relation in 1NF.<br />
8.2.2 Zweite Normalform<br />
[TBD] vgl. Wikipedia - Artikel Normalisierung<br />
8.2.3 Dritte Normalform<br />
[TBD] vgl. Wikipedia - Artikel Normalisierung
60 KAPITEL 8. TRANSFORMATION UND NORMALISIERUNG
Literaturverzeichnis<br />
[BJK11] Cornel Brücher, Frank Jüdes, Wulf Kollmann. SQL Thinking - Vom Problem zum SQL-<br />
Statement. mitp, 2011.<br />
[EN09] Ramez A. Elmasri, Shamkant B. Navathe. Gr<strong>und</strong>lagen von <strong>Datenbanksysteme</strong>n (Bachelorausgabe).<br />
Addison-Wesley in Kooperation mit Pearson Studium, wydanie 3. auflage, 2009.<br />
[Gei09] Frank Geisler. Datenbanken - Gr<strong>und</strong>lagen <strong>und</strong> Design. mitp, wydanie 3. auflage, 2009.<br />
[SZTZ09] Baron Schwartz, Peter Zaitsev, Vadim Tkachenko, Jeremey D. Zawodny. High Performance<br />
MySQL. O’Reilly, wydanie 2. auflage, 2009.<br />
[TB10] Marcus Throll, Oliver Bartosch. Einstieg in SQL. Galileo Computing, 2010.<br />
[Vet98] Max Vetter. Aufbau betrieblicher Informationssysteme. Teubner,1998.<br />
61