datenbanken und anwendungen – eine einführung

Werbung
Department für Wissens- und Kommunikationsmanagement
Ziviltechniker Univ.Lektor
Dipl.-Ing. Dr. techn. Markus Schranz
D AT E N B A N K E N U N D A N W E N D U N G E N –
EINE EINFÜHRUNG
Oktober 2007
Department für Wissens- und Kommunikationsmanagement - Schranz / Datenbanken
2
ABSTRACT / ZUR PERSON
A BS TR AC T
Die Veranstaltung Datenbanken und Anwendungen – Eine Einführung befasst sich mit
generellen Grundsätzen der Datenverwaltung mittels speziell dafür vorgesehener
Software: Den Datenbankmanagementsystemen (DBMS). Nach Motivation und
Einführung in den Themenbereich Datenbanken werden Spezialformen des
Datenmanagements diskutiert und die historische und qualitative Entwicklung von
DBMS diskutiert. Professionelle Lösungen und Erfahrungen mit insbesondere
relationalen DBMS stehen im Mittelpunkt und konkrete Anwendungen aus dem
Wirtschaftsbereich dienen zur Veranschaulichung des Einsatzbereiches.
Die Unterlagen dienen sowohl der Einführung in das Thema DBMS als auch dem
raschen und verständlichen Überblick über die Handhabung der standardisierten
Datenbankabfragesprache
SQL,
die
den
Kernbereich
der
praktischen
Übungskomponenten bildet. Die konkrete Anwendung der Datenbanklösung wird
anhand von Fallbeispielen der Österreichischen Content-Industrie und des
Kulturmanagements demonstriert.
Z UR P ER SO N
Entnehmen Sie der folgenden tabellarischen Aufstellung einige wesentliche Stationen
aus dem Berufsleben und der Ausbildung von ZT Universitätslektor Dipl.-Ing. Dr.
techn. Markus Schranz

1988: Matura im BG Oberschützen und Beginn des Diplomstudiums

Informatik an der Technischen Universität Wien
1994: Abschluss des Diplomstudiums Informatik mit Auszeichnung und

Eintritt in den Mittelbau des Lehrkörpers TU Wien als Universitätsassistent
1998: Promotion zum Doktor der technischen Wissenschaften an der TU Wien,


seither Univ.Lektor an der TU Wien
1999: Gastprofessur (winter term) University of California in Irvine, CA, USA
1999: IT-Berater bei Ernst&Young Österreich im Bereich Software

Einführungsmanagement und Web Service Management
2000-2004: Technischer Direktor pressetext.austria
Nachrichtenagentur,
Vorstand der pressetext AG
Oktober 2007
Department für Wissens- und Kommunikationsmanagement - Schranz / Datenbanken
3



2002: Mitglied des Entwicklungsteams des Studienganges ICS, FH Eisenstadt
2003: Lektor Donau-Universität Krems
2003: Prüfung und Vereidigung zum staatlich befugten und beeideten

Ingenieurskonsulenten für Informatik (Ziviltechniker),
2004: Gründung der ZT Schranz Informationstechnologie KEG
geschäftsführender Gesellschafter mit Kunden aus dem IT News, Commerce
und Security Markt. Technische Direktion der Nachrichtenagentur pressetext
und Internet-Verantwortlicher des Kultur-Dienstleisters Culturall.
Oktober 2007
Department für Wissens- und Kommunikationsmanagement - Schranz / Datenbanken
Inhalt
Abstract...................................................................................................................2
Zur Person...............................................................................................................2
1 Einleitung
..................................................................................................................................6
1.1 Datenbanken......................................................................................................7
1.1.1 Was ist eine Datenbank............................................................................7
1.1.2 Wie speichert eine Datenbank Daten.......................................................9
1.1.3 Abfragen von Daten...............................................................................10
2 Erscheinungsformen von Datenbanken
................................................................................................................................13
2.1 Beispiele für Datenbanken – Grundlegendes...................................................13
2.2 Logische Datenbankmodelle............................................................................15
2.2.1 Das relationale Datenbankmodell..........................................................15
2.2.2 Das Objektorientierte Datenbankmodell................................................15
2.2.3 Das Hierarchische Datenbankmodell.....................................................16
2.2.4 Das Netzwerk-Datenbankmodell...........................................................17
2.2.5 Das logische Datenbankmodell..............................................................18
2.3 Literatur............................................................................................................19
3 Relationale Datenbanken
................................................................................................................................20
3.1 Tabellen und Relationen...................................................................................20
3.2 Das Entity-Relationship Diagramm.................................................................21
3.2.1 Entities, Domänen und Attribute............................................................22
3.2.2 Schlüssel.................................................................................................22
3.2.3 Definition und grafische Erstellung von Entities...................................24
3.2.4 Beziehungen bzw. Relationships............................................................26
3.2.5 Umfangreicheres Beispiel zum ER-Diagramm......................................28
3.3 Transformation von Entity-Typen in Relationsschemata.................................28
3.3.1 Transformation der m:n-Beziehung.......................................................31
3.3.2 Transformation der 1:n- bzw. n:1-Beziehung........................................33
3.3.3 Transformation der 1:1-Beziehung........................................................34
3.4 Normalformen..................................................................................................35
3.4.1 Abhängigkeiten zwischen Attributen.....................................................36
3.4.2 Anomalien..............................................................................................38
3.4.3 Normalformen........................................................................................40
Oktober 2007
4
Department für Wissens- und Kommunikationsmanagement - Schranz / Datenbanken
3.4.4 Der Weg der Normalisierung - ausführliches Beispiel...........................45
3.4.5 Vorteile und Grenzen der Normalisierung.............................................49
4 Die relationale Algebra und die Abfragesprache SQL
................................................................................................................................51
4.1 Die relationale Algebra....................................................................................51
4.1.1 Die Selektion..........................................................................................52
4.1.2 Die Projektion........................................................................................52
4.1.3 Kombination von Selektion und Projektion...........................................53
4.1.4 Der Join..................................................................................................53
4.2 Die Datenabfragesprache SQL........................................................................57
4.2.1 Anlegen, Löschen und Auswählen einer Datenbank.............................59
4.2.2 Anlegen, Ändern und Definieren einer Tabelle.....................................60
4.2.3 Eine Tabelle mit Werten füllen, leeren und löschen...............................60
4.2.4 Daten auswählen und bearbeiten............................................................61
4.2.5 Aggregatfunktionen, Berechnungen, Sortierungen................................61
4.2.6 Bestehende Datensätze verändern oder gezielt löschen.........................61
4.3 Probleme mit SQL und dem relationalen Modell............................................62
4.4 Literatur............................................................................................................63
5 Datenbanken und Applikationen
Fallstudie pressetext.austria
Nachrichtenagentur........................................................................................65
5.1 Fallstudie pressetext.austria (pte, www.pressetext.at).....................................65
5.1.1 Dienstleistungen der pressetext.austria..................................................66
5.1.2 Technische Ausrüstung..........................................................................67
5.1.3 Service Detailbeschreibungen und DB-Auslastung...............................67
5.2 Aktuelle Entwicklungen...................................................................................69
Oktober 2007
5
Department für Wissens- und Kommunikationsmanagement - Schranz / Datenbanken
6
1EINLEITUNG
Vor 100 Jahren bedeuteten große Fabriken, in denen mit großem Lärm und viel Schweiß
gewaltige Maschinen oder Maschinenteile produziert wurden, Wohlstand und Reichtum.
Man sprach vom Industriezeitalter.
Schaut man sich heute in Europa oder den USA um, so scheinen viele der großen
Fabriken verschwunden zu sein. Die riesigen Kamine, die von weitem den Fortschritt
ankündigten, sind weitgehend aus der Landschaft verbannt. An ihrer Stelle ragen heute
gewaltige Bürokomplexe in den Himmel. In den klimatisierten Räumen schwitzen die
Arbeiter auch nicht mehr, und die Geräuschquellen reduzieren sich auf
Kaffeemaschinen und Radios.
Was ist passiert?
Wir befinden uns im Informationszeitalter. Die Tätigkeit vieler Arbeitnehmer besteht
darin, Informationen zu erfassen, weiterzuverarbeiten und in gewünschter Form
wiederzugeben. Als Arbeitsgerät findet sich hauptsächlich der Computer - offensichtlich
eignet er sich zur Speicherung und Weiterverarbeitung von Daten in größeren Mengen
sehr gut.
Hier sind einige Beispiele solcher Unternehmen:
Die Post: Um effizient und preiswert transportieren zu können, werden die
Verteilzentren weitgehend automatisiert. Anhand der Ziel-Adresse eines Briefen wird er
automatisch in einen weltweit funktionierendes Verteilnetz integriert. Dieses Verteilnetz
kennt sozusagen die Adressen aller per Post erreichbaren Menschen dieser Welt.
Telekom: Informationen wie Dauer, Kosten und Telefonnummer der beiden Teilnehmer
eines jeden ausgehende Telefongespräch wird bei der Telekom gespeichert, um Ende
Monat jedem angemeldeten Haushalt eine detaillierte Rechnung zuzustellen. Bei einer
Million Apparaten mit jeweils 5 Gesprächen täglich sind dies immerhin 150 Millionen
einzelne Informationen, die auf einer Million Rechnungen korrekt erscheinen müssen!
Banken und Versicherungen müssen solche Probleme tagtäglich lösen. Solche
Unternehmen benötigen die Möglichkeit, riesige Mengen von Informationen zu
speichern und gezielt auf diese zugreifen zu können.
Oktober 2007
Department für Wissens- und Kommunikationsmanagement - Schranz / Datenbanken
7
Wir werden eine weit verbreitete Form zur Speicherung von Informationen betrachten:
Eine Datenbank. Als erstes werden ich erläutern, was eigentlich eine Datenbank ist und
wie sie im groben aufgebaut ist. Danach werden wir betrachten, in welcher Form eine
Datenbank diese Informationen speichert, und wie wir diese Informationen auch wieder
abfragen können.
1.1D ATEN BA NK EN
1.1.1W AS
IST EI NE
D ATEN BA NK
Wie es der Name bereits sagt, ist eine Datenbank eine Aufbewahrungsstelle für Daten,
auf die regelmäßig zugegriffen werden muss (im Gegensatz zu einem Archiv). Sie ist
speziell für große Mengen von Daten konzipiert - so können problemlos die
Kontoinformationen mehrerer Millionen Kunden gespeichert werden, und innerhalb
Sekunden auf die Informationen eines Kunden zugegriffen werden.
1.1.1.1Kennzeichen einer Datenbank
Von einer Datenbank, kann man dann sprechen, wenn sie zumindest die nachfolgenden
Eigenschaften auf sich vereint.
Sie enthält eine große Menge von Daten über Objekte unserer Umwelt.
Beispiel Telefonbuch: Im Telefonbuch sind die Telefonnummern und teilweise auch die
Adressdaten von einer Menschengruppe gespeichert.
Diese Daten sind nach bestimmten Merkmalen und Regeln erfasst, geordnet und
abgelegt.
Beispiel Telefonbuch: Erfassungsmerkmal einer jeden Person ist dabei der Name,
Vorname, Wohnort und Telefonnummer.
Der Zugriff auf die Daten und deren Änderung ist über vordefinierte Schnittstellen ohne
großen Aufwand für autorisierte Personen möglich.
Beispiel Telefonbuch: Sortiert sind diese dann nach Wohnort und alphabetischer
Reihenfolge, wodurch ein leichter Zugang möglich ist.
1.1.1.2Datenbankoperationen
Grundsätzlich stellt eine Datenbank folgende Operationen zur Verfügung:




Einfügen von Daten
Abfragen von Daten
Löschen von Daten
Ändern von Daten
Oktober 2007
Department für Wissens- und Kommunikationsmanagement - Schranz / Datenbanken
8
Diese vier einfachen Operationen erlauben es einem Anwender, einfach und dennoch
effizient mit der Datenbank zu arbeiten. Wie und wo Daten gespeichert werden, muss
ich als Benutzer nicht wissen. Ich muss lediglich den 'Schalter' kennen, an dem ich
Daten abgeben oder abholen kann.
1.1.1.3Datenbankkomponenten
Schaut man ein wenig genauer hin, kann man die Datenbank in zwei wesentliche Teile
aufteilen:


Die gespeicherten Daten
Ein Verwaltungsprogramm, dass den Zugriff auf diese Daten ermöglicht
Dieses Verwaltungsprogramm stellt dem Anwender einfache Funktionen zur Verfügung,
mit denen er auf die gespeicherten Daten zugreifen kann, ohne über die technischen
Eigenschaften der Daten-Speicherung informiert zu sein. Ein direktes Zugreifen auf die
gespeicherten Daten ist im Normalfall nicht möglich. Das Verwaltungsprogramm
beschreibt die Spitze des Datenbankbetriebssystems. Dahinter verbirgt sich ein
Programm, mit dessen Hilfe man seinen Datenbestand erzeugen, verändern und
auswerten kann. Solche Systeme sind z.B. das ACCESS, das DBase (veraltet) aber auch
ein Adressbuch stellt ein solches System dar, wenn es auch in seiner Funktionalität stark
eingeschränkt ist.
Die Schnittstelle zum Benutzer stellt eine Abfragesprache dar, etwa die Sprache SQL
(Structured Query Language). Mittels dieser Sprache lassen sich Datenbanken abfragen
und auswerten. Je nach Qualität und Umfang des Programms werden dabei konkrete
Kenntnisse vom Benutzer verlangt oder nicht.
Der beschriebene Aufbau einer Datenbank lässt sich recht gut mit einem Lager
vergleichen. Möchte ein Kunde etwas aus dem Lager abholen, muss er zuerst den
Lagerverwalter angeben, was er denn genau möchte. Der Verwalter kann dann die
gewünschte Ware aus dem Lager holen und dem Kunden aushändigen. Ein Lieferant,
der etwas abzugeben hat, wendet sich auch an den Verwalter. Denn nur was der
Verwalter selber eingeräumt hat, wird er später auch wieder finden.
Oktober 2007
Department für Wissens- und Kommunikationsmanagement - Schranz / Datenbanken
1.1.2W IE
SPE ICH ER T EI NE
9
D ATEN BA NK D ATEN
Doch wie fügen wir Daten in eine Datenbank ein?
Um diese Frage beantworten zu können, betrachten wir den mechanischen 'Vorgänger'
der Datenbank: Den Karteikasten. Im Beispiel nehmen wir ein Fundbüro, das verlorene
Gegenstände in eine Kartei aufnimmt. Die enthaltenen Karten besitzen alle dieselbe Art
von Informationen, sie haben die gleiche Struktur. Eine Karte mit einer Zeichnung
würde in dieser Kartei keinen Sinn ergeben. Betrachten wir eine solche Karte genauer.
Sie enthält 2 Arten von Informationen
 Die Art der Information
 Die eigentlichen Informationen
Die Art der Information ist auf allen Karten identisch, nur die eigentlichen
Informationen sind jeweils verschieden. Würden wir die Informationen aller Karten
hintereinander auf ein Blatt Papier schreiben, wäre eine Tabelle die einfachste Art, da
wir die Art der Informationen (Nummer, Art, etc.) als Spaltenbezeichnung nur einmal
schreiben müssten.
Genauso speichern wir Daten in einer Datenbank. Wir definieren zuerst eine Tabelle
und fügen die Daten dann in diese Tabelle ein.
1.1.2.1Definition einer Tabelle
Natürlich möchte die Datenbank so viel wie möglich über die zu erwartenden Daten
wissen. Was wir implizit annehmen, wenn wir eine Karteikarte lesen, müssen wir bei
der Definition der Tabelle explizit angeben. Dies Angaben bestehen aus:
 Name der Tabelle
 Namen der Attribute (Nummer, Art, etc. bezeichnet man als Attribute)
 Datentypen der Attribute
 Sind die Attribute obligatorisch
 Angabe eines Hauptschlüssels
Als Hauptschlüssel bezeichnet man ein Attribut, dessen Wert den Datensatz - die
Karteikarte - eindeutig identifiziert. Die Nummer 14556 identifiziert genau einen
Fundgegenstand, nämlich einen Schlüssel.
Bevor mit einer Datenbank gearbeitet werden kann, müssen also Tabellen definiert
werden, die dann Daten aufnehmen können. Versuchen wir doch gleich einamal eine
solche Definition zu erstellen:
1.1.2.2Sparsamkeit hat mit Faulheit nichts zu tun
Kommen wir wieder zurück zu unserem Fundbüro-Karteikasten. Ein etwas
schreibfauler Angestellter kam auf die Idee, im Feld 'Art' anstelle des Wortes 'Schlüssel'
Oktober 2007
Department für Wissens- und Kommunikationsmanagement - Schranz / Datenbanken
10
nur noch eine '1' hinzuschreiben. '2' schrieb er für einen Regenschirm und so weiter. Um
sich die Zahlen merken zu können, schrieb er sie auf eine Liste.
Nun genau das ist in einer Datenbank auch möglich. Erzeugen wir doch einfach eine
neue Tabelle mit den jeweiligen Arten eines Fundgegenstandes. Die Tabelle mit den
Fundgegenständen müssen wir nun so anpassen, dass anstelle eines Textes in Feld 'Art'
nun eine Zahl hingeschrieben werden muss. Diese Zahl bezieht sich nun auf das Feld
'Nummer' der Tabelle 'Art'. Damit sparen wir zwar keine Zeit, aber beträchtlich
Speicherplatz, denn ein Text benötigt schnell einmal zehnmal mehr Platz als eine Zahl.
Ein anderer großer Vorteil besteht darin, dass das Wort 'Schlüssel' nur einmal
geschrieben werden muss. Wenn jedes Mal 'Schlüssel' eingegeben werden muss, kann
schnell einmal ein Fehler in der Eingabe passieren. Dann finden sich plötzlich
'Schluessel', 'Schlüsel' oder 'Schl.' in der Tabelle. Das Attribut 'Art' in der Tabelle der
Fundgegenstände bezeichnen wir als Fremdschlüssel, da sich der darin enthaltene Wert
auf den Hauptschlüssel einer anderen Tabelle bezieht.
Nun wird auch klar, wieso eine Tabelle einen Hauptschlüssel braucht: Bezieht sich ein
Wert in einer Tabelle auf eine andere Tabelle, so muss klar sein, welcher Datensatz
gemeint ist.
1.1.3A BF RA GE N
VO N
D ATEN
Wichtiger als das Speichern selbst ist das gezielte Abfragen der gespeicherten Daten.
Aus der Fülle der gespeicherten Daten möchte jeder Benutzer eine individuelle Auswahl
erhalten. Dazu stellt eine Datenbank die folgenden Operationen zur Verfügung:
 Auswahl der angezeigten Felder
 Einschränkung der anzuzeigenden Einträge
 Sortieren der angezeigten Einträge
 Kombinieren von Informationen aus mehreren Tabellen
1.1.3.1Auswahl:
Diese Auswahl hat zwei wesentliche Funktionen. Einerseits kann der Benutzer nur
diejenige Information eines Eintrages anzeigen, die ihn auch wirklich interessieren.
Andererseits kann so verhindert werden, dass ein Benutzer Informationen einsieht, zu
denen er keine Berechtigung hat. So darf ein Bankangestellter die Namen und
Telefonnummern aller Angestellten abfragen, jedoch nicht deren Privatadressen oder
Lohngruppen.
1.1.3.2Einschränkung:
Eine Person, die am Bahnhof einen Schirm verloren hat, kann die Liste aller Einträge
auf diejenigen reduzieren, bei denen es um einen Schirm geht.
1.1.3.3Sortieren:
Um gezielt nach Informationen zu suchen, ist es in vielen Fällen äußerst nützlich, wenn
die angezeigten Einträge nach beliebigen Feldern sortiert werden können.
Oktober 2007
Department für Wissens- und Kommunikationsmanagement - Schranz / Datenbanken
11
1.1.3.4Kombinieren:
Da das Attribut 'Art' bei den Fundgegenständen nur noch aus einer Nummer besteht,
möchten wir stattdessen das Feld 'Bedeutung' des entsprechenden Eintrages in der
Tabelle 'Art' anzeigen.
Diese vier Operationen lassen sich beliebig kombinieren. So lassen sich komplexe
Abfragen erstellen, die exakt die gewünschten Informationen zurückliefern.
Oktober 2007
Department für Wissens- und Kommunikationsmanagement - Schranz / Datenbanken
12
Z U S A M M E N FA S S U N G
Eine Datenbank ist ein Programm, das große Mengen von Daten speichern und
verwalten kann.
Daten werden in Tabellen gespeichert.
In diese Tabellen können Einträge eingefügt, geändert, gelöscht und abgefragt werden.
Oktober 2007
Department für Wissens- und Kommunikationsmanagement - Schranz / Datenbanken
13
2ERSCHEINUNGSFORMEN VON
D AT E N B A N K E N
Dieser Abschnitt zeigt in einem Überblick die verschiedenen Erscheinungsformen von
Datenbanken auf. Neben grundlegenden Erklärungen kommen verschiedenste Modelle
der Datenverwaltung zum Einsatz, die hier gegenübergestellt werden um ein
Gesamtbild der Datenverwaltung mittels DBMS zu erlangen.
2.1B EI SP IEL E
FÜ R
DATEN BA NK EN – G RU ND LE GE ND ES
Dem Grundgedanken, Daten für die weitere Verarbeitung persistent abspeichern zu
können, wird durch verschiedenste Datenarchivierungsmodelle Rechnung getragen. Je
nach der logischen Strukturierung und der Verwaltungsmethoden in Hardware und im
Datenbankbetriebssystem unterscheidet man folgende logische Modelle
 Relational
 Objektorientiert
 Hierarchisch
 Netzwerk
 Logisch
Datenbanken treten uns im (techniknahen) Alltag häufig entgegen. Schon die Auflistung
einiger möglicher Informationssammlungen zeigt, wie häufig wir mit Datenbanken zu
tun haben:
 Adressbuch im Handy
 Kundendatenbank
 Einwohnermelderegister
 Kontobewegungsdatenbank
 Genom-Datenbank
 World Wide Web
 Domain Name System
Datenbankmanagementsysteme
(DBMS)
unterstützen
uns
dabei,
im
Verarbeitungsprozess von komplexen Datenbeständen grundlegende Begriffe und
Aufgaben voneinander zu trennen. DBMS unterscheiden:
Physischem Datenbestand
die Daten an sich. Hier finden sich die Details der Daten, ausgedrückt in entsprechenden
Oktober 2007
Department für Wissens- und Kommunikationsmanagement - Schranz / Datenbanken
Datentypen und identifizierenden Merkmalen
14
.
Logische Struktur der Daten
die Beziehung der einzelnen Detaildaten zueinander werden hier beschrieben. Hier
können zusammengehörige Datensätze gruppiert werden, Verweise auf andere Inhalte
definiert werden und/oder für die weitere Verarbeitung optimiert arrangiert werden.
Verarbeitungslogik
Für die Verarbeitung (auslesen, editieren, löschen) der Daten wird ein
Verarbeitungsmodell und Verarbeitungsoperationen benötigt. Kann die Verarbeitung
anhand eines mathematischen Modells beschrieben werden, spricht man von einer
Verarbeitungsalgebra. Dies werden wir für die relationale Algebra später genauer
behandeln.
Benutzeroberfläche
Die Art und Weise, wie der Benutzer auf die Daten zugreifen kann, wird in der
Benutzeroberfläche beschrieben. Diese kann entweder sehr systemnahe über die
Datenbankmanipulationssprache erfolgen oder über eigens dazu erstellte Software, die
die Datenbankzugriffe für den Endbenutzer in komfortable vorgefertigte
Abfragemasken abstrahiert.
Bei der Erstellung von Datenbanken (und hier ist in erster Linie der Inhalt, die Daten
selbst, gemeint, aber auch die Strukturierung der Daten für die weitere Verarbeitung)
werden oft Designhilfsmittel verwendet.
ER-Diagramme
Mithilfe der ER-Diagramme (Entity-Relationship-Diagramme) können komplexe
Zusammenhänge zwischen definierten Datenbanktabellen in einer grafischen Form
aufbereitet werden. Die Syntax (Schreibweise/Grammatik) der ER-Diagramme
behandeln
wir
detailliert
im
Abschnitt
Relationale
Datenbanken).
Softwaretools
Es existieren gemäß der fortgeschrittenen Standardisierung von bestimmten
Datenbanktypen (besonders relationalen Datenbanken) mehr und mehr SoftwareWerkzeuge, die den Erstellungs- und Strukturierungsprozess von Datenbanken
unterstützen. Solche Werkzeuge erlauben einen einfachere Manipulation der Daten
selbst, eine leichtere Verwaltung der Datenstrukturen bis hin zur Definition von
Relationen und Zusammenhänge zwischen verschiedenen Sturktureinheiten (meist
Tabellen). Einige dieser Werkzeuge werden im praktischen Teil demonstriert.
Oktober 2007
Department für Wissens- und Kommunikationsmanagement - Schranz / Datenbanken
15
2.2L OG ISCHE D ATEN BA NK MO DE LL E
2.2.1D AS
RE LATI ON AL E
D ATEN BA NK MO DE LL
Die wohl weitverbreitetste Form der Datenbanken sind heute Relationale Datenbanken.
Prinzipiell werden dabei Daten in Tabellen definiert und verwaltet. Die mathematische
Grundlage bilden dazu eine Menge an Tupeln, die in diesen Tabellen verwaltet werden
und eine mathematische Algebra zur Verbindung der Tupeln.
Identifiziert werden die Tupel aufgrund von Schlüssel, der Zugriff auf die Elemente ist
standardisiert über SQL.
Nähere Details zu dieser klar definierten und seit Jahrzehnten erfolgreich eingesetzten
Strukturierungsform im nächsten Kapitel.
2.2.2D AS O BJ EK TO RI EN TI ER TE D ATEN BA NK MO DE LL
Objektorientierte Datenbanken werden gerne im Bereich der objektorientierten
Programmierung (OOP, OO-Modelle) eingesetzt. OO-Programme beziehen sich in der
Programmverarbeitung auf Objekte, denen Attribute (Eigenschaften, Merkmale) und
Methoden (Verabreitungsanweisungen, operative Programmteile) zugeordnet werden.
Im statischen Bereich, also vor und nach dem Programmablauf eines OO-Programmes,
sind diese Objekte nicht existent, sie treten nur im dynamische Bereich, also bei der
Programmausführung in Erscheinung.
Um diese Kurzlebigkeit von Objekten auszuweiten, d.h. Daten in der OOP auch
dauerhaft verwalten zu können (abspeichern, ändern, löschen, erzeugen) und dennoch
die Vorteile der OO-Methodik zu wahren, wurde das objektorientierte Datenbankmodell
entwickelt. Objektattribute (und in manchen Ansätzen auch Methoden) werden in der
OO-DB gespeichert und verwaltet.
Manche akademische Entwicklung hat hierfür ein eigenes Datenbankkonzept
entworfen, andere halten es bei der Weisheit, das Rad nicht neu zu erfinden und
verwenden sogenannte Wrapper für relationale Datenbanken. Der Vorteil einer rein
objektorientierten Datenbank liegen bei OOP auf der Hand: Zur Datenmanipulation
wird keine 4GL-Sprache (wie SQL) für den Datenbankzugriff benötigt, hier wird
lediglich ein Datenbankobjekt verwendet und die darin enthaltenen Methoden
aufgerufen (vollkommen transparenter Zugriff auf die DB). Wenn die OO-DB nicht auf
einem relationalen Schema basiert, dann können zusätzlich Ressourcen eingespart
werden, weil keine Erstellung von dünn besetzten Tabellen erfolgt.
Als Beispiel sind die ZODB / ZEO Datenbank der ZOPE-Engine (basiert auf der WebProgrammiersprache Python) zu erwähnen oder die Datenhaltung in EJB-Servern. In
den meisten Fällen handelt es sich um persistente Storages, es werden keine
weitergehenden Funktionalitäten angeboten (Aggregatsfunktionen, stored procedures,
etc.)
Oktober 2007
Department für Wissens- und Kommunikationsmanagement - Schranz / Datenbanken
16
2.2.3D AS H IER AR CH ISC HE D ATEN BA NK MO DE LL
Hierarchische Datenbanken wurden Ende der 60er Jahre von IBM mit seiner
Entwicklung IMS/VS (1968) initiiert. Inzwischen ist IMS/VS ein stark optimiertes,
stabiles System mit einem komplexen Datenmodell und kryptischen Zugriff. Es
existieren mehrere tausend Seiten Systemliteratur dazu.
Die hierarchische Datenbankstruktur folgt einer Baumstruktur, die Navigation darin
geschieht explizit (Entlanghanteln nach der Verzweigungsform des Baumes). Pro
logischer Datenbank existiert eine Wurzel, alle Records hängen direkt oder indirekt von
den Wurzeln ab.
Ein Beispiel:
Die Zugriffssprache DL/1 (data language/one) findet sich eingebettet in COBOL, PL/1
und 370/Assembler. Die Datenein- und Ausgabe erfolgt über spezielle Variablen, die
Baumstruktur erlaubt ein Cascading Delete von abhängigen Datenblöcken.
Die Navigation erfolgt mittels expliziter Kommandos:
Gehe zu erstem Kind vom Typ Adresse
Gehe zu nächstem Kind
Suche Kind mit Strasse = "Meyerhofstr. 1"
2.2.4D AS N ET ZW ER K -D ATEN BA NK MO DE LL
Da Hierarchische Datenbanken nur Eins-zu-viele-Beziehungen (Details beim ERDiagram im nächsten Kapitel) darstellen können, wurde als Alternative das CODASYLModel (Conference on Data Systems Languages) entwickelt. Dieses Modell ist auch als
Netzwerkmodell bekannt. Die Modellierung der Realität erfolgt in Form eines
zusammenhängenden gerichteten Graphen mit Knoten und Kanten. Der einzelne EntityTyp aus dem ER-Diagramm wird als Record-Typ bezeichnet und durch einen Knoten
Oktober 2007
Department für Wissens- und Kommunikationsmanagement - Schranz / Datenbanken
17
dargestellt. Die Beziehung zwischen zwei Entity-Typen wird über die Verbindung – die
Kante – zwischen den beiden zugehörigen Knoten modelliert. Hierbei sind jedoch nur
1:n-Beziehungen möglich. Die einzelne zweistellige Beziehung wird als Set-Typ
bezeichnet, die beiden an der Beziehung beteiligten Record-Typen als Owner-Typ und
Member-Typ. Der Owner-Typ liegt hierbei auf der 1-Seite und der Member-Typ auf der
n-Seite. Das heißt, die Records des Owner-Typs können jeweils mit mehreren Records
des Member-Typs in Beziehung stehen. Der wichtige Unterschied zum Hierarchischen
Datenbankmodell ist hierbei, dass die Anzahl und die Richtung der Beziehungen beim
Netzwerkmodell frei wählbar sind. Ebenso entfällt der Wurzeleintrag. Eine m:nBeziehung kann durch die Einführung eines sogenannten Kett-Record-Typ durch zwei
1:n-Beziehungen ersetzt werden.
Wir wollen dies anhand eines Beispiels näher betrachten und versuchen dazu die
Situation in einer Bibliothek über einen Graphen darzustellen.
Ein Buch wird grundsätzlich in nur einer Bibliothek eines Biblothek-Systems geführt
(beispielsweise können Studenten der TU Wien sowohl in der TU-Bibliothek als auch in
den Instituts-Bibliotheken Bücher ausleihen). Ein Kunde kann jedoch mehrere Bücher
ausleihen und ein Buch kann von mehreren Kunden ausgeliehen werden – unter der
Voraussetzung, dass dies nicht zum selben Zeitpunkt geschieht.
Um diese Beziehung im Netzwerkmodell zu modellieren, wird ein Kett-Record-Typ
Verleih eingeführt. Hiermit kann die m:n-Beziehung zwischen Buch und Kunde durch
eine 1:n-Beziehung zwischen Buch und Verleih und einer n:1-Beziehung zwischen
Verleih und Kunde ersetzt werden. Auf der n-Seite steht also jeweils der Kett-Record
Verleih, dieser stellt somit den Member-Typen zu den beiden Owner-Typen Buch und
Kunde dar. Eventuelle Attribute der zu ersetzenden m:n-Beziehung, können vom KettRecord-Typ aufgenommen werden. Bei 1:n-Beziehungen können Attribute der
Beziehung auf der n-Seite des Record-Typs aufgenommen werden.
Einer der Vorteile dieses Datenbankmodells ist, dass die Gegebenheiten der Realität oft
recht gut erfasst. Weiterhin sind durch die netzartige Struktur schnelle Zugriffe auf die
Oktober 2007
Department für Wissens- und Kommunikationsmanagement - Schranz / Datenbanken
18
Informationen – Vermeidung langer Wege – möglich. Als Nachteil kann die aufwendige
Planung und Implementierung eines solchen Systems genannt werden. Ähnlich zum
hierarchischen Modell sind auch Netzwerkdatenbanken relativ inflexibel gegenüber
Anpassungen und Änderungen des Systems an neue Gegebenheiten.
Erste CODASYL-Normierungsbemühungen gab es gegen Ende der 60er Jahre. Die
aktuelle Implementierungen basieren auf 1978er Vorschlag. Produkte, die dieser
Netzwerkmodellierung folgen, sind DMS/100 (UNIVAC), IDMS (Cullinet Software),
DBMS (DEC) und UDS (Siemens, in Deutschland sehr erfolgreich).
2.2.5D AS
LO GI SC HE
D ATEN BA NK MO DE LL
Logische Datenbanken verwenden als Grundlage zur Datenverwaltung die direkte
Verarbeitung logischer Regeln. Die Regeln leiten Realitäten (Fakten) auf Basis von
bereits vordefinierten Fakten ab. Die Verarbeitung der Faktenbasis erfolgt etwa durch
die Datenbanksprache DATALOG (ähnlich PROLOG).
Die naschstehende Abfolge von Fakten und Regeln in DATALOG veranschaulicht die
Datenverarbeitung im logischen Datenbankmodell:
VaterVon(Hans, Otto).
VaterVon(Otto, Frank).
VaterVon(Otto, Peter).
GrossvaterVon(A, B) :- VaterVon(A,C), VaterVon(C, B).
2.3L ITERATU R
Gottfried Vossen, Kurt-Ulrich Witte (Hrsg): Entwicklungstendenzen bei
Datenbanksystemen, Oldenburg Verlag, München, 1991
PostgreSQL 7.1 User's Guide und PostgresQL 7.1 Programmer's Guide
http://www.postgresl.org/
Klaus Meyer-Wegener: Multimedia-Datenbanken: Einsatz von Datenbanktechnik in
Multimedia-Systemen, Teubner-Verlag, Stuttgart, 1991
Andrew M. Kuchling, ZODB & ZEO Introduction, http://www.amk.ca/zodb/zodbzeo.html
Oktober 2007
Department für Wissens- und Kommunikationsmanagement - Schranz / Datenbanken
19
3 R E L AT I O N A L E D AT E N B A N K E N
Das Modell der relationalen Datenbanken wurde Mitte der 80er Jahr entwickelt und
bildet seit dieser Zeit den größten Anteil an Datenbanken in der Praxis. Bei einer
relationalen Datenbank besteht die konzeptionelle Ebene, also die logische Sicht auf die
Gesamtheit aller Daten, aus einer mehr oder weniger großen Anzahl von Tabellen. Den
Aufbau der einzelnen Tabellen mit Hilfe des relationalen Datenmodells werden wir im
Verlaufe dieses Kaptitel kennen lernen.
3.1T AB EL LE N
UN D
REL ATION EN
Die Tabellen eines relationalen Datenbanksystems bestehen aus vielen Zeilen, die
jeweils die Eigenschaften zu genau einem Datensatz enthalten. Zu jeder Zeile gehört
wiederum eine festgelegte Anzahl an Zellen. Diese stehen für die einzelnen Attribute
des Entities.
Beispiel für die Tabelle Person:
PerID
Name
Vorname
Strasse
Ort
007
Bond
James
Victoria Str.
London
206
Schranz
Markus
Ringofenstr. Leopoldsdorf
345
Meyer
Brigitte
Hahnenweg
Musterdorf
In der Kopfzeile der Tabelle werden die betrachteten Eigenschaften (Attribute)
aufgelistet. Sie ist die einzige Zeile der Tabelle die ohne Änderung der TabellenDefinition zeitinvariant bleibt. Jede Zeile der Tabelle enthält dann für eine spezielle
Person die Werte dieser Attribute (Datensatz einer bestimmten Person). Das kartesische
Produkt der Wertebereiche Di der Attribute ist die Menge aller Tupel, deren erster
Eintrag ein Element aus dem Wertebereich des ersten Attributs Name ist, deren zweiter
Eintrag ein Element aus dem Wertebereich des zweiten Attributs Vorname ist, usw. Jede
einzelne Zeile der Tabelle entspricht einem solchen Tupel. Somit ist die Menge aller in
der Tabelle aufgelisteten Tupel eine Teilmenge aus dem kartesischem Produkt der
Wertebereiche der Attribute. Mathematisch betrachtet ist eine solche Teilmenge aus
einem kartesischem Produkt eine Relation r.
r D1 × D2 × . . . × Dn
Im relationalen Modell wird das vereinfachte Abbild der realen Welt in Form von
Relationen dargestellt.
Oktober 2007
Department für Wissens- und Kommunikationsmanagement - Schranz / Datenbanken
20
Jede einzelne dieser Relationen kann als Tabelle veranschaulicht werden (Relation als
Tabelle). Jede Zeile der Tabelle entspricht einem Tupel der Relation. Als Menge darf die
Relation keine zwei gleichen Elemente enthalten, es müssen sich alle Zeilen der Tabelle
in ihrer Vollständigkeit voneinander unterscheiden – Werte einzelner Attribute dürfen
(je nach Definition) mehrfach vorkommen. Daher muss es in jeder Relation ein Attribut
oder eine Attributkombination geben, wodurch jedes Tupel der Relation eindeutig
identifiziert werden kann. Jede Tabelle einer relationalen Datenbank muss somit einen
Primärschlüssel enthalten. Im obigen Beispiel ist dies der künstlich eingeführte
Schlüssel PerID.
Die Beschreibung einer Relation geschieht über ein Relationenschema R(A1, . . . ,An).
Hierbei ist R der Name der Relation und die Ai sind die unterschiedlichen Attribute.
Gemäß der Theorie der relationalen Datenbanken müssen sie elementar sein, d. h. es
sind weder zusammengesetzte noch mehrwertige Attribute zulässig. Das
Relationenschema gibt somit die Bauanleitung (Kopfzeile) der Tabelle an.
Um nun aus dem gegebenen Realwelt-Ausschnitt die Relationenschemata für die
Tabellen zu erstellen, ist das ER-Diagramm äußerst hilfreich.
3.2D AS E NT ITY -R EL ATION SH IP D IAG RA MM
Mit der zu entwickelnden Datenbank sollen Fakten eines bestimmten Ausschnitts aus
der realen Welt gespeichert und verwaltet werden können. Hierzu ist es sinnvoll, diese
„Miniwelt“ anhand eines Datenmodells zu abstrahieren, sie also derart zu vereinfachen,
dass sie in einer Datenbank speicher- und verwaltbar wird.
In den 70er Jahren wurde das Entity-Relationship-Diagramm entwickelt, um eine
grafische Darstellung des vereinfachten Realwelt-Ausschnitts zu ermöglichen. Es
besitzt die beiden Grundbestandteile Entity und Relationship, die im Weiteren näher
erläutert werden. Das ER-Diagramm hat sich als eines der wichtigsten Instrumente im
Entwurf von Datenbanksystemen durchgesetzt, weil hier ein Konzept „lesbar“ gemacht
werden kann, ohne bereits von einem bestimmten DBS abhängig zu sein –
Beschränkungen, die mit der Systemimplementierung einhergehen, entfallen. So werden
Relationen in relationalen Datenbanken als Folgen von Tupeln, im ER-Diagramm als
Mengen betrachtet. Weiterhin sind die bereits erwähnten Grundelemente mit der
umgangssprachlichen Ausdrucksweise leicht zu verbinden, so das es leicht verständlich
ist.
3.2.1E NT ITI ES , D OM ÄN EN
UN D
A TT RI BU TE
Entities sind wohlunterscheidbare Dinge der realenWelt, wie z. B. Personen, Autos,
Firmen, Schulen, Städte, Bücher. Entities besitzen Eigenschaften, die Attribute genannt
werden. Eine Person besitzt zum Beispiel einen Namen, eine Adresse, ein
Geburtsdatum, eine Augenfarbe und eine Blutgruppe. Die konkrete Ausprägung eines
Attributs nennt man Wert. Man erhält also ein konkretes Entity, indem man den
Attributen Werte zuordnet.
Oktober 2007
Department für Wissens- und Kommunikationsmanagement - Schranz / Datenbanken
21
Für die Person Markus Schranz, mit dem Geburtsdatum 19.11.1969 liegen folgende
Werte vor:
Attribut
Wert
Vorname
Markus
Die Menge aller möglichen Nachname
Schranz
oder auch zugelassener Geburtsdatum
19.11.1969
Werte für ein Attribut bildet den Wertebereich bzw. die Domäne. Beschränkt man einen
Namen auf max. 20 Zeichen, können als Domäne für das Attribut Name die Menge aller
Zeichenketten der max. Länge 20 angegeben werden. Lässt der gegebene
Realitätsausschnitt z. B. nur die Namen „Max“ , „Moritz“ , „Fritz“ und „Hans“ zu,
besteht der Wertebereich dieser Menge aus genau diesen vier Namen. Bei einer
vierstelligen positiven Identifikationsnummer beispielsweise kann als Wertebereich die
Menge der positiven ganzen Zahlen bis 9999 genommen werden.
Attribute können einwertig oder mehrwertig sein. Im Allgemeinen hat eine Person nur
einen festen Vornamen, also ist das Attribut Vorname einwertig, es nimmt also genau
einen Wert aus der zugehörigen Domäne an. Ein Dozent kann aber durchaus in mehrere
Fachbereichen unterrichten – das entsprechende Attribut Fachbereich ist also
mehrwertig.
Ein zusammengesetztes Attribut besteht aus mehreren einzelnen Attributen.
Beispielsweise besteht ein Name aus den Komponenten Vorname und Nachname. Das
konkrete Entity hat für jedes dieser Komponenten einen Wert. Der Wertebereich eines
zusammengesetzten Attributs besteht dann aus dem kartesischen Produkt der
Wertebereiche der einzelnen Komponenten.
Ein Entity-Set ist die Zusammenfassung von einzelnen zusammengehörigen Entities
wie zum Beispiel alle Personen oder Autos einer Firma, alle Schüler einer Schule, alle
Einwohner einer Stadt. Alle Entities des Sets haben somit die gleichen Attribute.
3.2.2S CH LÜ SS EL
Ein spezielles Entity eines Entity-Sets muss natürlich auch als solches über die Angabe
ausgewählter Attribute identifiziert werden können. Eine Kombination von Attributen,
deren Werte zusammengefasst ein spezielles Entity eindeutig identifizieren, wird
identifizierende Attributskombination (Superkey) genannt.
Ein Superkey kann jedoch überflüssige Attribute enthalten. Entfernt man diese, erhält
man eine minimale identifizierende Attributskombination. Diese bezeichnet man als
Schlüssel (key) oder als Schlüsselkandidat (candidate key). Bei einem Schlüssel darf
also keines der Attribute herausgenommen werden, da sonst die Fähigkeit zur
Identifizierung und somit die Schlüsseleigenschaft verloren geht. Er ist also
redundanzfrei.
Oktober 2007
Department für Wissens- und Kommunikationsmanagement - Schranz / Datenbanken
22
Es kann durchaus mehrere Schlüssel bzw. Schlüsselkandidaten geben. Der hieraus zur
tatsächlichen Verwendung ausgewählte Schlüssel wird als Primärschlüssel, alle
restlichen Schlüssel werden als Sekundärschlüssel bezeichnet. Ein Primärschlüssel
sollte nach Möglichkeit aus nur einem Attribut bestehen. (Der Grund hierfür wird im
relationalen Datenmodell und dem Prozess der Normalisierung ersichtlich werden.)
Dies ist jedoch oft nicht möglich, da Namen, Geburtstage, Straßen etc. gerade bei
größeren Anzahlen von Entities sehr schnell mehrfach vorkommen können. In diesem
Fall fügt man dem Entity-Set ein weiteres künstliches Attribut hinzu, das dann für jedes
Entity des Sets einen eigenen Wert erhält. Bekannte Beispiele sind Personalnummern,
ISBN-Nummern bei Büchern, Inventar- und Gerätenummern. Dieses neue Attribut wird
dann gleichzeitig der Primärschlüssel.
Vorname Nachname Geburtsdatum Straße
Hausnr Plz
Ort
Telefon
Brigitte
Müller
06.05.1974
Burgstraße
45
8000
Graz
0240493975
Schmitz
Hans
12.07.1953
Neuhof
13
7000
Eisenstadt
02415083671
Schmitz
Hans
25.12.1982
Weststraße 3
5000
Salzburg
0240273064
Schranz
Markus
19.11.1969
Ringofenstr 2
2333
Leopoldsdorf 0223544444
Wie leicht zu erkennen ist, kann Hans Schmitz nicht durch alleinige Angabe seines
Namen identifiziert werden. So müsste nach diesem Konzept das Geburtsdatum als
weiteres Attribut dem Primärschlüssel hinzugefügt werden. Um eine leichtere
Auffindbarkeit der Daten zu einem bestimmten Hans Schmitz erreichen zu können, wird
als weiteres Attribut die Kundennummer eingeführt, die nur einmal vergeben werden
darf und somit sicher stellt, dass über die Kundennummer eine eindeutige Zuordnung
möglich ist.
KdNr. Vorname Nachname Geburtsdatum Straße
001
Brigitte
Müller
06.05.1974
Hausnr Plz
Burgstraße 45
8000
Ort
Telefon
Graz ...
Weiterhin sind die Einträge Straße, Hausnr und Plz, Ort als zusammengesetzte Attribute
zu erkennen. Als Strukturierung dieses Entities könnte folgende Definition getroffen
werden:
Attribut
Domain
KdNr.
dreistellige ganze positive Zahl
Vorname
Zeichenkette der Länge 20
Nachname
Zeichenkette der Länge 30
Geburtsdatum
Datumformat TT.MM.JJJJ
Straße Hausnr
Zeichenkette der Länge 50
Plz Ort
Zeichenkette der Länge 50
Telefon
Zeichenkette der Länge 40
Oktober 2007
Department für Wissens- und Kommunikationsmanagement - Schranz / Datenbanken
3.2.3D EF INI TI ON
UN D GR AF ISCH E
E RS TE LL UN G
VO N
23
E NT ITI ES
Ein Entity-Set besteht aus einer Menge von Entities. Die formale Beschreibung dieser
gemeinsamen Eigenschaften kann durch den Begriff des Entity-Typs erfolgen:
Definition: Ein Entity-Typ (Entity-Deklaration) hat die Form E = ({X}, {K}). Er
besteht aus einem Namen E, einem Format X und einem Primärschlüssel K. Dieser ist
aus (einwertigen) Elementen von X zusammengesetzt. Die Elemente des Formats X
werden hierbei wie folgt notiert:
(i) Einwertige Attribute: A
(ii) Mehrwertige Attribute: {A}
(iii) Aus B1, . . . ,Bk zusammengesetzte Attribute: A(B1, . . . ,Bk)
Der Entity-Typ liefert somit eine formale Beschreibung der Eigenschaften des Sets.
Beispiel: Ein Mitarbeiter soll durch seinen Vornamen, Nachnamen, der Bereiche, in
denen er arbeitet und seiner Adresse beschrieben werden. Vor- und Nachname sind
einwertige, Bereiche ist ein mehrwertiges und die Adresse ist ein aus Straße und Ort
zusammengesetztes Attribut. Zur eindeutigen Identifikation gibt es einen künstlichen
Primärschlüssel in Form einer Personalnummer (PerNr). Wir haben folgende
Festlegung:
 E des Entity-Typs ist „Mitarbeiter“
 Format X = {PerNr, Vorname, Nachname, {Bereiche}, Adresse(Strasse,Ort)}
 Primärschlüssel K = {PerNr}
Somit ergibt sich
Mitarbeiter = ({PerNr,Vorname,Nachname,{Bereiche},Adresse(Strasse,Ort)},{PerNr})
3.2.3.1Grafische Darstellung eines Entity-Typs:
Der Name des Typs steht in einem Rechteck. Für die einzelnen Attribute werden
Ellipsen verwendet, die durch nichtgerichtete Kanten mit dem Rechteck verbunden
sind. Der Primärschlüssel wird einfach unterstrichen. Bei mehrwertigen Attributen sind
diese Ellipsen doppelt umrandet. Bei zusammengesetzten Attributen werden die
einzelnen Komponenten durch eigene Unterellipsen dargestellt.
Mit der Entity-Deklaration kann nun auch das einzelne Entity e und das Entity-Set E t
zum Zeitpunkt t formal definiert werden:
Oktober 2007
Department für Wissens- und Kommunikationsmanagement - Schranz / Datenbanken
24
Abbildung 3.1: Grafische Darstellung einer Entity
Definition: Gegeben sei eine Entity-Deklaration E = (X,K) mit X = (A1, . . . ,Am). Das
Attribut Ai habe den Wertebereich bzw. die Domäne dom(Ai) mit 1 i m.
i)
Ein Entity e ist ein Element aus dem Kartesischen Produkt aller
Wertebereiche, also e dom(A1) × . . . × dom(Am).
ii) Ein Entity-Set Et (zum Zeitpunkt t) ist eine Menge von Entities, welche K
erfüllt. D. h. derWert von K ist für jedes Entity verschieden. Also
Et dom(A1) × . . . × dom(Am).
Et ist also der Inhalt bzw. der aktuelle Wert des Typs E zur Zeit t. (Mathematisch
gesehen eine Teilmenge aus dem kartesischen Produkt der Domänen, also eine
Relation.)
Beispiel: Zu einer bestimmten Zeit t liegt folgendes Entity-Set Mitarbeiter aus 3
Mitarbeitern vor:
Mitarbeiter = {e1, e2, e3} mit
e1 = (123, „Andres“ , „Cvitkovich“ {„Entwicklung“ , „CRM“ }, („Bahnhofstr.
13“ , „5000 Salzburg“ ))
e2 = (124, „Sonja“ , „Knappitsch“ {„Redaktion“ },(„Rathausstr. 33“ , „8000
Graz“ ))
e3 = (125, „Markus“ , „Schranz“ {„Forschung“ , „Entwicklung“ }, („Am
Markt 2“ , „7000 Eisenstadt“ ))
e[A] heißt die Projektion von e auf A und liefert den Wert des Entities e für das Attribut
A.
Hier zum Beispiel:
e3[PerNr] = 125,
e3[Vorname] = „Markus“ ,
e3[Bereiche] = {„Forschung“ , „Entwicklung“ },
e3[Adresse] = („Am Markt 2“ , „7000 Eisenstadt“ ).
Oktober 2007
Department für Wissens- und Kommunikationsmanagement - Schranz / Datenbanken
25
Während der Entity-Typ nach seinem Entwurf sich im Allgemeinen nicht mehr ändert
(also zeitinvariant ist), wird das Entity-Set durch die jeweils aktuellen Attributwerte der
einzelnen Entities festgelegt. Das Set hat also einen zeitabhängigen Inhalt.
3.2.4B EZ IEH UN GE N
BZ W .
R EL ATION SHI PS
Verschiedene Entity-Sets können miteinander in Beziehung stehen. Betrachten wir
beispielsweise die Mitarbeiter, die in einer Abteilung arbeiten. Hier werden die beiden
Entity-Sets Mitarbeiter und Abteilung über die Beziehung arbeiten miteinander
verknüpft. Eine Beziehung kann ebenfalls Attribute enthalten. Für arbeiten ist
Arbeitszeit ein naheliegendes Attribut.
Im ER-Diagramm werden Beziehungen durch eine Raute dargestellt. Ein
Beziehungstyp, der genau zwei Entity-Typen E1 und E2 miteinander verknüpft, heißt
binär. Zur Modellierung der Realität sind folgende binäre Beziehungstypen
gebräuchlich:
1:1 - Beziehung:
Jedem Entity e1 aus dem Set vom Typ E1 wird höchstens ein Entity e2 aus dem Set vom
Typ E2 zugeordnet und umgekehrt wird jedem Entity e2 aus E2 höchstens ein Entity e1
aus E1 zugeordnet. Sowohl in E1 als auch in E2 kann es Entities geben, die keinen
Partner haben.
Beispiel: Die klassisch-europäische Form der Eheschließung
Entity-Set E1 Frauen und Entity-Set E2 Männer werden über die Beziehung heiraten
miteinander verknüpft. Einer einzelnen speziellen Frau e1 aus E1 wird max. ein
bestimmter Mann e2 aus E2 zugeordnet. Sowohl in E1 also auch in E2 kann es ledige
Personen geben.
Abbildung 3.2: Grafische Darstellung einer 1:1 - Beziehung
1:n oder n:1 - Beziehung:
Jedem Entity e1 aus E1 können keines, eines oder mehrere Entities e2 aus E2 zugeordnet
werden. Jedoch kann jedes Entity e2 aus E2 nur maximal einen Partner e1 aus E1 haben.
Analog: Jedes Entity e1 aus E1 kann nur maximal einen Partner e2 aus E2 haben. Jedem
Entity e2 aus E2 können keines, eines oder mehrere Entities e1 aus E1 zugeordnet werden.
Oktober 2007
Department für Wissens- und Kommunikationsmanagement - Schranz / Datenbanken
26
Abbildung 3.3: Grafische Darstellung einer 1:n oder n:1 – Beziehung
Beispiel: E1: Abteilung, E2: Mitarbeiter, Beziehung: arbeiten
In jeder Abteilung können max. mehrere Mitarbeiter arbeiten, ein Mitarbeiter kann
jedoch nur für eine Abteilung arbeiten. Je nach Betriebsstruktur kann es evtl.
Mitarbeiter geben, die keiner Abteilung zugeordnet sind und vielleicht gibt es auch
Abteilungen, in denen nur noch Maschinen arbeiten.
m:n - Beziehung:
Jedes Entity e1 aus E1 kann mit keinem, einen oder mehreren (maximal M) Entities e 2
aus E2 in Beziehung stehen und umgekehrt gilt, dass jedes Entity e2 aus E2 mit keinem,
einen oder mehreren (maximal N) Entities von e1 aus E1 in Beziehung stehen kann.
Beispiel: E1: Arzt, E2: Patient, Beziehung: behandeln
Ein Arzt kann mehrere Patienten haben und ein Patient kann von mehr als einem Arzt
behandelt werden.
Abbildung 3.4: Grafische Darstellung einer m:n – Beziehung
3.2.5U MFAN GR EI CH ER ES B EI SPI EL
ZU M
ER-D IAG RA MM
Es sollen folgende Begebenheiten in einer Hochschule festgehalten werden:
 eine Vorlesung hat die Attribute VorlNr (Primärschlüssel), SWS und Titel
 Studenten haben die Eigenschaften MatrNr (Primärschlüssel), Name und Sem
 ein Angestellter hat die Attribute PersNr (Primärschlüssel) und Name
 ein Professor ist ein Angestellter mit den Eigenschaften Rang und Raum
 ein Assistent ist ein Angestellter mit dem Attribut Fachgebiet
 1 Professor hält keine bis mehrere Vorlesungen und prüft keine bis mehrere


Studenten bezüglich keiner bis mehrere Vorlesungen
je Prüfung wird eine Note als Eigenschaft zugewiesen
ein Student hört keine bis mehrere Vorlesungen und wird in keiner bis


mehreren Vorlesungen von keinem bis mehreren Professoren geprüft
ein Assitent arbeitet für einen Professor
einem Professor sind kein bis mehrere Assistenten zugeteilt
Oktober 2007
Department für Wissens- und Kommunikationsmanagement - Schranz / Datenbanken
27
Daraus ergeben sich die nachstehenden Entity-Festlegungen:
Vorlesung = ({VorlNr, SWS, Titel}, {VorlNr})
Studenten = ({MatrNr,Name, Sem}, {MatrNr})
Angestellte = ({PersNr,Name}, {PersNr})
Assistenten = ({PersNr,Name, Fachgebiet}, {PersNr})
Professoren = ({PersNr,Name,Rang,Raum}, {PersNr})
3.3T RA NS FO RMATI ON
VON
ENT ITY -T YP EN
IN
REL ATION SS CH EMATA
Jeder Entity-Typ wird in (mindestens) ein eigenes Relationenschema transformiert.
Diesen Vorgang wollen wir uns am Beispiel einer Person näher anschauen.
Gegeben sei folgender Entity-Typ:
Person = ({PerID, Name, Vorname, Adresse(Strasse,Ort)}, {PerID})
Hier stellt die PerID den Primärschlüssel dar. Aufgrund der Forderung nach
elementaren Attributen sollte das zusammengesetzte Attribut Adresse durch seine
Einzelattribute Strasse und Ort ersetzt werden. Weiterhin ist es üblich, den Namen des
Relationenschemas und der Tabelle gleich oder ähnlich dem Namen des Entity-Typs zu
wählen. Der Primärschlüssel wird ganz links aufgelistet und unterstrichen. Dies ergibt
folgendes Relationenschema Person:
R(A1, . . . ,An) entspricht hier Person(PerID, Name, Vorname, Strasse, Ort)
oder
Person
PerID
Name
Vorname
Strasse
Ort
…
Dieses Beispiel wollen wir weiter verfeinern. Die obig beschriebene Person sei nun
ein(e) DozentIn.
Oktober 2007
Department für Wissens- und Kommunikationsmanagement - Schranz / Datenbanken
28
Dozent = ({DozID,Name, Vorname, Adresse(Strasse,Ort), {Bereich}}, {DozID})
Man kann versuchen, das Problem des mehrwertigen Attributs Bereich über die
Einführung eines zweiten Relationenschemas – also einer zweiten Tabelle Fachbereiche
für die konkreten Entities – zu lösen.
Dozent
DozID
Name
Vorname
Strasse
Ort
...
Fachbereiche
DozID
Bereich
...
Bereich wurde also aus dem ersten Schema hinausgenommen und in Form des zweiten
Schemas Fachbereich verarbeitet. So könnte es zu folgenden konkreten Tabellen
kommen:
Tabelle Dozent:
DozID
Name Vorname Straße Ort
001
Schahram Dustdar . . . . . .
002
Markus Schranz . . . . . .
003
............
Tabelle Fachbereich:
DozID
Bereich
001
Rechnernetzwerke
001
Einführung in die Datenverarbeitung
001
...
002
Algorithmen und Datenstrukturen
002
Web Service Engineering
002
PERL-Programmierung
002
Internet Services
003
...
Die Verbindung zwischen beiden Tabellen wird über den Primärschlüssel DozID aus der
Tabelle Dozent hergestellt. DozID ist in der Tabelle Fachbereich ein so genannter
Fremdschlüssel. Durch gemeinsame Schlüssel werden Tabellen miteinander verknüpft.
Da ein Dozent mehrere Fachbereiche haben kann, wird der Fremdschlüssel mehrmals
aufgelistet. Daher ist eine eindeutige Unterscheidung der einzelnen Tupel der Tabelle
Fachbereich nur über die Angabe der beiden Attribute DozID und Bereich möglich. Das
heißt der eigentliche Primärschlüssel für die Identifikation eines Datensatzes aus der
Tabelle Fachbereich besteht aus der Kombination dieser beiden Attribute.
Oktober 2007
Department für Wissens- und Kommunikationsmanagement - Schranz / Datenbanken
29
Jeder in Fachbereich aufgelistete Bereich soll einem Dozenten in der Tabelle Dozent
zugeordnet werden können. Daher kann der Fremdschlüssel DozID in Fachbereich nur
solche Werte annehmen, die auch als Wert für den Primärschlüssel DozID in der Tabelle
Dozent vorkommen. Somit bilden die Werte für DozID in der Tabelle Fachbereich eine
Teilmenge der Werte für DozID in der Tabelle Dozent.
Wir definieren:
Fachbereich[DozID] Dozent[DozID]
Die Werte des Fremdschlüssels DozID in Fachbereich sind also in gewisser Weise
abhängig von den Werten des Primärschlüssels DozID in Dozent. Die obige Definition
besagt, dass alle konkreten Ausprägungen des Attributs DozID der Relation (Tabelle)
Fachbereich in der Menge der konkreten Ausprägungen desselben Attributs der
Relation Dozent enthalten sein müssen. Es dürfen demnach keine Einträge in
Fachbereich für die DozID vorhanden sein, die nicht ebenfalls in der Relation Dozent
vorkommen. Würde dies trotzdem geschehen, so wären die Integritätsbedingungen
verletzt und es stehen „unsinnige/fehlerhafte“ Einträge in unserer Relation Fachbereich.
Allgemein formuliert: Der Wert eines Fremdschlüssels muss immer als Wert im
zugehörigen Primärschlüssel vorkommen. Wir haben es also hier mit einer
Abhängigkeit zwischen zwei Relationenschemata zu tun. Eine semantische Bedingung,
die zwischen mehreren Relationen gilt, wird auch als referentielle Integrität
bezeichnet. Es kann sich jedoch folgendes Problem ergeben: Bereiche, die mehrere
Dozenten gemeinsam unterrichten, würden in der Tabelle Fachbereiche wiederholt
aufgelistet werden. Das bedeutet unnötige Redundanz und die Gefahr von
Schreibfehlern – es könnten demnach Inkonsistenzen entstehen, die wir vermeiden
wollen. Um dieses Problem zu lösen, ist es ratsam, das ursprünglich mehrwertige
Attribut Bereich als eigenes Entity und den gegebenen Tatbestand mit der m:nBeziehung „Dozent lehrt Bereich“ oder „Dozent erteilt Kurs“ zu modellieren. Wie dies
genau umgesetzt werden kann, wird im nächsten Unterkapitel beschrieben.
3.3.1T RA NS FO RM ATION
DE R M : N -B EZ IEH UN G
Die m:n-Beziehung stellt den allgemeinen Fall dar. Dies soll an einem Beispiel
verdeutlicht werden. Ein Arzt kann mehrere Patienten behandeln und ein Patient kann
von mehreren Ärzten behandelt werden.
Arzt = ({ArztID,Name}, {ArztID})
Patient = ({PatientID,Name}, {PatientID})
Relation: behandeln mit Attribut Termin
Für die beiden Entity-Typen Arzt und Patient wird jeweils ein Relationenschema
benötigt:
Arzt
ArztID
Name
Oktober 2007
Department für Wissens- und Kommunikationsmanagement - Schranz / Datenbanken
30
...
Patient
PatientID
Name
...
Die eigentliche Beziehung wird dann durch ein weiteres Relationenschema mit dem
Namen Behandeln beschrieben:
Behandeln
ArztID
PatientID
Termin
...
ArztID und PatientID sind Fremdschlüssel im Schema Behandeln. Die Kombination
dieser beiden Attribute ergibt den Primärschlüssel der neuen Tabelle Behandeln. Auch
hier zur Verdeutlichung drei konkrete Tabellen:
Tabelle Arzt:
ArztID
Name
A1
Meier
A2
Jansen
A3
Plum
...
....
Am
Pauly
Tabelle Patient:
PatientID
Name
P1
Jakobs
P2
Müller
P3
Bergstein
...
...
Pn
Hesel
Tabelle Behandeln:
ArztID
PatientID
Termin
A1
P1
...
A1
P2
...
A2
P2
...
A2
P3
...
A3
P1
...
A3
P2
...
A3
P3
...
...
...
...
Oktober 2007
Department für Wissens- und Kommunikationsmanagement - Schranz / Datenbanken
31
Jedem konkreten Wert des Primärschlüssels ArztID in der Tabelle Arzt können mehrere
Einträge des gleich lautenden Fremdschlüssels in der Tabelle Behandeln zugeordnet
werden. Zwischen Arzt und Behandeln herrscht also sozusagen ein 1:n-Verhältnis.
Genauso können jedem konkreten Wert des Primärschlüssels PatientID in der Tabelle
Patient mehrere Einträge des gleich lautenden Fremdschlüssels in der Tabelle
Behandeln zugeordnet werden. Zwischen Patient und Behandeln herrscht also ebenfalls
ein 1:n-Verhältnis.
Hieran sieht man, dass mit Hilfe der dritten Tabelle Behandeln die ursprüngliche m:nBeziehung durch zwei 1:n-Beziehungen ersetzt wird. Die Abhängigkeiten bez. der
Primär- und Sekundärschlüssel lauten:
Behandeln[ArztID] Arzt[ArztID]
Behandeln[PatientID] Patient[PatientID]
Ganz analog kann das Beispiel „Dozent erteilt Kurse“ modelliert werden.
3.3.2T RA NS FO RM ATION
DE R
1: N -
BZ W . N :1- B EZ IEH UN G
Sie stellt eine Vereinfachung der m:n-Beziehung dar. Beispielsweise kann ein
Angestellter in nur einer Abteilung arbeiten, in einer Abteilung sind jedoch durchaus
mehrere Angestellte beschäftigt.
Angestellter = ({AngNr, AngName}, {AngNr})
Abteilung = ({AbtNr, AbtName}, {AbtNr})
Für die Relation arbeiten mit Attribut Dienstzeit existieren nun verschiedene
Möglichkeiten.
Möglichkeit 1:
Analog zur m:n-Beziehung ebenfalls 3 Schemata:
Angestellter
AngNr
AngName
Abteilung
AbtNr
AbtName
Arbeiten
AngNr
AbtNr
Dienstzeit
mit:
Arbeiten[AngNr] Angestellter[AngNr]
Arbeiten[AbtNr] Abteilung[AbtNr]
Der Vorteil ist die minimale Redundanz in den Tabellen. Jeder Angestellten- bzw.
Abteilungsname wird nur einmal aufgeführt. Angestellte, die keiner Abteilung
Oktober 2007
Department für Wissens- und Kommunikationsmanagement - Schranz / Datenbanken
32
zugeordnet sind, oder neue Abteilungen, in denen noch niemand arbeitet, lassen sich
ebenfalls problemlos auflisten. Der Nachteil ist allerdings die hohe Tabellenanzahl, was
gerade bei komplexeren Abfragen eine erhöhte Rechenleistung erfordert. Schon bei
recht einfachen Abfragen wie „Zeige die Namen aller Angestellten, die in der
Verwaltung arbeiten“ müssen alle drei Tabellen miteinander verknüpft werden. Solche
Verknüpfungen von Tabellen werden als Join (siehe Kapitel Relationale Algebra)
bezeichnet und sind im Allgemeinen recht aufwändig.
Möglichkeit 2:
Aufgrund des eben erwähnten Nachteils wird die 1:n-Beziehung meistens in nur zwei
Tabellen dargestellt. Die entsprechenden Schemata:
Angestellter
AngNr
Abteilung
AngName
AbtNr
AbtNr
Dienstzeit
AbtName
Dem Schema für den Entity-Typ auf der n-Seite (hier Angestellter) werden der
Primärschlüssel AbtNr des Entity-Typen auf der 1-Seite (hier Abteilung) und das
Attribut Dienstzeit der Beziehung zugefügt. AbtNr wird dadurch zum Fremdschlüssel
im Schema für Angestellter.
Angestellter[AbtNr] Abteilung[AbtNr]
Nachteil:
Bei Angestellten, die keiner Abteilung angehören oder die keine feste Dienstzeit haben,
bleiben in der zugehörigen Tabelle die Werte der Attribute AbtNr und Dienstzeit
unbesetzt. Sie können dann sogenannte Nullwerte erhalten, was allerdings für das
DBMS einen erhöhten Verwaltungsaufwand erfordert und somit noch keine optimale
Lösung darstellt.
3.3.3T RA NS FO RM ATION
DE R
1:1- B EZ IEH UN G
Auch diese Beziehung wollen wir an dem bereist aus den vorangegangenen Kapiteln
verdeutlichen.
Ein Mann heiratet eine Frau:
Mann = ({MannID,MannName}, {MannID})
Frau = ({FrauID, FrauName}, {FrauID})
Relation: heiraten mit Attribut Termin
Es bestehen wieder mehrere Möglichkeiten diese Relation umzusetzen.
Möglichkeit 1:
3 Schemata:
Oktober 2007
Department für Wissens- und Kommunikationsmanagement - Schranz / Datenbanken
33
Tabelle Mann
MannID
MannName
Tabelle Frau
FrauID
FrauName
Tabelle Heiraten
MannID
FrauID
Termin
mit:
Heiraten[MannID] Mann[MannID]
Heiraten[FrauID] Frau[FrauID]
Dieser Weg ist jedoch fast immer zu aufwändig, wenn auch er sehr gut für die
zusätzliche Aufnahme von unverheirateten Personen geeignet ist, da keine Nullwerte
entstehen.
Möglichkeit 2:
2 Schemata:
Tabelle Mann
MannID
MannName
Tabelle Frau
FrauID
MannID
FrauName
Termin
mit:
Frau[MannID] Mann[MannID]
Diese Möglichkeit ist vorzuziehen, wenn viele ledige Männer und nur sehr wenige
ledige Frauen aufzunehmen sind. Die ledigen Männer erzeugen dann hierbei keine
Nullwerte. Die entsprechende Umkehrung ist für den Fall von vielen ledigen Frauen
und wenigen bzw. gar keinen ledigen Männern geeignet.
Möglichkeit 3:
Oft wird nur eine Tabelle verwendet mit diesem zugehörigen Schema:
Tabelle Hochzeit
MannID
FrauID
MannName
FrauName
Termin
Hierbei entstehen jedoch bei jeder Aufnahme einer ledigen Person Nullwerte.
Oktober 2007
Department für Wissens- und Kommunikationsmanagement - Schranz / Datenbanken
34
3.4N OR MALF OR ME N
Wie zu Beginn des Kapitels 3 gesehen, besteht offenbar ein enger Zusammenhang
zwischen Entities und Relationen. Daher ist es auch relativ einfach – wie Kapitel 3.3
zeigt – die ER-Diagramme in die Tabellenschemata der relationalen Datenbanksysteme
umzuwandeln. In der Regel sollte es möglich sein, dass eine relationale Datenbank in
der dritten Normalform (wird im aktuellen Kapitel genauer definiert) vorliegt, nachdem
sie aus einem gut durchdachten ER-Diagramm in eine relationale Datenbank
transformiert wurde. Durch die vielen Möglichkeiten, die bei der Erstellung der ERDiagramme gegeben sind, kann dies jedoch nicht immer garantiert werden. Daher ist es
durchaus üblich zunächst anhand eines ER-Diagramms einen ersten Entwurf zu
erstellen, diesen dann über die Regeln der Normalisierung weiter zu verfeinern um
schließlich zu einem Relationenschema zu gelangen, dass alle geforderten Grundlagen
erfüllt. Welche Schritte dabei im Einzelnen durchzuführen sind, wollen wir in diesem
Kapitel näher betrachten.
Bei der Theorie der Normalformen gibt es über die dritte Normalform hinaus noch
weitere Normalformen – unter anderem die Boyce-Codd-Normalform, vierte und fünte
Normalform. Wir werden in dieser Vorlesung allerdings nur die erste bis dritte
Normalform behandeln. Interessierte, die sich weitergehend informieren möchten, seien
auf die aufgelisteten Werke der Fachliteratur verwiesen.
3.4.1A BH ÄN GI GK EI TE N
ZW ISCH EN
A TT RI BU TE N
Für die Erfüllung der Bedingungen zur Transformation eines Relationenschemas bis hin
zur dritten Normalform sind die Abhängigkeiten zwischen den einzelnen Attributen der
Entities von enormer Bedeutung.
Um ein besseres Verständnis für die Unterschiede zwischen funktionaler und voll
funktionaler Abhängigkeit beziehungsweise transitiver Abhängigkeit zu erlangen, soll
hier zunächst die eindeutige Definition dieser Begriffe vorgenommen werden und diese
anhand einiger Beispiele verständlich gemacht werden.
3.4.1.1Funktionale und volle funktionale Abhängigkeit
Definition der funktionalen Abhängigkeit:
In einem Relationenschema R ist das Attribut (bzw. die Attributkombination) Y
funktional abhängig vom Attribut (bzw. der Attributkombination) X, wenn zu jedem
Zeitpunkt jedem Wert von X genau ein Wert von Y zugeordnet ist.
Schreibweisen: R.X R.Y oder kürzer X Y
Zwei Tupel t1 und t2 der Relation haben nun die Werte x1 = t1[X], x2 = t2[X] und y1 =
t1[Y ], y2 = t2[Y ].
Die funktionale Abhängigkeit X Y bedeutet, dass aus gleichen Werten für X gleiche
Werte für Y folgen.
Also aus x1 = x2 folgt y1 = y2. (Bzw. aus t1[X] = t2[X] folgt t1[Y ] = t2[Y ].) D. h. mit
einem Wert von X wird eindeutig der Wert von Y festgelegt.
Anmerkung: Falls Y X gilt immer X Y .
Oktober 2007
Department für Wissens- und Kommunikationsmanagement - Schranz / Datenbanken
35
Definition der voll funktionalen Abhängigkeit:
X sei nun ein aus mehreren Attributen zusammengesetzter Schlüssel, also eine
Attributkombination. Y sei ein einzelnes Attribut oder ebenfalls eine
Attributkombination. Y ist genau dann voll funktional abhängig von X, falls
 X Y gilt und
 es keine echte Teilmenge Z von X gibt mit Z Y .
Y ist also von der gesamten Attributkombination X funktional abhängig.
Schreibweisen:
R.X R.Y bzw. X Y
Anmerkung: Bei einer vollen funktionalen Abhängigkeit X
Y geht somit bereits beim
Entfernen eines einzelnen Attributs A aus der Attributmenge X die Abhängigkeit
verloren. Das heißt die um A verminderte Attributmenge Z = (X − {A}) bestimmt nicht
mehr funktional Y .
Veranschaulichung anhand eines Beispiels:
Relation r :
A
B
C
D
E
F
Tupel
1
2
3
4
5
6
(1)
1
3
0
0
1
7
(2)
2
1
0
0
2
3
(3)
3
2
5
6
7
8
(4)
1
0
3
0
6
6
(5)
Die Spalte Tupel ist hierbei eine Durchnummerierung der laufenden Tupel, also kein
Bestandteil der eigentlichen Relation.
A B gilt nicht, weil
(1) : x1 = t1[A] = 1, y1 = t1[B] = 2
(2) : x2 = t2[A] = 1, y2 = t2[B] = 3
Somit folgt aus x1 = x2 nicht y 1 = y2. ti[A] gibt hier also denWert des i-ten Tupels für das
Attribut A an. Zur Widerlegung einer Abhängigkeit reicht also die Angabe eines
Gegenbeispiels aus.
AC F, weil
(1) : x1 = t1[AC] = (1, 3), y1 = t1[F] = 6
(5) : x2 = t5[AC] = (1, 3), y2 = t5[F] = 6
Das „X“ in der allgemeinen Definition entspricht hier der Attributkombination AC. Da
dies die einzigen beiden Fälle sind, in denen AC die gleichen Werte hat, gilt hier:
aus x1 = x2 folgt y1 = y2.
E F, weil
je zwei Tupel aus r verschieden in ihrem Wert für das Attribut E sind. Es gibt keine
zwei gleichen Werte für E und somit kann die Behauptung E
F nicht widerlegt
Oktober 2007
Department für Wissens- und Kommunikationsmanagement - Schranz / Datenbanken
36
werden. Jedem Wert von E wird genau ein Wert von F zugeordnet. In der vorliegenden
Relation könnte das Attribut E somit als Primärschlüssel dienen.
In unserem Beispiel Arzt behandelt Patient war der Name des Arztes/der Ärztin
eindeutig durch den Wert des Primärschlüssels ArztID festgelegt. Es galt also ArztID
Name. Zwei gleicheWerte für ArztID bestimmen somit ganz klar den selben Arzt/die
selbe Ärztin. Andererseits können zwei verschiedene Ärzte mit verschiedenen Werten
von ArztID den gleichen Namen haben. Zum Beispiel die Zahnärztin Müller und der
praktische Arzt Müller. Die Abhängigkeit gilt also nicht in umgekehrter Richtung.
3.4.1.2Transitive Abhängigkeit
Es gelten folgende Festlegungen:
Y ist abhängig von X, also X Y .
X ist jedoch nicht abhängig von Y , also Y X.
Z ist abhängig von Y , also Y Z.
Somit ist Z auch abhängig von X, also X Z. Z ist jedoch nicht direkt von X abhängig,
sondern über den „Umweg“ der Abhängigkeit zu Y . Z ist also transitiv (indirekt) von X
abhängig. Aufgrund der Forderung, dass nicht Y X ist, können die Werte von Z nicht
über Y die Werte von X bestimmen, also Z X gilt nicht.
3.4.2A NO MA LI EN
Sehr kleine Realwelt-Ausschnitte werden gerne „quick and dirty“ mit allen
notwendigen Attributen in einem einzigen Relationsschema und somit auch in nur einer
einzigen Tabelle zusammengefasst.
Beispiel: Ein Kunde kann mehrere Artikel bestellen und ein Artikel kann von mehreren
Kunden bestellt werden. Hierbei werden folgende Daten gespeichert:
Kunden-Daten: Name,Straße,Postleitzahl,Ort,Tel- und eine eindeutige Kundennummer
Artikel-Daten: Bezeichnung, Preis und eine eindeutige Artikelnummer
Weiterhin wird noch die Menge der bestellten Artikel festgehalten.
Für einen Tante-Emma Laden wird dieses gesamte Bestellwesen in einer einzigen
Tabelle Kunde-Artikel erfaßt:
KunNr ArtNr Name Strasse
PLZ
Ort
1
3941
Meier Rennweg_6
5455
0
1
1745
Meier Rennweg_6
1
7678
1
4598
Tel
Bezeichnung
Prei
s
Daun 12345
6
Öko-Toilettenpapier
2,30 1
5455
0
Daun 12345
6
Hundefutter„Wau-Wau” 2,50 4
Meier Rennweg_6
5455
0
Daun 12345
6
Waschmittel„Blitzblank” 3,50 1
Meier Rennweg_6
5455
0
Daun 12345
6
Gebäckmischung-Krone
Oktober 2007
Menge
2,00 2
Department für Wissens- und Kommunikationsmanagement - Schranz / Datenbanken
2
2369
Jansen Gasse_56
4
7678
4
37
5459
5
Prüm 65763
5
Schoko-Osterhase
Pauly
Am_Berg_31 5455
0
Daun 86732
3
Waschmittel„Blitzblank” 3,50 2
5672
Pauly
Am_Berg_31 5455
0
Daun 86732
3
Öko-Toilettenpapier
1,80 2
5
?
Hinze Ringstr._5
5633
2
Loef 53512
0
?
?
?
6754
?
?
?
Taschentücher
1,50 ?
?
?
Jedes einzelne Tupel kann eindeutig durch die Kombination der beiden Attribute KunNr
und ArtNr identifiziert werden. Somit kann diese Kombination als Primärschlüssel
dienen. In obiger Tabelle sind die Attributwerte der beiden Entity-Typen Kunde und
Artikel sowie der Beziehung bestellen vermischt. Daher können bei diesem recht
„unsauberem“ Schema verschiedene Formen der Update-Anomalien auftreten, die im
Folgenden näher betrachtet werden sollen.
Einfüge-Anomalie:
Es wird ein neuer Artikel ins Sortiment aufgenommen (hier die Taschentücher). Für
diesen gibt es eine Artikelnummer, eine Artikelbezeichnung und einen Preis. Solange
der Artikel noch nicht von einem Kunden bestellt wird bleiben die Attribute KunNr,
Name, Strasse, PLZ, Ort, Tel. und Menge ohne konkreten Wert. Falls statthaft, können
sie mit Nullwerten aufgefüllt werden. Oder es wird eine neue Kundin aufgenommen
(hier die Frau Hinze), die jedoch noch keinen Artikel bestellt hat. Dabei können den
Attributen ArtNr, Bezeichnung, Preis und Menge ebenfalls nur Nullwerte zugeordnet
werden.
In beiden Fällen wird ein neuer Datensatz eingefügt, bei dem jedoch noch nicht für alle
Attribute konkrete Werte vorliegen. Beim Ersetzen der fehlenden Attributwerte mit
Nullwerten erhält in beiden Fällen ein Teil des Primärschlüssels einen Nullwert, diese
Situation sollte jedoch – wie anhand der Definition eines Primärschlüssels ersichtlich ist
– unbedingt vermieden werden.
Lösch-Anomalie:
Frau Jansen bestellt nur einen einzigen Artikel – den Schoko-Osterhasen.Wird dieser
Artikel beispielsweise nach Ostern aus dem Sortiment genommen und somit der
entsprechende Datensatz aus der Tabelle entfernt, gehen die Daten von Frau Jansen
ebenfalls verloren.Wird umgekehrt Frau Jansen als Kundin aus der Tabelle gestrichen,
gehen die Produktinformationen über den Schoko-Osterhasen verloren.
Änderungs-Anomalie:
Sobald ein Kunde mehrere Artikel bestellt, werden seine Daten mehrfach in der Tabelle
aufgelistet wie hier bei Herrn Meier ersichtlich ist. Analog geschieht ebenfalls eine
Mehrfachspeicherung der Artikel-Daten, falls ein Artikel von mehreren Kunden bestellt
wird – hier am Beispiel des Waschmittels „Blitzblank“ ersichtlich. Am Preis des „ÖkoOktober 2007
1,80 3
?
Department für Wissens- und Kommunikationsmanagement - Schranz / Datenbanken
38
Toilettenpapiers“ lässt sich bereits erkennen, dass in Fehler bei der Preisaktualisierung
entstanden ist, das die Einträge in den Zeilen 1 und 7 unterschiedliche Werte aufweisen.
Falls dieser Fehler bereits länger zurückliegt und erst später entdeckt wird, kann
möglicherweise nicht mehr festgestellt werden, welcher Wert der momentan Richtige
ist.
Die Tabelle kann somit eine beträchtliche Redundanz an Dateneinträgen enthalten.
Ändert sich nun zum Beispiel der Preis eines Artikels oder der Wohnort eines Kunden,
muss diese Änderung unter Umständen in mehreren Tupeln der Tabelle durchgeführt
werden. Dieses Vorgehen ist sehr fehleranfällig und kann daher Inkonsistenzen
verursachen. Ursache für die Änderungs-Anomalie sind die durch den Tabellenaufbau
bedingten Redundanzen.
Diese drei Anomalien werden häufig unter dem Namen Update-Anomalien
zusammengefasst und können auftreten wenn:
 Attribute (also Informationen) mehrerer Entity-Typen in einer Tabelle

vermischt werden.
Aber auch wenn Attributwerte eines Entity-Typen in mehreren Tabellen
und/oder mehrmals in einer Tabelle erscheinen (Redundanz).
Die Verwendung von Nullwerten ist lediglich ein notdürftiger Behelf und stellt keine
Lösung des Anomalien-Problems dar. Die Verwaltung zahlreicher Nullwerte belastet
das DBMS und bringt unter Umständen Effizienzprobleme mit sich.
3.4.3N OR MA LF OR ME N
Die Normalformenlehre vermittelt eine Theorie zur Verteilung der Attribute auf
Relationen. Die Bildung von Normalformen im Rahmen des sogenannten
Normalisierungsprozesses hat als Ziel die Minimalisierung von:
 unbeabsichtigter Redundanz
 Update-Anomalien (Einfügen, Löschen, Ändern)
Eine vollständige Vermeidung von Redundanz und Anomalien ist gerade bei größerem
Datenaufkommen und zahlreicher Tabellen so gut wie unmöglich. Die Erläuterung der
ersten drei Normalformen und ein erstes Beispiel zur Durchführung der Normalisierung
soll nun an der Relation Kunde-Artikel durchgeführt werden.
3.4.3.1Die erste Normalform
Eine Relation befindet sich in der ersten Normalform, wenn jedes ihrer Attribute nur
atomare Werte annehmen kann. Die Theorie der relationalen Datenbanken verlangt für
sämtliche Tabellen die Erfüllung der ersten Normalform. Somit sind in einem
Relationenschema und der zugehörigen Tabelle weder zusammengesetzte noch
mehrwertige Attribute statthaft. Daher wurde bei den diskutierten Beispielen ein
zusammengesetztes Attribut wie Adresse in seine Bestandteile Strasse, PLZ und Ort
Oktober 2007
Department für Wissens- und Kommunikationsmanagement - Schranz / Datenbanken
39
zerlegt und ein mehrwertiges Attribut in ein eigenes Schema ausgelagert. Die Tabelle
Kunde-Artikel befindet sich somit bereits in der ersten Normalform.
3.4.3.2Die zweite Normalform
Eine Relation befindet sich in der zweiten Normalform, wenn sie die Bedingungen der
ersten Normalform erfüllt und jedes Nicht-Schlüsselattribut funktional vom gesamten
Schlüssel abhängt. Die zweite Normalform basiert also auf dem Konzept der vollen
funktionalen Abhängigkeit.
In der Tabelle Kunde-Artikel besteht der Primärschlüssel aus den beiden Attributen
KunNr und ArtNr. Der erste Bestandteil bezieht sich auf den Kunden, der zweite auf
den Artikel. Daher sind die kundenspezifischen Attribute Name, Strasse, PLZ, Ort und
Tel nur vom Schlüssel-Bestandteil KunNr abhängig. Die warenspezifischen Attribute
Bezeichnung und Preis sind dementsprechend nur vom Schlüssel-Bestandteil ArtNr
abhängig. Es gibt also Nicht-Schlüsselattribute, die nicht vom gesamten Schlüssel
abhängig sind. Das Relationsschema bzw. die zugehörige Tabelle liegt somit nicht in der
zweiten Normalform vor.
Der wesentliche Grund für die Verletzung der zweiten Normalform ist hier die
Zusammenfassung der Attribute der beiden Entities Kunde und Ware in eine Tabelle,
wodurch ein aus mehreren Attributen zusammengesetzter Primärschlüssel entsteht –
beziehungsweise notwendig wird. Die hier gegebene Situation kann durch die m:nBeziehung Kunde bestellt Artikel beschrieben werden.
Ein ER-Diagramm führt auf die folgenden 3 Relationenschemata:
Tabelle Kunde
KunNr
Name
Strasse
PLZ
Ort
Tel
Tabelle Artikel
ArtNr
Bezeichnung
Preis
Tabelle Bestellen
KunNr
ArtNr
Menge
Die Kombination der beiden Fremdschlüssel KunNr und ArtNr bildet also den
Primärschlüssel für die Identifizierung der einzelnen Tupel in dem Relationenschema
Bestellen. Zwischen den Attributen der einzelnen Tabellen gelten somit folgende
funktionale Abhängigkeiten:
KunNr {Name, Strasse, PLZ,Ort, Tel}
ArtNr {Bezeichnung, Preis}
{KunNr, ArtNr} Menge
Als Abhängigkeiten bezüglich der Fremd- und Primärschlüssel ergeben sich:
Bestellen[KunNr] Kunde[KunNr]
Bestellen[ArtNr] Artikel[ArtNr]
Oktober 2007
Department für Wissens- und Kommunikationsmanagement - Schranz / Datenbanken
40
Die drei neuen Schemata Kunde, Artikel und Bestellen erfüllen nun alle die zweite
Normalform. Die konkreten Tabellen lauten wie folgt:
Tabelle Kunde:
KunNr
Name
Strasse
PLZ
Ort
Tel
1
Meier
Rennweg_6
54550
Daun
123456
2
Jansen
Gasse_56
54595
Prüm
657635
4
Pauly
Am_Berg_31 54550
Daun
867323
5
Hinze
Ringstr._5
Loef
535120
56332
Tabelle Artikel:
ArtNr
Bezeichnung
Preis
3941
Öko-Toilettenpapier
2,30
1745
Hundefutter_Wau-Wau
2,50
4598
Gebäckmischung_Krone
1,50
5672
Öko-Toilettenpapier
1,80
7678
Waschmittel_Blitzblank
3,50
2369
Schoko-Osterhase
1,80
6754
Taschentücher
1,50
Tabelle Bestellen:
KunNr ArtNr Menge
1
3941
1
1
1745
4
1
7678
1
1
4598
2
2
2369
3
4
7678
2
4
5672
2
Anhand der konkreten Tabellen sieht man auch sehr gut, dass in Bestellen das Attribut
Menge vom gesamten Primärschlüssel abhängt – also eine volle Abhängigkeit. Der
Kunde mit der Nummer 1 bestellt vom Artikel 3941 genau 1 Stück, vom Artikel 1745
genau 4 Stück, vom Artikel 7678 wiederum genau 1 Stück und vom Artikel 4598 genau
2 Stück. Bei Herausnahme des Schlüsselbestandteils ArtNr würden z. B. der
Kundennummer 1 die verschiedenen Mengen 4, 1 und 2 zugeordnet werden, was klar
der Definition der funktionalen Abhängigkeit widerspräche. Die Kundennummer allein
wäre also kein Schlüssel.
Analog würden bei Entfernung des Schlüsselbestandteils KunNr dem Artikel 7678 die
beiden Mengen 1 und 2 zugeordnet werden, was ebenfalls der funktionalen
Abhängigkeit widerspräche. Es gelten also weder KunNr Menge noch ArtNr Menge
sondern nur {KunNr, ArtNr} Menge.
Oktober 2007
Department für Wissens- und Kommunikationsmanagement - Schranz / Datenbanken
41
Anmerkung: Ein Relationenschema bzw. eine Tabelle, die bereits in der ersten
Normalform vorliegt und deren Primärschlüssel nur aus einem Attribut besteht (also
nicht zusammengesetzt ist), befindet sich automatisch in der zweiten Normalform. Als
Begründung dafür kann die Festlegung, die bei den funktionalen Abhängigkeiten
besagte, dass X Y immer gilt, falls je zwei Tupel für X unterschiedliche Werte
annehmen, genannt werden. Falls X nun den Primärschlüssel in Form eines einzelnen
Attributs bildet, kann X nur unterschiedliche Werte annehmen und es kann auch kein
Bestandteil von X weggenommen werden. Also ist jedes Nichtschlüsselattribut Y voll
von X abhängig.
Bei genauer Betrachtung der Tabelle Kunde fällt auf, dass beispielsweise der Ortsname
„Daun“ mitsamt seiner Postleitzahl 54550 mehrmals aufgelistet wird (Redundanz!).
Diese „Fehler“ wird im Rahmen der Diskussion um die dritte Normalform behoben
werden.
3.4.3.3Die dritte Normalform
Eine Relation befindet sich in der dritten Normalform, wenn sie
Normalform befindet und alle Nicht-Schlüsselattribute nur direkt
vom Schlüssel abhängen. Also kein Nichtschlüsselattribut
Primärschlüssel abhängig. Oder anders ausgedrückt: Es gibt
Abhängigkeiten zwischen den einzelnen Nichtschlüsselattributen.
sich in der zweiten
(also nichttransitiv)
ist transitiv vom
keine funktionalen
In den beiden Schemata Artikel und Bestellen ist diese Bedingung erfüllt. In Artikel
wird unter der gleichen Bezeichnung „Öko-Toilettenpaper“ ein Papier mit
unterschiedlichem Preis von 2.30 Euro und 1.80 Euro angeboten. Diese Papiere könnten
zum Beispiel aufgrund ihrer unterschiedlichen Artikelnummern von zwei verschiedenen
Lieferanten stammen – was die verschiedenen Preise erklären würde. Für den gleichen
Preis von 1.80 Euro werden die beiden völlig verschiedenen Artikel „ÖkoToilettenpapier“ und „Schoko-Osterhase“ verkauft. Also gelten für die beiden
Nichtschlüsselattribute Bezeichnung und Preis weder die funktionale Abhängigkeit
Bezeichnung Preis noch die Abhängigkeit Preis Bezeichnung.
Im Schema Bestellen gibt es nur das eine Nichtschlüsselattribut Menge und somit kann
es dort auch keinerlei Abhängigkeit zwischen (verschiedenen) Nichtschlüsselattributen
geben.
Zu den Nichtschlüsselattributen der Tabelle Kunde gehören unter Anderem die
Postleitzahl PLZ und der Ortsname Ort. Es soll nun vorausgesetzt werden, dass eine
Postleitzahl den Ortsnamen bestimmt. Gleiche Postleitzahlen bestimmen stets den
selben Ort. In obiger Beispieltabelle gehört zur mehrfach aufgeführten Postleitzahl
54550 stets der Ortsname „Daun“. Es gilt also die funktionale Abhängigkeit PLZ Ort.
Insgesamt gilt also:
KunNr PLZ
Oktober 2007
Department für Wissens- und Kommunikationsmanagement - Schranz / Datenbanken
42
PLZ Ort und daher:
KunNr Ort.
Die geforderte Bedingung, dass nicht PLZ
KunNr gilt, ist hier ebenfalls erfüllt, da die
Postleitzahl nicht die Kundennummer bestimmt. Somit ist Ort also transitiv über PLZ
vom Primärschlüssel KunNr abhängig. Die Tabelle Kunde ist daher nicht in der dritten
Normalform. Um Kunde in die dritte Normalform zu überführen, muss die transitive
Abhängigkeit beseitigt werden. Dies geschieht über die Auslagerung der Abhängigkeit
PLZ Ort in ein separates Schema PLZ-Ort.
Das Attribut PLZ ist dann der Primärschlüssel von PLZ-Ort und ein Fremdschlüssel in
Kunde. Durch den Prozess der Normalisierung bis zur dritten Normalform ist das
ehemalige Schema Kunde-Artikel also in die folgenden vier Einzelschemata Kunde,
PLZ-Ort, Artikel und Bestellen aufgesplittet worden:
Tabelle Kunde
KunNr Name Strasse PLZ Tel
Tabelle PLZ-Ort
PLZ Ort
Tabelle Artikel
ArtNr Bezeichnung Preis
Tabelle Bestellen
KunNr ArtNr Menge
mit:
Kunde[PLZ] PLZ-Ort[PLZ]
Bestellen[KunNr] Kunde[KunNr]
Bestellen[ArtNr] Artikel[ArtNr]
als Abhängigkeiten bezüglich der Fremd- und Primärschlüssel.
3.4.4D ER W EG
DE R
N OR MA LI SIER UN G -
AU SFÜ HR LI CH ES
B EI SP IEL
Die Ziele der Normalisierung waren die Minimalisierung von Redundanz und Update
Anomalien (Einfüge, Lösch und Änderungsanomalie). Die Änderungsanomalie entsteht
hauptsächlich aufgrund von Redundanz.
Für die beiden anderen Anomalien ist die Vermischung der Attributwerte mehrerer
Entities und ggf. von Relationen in einem Schema verantwortlich.
Test auf 1. Normalform:
Die Relation darf keine zusammengesetzten oder mehrwertigen Attribute enthalten.
Außerdem sind keine Unterrelationen erlaubt.
Normalisierung: Zusammengesetzte Attribute in Einzelattribute, die alle atomar sind,
aufteilen. Für mehrwertige Attribute und Unterrelationen separate Schemata einführen.
Test auf 2. Normalform:
Oktober 2007
Department für Wissens- und Kommunikationsmanagement - Schranz / Datenbanken
43
Falls eine Relation einen Primärschlüssel hat, der aus mehreren Attributen besteht, darf
kein Nichtschlüsselattribut von nur einem Teil des Primärschlüssels funktional abhängig
sein.
Normalisierung: Die Gesamtrelation wird dahingehend zerlegt, dass für jeden
Teilschlüssel P, von dem Attribute funktional abhängig sind, ein eigenes Schema
erstellt. Dieses Schema enthält dann den jeweiligen Teilschlüssel P als Primärschlüssel
und diejenigen Nichtschlüsselattribute, die von diesem Teilschlüssel funktional
abhängig sind. Außerdem wird ein Schema benötigt, welches den ursprünglichen
originalen (aus mehreren Attributen zusammengesetzten) Primärschlüssel und die von
ihm voll funktional abhängigen Nichtschlüsselattribute enthält.
Test auf 3. Normalform:
Eine Relation darf kein Nichtschlüsselattribut A enthalten, das funktional von einem
anderen (oder einer Menge von mehreren anderen) Nichtschlüsselattribute(n) abhängig
ist. Es darf also keine transitive Abhängigkeit eines Nichtschlüsselattributs A zum
Primärschlüssel bestehen.
Normalisierung: Das Nichtschlüsselattribut A und die anderen von ihm funktional
abhängigen Nichtschlüsselattribute in ein eigenes Schema auslagern. A wird dann im
neuen Schema der Primärschlüssel und bleibt im ehemaligen Schema ein
Fremdschlüssel.
Dies wollen wir mit Hilfe eines ausführliches Beispiels Schritt für Schritt durchführen.
Ausgangs-Tabelle Prüfungsdaten
PNr Fach
Pruefer MatNr
Name
Geb.
Adresse
FBNr FBName
123 LA
Meier
15345
6
Kaiser
23.09.8
0
Aachen,Bergstr.6
6
Mathematik Weber 2
15784
1
Berger
13.05.8
1
Eschweiler,Markt6 6
Mathematik Weber 3
14568
9
Michels 23.09.8
1
Alsdorf,Pfad56
8
Physik
Böhme 4
15345
6
Kaiser
23.09.8
0
Aachen,Bergstr.6
8
Physik
Böhme 3
15124
6
Müller
11.10.79 Jülich,Gasse78
8
Physik
Böhme 1
15137
8
Jansen
03.08.8
1
Stolberg,Parkallee1 8
Physik
Böhme 4
Plum
25.09.8
0
Aachen,AmHof4
8
Physik
Böhme 2
Scholz
12.07.8
1
Alsdorf,Hangstr.5
8
Physik
Böhme 5
562 Mechanik Bergs
981 Optik
Schulz 14991
7
15894
3
Test auf 1. Normalform:
Oktober 2007
Dekan Note
Department für Wissens- und Kommunikationsmanagement - Schranz / Datenbanken
44
Auf die eigentliche Prüfung beziehen sich hier im Grunde nur die ersten drei Attribute
PNr (Prüfungsnummer), Fach und Pruefer. Die restlichen Attribute beschreiben
stattdessen den Prüfling, sein Ergebnis undden Fach bereich, in dem der Prüfling
geprüft wird.
Die Tabelle bzw. Relation Prüfungsdaten enthält sozusagen eine weitere Relation
Prüflings- und Fachbereichsdaten. Sie ist eine Unterrelation mit den Attributen MatNr,
Name, Geb., Adresse, FBNr (Fachbereichsnummer), FBName (Fachbereichsname),
Dekan und Note. Hierbei ist die Adresse auch noch ein aus den beiden Einzelattributen
Ort und Straße zusammengesetztes Attribut. Es liegt also ganz klar eine Verletzung der
1. Normalform vor.
Umwandlung in die 1. Normalform: Für die Unterrelation Prüflings- und
Fachbereichsdaten wird eine eigene Tabelle eingeführt und jede ihrer Zeilen wird noch
um den Primärschlüssel der übergeordneten Relation ergänzt. Außerdem wird das
mehrwertige Attribut Adresse durch die beiden Einzelattribute Ort und Strasse ersetzt.
Es ergeben sich also die beiden Relationen:
Tabelle Prüfung
PNr Fach
Pruefer
123 LA
Meier
562 Mechanik Bergs
981 Optik
Schulz
mit der funktionalen Abhängigkeit PNr {Fach, Pruefer}.
Prüflings- und Fachbereichsdaten1
PNr MatNr
Name
Geb.
Ort
Strasse
FBNr
FBName
123 153456
Kaiser
23.09.80
Aachen
Bergstr._6
6
Mathematik Weber 2
123 157841
Berger
13.05.81
Eschweiler Markt_6
6
Mathematik Weber 3
123 145689
Michels 23.09.81
Alsdorf
Pfad_56
8
Physik
Böhme 4
562 153456
Kaiser
23.09.80
Aachen
Bergstr._6
8
Physik
Böhme 3
562 151246
Müller
11.10.79
Jülich
Gasse_78
8
Physik
Böhme 1
562 151378
Jansen
03.08.81
Stolberg
Parkallee_1 8
Physik
Böhme 4
981 149917
Plum
25.09.80
Aachen
Am_Hof_4
8
Physik
Böhme 2
981 158943
Scholz
12.07.81
Alsdorf
Hangstr._5
8
Physik
Böhme 5
mit den funktionalen Abhängigkeiten
{PNr,MatNr} {FBNr, FBName,Dekan,Note}
MatNr {Name,Geb.,Ort, Strasse}
Oktober 2007
Dekan Note
Department für Wissens- und Kommunikationsmanagement - Schranz / Datenbanken
45
Beide Relationen befinden sich nun in der 1. Normalform.
Test auf 2. Normalform:
Da in Prüfung der Primärschlüssel PNr nur aus einem Attribut besteht, befindet sich die
Relation automatisch auch in der 2. Normalform. Prüflings- und Fachbereichsdaten hat
hingegen einen Primärschlüssel, der aus den beiden Attributen PNr und MatNr besteht.
Die Attribute Name, Geb., Ort und Strasse hängen jedoch nicht vom gesamten
Schlüssel, sondern nur vom Teilschlüssel MatNr ab. Daher befindet sich diese Relation
nicht in der 2. Normalform.
Umwandlung in die 2. Normalform: Diejenigen Attribute, die nur vom Teilschlüssel
MatNr abhängen, werden in eine eigene Relation Prüfling ausgelagert.
Es ergeben sich somit die drei Tabellen:
Tabelle Prüfung (wie gehabt)
Tabelle Prüfling
MatNr
Name
Geb.
Ort
Strasse
153456
Kaiser
23.09.80 Aachen
Bergstr._6
157841
Berger
13.05.81 Eschweiler
Markt_6
145689
Michels
23.09.81 Alsdorf
Pfad_56
151246
Müller
11.10.79 Jülich
Gasse_78
151378
Jansen
03.08.81 Stolberg
Parkallee
149917
Plum
25.09.80 Aachen
Am_Hof_4
158943
Scholz
12.07.81 Alsdorf
Hangstr._5
mit der funktionalen Abhängigkeit MatNr {Name, Geb.,Ort, Strasse} und
Tabelle Prüfungsergebnis
PNr MatNr
FBNr
FBName
Dekan
Note
123 153456
6
Mathematik
Weber
2
123 157841
6
Mathematik
Weber
3
123 145689
8
Physik
Böhme
4
562 153456
8
Physik
Böhme
3
562 151246
8
Physik
Böhme
1
562 151378
8
Physik
Böhme
4
Oktober 2007
Department für Wissens- und Kommunikationsmanagement - Schranz / Datenbanken
981 149917
8
Physik
Böhme
2
981 158943
8
Physik
Böhme
5
mit der funktionalen Abhängigkeit {PNr,MatNr}
46
{FBNr, FBName,Dekan,Note}. Alle
drei Relationen befinden sich nun in der 2. Normalform.
Test auf 3. Normalform:
Prüfung und Prüfling liegen bereits in der 3. Normalform vor, bei Prüfungsergebnis gilt
jedoch: FBNr
{FBName,Dekan} Es existiert also eine funktionale Abhängigkeit
zwischen den Nichtschlüsselattributen. Daher liegt Prüfungsergebnis nicht in der 3.
Normalform vor. Rein optisch erkennt man dies bereits an der enormen Redundanz bei
der Auflistung der Attributwerte von FBName und Dekan.
Umwandlung in die 3. Normalform: Hierzu wird Prüfungsergebnis in die beiden
Relationen Note und Fachbereich aufgeteilt.
Die Relationen in der dritten Normalform lauten somit:
Tabelle Prüfung (wie gehabt)
Tabelle Prüfling (wie gehabt)
Tabelle Note
PNr MatNr
Note FBNr
123 153456
2
6
123 157841
3
6
123 145689
4
8
562 153456
3
8
562 151246
1
8
562 151378
4
8
981 149917
2
8
981 158943
5
8
mit der funktionalen Abhängigkeit {PNr,MatNr} Note und
Tabelle Fachbereich
FBNr FBName
Dekan
6
Mathematik Weber
8
Physik
Böhme
mit der funktionalen Abhängigkeit FBNr {FBName,Dekan}.
Oktober 2007
Department für Wissens- und Kommunikationsmanagement - Schranz / Datenbanken
3.4.5V OR TE ILE
UN D
G RE NZ EN
DE R
47
N OR MA LI SIER UN G
Mit Hilfe der Normalisierung wollen wir sicherstellen, dass die Datenstrukturen über
die wird die relationale Datenbank bilden, möglichst effizient formuliert werden. Denn
dadurch erreichen wir folgende Eigenschaften bei unserem Datenbanksystem:
 Verminderung der Redundanz,
 Vermeidung von Inkosistenzen und Anomalien,
 Übersichtlichkeit hinsichtlich der Attributanzahl durch Bildung vieler „kleiner“
Tabellen.
Wie bereits durch den letzten Punkt ersichtlich wird, hat die Normalisierung allerdings
auch einige Nachteile und Grenzen:
Der Realweltausschnitt wird oftmals durch die Transformation bis zur dritten
Normalform in zu viele und teilweise sehr kleine Tabellen „zerstückelt“, wodurch
möglicherweise der Überblick durch die Vielzahl an Tabellen und das Verständnis für
den Zusammenhang zwischen diesen Tabellen verloren gehen können.
Bei Abfragen, für deren Beantwortung auf Bestandteile mehrerer verschiedener
Tabellen zugegriffen werden muss, ist eine aufwändige Wiedervereinigung der
benötigten Tabellen erforderlich (Join-Bildung: siehe Kapitel „Relationale Algebra“ und
„Die Abfragesprache SQL“ ).
Gerade dieser zuletzt genannte Punkt setzt der Normalisierung in der Praxis Grenzen.
Die Theorie und Literatur empfiehlt zwar eine Normalisierung bis in die dritte
Normalform. Hierbei wird jedoch bereits bei recht einfachen Abfragen Information aus
mehreren Tabellen benötigt, deren Vereinigung allerdings gerade bei großem
Datenbestand meist eine enorm intensive Rechenleistung fordert. Aus diesem Grund
werden relationale Datenbanksysteme in der Praxis nur selten bis in die dritte
Normalform umgewandelt.
Die Normalisierung ist in gewisser Weise ein Balanceakt zwischen Nutzen und
Aufwand und wird im Zusammenhang mit der Designfrage eines Datenbanksystems
auch in Fachkreisen heiß diskutiert. In der Regeln muss immer aktuell anhand des
gegebenen Projektes beurteilt werden, welche Vorgehensweise sinnvoller ist und wie
weit normlisiert werden soll.
Oktober 2007
Department für Wissens- und Kommunikationsmanagement - Schranz / Datenbanken
48
4 D I E R E L AT I O N A L E A L G E B R A
UND DIE ABFRAGESPRACHE SQL
Im relationalen Datenmodell wird der interessierende Realitätsausschnitt durch eine
Menge von Relationen modelliert. In einer relationalen Datenbank werden diese
Relationen dann in Form von Tabellen angezeigt, die untereinander über Schlüssel
verknüpft sind.
Nur die wenigsten AnwenderInnen wollen den Informationsgehalt einer ganzen Tabelle
angezeigt bekommen. Stattdessen treten Fragestellungen wie zum Beispiel „Zeige
Name und Adressen aller Mitarbeiterinnen, die schon mehr als 5 Jahre angestellt sind
und in Abteilung 4 arbeiten“ auf. Als Ergebnis dieser Abfrage erwartet man eine
Auflistung der Namen und Adressen der betreffenden Mitarbeiterinnen.
4.1D IE
RE LATI ON AL E
ALG EB RA
Es soll also nur ein ganz bestimmter Ausschnitt aus einer Tabelle bzw. der Verknüpfung
mehrerer Tabellen angezeigt werden – dies wird auch die spezielle benutzerspezifische
Sicht auf das Datenmaterial genannt. Daher benötigt man ein Rechenmodell (eine
Algebra) und Operationen, die
 bestimmte Zeilen und/oder Spalten einer Tabelle extrahieren können.
 Tabellen miteinander verknüpfen können.
Die nachfolgenden Erläuterungen zu diesen Operationen sollen nun als Grundlage diese
Tabelle r verwenden, dabei ist die Durchnummerierung der laufenden Zeilen hierbei nur
eine Hilfestellung zur Berechnung der relationalen Datenmanipulationen und kein
Bestandteil der jeweiligen Relation.
Relation r :
A B C D Zeile
1 2 1 5 (1)
4 2 8 9 (2)
4 5 0 9 (3)
4 3 4 5 (4)
Oktober 2007
Department für Wissens- und Kommunikationsmanagement - Schranz / Datenbanken
49
4.1.1D IE S EL EK TI ON
Eine Selektion ist dazu gedacht, aus einer Tabelle nur diejenigen Zeilen (Tupel)
herauszufiltern, in denen ein Attribut eine vorgegebene Bedingung erfüllt. Dabei
bleiben die selektierten Zeilen in ihrer Vollständigkeit – das heißt mit allen Attributen –
erhalten. Eine Selektion wird mit dem griechischen Buchstaben σ bezeichnet und
bekommt das Selektionsprädikat (die Bedingung) als Subskript angehängt.
Fragestellung: Zeige aus der Relation r alle Datensätze an, in denen das Attribut A den
Wert 4 hat.
Ergebnis:
Als Ergebnis erhalten wir demnach alle Zeilen der Ausgangstabelle r, die für die Spalte
A den Wert 4 eingetragen haben – hier Zeile (2) bis (4). Die Zeilen sind vollständig
erhalten, so dass alle Attribute erhalten bleiben.
4.1.2D IE P RO JEK TI ON
Wie wir oben gesehen haben, werden bei der Selektion einzelne Zeilen ausgewählt, die
ein bestimmtes Kriterium erfüllen. Die Projektion hingegen extrahiert eine oder mehrere
Spalten (Attribute) aus der gegebenen Relation. Eine Projektion wird mit dem Symbol
π gekennzeichnet und erhält als Subskript die auszuwählenden Attribute. Dabei ist zu
bemerken, dass Duplikatetupel, die durch eine Projektion auftreten, herausgefiltert und
im Ergebnis nicht mit angezeigt werden. Die Projektion blendet also bestimmte Spalten
der Relation aus und streicht danach eventuell mehrfach vorkommende Teiltupel. Diese
Duplikateliminierung kann verhindert werden, wenn unter den auszuwählenden
Attributen der vollständige Primärschlüssel der Relation enthalten ist.
Fragestellung:
Zeige von allen Datensätzen der Relation r die Werte der Attribute A und D an.
Ergebnis:
Die Projektion liefert somit drei Zeilen als Ergebnis, wobei nur die Attribute A und D
erhalten bleiben. Wie zu sehen ist, liefern die Zeilen (2) und (3) bei der gegebenen
Projektion ein identisches Ergebnis, so dass eines eliminiert wird. Es ist in der
Ergebnisrelation somit nicht mehr erkenntlich, auf welche Zeile der Ausgangsrelation
sich die neue zweite Zeile bezieht.
Oktober 2007
Department für Wissens- und Kommunikationsmanagement - Schranz / Datenbanken
4.1.3K OM BI NATI ON
VO N
S EL EK TI ON
UN D
50
P RO JEK TI ON
Da in der Praxis häufig äußerst umfangreiche Tabellen verwendet werden, ist oft die
Situation gegeben, dass nur bestimmte Werte eines Tupels angezeigt werden sollen, das
über eine gegebene Bedingung ausgewählt wird. Es wird also eine Kombination von
Selektion und Projektion notwendig.
Fragestellung:
Zeige aus der Relation r aus allen Datensätzen, die im Attribut A den Wert 1 haben und
zeige die Werte der Attribute C und D an.
Ergebnis:
Hierbei bearbeitet man zuerst die Selektion:
Auf dieses Tupel wird nun die Projektion angewendet. Syntax und Ergebnis der
gesamten Abfrage:
Es stellt sich vielleicht die Frage, warum man die Selektion vor der Projektion ausführt.
Das Ergebnis der Projektion sind nur bestimmte Spalten, also nur die Werte von
bestimmten Attributen – im gegebenen Beispiel sind dies die Spalten C und D. Die
Selektion gibt den Wert eines oder mehrerer Attribute (hier A) vor. A ist hier jedoch im
Ergebnis der Projektion nicht mehr enthalten, also könnte die Selektion gar nicht mehr
auf das Ergebnis der Projektion angewendet werden. Da das Ergebnis der Selektion alle
Attribute enthält, kann aber hierauf in jedem Fall die Projektion durchgeführt werden.
Aus diesem Grund bildet die Reihenfolge – Selektion vor Projektion – einer
notwendigen Kombination die Regel.
4.1.4D ER J OI N
Der Join verknüpft zwei oder mehr Tabellen miteinander, wobei diese Relationen oft ein
oder mehrere gemeinsame Attribute besitzen. Das kartesische Produkt (Kreuzprodukt)
von zwei oder mehr Mengen bildet oft eine enorm große Ergebnismenge (Aufblähung),
da die Mächtigkeit der Ergebnismenge n * m ist, falls die beiden betrachteten
Relationen n beziehungsweise m Tupel enthalten.
Oktober 2007
Department für Wissens- und Kommunikationsmanagement - Schranz / Datenbanken
Es seien drei Relationen r1, r2, r3 (bzw.ri mit 1 i
51
3) gegebenen, dann gelten für den
Verbund folgende Beziehungen:
Reflexivität:
ri ri = ri
Kommutativität:
r1 r2 = r2 r1
Assoziativität:
(r1 r2) r3 = r1 (r2
r3)
Falls die beiden Tabellen keine gemeinsamen Schlüsselattribute besitzen, ist der Join
gleich dem kartesischen Produkt der Relationen:
X1 X2 = 0 r1 r2 = r1 × r2
Falls in beiden Tabellen sämtliche Schlüsselattribute identisch sind, ist der Join gleich
dem Durchschnitt der Relationen:
X1 = X2 r1 r2 = r1 r2
Als Beispiel soll an drei Relationen das Assoziativgesetz durchgespielt werden.
r1 :
A B C Zeile
1 1 1 (1)
1 2 2 (2)
2 0 2 (3)
r2 :
A D Zeile
1 1 (1)
0 1 (2)
2 0 (3)
r3 :
C D E Zeile
1 1 0 (1)
0 1 1 (2)
2 1 0 (3)
2 2 1 (4)
Der Join zwischen r1 und r2 umfasst als Attributmenge die Vereinigungsmenge der
Attribute von r1 und r2, also A, B, C, D. Hierbei ist A gemeinsames Attribut. Nun
probiere man systematisch alle Kombinationen zwischen den Tupeln von r1 und r2. Von
diesen möglichen 3 · 3 = 9 Kombinationen werden für den Join dann nur diejenigen
verwendet, bei denen das gemeinsame Attribut A in r1 und r2 den gleichen Wert hat.
Tupel
Tupel
gem. Attribut A
Tupel des Joins r1
r2
Oktober 2007
Department für Wissens- und Kommunikationsmanagement - Schranz / Datenbanken
aus r1
aus r2
(1)
(1)
1
1, 1, 1, 1
(1)
(2)
−
−
(1)
(3)
−
−
(2)
(1)
1
1, 2, 2, 1
(2)
(2)
−
−
(2)
(3)
−
−
(3)
(1)
−
−
(3)
(2)
−
−
(3)
(3)
2
2, 0, 2, 0
52
A,B,C,D
Aufgrund der Forderung nach gleichen Werten für das gemeinsame Attribut A bleiben
für den Join hier nur drei Kombinationen übrig:
r1 r2 :
A B C D Zeile
1111
(1)
1221
(2)
2020
(3)
Hätten r1 und r2 kein gemeinsames Attribut (beispielsweise hätte r2 durch eine
Projektion auf D nur noch dieses eine Attribut), so bestünde der Join aus allen 9
möglichen Kombinationen. Er wäre somit laut (iv) das kartesische Produkt der
Relationen r1 und r2 und würde folgendermaßen aussehen:
r1 πD(r2) :
A B C D Zeile
1111
(1)
1111
(2)
1110
(3)
1221
(4)
1221
(5)
1220
(6)
2021
(7)
2021
(8)
2020
(9)
Würde nun mit dem Join r1
r2 (drei Ergebniszeilen), der bereits oben gebildet wurde,
ein Join mit r3 gebildet, so gäbe es mehr Möglichkeiten – 3 · 4 = 12. Doch auch hier
können aufgrund der gemeinsamen Attribute C und D nur zwei gültige Tupel aufgelistet
werden:
(r1 r2)
r3 :
Oktober 2007
Department für Wissens- und Kommunikationsmanagement - Schranz / Datenbanken
53
A B C D E Zeile
11110
(1)
12210
(2)
Ganz anolog zunächst die Join-Bildung zwischen r2 und r3, diese beiden Relationen
können 3 · 4 = 12 Möglichkeiten bilden
Tupel
aus r2
Tupel
aus r3
gem. Attribut D Tupel des Joins r2
A,C,D,E
(1)
(1)
1
1, 1, 1, 0
(1)
(2)
1
1, 0, 1, 1
(1)
(3)
1
1, 2, 1, 0
(2)
(4)
−
−
(2)
(1)
1
0, 1, 1, 0
(2)
(2)
1
0, 0, 1, 1
(2)
(3)
1
0, 2, 1, 0
(2)
(4)
−
−
(3)
(1)
−
−
(3)
(2)
−
−
(3)
(3)
−
−
(3)
(4)
−
−
r3
Wie zu sehen ist, hat dieser Join allerdings durch das gemeinsame Attribut D nur 6
gültige Tupel:
r2 r3 :
A C D E Zeile
1110
(1)
1011
(2)
1210
(3)
0110
(4)
0011
(5)
0210
(6)
Wird nun die Relation r1 wieder mit diesem bestehenden Join r2 ./ r3 gebildet ergibt
sich wieder eine Möglichkeit von 6 · 3 = 12, durch die gemeinsamen Attribute A und C
ergeben sich wieder nur zwei gültige Tupel:
r1 (r2
r3) :
A B C D E Zeile
11110
(1)
12210
(2)
Oktober 2007
Department für Wissens- und Kommunikationsmanagement - Schranz / Datenbanken
54
Und wie erwartet können wir nun folgende Aussage bestätigen:
(r1 r2) r3 = r1 (r2 r3)
4.1.4.1Leistungsfähigkeit von Datenbankbetriebssystemen bei Joins
An diesem Beispiel sieht man, dass die Bildung eines Joins gerade bei großen
Relationen sehr aufwändig ist. Und je mehr Tabellen eine relationale Datenbank besitzt,
desto häufiger müssen bei Abfragen und Aktualisierungen Join-Bildungen durchgeführt
werden. Eine große Tabellenanzahl bedeutet somit neben der Zerstückelung der
Information auch oft eine Beeinträchtigung der Leistung (Performance). Durch die
Bildung von hohen Normalformen (z. T. höher als die Dritte) versucht man einerseits
jegliche Anomalien zu vermeiden, erhöht jedoch andererseits die Anzahl der Tabellen.
Daher ist es manchmal aus Performancegründen sinnvoller, nicht durch extreme
Normalisierung jede Anomalie beseitigen zu wollen.
Ansatz zur Optimierung
Bei einer Selektion wird durch die Auswahl von bestimmten Zeilen eine Tabelle
verkleinert. Bei vielen Abfragen sind sowohl Selektionen als auch Join-Bildungen
notwendig. In solchen Fällen versucht der Optimierer des DBMS, Selektionen vor JoinBildungen durchzuführen, damit die am Join beteiligten Tabellen möglichst klein sind.
4.2D IE D ATEN AB FR AG ES PR AC HE SQL
An einem vorhandenen Datenbestand können von Seiten des Benutzers zwei Arten von
Arbeiten vorgenommen werden:
 Abfragen (Queries), wodurch die Daten keine Veränderung erfahren. Zum

Beispiel möchte die Chefin eine Auflistung der Personalnummern und Namen
aller Mitarbeiter, die in Abteilung 2 arbeiten. Das Ergebnis einer solchen
Abfrage ist eine spezielle Sicht (View) auf das Datenmaterial.
Aktualisierungen (Updates) in Form von Einfüge-, Lösch- und
Änderungsvorgängen. Beispielsweise wird das Gehalt der Mitarbeiterin Müller
um 10 Prozent erhöht.
Hierfür werden dem Benutzer sogenannte Datenmanipulationssprachen (DML) zur
Verfügung gestellt. SQL ist eine solche Sprache, die Abkürzung steht für Structured
Query Language – in der Literatur manchmal auch Standard Query Language genannt –
und bedeutet auf deutsch etwa “strukturierte Abfragesprache“. Das Absenden eines
SQL-Befehls
geschieht
auf
der
externen
Ebene
(ausserhalb
des
Datenbankbetriebssystems) über spezielle Eingabemasken, die Bestandteil der
grafischen
Oberfläche
des
Datenbanksystems
sind,
oder
über
eine
Kommandozeileneingabe. Nach der Entgegennahme des Befehls durch das DatenbankManagment-System wird dieser zunächst vom einem Parser auf seine syntaktische
Korrektheit geprüft, bevor er im Falle einer Fehlerfreiheit weiterverarbeitet wird.
Oktober 2007
Department für Wissens- und Kommunikationsmanagement - Schranz / Datenbanken
55
SQL-Anweisungen zum Erstellen, Konfigurieren und Löschen von Datenbanken und
Tabellen zählen sprachlich zu den Datendefinitionssprachen (DDL) der konzeptionellen
Ebene von DBMS.
Die SQL-Befehle zum Auswählen und Editieren vorhandener Datensätze werden
wiederum – wie oben erwähnt – den Datenmanipulationssprachen (DML) zugeordnet.
SQL stellt somit äußerst vielseitige Möglichkeiten zur Bearbeitung einer Datenbank.
Die folgende Tabelle zeigt einen Überblick über die Einsatzmöglichkeiten
(Kategorisierung der Befehlstypen in SQL):
Befehlskategorisierung in SQL
Gruppe
Abk.
Beschreibung
Datendefinition
DDL
Erstellen von Tabellen und CREATE, DROP, ALTER
wichtige Befehle
Indizes
Datenabfrage
DQL
Auswahl von Datensätzen aus SELECT
einer oder mehrerer Tabellen
Datenmanipulation
DML
Anfügen, ändern, löschen von INSERT, UPDATE,
Datensätzen
DELETE
Datenzugriffskontrolle DCL
Vergabe von Zugriffsrechten GRANT
für Tabellen
Die Anfänge dieser Sprache liegen in den frühen 70er Jahren. Bei IBM wurde schnell
die Bedeutung der relationalen Datenbanksysteme erkannt und die Sprache SEQUEL –
Structured English Query Language – entwickelt, die später in SQL umbenannt wurde.
Anfang der 80er Jahre erstellte das American National Standards Institut eine
Standardisierung der relationalen Datenbanken und somit auch der SQL-Sprache. 1986
wurde schließlich die erste Version mit Standard SQL1 (auch SQL86 genannt)
verabschiedet. Diese Version enthielt bereits alle Befehle zur Datenmanipulation sowie
die SELECT-Klauseln WHERE, GROUP BY und HAVING. Als Aggregatfunktionen
waren COUNT, SUM, MIN, MAX und AVG nutzbar und erste Formen von
Unterabfragen konnten durchgeführt werden. Die Befehle zur Definition der Datenbank
inklusive ihrer Tabellen waren allerdings noch recht unübersichtlich.
Die im Oktober 1989 veröffentlichte Version SQL89 umfasste bereits Möglichkeiten der
Integritätsprüfung wie beispielsweise die CHECK-Klausel und Gültigkeitsprüfungen für
neu einzufügende Werte. Die Elemente Primär, Sekundär und Fremdschlüssel wurden in
den Sprachumfang aufgenommen.
Standard SQL2 enthielt eine deutliche größere Funktionsvielfalt:
Einführung neuer Datentypen, Domäne als vordefinierte Typen, Änderung der
Tabellendefinition mit ALTER TABLE, Angleichung von OUTER und INNER JOIN,
Transaktionsmöglichkeiten
Oktober 2007
Department für Wissens- und Kommunikationsmanagement - Schranz / Datenbanken
56
Die im Dezember 1999 verabschiedete Version SQL3 (auch SQL 99 genannt) wurde
nochmals um einige Funktionen erweitert, über die unter anderem nun auch
objektorientierte Programmierung der Datenbank möglich wird.
4.2.1A NL EG EN , L ÖS CH EN
UN D
A US WÄ HL EN
EI NE R
D ATEN BA NK
Bevor Daten in eine Datenbank eingegeben werden können, muss zunächst die
Datenbank angelegt und benannt werden. Anschließend sind die Tabellen zu erstellen
und konfigurieren, in die später Datensätze eingetragen werden sollen. Grundsätzlich
gilt, dass für die Namen von Datenbanken, Tabellen und Spalten nur solche Bezeichner
verwendet werden sollten, die keine SQL-Schlüsselwörter enthalten und deutsche
Umlaute sind zu vermeiden.
Der Befehl zum Anlegen einer Datenbank ist letztendlich eine sehr vereinfachte Form
des Tabellenerstellungsbefehls, den wir – wie auch die weiteren gennannten Vertreter –
im praktischen Teil der Veranstaltung detailliert betrachten wollen:
CREATE DATABASE <Datenbankname>
Der Befehl zum Löschen einer Datenbank ist ähnlich dem Erstellungsbefehl analog zum
Löschen einer Tabelle:
DROP DATABASE <Datenbankname>
Eine Übersicht über die vorliegenden Datenbanken des Servers ist erhältlich mit dem
Befehl
SHOW DATABASES
und eine konkrete Datenbank wird ausgewählt über:
USE <Datenbankname>
4.2.2A NL EG EN , Ä ND ER N
UN D
D EF INI ER EN
EI NE R
T AB EL LE
Tabellen stellen die Grundlage einer relationale Datenbank dar. In ihnen werden die
Informationen strukturiert nach den Vorgaben der Tabellendefinition abgespeichert.
Eine Übersicht der bestehenden Tabellen ist durch folgenden Befehl erhältlich:
SHOW TABLES
Ist die Definition einer bereits bestehenden Tabelle gewünscht gibt es einen
DESCRIBE-Befehl, der die Tabellendefinition aufführt:
DESCRIBE <Tabellenname>
Um eine Tabelle anlegen zu können, müssen im SQL-Befehl sowohl der Tabellename
genannt als auch die Spalten mit ihren Definitionen aufgeführt werden. Das
Relationenschema wird durch den folgenden SQL-Befehl als Tabelle in die Datenbank
eingefügt:
Oktober 2007
Department für Wissens- und Kommunikationsmanagement - Schranz / Datenbanken
57
CREATE TABLE t_personal
(
key1 INTEGER NOT NULL PRIMARY KEY,
nachname VARCHAR(50),
...
)
Der SQL-Befehl zur Tabellenerzeugung beinhaltet auch Möglichkeiten zur Typgebung
der einzelnen Attribute, zur Setzung von (Primär)Schlüsseln oder auch Indizes.
Mittels dem Befehl:
ALTER TABLE ...
können Tabellen mit SQL verändert werden.
4.2.3E INE T AB EL LE
MI T
W ER TE N
FÜ LL EN , LE ER EN UN D LÖ SC HE N
Datensätze können in eine Tabelle mit dem Befehl:
INSERT INTO
eingefügt werden.
Mit dem Befehl:
DELETE FROM <tablename>
können ganze Tabellen gelöscht werden und mit dem Befehl
DROP TABLE <tablename>
wird die Tabelle vollständig aus der Datenbank entfernt.
4.2.4D ATEN
AU SWÄ HL EN UN D BE AR BE ITE N
Die wesentlichsten Operationen der relationalen Algebra werden im Befehl SELECT
abgebildet. Durch die Projektion auf bestimmte Teilattribute, durch die Selektion auf
bestimmte Werteausprägungen von benannten Attributen und durch die Bildung von
Joins können mit diesem Befehl die gewünschten Ergebnisse erreicht werden.
Beispiele:
SELECT * FROM <tablename>
SELECT A,C,E FROM <tablename>
SELECT B,D FROM <tablename> WHERE A >= 17
SELECT a.A, C,D,E FROM <tname1> a, <tname2> b WHERE a.A = b.A AND C=25
…
Für eine detaillierte Beschreibung der SELECT Statements sei hier auf die praktischen
Übungen und auf die Spezifikationen des Standards SQL verwiesen.
Oktober 2007
Department für Wissens- und Kommunikationsmanagement - Schranz / Datenbanken
58
4.2.5A GG RE GATF UN KT ION EN , B ER EC HN UN GE N , S OR TI ER UN GE N
SQL erlaubt auch Operationen, die über ganze Tabellenspalten Werte berechnen
können. Solche Aggregatfunktionen errechnen zum Beispiel das Minimum,
dasMaximum oder den Durchschnitt aller Werte in einer Spalte der untersuchten
Tabelle.
Weiters ist es möglich, Werte mit Standardfunktionen zu den untersuchte Datentypen zu
verknüpfen. So kann etwa eine gesamte Spalte mit einem Faktor multipliziert werden
(Umrechnung einer Schilling-Spalte in Euro, oder umgekehrt).
Darüber hinaus kann das Ergebnis einer Abfrage nach bestimmten Kriterien sortiert
oder im Falle von Aggregatfunktionen gruppiert werden. Auch dazu bringt die
Fachliteratur , aber auch der praktische Teil der Veranstaltung anschauliche Beispiele.
4.2.6B ES TE HE ND E D ATEN SÄ TZ E
VE RÄ ND ER N OD ER GE ZI ELT LÖ SC HE N
Nachdem nun Tabellen erstellt, Datensätze eingefügt und (selektiert) angezeigt wurden,
fehlen noch die Befehle, mit denen bestehende Datensätze verändert oder gezielt
gelöscht werden können.
4.2.6.1Ändern über UPDATE
Beim Ändern von Datensätzen ist zu unterscheiden, ob global die Werte einer
bestimmten Tabellenspalte verändert werden sollen oder nur diejenigen Zeilen von der
Änderung betroffen sein sollen, die eine bestimmte Bedingung erfüllen. Betrachten wir
zunächst den Fall der globalen Änderung. Wir beziehen uns dabei wieder auf die
Tabelle t_personal und möchten ein einheitliches Gehalt von 2000 Euro einführen.
Dazu senden wir folgenden Befehl an die Datenbank:
UPDATE t_personal SET gehalt=2000
Das SQL-Schlüsselwort UPDATE leitet hier die Aktualisierung ein und nach demWort
SET sind die betreffenden Spalten mit dem gewünschten neuenWert anzugeben. Als
nächstes wollen wir diese Aktualisierung nun auf einen bestimmten Datensatz
beschränken: Das Gehalt des Herrn Pauly soll auf 2500 Euro angehoben werden.
UPDATE t_personal SET gehalt=2500 WHERE nachname="Schranz"
Anstelle des Vergleiches des Nachnamens auf Gleichheit mit „Schranz“ , hätte auch die
Personalnummer angegeben werden können (WHERE pernr=3).
4.2.6.2Löschen mittels DELETE FROM ... WHERE
Wie die vollständig Leerung einer Tabelle über den Befehl DELETE FROM ...
funktioniert, haben wir bereits kennen gelernt. Nun wollen wir aber nur bestimmte
Zeilen aus einer Tabelle löschen und nicht alle. Dies geschieht wieder über die Angabe
einer Bedingung mit Hilfe des WHERE-Teils. Nehmen wir an, Herr Schranz hätte
Oktober 2007
Department für Wissens- und Kommunikationsmanagement - Schranz / Datenbanken
59
gekündigt und wir wollten seinen Datensatz nun aus der Tabelle t_personal entfernen.
Dazu benötigten wir den nachstehenden Befehl:
DELETE FROM t_personal WHERE pernr=3
An dieser Stelle sollte der Benutzer möglichst immer mit der Angabe des
Primärschlüssels in der WHERE Bedingung arbeiten, damit keine Irrtümer auftreten
können.
4.3P RO BL EME
MI T
SQL
UN D DE M RE LATI ON AL EN
MOD EL L
Im folgenden sollen ohne Gewichtung und Wertung einige Problemfelder aufgezählt
werden, mit denen das relationale Datenbankmodell und wir als seine Anwender zu
kämpfen haben. Die sich daraus ergebenden konkreten Schwierigkeiten ergeben sich in
der Anwendung beim speziellen Einsatzfall und können von komplett irrelevant bis zu
enormen zusätzlichen Aufwänden in der Realisierung reichen. Trotz der aufgezählten
Problematiken ist der relationale Ansatz der meistverbreitete und erforschte in der
Datenbankwelt und kann auf vier Jahrzehnte Erfahrung und herausragender
Einsatzperformance und Leistungsfähigkeit verweisen.
Offene Probleme beim relationalen Ansatz
 Tabellenfelder haben feste Maximalgröße

z. B. Foto von Studenten soll elektronisch in der Datenbank archiviert werden
Sehr aufwendige Modellierung bei komplexen, hierarchischen Objekten

z. B. Student hat mehrere Adressen oder Telefonnummern
z. B. Studiengang von mehreren Fakultäten gleichzeitig
Aufwendige Simulation von Polymorphie
z. B. Person, davon abgeleitet Student, Mitarbeiter, Professor
Dies führt zu:
 Explosion der Tabellenanzahl
 Komplexe Abfragen
 Geschwindigkeitsprobleme
 Sonderbehandlung von variablen, großen Objekten (BLOBs)
 Insellösungen und Speziatricks der Datenbankimplementierer
Oktober 2007
Department für Wissens- und Kommunikationsmanagement - Schranz / Datenbanken
60
4.4L ITERATU R
A. Kemper/A. Eickler: Datenbanksysteme 2001, Oldenbourg Wissenschaftsverlag
GmbH ISBN 3-486-25706-4
G. Vossen: Datenmodelle, Datenbanksprachen und Datenbankmanagmentsysteme,
2000, Oldenbourg Wissenschaftsverlag GmbH, ISBN 3-486-25339-5
Elmasri, Navathe: Fundatmentals of Database Systems, 2000, Addison-Wesley, ISBN 0201-54263-3
M. Ebner: SQL lernen, 2002, Addision-Wesley, ISBN 3-8273-2025-9
M. Schranz: Fragmentierung und Replikation in Verteilten Datenbanken, Diplomarbeit
1994, Technische Universität Wien
Oktober 2007
Department für Wissens- und Kommunikationsmanagement - Schranz / Datenbanken
5 D AT E N B A N K E N
UND
61
A P P L I K AT I O N E N
FA L L S T U D I E P R E S S E T E X T. A U S T R I A
NACHRICHTENAGENTUR
In diesem Abschnitt soll ein kokretes Anwendungs-Fallbeispiel zeigen, wie
Datenbanken innerhalb von komplexen Wirtschaftsanwendungen zum Einsatz kommen.
Als Fallstudie wurde die in Österreich beheimatete und im gesamten deutschen
Sprachraum agierende Nachrichtenagentur pressetext.austria gewählt. Die Anwendung
scheint schon deshalb relevant, weil sowohl Informationsinhalte und Leserdaten einen
derart enormen Umfang erreichen, dass ohne klar strukturierte und leistungsfähige
Datenbanken ein wirtschaftlicher Betrieb der untersuchten Nachrichtenagentur nicht
möglich wäre.
Die Erfahrungen des Autoren gründen sich darauf, dass er selbst über vier Jahre im
technischen Management der Nachrichtenagentur tätig war und seither
pressetext.austria zu seinen bedeutendsten Kunden zählen kann.
5.1F AL LS TU DI E
PR ES SE TE XT . AUSTR IA
( PT E ,
WW W . PR ES SET EX T . AT )
pressetext.austria (pte) defniert sich selbst als eine rein online basierte
Nachrichtenagentur. Das Konzept der pte setzt sich einerseits aus der Qualitätsgarantie
durch selbst recherchierte hochqualitative Wirtschaftsnachrichten und andererseits
durch die Bereitstellung einer Nachrichten-Distributionsplattform für interessierte
Wirtschaftsunternehmen zusammen.
Gesellschaften, Vereine, Organisationen können die Nachrichtenplattform nutzen, um
selbst wirtschaftsrelevante Nachrichten an die – zum Stand Juni 2004 – mehr als 70.000
Abonnenten des Nachrichtendienstes zu versenden und die Meldung selbst in ein
ständig verfügbares und recherchierbares Nachrichtenarchiv (www.pressetext.at) online
zu stellen. Ergänzt werden diese Meldungen durch täglich recherchierte
Wirtschaftsnachrichten durch eine unabhängige Redaktion im Hause pressetext.austria,
die durch die Zahlungen der aussendenden Unternehmen finanziert wird, jedoch durch
ein Redaktionsstatut zur unabhängigen Berichterstattung befugt ist.
Oktober 2007
Department für Wissens- und Kommunikationsmanagement - Schranz / Datenbanken
5.1.1D IEN ST LE ISTU NG EN
62
DE R PR ES SET EX T . AU STR IA
Wie kann nun der interessierte Leser auf die Dienstleistungen der pressetext.Austria
zugreifen? Was wir hier beschreiben wollen, sollte technisch exakt eher
„Benutzerschnittstelle zum pte Service“ heißen, wir wollen aber den nüchternen Blick
etwas im Sinne des attraktiven Services von pte anreichern.
Jeder Leser von pressetext.austria kann als erste Anlaufstelle die Webseiten von pte
besuchen, um sich einerseits über aktuelle Wirtschaftsneuigkeiten zu informieren (pte
agiert passiv) und andererseits seine persönlichen Profile für individualisierte
Belieferungen an Wirtschaftsnachrichten festzulegen (pte agiert aktiv).
Beide Leistungen werden durch ein relationales Datenbankmanagementsystem
(RDBMS) unterstützt. Dem Leser/Besucher wird der Zugang zu den Datenbankinhalten
nicht direkt, sondern über die komfortable Schnittstelle WWW gewährt. So kann er jede
einzelne pte Nachricht über die Webseite recherchieren (Volltextsuche, Navigation),
thematisch verwandte Meldungen ansehen, die Meldungen ausdrucken oder an einen
interessierten Bekannten weiterleiten. Jede Meldung wird aktuell aus der Datenbank
ausgelesen und für die Anzeige im WWW-Browser in HTML generiert.
Jeder interessierte Leser kann sich für ein kostenfreies Abonnement über
benutzerfreundliche Web-Formulare registrieren. Dabei wird seinen thematischen
Vorlieben entsprechend in der Datenbank ein Profil angelegt. Je nach den gewünschten
Einstellungen kann der Leser dann jede einzelne Pressemitteilung sofort nach deren
Oktober 2007
Department für Wissens- und Kommunikationsmanagement - Schranz / Datenbanken
63
Erstellung zugesandt erhalten (meist Journalisten, die die Meldungen sehr zeitkritisch
für ihren Beruf benötigen) oder aber eine Tageszusammenfassung der relevantesten
Meldungen zu seinem Themenprofil erhalten (hier wird abends für jeden Abonnenten
eine individuelle Zusammenstellung erarbeitet und versandt).
Neben diesen Basis-Dienstleistungen bedient pressetext.austria kommerzielle Kunden
(B2B) mit Nachrichtenstreams über ein Content Syndication Service (Content
Management System auf Basis XML Massennachrichtendistribution). Pte beliefert
damit u.a. yahoo, wallstreet-online, MSN und den Österreichischen Mobilfunkanbieter
ONE.
5.1.2T EC HN ISC HE A US RÜ ST UN G
Als österreichische KMU ist pressetext angehalten, Resourcen optimal auszuschöpfen,
weil im Gegensatz zu Großunternehmen der Zugang zu gigantischen Rechenzentren
und unerschöpflicher Manpower nicht möglich ist.
Die Strategie, die pressetext.austria seit seiner Gründung verfolgte, wurzelt im Einsatz
von Open Source Software auf Basis von qualitativ hochwertigen, aber handelsüblichen
Standard-Hardwaregeräten (COTS Komponenten).
Das eingesetzte relationale Datenbankmanagementsystem (RDBMS) ist das Open
Source System MySQL, mit dem pressetext.austria seit 1999 sehr positive Erfahrungen
sammeln konnte. Die gesamte Datenbank besteht aus 12 unanbhängigen Datenbanken,
die für das Basissystem pte bedeutendste Datenbank setzt sich aus 78 Relationen
(Tabellen) zusammen.
5.1.3S ER VI CE D ETAI LB ES CH RE IBU NG EN
UN D
DB-A US LA STU NG
Das eingesetzte Content Management System redN© ist mehrmandantenfähig und
betreut von der zentralen Datenbank aus die Nachrichtenportale pressetext.austria
(www.pressetext.at),
pressetext.deutschland
(www.pressetext.de)
und
pressetext.schweiz (www.pressetext.ch, www.pressetext.li).
Jedes der Portale erlaubt eine isolierte Recherche der länderspezifischen Nachrichten
und gliedert die Wirtschaftsbeiträge in die Bereiche (Channels) Hightech, Medien,
Business und Leben. Zusätzlich werden die Meldungen maximal 2 von 15 Ressorts
zugeordnet, was für die individuellen Profile zur Auslieferung verwendet wird.
Die Versendung von Wirtschaftsnachrichten erfolgt über eine Web-Schnittstelle, die nur
registrierten Aussendekunden zugänglich ist. Jeder Kunde erhält zur Bedienung der
Versendefunktionen ein Kundenkennwort und ein Passwort und kann dann einige
Funktionalitäten des CMS nutzen, um Wirtschaftsnachrichten über das pressetext
Netzwerk zu verteilen.
Oktober 2007
Department für Wissens- und Kommunikationsmanagement - Schranz / Datenbanken
64
Aktuell befinden sich in der Datenbank etwa 69.000 Wirtschaftsnachrichten, die alle
über die Web-Schnittstelle online und jederzeit recherchiert werden können. Mehr als
71.000 Abonnenten haben für sich selbst ein individuelles Profil angelegt und werden
dadurch (manche auch mehrmals) täglich mit pressetext Nachrichten beliefert (per
email). Neben den monatlich über 1,4 Millionen Seitenzugriffen (echte page
impressions) werden so auch zusätzlich mehr als 500.000 emails pro Werktag versendet.
Jede einzelne Webseite und jede einzelne Email werden aus zumindest einem
Datenbankzugriff erstellt, wodurch sich eine Datenbankbelastung von mehr als 5
Zugriffen pro Sekunde ergeben.
Das technische Service läuft großteils auf symmetrischen Servern, die mit einer
speziellen Variante der LAMP Architektur ausgerüstet sind (Linux, Apache, Mysql,
Perl/Mason).
Der Datenbankserver ist ein eigens für die Verwaltung des RDBMS abgestellter
Rechner, der durch eine Backup-Rechner gesichert wird.
Die Distribution der Wirtschaftsnachrichten erfolgt über zwei Mailserver, die B2BVariante wird von einem Syndikatsserver realisiert. Alle Komponenten bedienen sich
aber der unabhängig vom Service verwalteten Daten des Datenbankservers.
Oktober 2007
Department für Wissens- und Kommunikationsmanagement - Schranz / Datenbanken
65
5.2A KT UE LL E E NT WI CK LU NG EN
Obwohl die beschriebene Fallstudie ständig technischen Neuerungen unterworfen ist,
und etwa die CMS Komponenten, die Mail-Distributionskomponente oder die
Syndikatsservices zumindest einmal pro Jahr aktualisiert werden, sind die Daten und
das Datenbankbetriebssystem ein stabiles Kernstück des Gesamtservices.
Aktuell wird pressetext.austria als Partner im EU-Projekt OmniPaper und im EUProjekt Nedine seine Wirtschaftsnachrichten über den W3C-Standard SOAP an ein
europaweites Nachrichtenarchiv ausliefern (Projektende Mitte 2007). Die technischen
Realisierungen werden vom Projektkonsortium getragen, die Gesamtarchitektur wurde
von Dr. Schranz als Technischen Direktor des Projektes konzipiert.
Im
EU-Projekt
NEDINE
arbeiten
pressetext.austria,
die
Tschechiche
Nachrichtenagentur CIA und die slowakische Nachrichtenagentur SITA gemeinsam mit
Universitäten und PR-Agenturen aus ingesamt sechs Staaten Europas zusammen, um
ein Wirtschaftsnachrichten-Verteilnetzwerk in Mittel- und Zentraleuropa aufzubauen.
Auch hier werden moderne technische Konzepte zum Einsatz kommen, aber die Daten
stehen als Invariante fest im Mittelpunkt der zu entwickelnden Systeme.
Oktober 2007
Herunterladen