13.01.2013 Aufrufe

Skript: Datenbanksysteme und Datenmodellierung - Praktische ...

Skript: Datenbanksysteme und Datenmodellierung - Praktische ...

Skript: Datenbanksysteme und Datenmodellierung - Praktische ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!