Relationale Datenbanksysteme

Werbung
MultiAugustinum
E2A/E3A
SQL
Relationale Datenbanksysteme
Mag. Christian Gürtler
2011
Inhaltsverzeichnis
I.
Allgemeines
5
1. Vergleich Datenbankysteme – Dateisystem
7
2. Architektur eines DBMS
11
2.1. Konkrete Architekturen . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3. Arten von Datenbanksystemen
3.1. Hierarchische Datenbanksysteme . .
3.2. Netzwerkmodell . . . . . . . . . . . .
3.3. Objektorientierte Datenbanksysteme
3.4. Relationale Datenbanksysteme . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
II. Datenbankdesign
4. Entity-Relationship-Modell
4.1. Modelle . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2. Grundlagen des Entity-Relationship-Modells (ER-Modell)
4.3. Eigenschaften von Beziehungen . . . . . . . . . . . . . . .
4.3.1. Eigenschaften von Eigenschaften . . . . . . . . . .
4.3.2. Stelligkeit . . . . . . . . . . . . . . . . . . . . . . .
4.3.3. Kardinalität – Konnektivität . . . . . . . . . . . .
4.3.4. Stärke der Beziehung . . . . . . . . . . . . . . . . .
4.3.5. Optionalität . . . . . . . . . . . . . . . . . . . . . .
4.3.6. Abhängige Entity-Typen, IST-Beziehung . . . . . .
4.3.7. Redundante Beziehungen . . . . . . . . . . . . . .
4.4. Beispiel eines ER-Modells . . . . . . . . . . . . . . . . . .
15
15
15
16
16
17
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
19
19
20
23
24
25
25
27
27
28
28
30
3
Teil I.
Allgemeines
5
1
Vergleich Datenbankysteme –
Dateisystem
Bis in die 1960er-Jahre wurden die Daten in einem Dateisystem gespeichert, im
schlimmsten Fall verwaltet jedes Anwendungsprogramm seine eigenen Daten und mitunter auch noch in eigenen Dateiformaten (Excel als xls, Access als mdb usw.)
• Die Buchhaltung speichert Daten über Artikel und Adressen.
• Die Auftragsverwaltung bearbeitet Daten über Aufträge, Adressen und Kunden
• Die Kundenbetreuung bearbeitet Daten der Kunden (Adressen,...)
Anwendung 1
Datei 1
Anwendung 2
Datei 2
Datei 3
Abbildung 1.1.: Zugriff auf Dateien
Problem der Datenredundanz
In diesem Szenario sind die Daten mehrfach (redundant) gespeichert, in der Folge
kommt es einerseits zu unnötig belegtem Speicherplatz und andererseits (was noch
gravierender ist) zu Dateninkonsistenzen: ändert die Kundenbetreuung die Daten eines Kunden – zum Beispiel von Herrn Müller, dann müssen auch die Buchhaltung und
die Auftragsverwaltung ihre Daten ändern. Geschieht dies nicht, so haben alle Abteilungen unterschiedliche Datensätze, also inkonsistente Daten. Der Müller aus der
Kundenbetreuung ist nicht mehr der Kunde Müller aus der Auftragsverwaltung.
7
1. Vergleich Datenbankysteme – Dateisystem
Weitere Problemfelder
Um diese Daten zu verwalten, werden in den Betrieben oft zusätzlich spezielle Anwendungsprogramme entwickelt. Die Entwickler solcher Programme müssen jedoch
wissen, wie die Daten intern gespeichert werden (um die Daten in einem speziellen
Format zu speichern). Dieser Punkt wird als fehlende Datenunabhängigkeit bezeichnet.
Ein weiterer Punkt der Speicherung von Daten in einem Dateisystem betrifft fehlende Zugriffskontrolle und Datensicherheit. Meist können in einem Dateisystem die
Rechte nur bis auf Dateiebene vergeben werden, nicht jedoch auf einzelne Inhalte einer Datei. Zusätzlich existieren kaum Möglichkeiten, Dateien so zu sperren, dass sich
mehrere Benutzer beim Bearbeiten nicht gegenseitig behindern bzw. Daten gegenseitig
überschreiben (was zu Datenverlust führen kann).
Ende der 1960er-Jahre wurden Dateiverwaltungssysteme eingeführt. Zwischen Datei
und Anwendung liegt eine Dateiverwaltungsschicht (z. B ISAM – Indexed Sequential
Access Method ).
Anwendung 1
Anwendung 2
Dateiverwaltungssystem I
Datei 1
Dateiverwaltungssystem II
Datei 2
Datei 3
Abbildung 1.2.: Zugriff auf Dateien
Mit der Verwendung von (I)SAM wurde Geräteunabhängigkeit erreicht, die Daten
waren aber immer noch redundant gespeichert.
Die Lösung dieser Probleme wurden in den 1970er-Jahren durch den Einsatz von
Datenbanksystemen erreicht, hier ist insbesonders das von Codd entwickelte Relationenmodell zu nennen. Die Daten sind in einer Datenbank gespeichert, wo die Daten
physisch liegen wird vom Datenbankmanagementsystem (DBMS) verwaltet, die Anwender und Programmiererer brauchen sich in der Regel nicht darum zu kümmern.
Der Zugriff erfolgt sozusagen gefiltert“ (abstrahiert) durch das DBMS.
”
8
Anwendung 1
Anwendung 2
DBMS
Datenbank
Abbildung 1.3.: Zugriff auf Datenbank
Zusammengefasst: Datenbanksysteme zeichnen sich durch folgende Prinzipien aus:
• Die Daten werden zentral und nicht-redundant gespeichert.
• Mehrere Benutzer können gleichzeitig (parallel) auf die Daten zugreifen. Transaktionen verhindern unerwünschte Nebeneffekte. Konkurrierende Transaktionen
müssen synchronisiert werden (greifen mehrere Transaktionen auf einen Datensatz zu, so müssen sie aufeinander abgestimmt werden). 1
• Datenunabhängigkeit gewährleistet die Unabhängigkeit der Programme von den
Daten und umgekehrt. Wie die Daten organisiert bzw. gespeichert werden spielt
für ein Programm keine Rolle; ein bestimmtes Programm oder eine Applikation
darf wiederum die Organisation der Daten nicht beeinflussen.
• Datenbanksysteme gewährleisten feiner abgestimmte Zugriffskontrollen und Rechte. Sichten (eingeschränkte Sicht auf die Daten) und Rechte auf einzelne Datensätze (Zeilen) sind möglich (views).
• Ein Datenbanksystem bietet Operationen zum Suchen, ändern und Anlegen von
Datensätzen. Dazu sind deskriptive Sprachen vorhanden.
• Ein Katalog, auch Data Dictionary genannt, ermöglicht Zugriffe auf die Beschreibungen (Metadaten) der Daten und Datenbanken (um zum Beispiel zu erfahren,
wer einen bestimmten Datensatz angelegt oder geändert hat, oder welche Tabellen eine bestimmte Datenbank besitzt).
• Das Datenbanksystem gewährleistet die Datenintegrität (Konsistenz).
• Datensicherung muss die Wiederherstellung von Daten nach Fehlern gewährleisten.
1 Unter
einer Transaktion versteht man eine Zusammenfassung von Datenbankprozessen, die als
gesamtes (atomar) ausgeführt werden. Nach einer Transaktion befindet sich die Datenbank in
einem konsistenten (consistent) Zustand. Mehrere Transaktionen laufen isoliert voneinander ab.
Bei Erfolg sind die Daten dauerhaft speichert – ACID.
9
1. Vergleich Datenbankysteme – Dateisystem
Im Zusammenhang mit Datenbanken sind verschiedene Begriffe üblich.
Folgende Tabelle erläutert die Unterschiede:
Kürzel
Begriff
Erläuterung
DB
Datenbank
Datenbestand
DBMS
Datenbankmanagementsystem
verwaltet Datenbestand
DBS
Datenbanksystem
DB + DBMS
Tabelle 1.1.: Begriffe
10
2
Architektur eines DBMS
Es werden drei Ebenen unterschieden, die den Zugriff auf die Daten gewährleisten:
• die externe Ebene beschreibt, wie Anwendungen (Masken, Einbettung in Programmiersprachen wie PHP), die Daten sehen. Da dies je nach Anwendung unterschiedlich ist, existiert eine
• konzeptuelle Ebene, die eine logische Sicht auf die Daten bietet. Eine Stufe tiefer
existiert eine
• interne Ebene, die sich um die physische Speicherung auf Platten- bzw. Betriebssystemebene kümmert.
Dieses Schema gewährleistet einen wichtigen Punkt, nämlich den der Datenunabhängigkeit mit ihren zwei Teilaspekten (Implementierungsunabhängigkeit, physische Datenunabhängigkeit – wie die Daten gespeichert werden, ist für die Sicht auf die Daten egal –
und Anwendungsunabhängigkeit, logische Unabhängigkeit – Änderungen auf eine Anwendung dürfen sich nicht auf die Daten auswirken).
Modell für die konzeptuelle Ebene: Relationenmodell
Die Grundlage des Relationenmodells liefert die Relation. Eine Tabelle wird durch ein
sog. Relationenschema beschrieben. Dieses Schema gibt an, aus wievielen Spalten die
Tabelle besteht und wie die Spalten benannt sind. Die Einträge in der Tabelle werden
als Relation zu diesem Schema bezeichnet. Ein Tupel bezeichnet eine Zeile in einer
Tabelle. Die Spaltenüberschriften werden als Attribute bezeichnet.
Relationenname
Weine
Tupel
Attribute
Name
La Rose Grand Cru
Zinfandel
Chardonnay
Farbe
Rot
Rot
Weiß
Jahrgang
1998
2003
1999
Weingut
Creek
Helena
Müller
Relationenname
Relation
Tabelle 2.1: Begriffsbildung
11
2. Architektur eines DBMS
2.1. Konkrete Architekturen
Die relationalen DBMS sind die Systeme, die den Markt dominieren. Vertreter sind
IBM (DB2, Informix), Oracle (Oracle 11g), Microsoft (SQL Server), PostgreSQL, SUN
(MySQL). Die beiden letztgenannten sind Open-Source-Systeme.
Gemeinsame Merkmale sind
• die Drei-Ebenen-Architektur
• einheitliche Sprache (SQL)
• Einbettung in Programmiersprachen wie C/C ++, PHP, Java
• kontrollierter Mehrbenutzerbetrieb, Zugriffskontrolle
Mit Ausnahme von SQL Server (läuft nur auf Microsoft-Servern) gibt es für die oben
genannten Datenbanksysteme Versionen für die gängigsten Betriebssysteme (Windows,
UNIX, Linux). Aus der Sicht einer Anwendung ist ein DBMS ein Client-Server-System.
Der Client läuft meist auf einem PC (Mysql-Query-Browser, PHPMyAdmin, . . . ), der
eine Anfrage an den Server stellt. Dieser nimmt die Anfrage auf, führt eine Bearbeitung
durch und gibt die Ergebnisse dem Client zurück.
Client
Server
3
Anfrage
Antwort
Bearbeitung
1
2
Abbildung 2.1.: Client-Server-System
Oft sind diese Systeme reine sog. Zwei-Schichtensysteme (reine Client-Server-Systeme),
wo sowohl Benutzerschnittstelle als auch die Anwendungslogik im Client integriert
sind. Bei manchen Systemen gibt es allerdings drei Schichten, wie beispielsweise Apache/PHP-MySQL-PostgreSQL. Streng genommen kann der Apache mit PHP und der
entsprechenden Schnittstelle zur Datenbank als eigener Applikationsserver betrachtet werden. Solche Drei-Schichtensysteme gibt es auch bei Oracle, IBM (WebSphere),
RedHat (JBoss), Java Beans. . . .
Bei diesen Beispielen ist es oft problematisch, wenn ein Datenbanksystem durch ein
anderes ersetzt werden soll (beispielsweise MySQL durch Oracle). Dann müssen in
12
2.1. Konkrete Architekturen
sämtlichen Anwendungsprogrammen die Schnittstellen geändert werden (Risiko, Zeitaufwand). Um diese Probleme zu umgehen, wurden sog. Middleware-Lösungen wie
CORBA oder ODBC entwickelt. Diese zusätzliche Schicht enthält nur die Information
(Treiber) über die darunterliegende Datenbank, das Anwendungsprogramm braucht
sich darum nicht zu kümmern. änderungen sind daher nur einmal notwendig und nicht
in allen Programmen.
(a) Zwei-Schichten-System
(b) Drei-Schichten-System
Benutzerschnittstelle
Benutzerschnittstelle
Anwendungslogik
DB-Schnittstelle
Anwendungslogik
DB-Schnittstelle
Datenbank
Datenbank
Abbildung 2.2.: Anwendungsarchitekturen
13
3
Arten von Datenbanksystemen
3.1. Hierarchische Datenbanksysteme
In den 1960er-Jahren wurde das sogenannte hierarchische Datenbankmodell entwickelt.
Die Daten werden in einer Baumstruktur mit einem Root-Knoten, ästen (vertikal) und
Blättern (horizontal) gespeichert.
Firma
Vorstand
Müller
Produktion
Huber
Dorfer
Meier
Vertrieb
Hauser
Berger
Abbildung 3.1.: Hierarchisches Modell
In diesem Modell sind nur 1 : 1 und 1 : N -Beziehungen darstellbar, M : N Beziehungen sind nur mit zusätzlichem Aufwand (virtuelle Zeiger) darstellbar. Ein
ähnliches System existiert in LDAP, einem modernen plattformübergreifenden Userverwaltungssystem.
3.2. Netzwerkmodell
In diesem System, das auch als CODASYL-System, bekannt ist, sind auch M : N Beziehungen darstellbar, allerdings fehlt hier der wesentliche Punkt der Datenunabhängigkeit; als Programmiersprache ist weitgehend COBOL und keine eigene Abfragesprache wie SQL im Einsatz. Diese Datenbanken werden hauptsächlich noch auf
15
3. Arten von Datenbanksystemen
Großsrechnern eingesetzt. Der Datenbestand besteht hier aus netzwerkartig verketteten Datensätzen (Records).
3.3. Objektorientierte Datenbanksysteme
Diese Systeme entstanden bereits in den 1980er-Jahren und wollen prinzipiell die objektorientierte Ausrichtung von Programmiersprachen wie C ++, Smalltalk oder Java
auf Datenbanken abbilden. Erst 1993 bildete sich so etwas wie ein gemeinsamer Standard (Kompromiss).
3.4. Relationale Datenbanksysteme
Im folgenden wird hauptsächlich dieses Modell mit Tabellen, Entities, Relationen etc.
besprochen.
16
Teil II.
Datenbankdesign
17
4
Entity-Relationship-Modell
4.1. Modelle
Modelle dienen zum Erfassen der Daten und nicht der daraus gewonnen Informationen. Daten sind zum Beispiel Schüler mit ihrem Namen, Geburtsdatum und Noten,
Informationen werden daraus gewonnen (Notendurchschnitt, Alter). Um ein Modell
zu entwickeln, sind Informationen über
1. statische Eigenschaften von Objekten und Beziehungen,
2. dynamische Eigenschaften wie Operationen und Beziehungen zwischen Operationen,
3. Integritätsbedingungen von Objekten und Operationen
zu sammeln. Objekte sind zum Beispiel Artikel mit statischen Eigenschaften Bezeichnung, Preis etc. Beziehungen wären beispielsweise: 1 Erzeugern produziert einen Artikel, oder Schüler x geht in die Klasse y.
Dynamische Eigenschaften (Operationen) wären die Berechnung des Endpreises mit
Skonto. Eine Beziehung zwischen Operationen könnte sein, dass ein Artikel erst dann
bestellt werden darf, wenn er produziert wurde, oder ein Schüler erst dann in den
Aufbaulehrgang kommen darf, wenn er eine Fachschule absolviert hat.
Integritätsbedingungen legen zum Beispiel fest, dass ein Artikel eine eindeutige Nummer aufweisen muss (Schlüsselbedingung) und dass es zu jedem Artikel einen Erzeuger
geben muss (referentielle Integrität).
Im Relationenmodell sind sie Daten in ungeschachtelten Tabellen gespeichert (SQLDatenbanken), die Beziehungen werden durch Wertevergleich ausgedrückt. Eine Erweiterung dieses Modells ist das Modell der geschachtelteten oder Non-First-Normal-Form
(N F 2 ), in der Attribute Relationen als Werte haben dürfen, sonst dürfen nur einfache
Strings (keine Arrays, . . . ) gespeichert werden.
Als Vorstufe des Relationenmodells wird das Entity-Relationship-Modell angesehen,
das eine abstrakte Sicht auf die Daten liefert und für einen Entwurf einer Datenbank
unerläßlich ist. Hier werden die Daten mit ihren Attributen und Beziehungen grafisch
dargestellt.
19
4. Entity-Relationship-Modell
4.2. Grundlagen des Entity-Relationship-Modells
(ER-Modell)
Das ER-Modell geht zurück auf eine Arbeit von P. P. Chen im Jahre 1976 und ist
heute faktisch Standard bei der Datenbankentwicklung. Zum ER-Modell gehört eine
grafische Notation (ER-Diagramm oder ERD , die die Datenbank mit ihren Daten und
Beziehungen abstrakt darstellt. Das ER-Modell spiegelt nicht die konkreten Werte wider, sondern zeigt nur die typmäßige Struktur.
Zum ER-Modell gehören drei Begriffe:
1. Entity: ein Objekt aus der reellen Welt (Artikel, Kunden, Lieferanten,. . . ).
Wichtig ist dabei festzustellen, welche Objekttypen (Entitytypen) vorhanden
sind. Ein Objekttyp ist vergleichbar mit einem Karteikasten (Kundenkartei), in
dem für jedes einzelne Objekt( Kunde) eine Karteikarte angelegt wird. Der Objekttyp ist sozusagen die Abstraktion.
2. Relationship: gibt die Beziehung zwischen den Entities wider (Lieferant produziert Artikel, Kunde kauft Artikel,. . . )
3. Attribut: entspricht einer Eigenschaft von Entities oder auch Beziehungen (Farbe eines Weines, Bezeichnung eines Artikels, Name von Kunden,. . . ). Um diese Attribute speichern zu können, sind entsprechende Datentypen notwendig
(integer für ganze Zahlen, date für Datumswerte, char für Strings, . . . )
Entity-Typen
Entities sind Einheiten, in denen Objekte mit der gleichen Art von Eigenschaften gespeichert werden. Die einzelnen Zeilen (Tupel) werden nicht als eigene Einheit gespeichert, sondern werden beispielsweise alle Artikel, die eine Nummer, eine Bezeichnung
und einen Preis aufweisen in einem Entity-Typ Artikel gespeichert. In der grafischen
Notation werden diese Entity-Typen als Rechteck (bei Oracle mit gerundeten Ecken)
dargestellt und der Name des Typs im Rechteck eingetragen.
(a) klassische Darstellung
(b) Darstellung Oracle
Artikel
Artikel
Abbildung 4.1.: Grafische Darstellung eines Entity-Typs
Beziehungstypen
Beziehungen zwischen Entities werden nicht für jede Ausprägung modelliert, sondern
zu Beziehungstypen zusammengefasst, also nicht, dass Artikel Feinkristallzucker von
20
4.2. Grundlagen des Entity-Relationship-Modells (ER-Modell)
der Firma Agrana stammt, sondern dass ein Artikel von einem Produzenten erzeugt
wird. Beziehungstypen werden als Raute dargestellt. Die Beziehungen können Zweistellig (binär) oder n-stellig sein:
(a) binärer Beziehungstyp
Artikel
produziert
Produzent
Kritiker
empfiehlt
Wein
Speise
(b) n-stelliger Beziehungstyp
Abbildung 4.2.: Grafische Darstellung von Beziehungstypen
Attribute
modellieren Eigenschaften von Entities oder Beziehungen, alle Entities eines Typs haben die selben Arten von Eigenschaften. Attribute werden als Oval dargestellt und
einem Entity-Typ zugeordnet. Wie genau die Attribute zergliedert werden, hängt von
den Anforderungen ab. Zum Beispiel kann eine Adresse wie 5581 St. Margarethen
Schulgasse 60 als kompletter Satz gespeichert werden – soll später aber nach Postleitzahlen oder Orten gesucht werden, empfiehlt sich eine Auftrennung in ein Attribut
Postleitzahl, ein Attribut Straße und ein Attribut Ort.
Eigenschaften (Attribute) können identifizierend sein (zum Beispiel eine Buchnummer
oder Personalnummer) oder beschreibend. Hat ein Objekttyp kein identifizierendes
Attribut, so spricht man von einem schwachen Objettyp
Preis
Nummer
Artikel
Bezeichnung
Abbildung 4.3.: Attributnotation eines Entity-Typs
Neben Entities können auch Beziehungen Attribute aufweisen.
21
4. Entity-Relationship-Modell
Anteil
Wein
hergestellt aus
Rebsorte
Abbildung 4.4.: Attributnotation für Beziehungen
In dieser Abbildung ist die Beziehung zweier Tabellen (Entities) dargestellt, das
Attribut Anteil ist weder der Entity Wein noch der Entity Rebsorte zugeordnet.
Beziehungen können auch rekursiv sein, zum Beispiel kann in einem Objekttyp Person
ein Objekt mit einem anderen in Beziehung stehen, wenn Herr Meier der Vorgesetzte
von Frau Müller ist.
Person
PersonalNummer
Name
Abbildung 4.5.: rekursive Beziehung
Identifizierung durch Schlüssel
Für jede Entity gibt es den Effekt, dass einige Attribute mit ihren Werten für eine
eindeutige Identifizierung der Entity sorgen. Ein Wein kann zum Beispiel durch die
Kombination aus Namen, Jahrgang und Weingut identifiziert werden, ein Mitarbeiter
in einer Firma durch seine Sozialversicherungsnummer oder ein Buch durch seine ISBNNummer. Diese Attribute werden Schlüsselattribute genannt. Oft tritt der Fall ein,
dass es mehrere Kandidaten gibt – ein Wein kann durch die Kombination aus Namen,
Jahrgang und Weingut, aber auch durch ein künstliches Merkmal (interne Nummer)
eindeutig gekennzeichnet werden. Aus diesen Kandidaten wird einer gewählt, dieser
wird dann der sog. Primärschlüssel .
Für eine eindeutige Identifizierung gibt es drei Möglichkeiten
• eine einzige Eigenschaft: unikales Attribut; Beispiele wären Sozialversicherungsnummer, ISBN-Nummer. Diese Attribute werden auch natürliche Schlüssel genannt.
22
4.3. Eigenschaften von Beziehungen
• Kombination von Eigenschaften: hier müssen so wenige Merkmale wie möglich
herangezogen werden. Zum Beispiel kann ein Wein durch die Kombination aus
Namen, Jahrgang, Weingut identifiziert. Name, Jahrgang wäre wahrscheinlich
zu wenig, Name, Jahrgang, Weingut, Restzucker wäre zu viel.
• künstliche Schlüssel: wenn ein natürlicher Schlüssel nicht vorhanden ist oder
eine Kombination zu umständlich ist, werden künstliche Attribute eingeführt.
Ein Beispiel wäre in einer Firma die Personalnummer oder in einem Laden die
Artikelnummer.
Künstliche Schlüssel werden sehr oft eingesetzt, da sie meistens kürzer sind (Vergleich Personalnummer mit Sozialversicherungsnummer) und daher weniger fehleranfällig (gegen vertippen etc.) sind.
4.3. Eigenschaften von Beziehungen
Beziehungen gehen immer in zwei Richtungen – zum Beispiel:
Lehrer unterrichtet Schüler; Schüler wird von Lehrer unterrichtet ;
wobei die Fragestellung immer von 1 ausgehen muss:
1 Lehrer unterrichtet wie viele Schüler, 1 Schüler wird von wie vielen Lehrern unterrichtet.
Falsch wäre:
Mehrere Lehrer unterrichten mehrere Schüler, mehrere Schüler werden von mehreren
Lehrern unterrichtet.
Dies würde nichts über die tatsächliche Beziehung zwischen den einzelnen Objekten
(hier Personen) aussagen. Beziehungen lassen sich durch drei Eigenschaften charakterisieren:
• die Stelligkeit gibt an, wie viele Entities an einer Beziehung beteiligt sind
• die Kardinalität gibt an, wie viele Instanzen eines Entity-Typs an einer Beziehung
beteiligt sind.
• die Optionalität . Beispiel: 1 Autor kann (muss aber nicht) Bücher schreiben, 1
Buch muss aber unbedingt von einem Autor geschrieben werden.
Häufig besteht die Notwendigkeit, eine Beziehung zwischen Objekttypen genauer zu
spezifizieren. Zum Beispiel werden in einem Standesamt Informationen gespeichert,
welcher Mann mit welcher Frau verheiratet ist und wann das Hochzeitsdatum war.
Dieses Hochzeitsdatum gehört als Eigenschaft weder zu Mann noch zu Frau, sie ist
eine Eigenschaft der Beziehung.
Ein ähnliches Beispiel wäre die Beziehung zwischen Arbeitgeber und Arbeitnehmer.
Das Einstellungsdatum ist eine Eigenschaft der Beziehung und nicht des Arbeitgebers
oder Arbeitnehmers.
23
4. Entity-Relationship-Modell
Ehe
Mann
Frau
FamName
FamName
Datum
Vorname
Vorname
Abbildung 4.6.: Eigenschaft einer Beziehung
4.3.1. Eigenschaften von Eigenschaften
Angenommen, es werden Informationen über den Fuhrpark einer Firma gespeichert.
Ein Auto weist ein eindeutiges Kennzeichen, eine Farbe, eine Marke auf. Nun soll zu
dieser Marke ein Mindestpreisreis gespeichert werden.
Auto
Kennzeichen
Marke
Farbe
Abbildung 4.7.: Objekttyp Auto
Was würde passieren, wenn zu dieser Marke der Mindestpreis gespeichert wird? Wenn
mehrere Autos zur gleichen Marke gehören, würden Redundanzen auftreten und somit die Fehleranfälligkeit steigen. Daher folgt eine Transformation wie in folgendem
Schema.
Auto
Marke
Kennzeichen
Marke
MinPreis
Farbe
Abbildung 4.8.: Eigenschaften von Eigenschaften
24
4.3. Eigenschaften von Beziehungen
4.3.2. Stelligkeit
Sie beschreibt die Anzahl der beteiligten Entities. Die Mehrzahl der Beziehungen ist
zweistellig (binär), es gibt aber auch ternäre (dreistellige) und n-stellige Beziehungen.
Dazu folgendes Beispiel:
(a) ternärer Beziehungstyp
Wein
empfiehlt
Kritiker
Speise
(b) Drei binäre Beziehungstypen
Kritiker
K-S
K-W
Speise
Wein
S-W
Abbildung 4.9.: Beziehungstypen im ER-Modell
Es ist aber nicht immer möglich, eine n-stellige Beziehung in mehrere binäre aufzuteilen. Angenommen der Kritiker Huber empfiehlt zur Speise Schnitzel den Wein Grüner
Veltliner und zum Henderl einen Eiswein, so entstehen folgende binäre Beziehungen:
• Huber – Schnitzel
• Huber – Henderl
• Schnitzel – Veltliner
• Henderl – Eiswein
Es geht aber Information verloren, dass Huber nur zum Schnitzel einen Veltliner
empfiehlt (Verlustlosigkeit ).
4.3.3. Kardinalität – Konnektivität
Neben der Anzahl der Entitäten ist auch die Anzahl der Instanzen entscheidend. So
kann für die hergestellt-aus-Beziehung festgelegt werden, dass ein Wein aus mindestens einer Rebsorte hergestellt werden muss, oder auf der Rechnung eines Kunden
mehrere Artikel enthalten sein dürfen, oder zu einem Mitarbeiter nur ein Foto gespeichert werden darf. Solche Kriterien werden als Kardinalität bezeichnet. Es gibt 3
Formen:
• 1 : 1-Beziehung: ein Mitarbeiter hat nur ein Foto, ein bestimmtes Foto gehört
nur zu einem Kunden.
25
4. Entity-Relationship-Modell
• 1 : N -Beziehung: eine Mutter kann mehrere Kinder haben, ein Kind hat jedoch
nur eine (biologische) Mutter.
• M : N -Beziehung: ein Autor kann mehrere Bücher schreiben, an einem Buch
können mehrere Autoren beteiligt sein.
Achtung!! Es kommt auf die richtige Fragestellung an. Eine falsche und für die Sache
nicht logische Fragestellung wäre:
Mehrere Autoren schreiben mehrere Bücher
Denn dieser Satz sagt nichts darüber aus, wie viele Bücher ein einzelner Autor
schreibt, bzw. wie viele Autoren an einem bestimmten Buch schreiben. Notationen
Für Kardinalitäten gibt es unterschiedliche Methoden der Darstellung.
Autor
[0, ∗]
schreibt
[1, 1]
Buch
(a) [min, max]-Notation bei 1 : N
Autor
1
schreibt
N
Buch
(b) Chen-Notation
Autor
schreibt
Buch
(c) Krähenfuß-Notation
Abbildung 4.10.: Notationen für Kardinalitäten
Von der Kardinalität wird oft die Konnektivität unterschieden, die die tatsächliche
Anzahl der beteiligten Entities angibt. Dies ist im ER-Modell insofern wichtig, da
daraus Informationen für Applikationen und Programme gewonnen werden. In einer
Datenbank ist es unmöglich, Konnektivität darzustellen, außer es werden sog. Trigger
eingesetzt. Beispiele für Konnektivität sind: In einer Firma betreut 1 Berater mindestens 1, maximal aber 3 Kunden, 1 Kunde wird von mindestens 1 Berater, maximal
aber von 3 beraten. Die Kardinalität ist hier M : N , die Konnektivität ist (1,5), bzw.
(1,3) – je nach Seite. üblicherweise wird nur im Chen-Modell die Konnektivität angegeben, und zwar in runden Klammern.
M : N -Beziehungen sind in relationalen Datenbanken nicht abbildbar, daher müssen
26
4.3. Eigenschaften von Beziehungen
diese in 1 : N -Beziehungen überführt werden.
schreibt
Autor
Autor
1
N
schreibt
Buch
N
1
Buch
Abbildung 4.11.: Abbildung M : N -Beziehung
4.3.4. Stärke der Beziehung
Von einer schwachen Beziehung spricht man, wenn zwei Entitäten voneinander unabhängig existieren können. Umgekehrt wird von einer starken Beziehung gesprochen,
wenn zwei Entitäten voneinander abhängig sind.
Beispiel für eine schwache Beziehung – unterstrichene Wörter markieren Primärschlüssel:
KUNDENKATEGORIE (KATEG ID, Bez)
KUNDE (KUND ID, KATEG ID, NAME, ADRESSE)
In der Tabelle KUNDE existiert ein Fremdschlüssel (KATEG ID), dieser ist jedoch
nicht Teil des Primärschlüssels, daher ist die Beziehung schwach.
Beispiel für eine starke Beziehung – unterstrichene Wörter markieren Primärschlüssel:
RECHNUNG (RECHNUNG ID, DATUM, KUNDE ID)
RECHNUNGPOSTEN (POS ID, RECHNUNG ID, ARTIKEL, ANZAHL, PREIS)
In der Tabelle RECHNUNGPOSTEN existiert ein Fremdschlüssel (RECHNUNG ID),
der zusätzlich Teil des Primärschlüssels ist. Daher liegt hier eine starke Beziehung vor.
Starke Beziehungen werden im Krähenfuß-Diagramm mit durchgezogenen Linien dargestellt, schwache mit strichlierten Linien.
4.3.5. Optionalität
Bei einer optionalen Beziehung ist die minimale Kardinalität 0, bei einer nicht-optionalen
mindestens 1. Optionale Beziehungen werden im Krähenfußmodell durch einen kleinen
27
4. Entity-Relationship-Modell
(a) schwache Beziehung
(b) starke Beziehung
Abbildung 4.12.: Notation für Stärke der Beziehung
Kreis auf der optionalen Seite gekennzeichnet, nicht-optionale durch einen senkrechten
Strich.
Autor
schreibt
Buch
Abbildung 4.13.: (Nicht)optionale Beziehung
Ein Autor muß nicht unbedingt ein Buch geschrieben haben, aber ein Buch ist ohne
Autor nicht denkbar.
4.3.6. Abhängige Entity-Typen, IST-Beziehung
Dieser Spezialfall tritt häufig auf, ein Beispiel ist die Beziehung Wein – Schaumwein.
Jeder Wein weist gewisse Eigenschafen auf (Jahrgang, Restsüße, Farbe), ein Spezialwein wie ein Schaumwein weist zusätzliche Eigenschaften (Art der Erzeugung, Gehalt
an CO2 , . . . ) auf, die die übrigen Weine nicht besitzen.
• Jeder Schaumwein ist ein Wein, aber
• nicht jeder Wein ist ein Schaumwein
Die Attribute von Wein werden aber zusätzlich an Schaumwein vererbt (und nicht
umgekehrt).
4.3.7. Redundante Beziehungen
Redundanzen sollten normalerweise vermieden werden. Gründe dafür sind:
28
4.3. Eigenschaften von Beziehungen
• mehrfache Eingabe der Daten nötig
• unnötig Speicherplatz
• Gefahr von Anomalien und inkonsistenten Daten
Folgendes Beispiel soll dies demonstrieren.
1 Kunde kann mehrere Aufträge tätigen, 1 Auftrag kann nur von 1 Kunden kommen.
1 Auftrag kann mehrere Artikel beinhalten, 1 Artikel kommt durchaus auf mehreren Aufträgen vor.
Artikel
Kunde
Auftrag
Abbildung 4.14.: zyklische Beziehung
Wenn die Beziehung zwischen Kunde und Artikel vom Typ bestellt ist, dann ist die
Beziehung redundant, da ja die Artikel über einen Auftrag kommen. Ist die Beziehung
jedoch vom Typ reklamiert, dann ist die Beziehung nicht redundant, da ja aus der
Bestellung nicht unmittelbar eine Stornierung folgt (zumindest nicht bei funktionierenden Firmen). Ob die Beziehung redundant ist, kann also nicht aus dem ER-Modell
abgeleitet werden, erst eine Analyse der Daten bringt Klarheit.
29
4. Entity-Relationship-Modell
Zusammenfassend eine Übersicht der Begriffe:
Begriff
Bedeutung
Entity
Objekt der Realität (Zinfandel, Jahrgang 2004, Alkohol 12%)
Entity-Typ
Gruppierung von Entities mit gleichen
Eigenschaften (Weine)
Beziehungstyp
Gruppierung von Beziehungen zwischen
Entities (Produzent erzeugt Wein)
Attribut
Eigenschaft einer Entity oder Beziehung (Name, Jahrgang, . . . )
Schlüssel
identifizierende Eigenschaft (Nummer)
Kardinalität
wie oft nimmt Entity an Beziehung teil
(1 : 1, 1 : N, M : N )
Konnektivität
wie viele Entities minimal/maximal beteiligt sind
Stärke
Entity abhängig (stark)/nicht abhängig
(schwach) von anderer Entity
Stelligkeit
Anzahl der beteiligten Entity-Typen
(binär, ternär)
abhängige Entities
z.B IST-Beziehung
Optionalität
ein Weinanbaugebiet kann oder muss in
einer Region liegen
Tabelle 4.1.: Begriffe des ER-Modells
4.4. Beispiel eines ER-Modells
Es soll eine Datenbank für eine Bibliothek erstellt werden. Dabei werden Daten über
Bücher erhoben, jedes Buch trägt einen Titel, eine Seitenanzahl, eine Kurzbeschreibung. Manche Bücher weisen eine ISBN auf, ältere nicht, dennoch soll jedes Buch
eindeutig identifiziert werden können.
Zusätzlich werden Daten über die Schriftsteller (Autoren) erhoben, diese haben einen
Vor- und Nachnamen, sowie ein Geburtsjahr.
Es werden noch Daten über Kunden gespeichert (Vor- und Nachnamen, sowie eine
Adresse).
Es gelten folgende Regeln: Ein Autor kann mehrere Bücher schreiben, ein Buch kann
30
4.4. Beispiel eines ER-Modells
auch von mehreren Autoren geschrieben werden (Beispiel Fachbücher). Ein Buch erscheint bei einem Verlag, ein Verlag kann aber mehrere Bücher herausbringen.
Ein Kunde kann mehrere Bücher ausleihen, dazu muss ein Datum vermerkt werden,
wann das Buch ausgeliehen wurde, wann es fällig ist und wann es zurückgebracht wurde.
Autoren, Verlage, Bücher und Kunden müssen eindeutig identifizierbar sein.
Verlag
VerlagNr
1
1 Verlag kann ein Buch herausbringen
2
1 Buch muss unbedingt von 1 Verlag sein
3
1 Autor kann 1 Buch schreiben
4
1 Buch muss unbedingt von 1 Autor sein
Name
1
2
Buch
BuchNr
Titel
Seiten
ISBN
Verleih
5
3
4
Autor
AutorNr
Name
Adresse
6
ausleihDat
retourDat
fällig
7
5
1 Verleih muss ein Buch haben
6
1 Buch kann auf einem Verleih sein
7
1 Kunde kann ein Buch ausleihen
8
1 Verleih muss einen Kunden haben
8
Kunde
KundenNr
Name
Adresse
Abbildung 4.15.: Beispiel ER-Modell
Verleih entsteht aus der Beziehung zwischen Buch und Kunde, da die Angaben wie
ausleihDat, fällig, retourDat weder Eigenschaften des Buches noch Eigenschaften des
Kunden sind.
31
Index
Symbols
1:1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1:N . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
A
ACID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Apache . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Applikationsserver . . . . . . . . . . . . . . . . . 12
atomar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Attribut . . . . . . . . . . . . . . . . . . . . . . . . 11, 20
Attribute . . . . . . . . . . . . . . . . . . . . . . . . . . 21
B
Baumstruktur . . . . . . . . . . . . . . . . . . . . . . 15
Beziehung
1:1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1:N . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Kardinalität . . . . . . . . . . . . . . . . . . . 23
M:N . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Optionalität . . . . . . . . . . . . . . . . . . . 23
rekursiv . . . . . . . . . . . . . . . . . . . . . . . 22
schwache . . . . . . . . . . . . . . . . . . . . . . 26
starke . . . . . . . . . . . . . . . . . . . . . . . . . 26
Stelligkeit . . . . . . . . . . . . . . . . . . . . . 23
Beziehungstypen . . . . . . . . . . . . . . . . . . . 20
C
C ++
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
C/C ++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Client-Server . . . . . . . . . . . . . . . . . . . . . . . 12
D
Data Dictionary . . . . . . . . . . . . . . . . . . . . . 9
Dateiverwaltungssystem . . . . . . . . . . . . . 8
Daten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Datenbankmanagementsystem . . . 8, 10
Datenbanksystem. . . . . . . . . . . . . . . .8, 10
Datenredundanz . . . . . . . . . . . . . . . . . . . . 7
Datentyp . . . . . . . . . . . . . . . . . . . . . . . . . . 20
char . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
date . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
integer, int . . . . . . . . . . . . . . . . . . . . 20
Datenunabhängigkeit . . . . . . . 8 f., 11, 15
dauerhaft . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
DB, Datenbank . . . . . . . . . . . . . . . . . . . . 10
DB2, Informix . . . . . . . . . . . . . . . . . . . . . 12
Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Drei-Ebenen-Architektur . . . . . . . . . . . 12
Dreischichtensysteme . . . . . . . . . . . . . . .12
E
Entity . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 f.
Entitytypen . . . . . . . . . . . . . . . . . . . 20
Entity-Typ . . . . . . . . . . . . . . . . . . . . . . . . .20
Entity-Typen . . . . . . . . . . . . . . . . . . . . . . 20
ER-Diagramm . . . . . . . . . . . . . . . . . . . . . 20
ER-Modell . . . . . . . . . . . . . . . . . . . . . . . . . 19
externe Ebene. . . . . . . . . . . . . . . . . . . . . .11
H
Hierarchische Datenbanken . . . . . . . . . 15
Hierarchisches Modell . . . . . . . . . . . . . . 15
I
Informationen . . . . . . . . . . . . . . . . . . . . . . 19
Inkonsistenz . . . . . . . . . . . . . . . . . . . . . . . . . 7
Instanz . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Integrität . . . . . . . . . . . . . . . . . . . . . . . . 9, 19
interne Ebene . . . . . . . . . . . . . . . . . . . . . . 11
ISAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
isoliert . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
IST-Beziehung . . . . . . . . . . . . . . . . . . . . . 27
J
Java . . . . . . . . . . . . . . . . . . . . . . . . . . . .12, 16
K
Kardinalität . . . . . . . . . . . . . . . . . . . . . . 23 f.
Katalog, Data Dictionary . . . . . . . . . . . 9
33
Index
Konnektivität . . . . . . . . . . . . . . . . . . . . 24 f.
konsistent . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Konsistenz . . . . . . . . . . . . . . . . . . . . . . . . . . 9
konzeptuelle Ebene. . . . . . . . . . . . . . . . .11
L
referentielle Integrität . . . . . . . . . . . . . . 19
Relation . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Relationale DBS . . . . . . . . . . . . . . . . . . . 16
Relationenmodell . . . . . . . . . . . . 8, 11, 19
Relationenschema . . . . . . . . . . . . . . . . . . 11
Relationship . . . . . . . . . . . . . . . . . . . . . . . 20
LINUX . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
S
M
Schlüssel . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
künstliche Schlüssel . . . . . . . . . . . . 22
Kandidaten. . . . . . . . . . . . . . . . . . . .22
natürliche Schlüssel . . . . . . . . . . . . 22
Primärschlüssel . . . . . . . . . . . . . . . . 22
Schlüsselattribute . . . . . . . . . . . . . 22
Schlüsselbedingung . . . . . . . . . . . . 19
Sichten, views . . . . . . . . . . . . . . . . . . . . . . . 9
Smalltalk . . . . . . . . . . . . . . . . . . . . . . . . . . 16
sperren, Sperre . . . . . . . . . . . . . . . . . . . . . . 8
SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
SQL Server, Microsoft. . . . . . . . . . . . . .12
Stelligkeit . . . . . . . . . . . . . . . . . . . . . . . . . . 23
M:N . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Microsoft, SQL SERVER. . . . . . . . . . .12
Middleware . . . . . . . . . . . . . . . . . . . . . . . . 13
MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
MySQL Query Browser . . . . . . . . . . . . 12
MySQL, SUN . . . . . . . . . . . . . . . . . . . . . . 12
N
Netzwerkmodell . . . . . . . . . . . . . . . . . . . . 15
Non-First-Normal-Form, NF2 . . . . . . 19
O
Objekt
Objekttyp . . . . . . . . . . . . . . . . . . . . . 20
schwacher Objekttyp . . . . . . . . . . 21
Objektorientierte DBS . . . . . . . . . . . . . 16
ODBC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Open Source . . . . . . . . . . . . . . . . . . . . . . . 12
Optionalität . . . . . . . . . . . . . . . . . . . . 23, 26
Oracle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
T
Tabelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Transaktionen . . . . . . . . . . . . . . . . . . . . . . . 9
Trigger . . . . . . . . . . . . . . . . . . . . . . . . . . . . .25
Tupel . . . . . . . . . . . . . . . . . . . . . . . . . . 11, 20
U
UNIX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
P
V
PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
PHPMyAdmin . . . . . . . . . . . . . . . . . . . . . 12
PostgreSQL . . . . . . . . . . . . . . . . . . . . . . . . 12
Primärschlüssel . . . . . . . . . . . . . . . . . . . . 22
Primary Key . . . . . . . . . . . . . . . . . . . . . . . 22
Vererbung . . . . . . . . . . . . . . . . . . . . . . . . . 27
Verlustlosigkeit. . . . . . . . . . . . . . . . . . . . .24
Z
Zweischichtensystem . . . . . . . . . . . . . . . 12
R
Rechte . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 f.
redundant . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
redundant, nicht-redundant . . . . . . . . . 9
34
Herunterladen