1 Datenmodellierung
1 Datenmodellierung
1 Datenmodellierung
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
1 <strong>Datenmodellierung</strong><br />
Inhalt<br />
1 <strong>Datenmodellierung</strong> ............................................................................................................1<br />
1.1 Einführung in Datenbanksysteme ..............................................................................3<br />
1.1.1 Definition Datenbank ..........................................................................................3<br />
1.1.2 Generationen der Entwicklung von Datenbanken ..............................................3<br />
1.1.3 Nachteile von Dateien und Vorteile von Datenbanken .......................................5<br />
1.1.4 Datenbankarchitektur..........................................................................................6<br />
1.2 Begriffe der rationalen Algebra ..................................................................................7<br />
1.3 Drei Ebenen Architektur nach ANSI/SPARC .............................................................8<br />
1.4 Definition Datenbank Management System...............................................................9<br />
1.5 Definition Datenmodelle...........................................................................................10<br />
1.5.1 Übersicht der Datenmodelle .............................................................................10<br />
1.5.2 Darstellung von Beziehungen im ERM .............................................................12<br />
2 Einführung in Relationale Datenmodelle.........................................................................20<br />
2.1 Relationales Datenmodell ........................................................................................20<br />
2.2 Der Begriff der Relation ...........................................................................................22<br />
2.3 Ein einfaches Beispiel..............................................................................................23<br />
2.4 Schlüssel einer Relation ..........................................................................................24<br />
2.5 Relationale Integritätsregeln ....................................................................................24<br />
2.6 Abbildung Entitätstypen/Beziehungen & Entitätstypen/Relationen..........................24<br />
2.7 Übersicht der Kardinalitäten.....................................................................................25<br />
2.8 Datenbankentwurf für 1 zu 1 -Beziehungen des ERM.............................................25<br />
2.8.1 Möglichkeit 1: Entwurf von 2 Relationen...........................................................26<br />
2.8.2 Möglichkeit 2: Entwurf von 1 Relation...............................................................27<br />
2.8.3 Datenbankentwurf für 1 zu n -Beziehungen des ERM......................................27<br />
2.8.4 Datenbankentwurf für m zu n -Beziehungen des ERM.....................................30<br />
2.9 Normalisierung.........................................................................................................32<br />
2.9.1 Wozu Normalisierung .......................................................................................32<br />
2.9.2 Beispiel 1 ..........................................................................................................32<br />
2.9.3 Beispiel 2 ..........................................................................................................37<br />
3 Modellierung....................................................................................................................41<br />
3.1 Vergleich der Methoden...........................................................................................43<br />
3.1.1 Modellierung impliziert Normalisierung.............................................................43<br />
3.2 Zusammenfassung ..................................................................................................44<br />
4 Quellen............................................................................................................................45<br />
5 Information über Dokument.............................................................................................45
Abbildungen<br />
Abbildung 1-1: Beispiel Datenbanken Zeitraum der 50iger Jahre............................................3<br />
Abbildung 1-2: Beispiel Bibliothekssystem...............................................................................4<br />
Abbildung 1-3: Beispiel – Ein Nutzer leiht mehrere Bücher aus...............................................5<br />
Abbildung 1-4: ANSI/SPARC Architektur .................................................................................8<br />
Abbildung 1-5: Einfache Beziehung .......................................................................................12<br />
Abbildung 1-6: Konditionelle Beziehung.................................................................................13<br />
Abbildung 1-7: Komplexe Beziehung .....................................................................................13<br />
Abbildung 1-8: Spezialfälle: 1 Mann hat 0 oder 1 Frau, 1 Frau hat 0 oder 1 Mann................14<br />
Abbildung 1-9: Symbole in ER Diagrammen..........................................................................15<br />
Abbildung 1-10: Vergleich Pfeil und „1n“-Notation .................................................................15<br />
Abbildung 1-11: Beispiel.........................................................................................................16<br />
Abbildung 1-12: ER-Diagramm mit Link-Attribut. Mehrere Personen (Familie oder...............16<br />
Abbildung 1-13: Reflexive Beziehungen mit Rollen ...............................................................17<br />
Abbildung 1-14: Vererbungsbeziehung ..................................................................................18<br />
Abbildung 2-1: Relationales Datenbankmodell in Tabellenform, Relation: Mitarbeiter...........20<br />
Abbildung 2-2: Datenstruktur mit einer Periodengruppe (Projekt)..........................................22<br />
Abbildung 2-3: Relation Angestellter ......................................................................................23<br />
Abbildung 2-4: Domänen........................................................................................................23<br />
Abbildung 2-5: ERM ...............................................................................................................25<br />
Abbildung 2-6: Relationales Modell........................................................................................26<br />
Abbildung 2-7: Relationales Modell........................................................................................27<br />
Abbildung 2-8: ERM ...............................................................................................................27<br />
Abbildung 2-9: Entwurf mit Periodengruppen.........................................................................28<br />
Abbildung 2-10: Relationales Modell......................................................................................28<br />
Abbildung 2-11: Beispiel.........................................................................................................29<br />
Abbildung 2-12: Allgemeine m zu n Beziehung......................................................................30<br />
Abbildung 2-13: ERM .............................................................................................................30<br />
Abbildung 2-14: Relationales Modell......................................................................................31<br />
Abbildung 3-1: Objekte...........................................................................................................41<br />
Abbildung 3-2: Relationale Darstellungsform .........................................................................41<br />
Abbildung 3-3: Modellierung und Normalisierung – Methoden ..............................................43<br />
Abbildung 3-4: Darstellung der ersten drei Normalformen .....................................................44<br />
Tabellen<br />
Tabelle 1-1: Begriffe der rationalen Algebra.............................................................................7<br />
Tabelle 1-2: Übersicht der Datenmodelle...............................................................................10<br />
Tabelle 1-3: Beschriftung der wichtigsten Begriffe im ERM ...................................................14<br />
Tabelle 2-1: Übersicht der Notationstypen und Kardinalitäten ...............................................25<br />
Tabelle 2-2: Relationen Schemata zu Beispiel.......................................................................31<br />
Tabelle 2-3: Beispiel Dozenten ..............................................................................................32<br />
Tabelle 2-4: Übersicht Normalformen ....................................................................................33<br />
Tabelle 2-5: Beispiel Hochschulbetrieb ..................................................................................33<br />
Tabelle 2-6: Beispiel Hochschulbetrieb 2 ...............................................................................34<br />
Tabelle 2-7: Hochschulbetrieb 3 – 1. Tabelle.........................................................................34<br />
Tabelle 2-8: Hochschulbetrieb 3 – 2. Tabelle.........................................................................35<br />
Tabelle 2-9: Hochschulbetrieb 3 – 3. Tabelle.........................................................................35<br />
Tabelle 2-10: Beispiel Hochschulbetrieb 4 – 3. Normalform ..................................................36<br />
Tabelle 2-11: Beispiel 2 – Nicht normalisierte Tabelle ...........................................................37<br />
Tabelle 2-12: Beispiel 2 – 1. Normalform ...............................................................................38<br />
Tabelle 2-13: Beispiel 2 – 2. Normalform ...............................................................................39<br />
Tabelle 2-14: Beispiel 2 - Redundanzfreiheit .........................................................................40<br />
Tabelle 3-1: Tabellen nach Normalisierung............................................................................42
1.1 Einführung in Datenbanksysteme<br />
1.1.1 Definition Datenbank<br />
Eine Datenbank ist die Integrierte Speicherung unterschiedlicher Daten mit einer<br />
programmunabhängigen Verwaltung (und vielfältigen Verarbeitungsmöglichkeiten).<br />
1.1.2 Generationen der Entwicklung von Datenbanken<br />
1. Generation<br />
• Zeitraum der fünfziger Jahre<br />
• Filesysteme auf Band<br />
• Stapelverarbeitung<br />
Abbildung 1-1: Beispiel Datenbanken Zeitraum der 50iger Jahre
2. Generation<br />
• Zeitraum der sechziger Jahre<br />
• Filesysteme auf Platte<br />
• Direktzugriff<br />
Abbildung 1-2: Beispiel Bibliothekssystem<br />
Aus der mit der Dateiverarbeitung resultierende Probleme:<br />
• Hohe Redundanz<br />
• Gefahr von Inkonsistenzen<br />
• Geringe Produktivität der Programmierer
3. Generation<br />
Zeitraum der siebziger Jahre<br />
Einheitliche Strukturierungsprinzipien der Daten: sog. Datenmodelle<br />
• Hierarchisches Modell<br />
• Netzwerkmodell<br />
• Objekte und Beziehungen zwischen Objekten eines Anwendungsbereichs werden in<br />
Datensätze und physische Links zwischen den Datensätzen in den Rechner (Speicher)<br />
abgebildet<br />
Abbildung 1-3: Beispiel – Ein Nutzer leiht mehrere Bücher aus<br />
4. Generation<br />
Zeitraum der achtziger Jahre<br />
• Relationales Datenmodell<br />
• strikte Trennung von log. Modell und phys. Speicherung<br />
1.1.3 Nachteile von Dateien und Vorteile von Datenbanken<br />
Hält ein Programm sich diejenigen Daten in Dateien, die es braucht, so führt dies in der<br />
Praxis oftmals dazu, dass Daten redundant gespeichert werden. Dadurch wird eine<br />
Aktualisierung der Daten sehr aufwendig. Ausserdem muss jedes Programm gleiche<br />
Funktionen für das Lesen, Schreiben, Aktualisieren, Suchen und vor allem für die<br />
Behandlung von Fehlerfällen beinhalten. Jeder einzelne Programmierer bestimmt hierbei das<br />
Ausmass der Integritätskontrollen und der Vorsorgemassnahmen im Fehlerfall.<br />
Integrität bedeutet z.B., dass wenn ein Mitarbeiter aus dem Datenbestand "Mitarbeiter"<br />
verschwindet, dass er dann auch aus dem Datenbestand "Firmenkreditkarte" verschwinden<br />
muss. Ein weiterer Nachteil ist, dass ein jedes Programm genau wissen muss, wie die Daten<br />
physikalisch gespeichert sind. Ändert man die Datenstrukturen der Dateien, so muss man<br />
auch die Programme abändern. Isolierte Anwendungen mit Hilfe des Dateikonzeptes<br />
beruhen auf der Annahme, dass stets alles gut geht und alles stabil bleibt.<br />
Was man aber haben will, ist dass die Programme unabhängig von der physikalischen<br />
Speicherung der Daten sind, ja - wenn es geht - sogar unabhängig von der logischen<br />
Speicherung der Daten. Das Datenbankkonzept beinhaltet die Datenbank als die Menge der<br />
zentral gespeicherten Daten und das Datenbankverwaltungssystem (DBMS = Data Base<br />
Management System) als Zusammenfassung aller Funktionen zu ihrer Handhabung.
Das Datenbankkonzept zielt darauf ab:<br />
• alle Daten nur einmal zu halten und zwar zentral<br />
• alle Funktionen zum Lesen, Schreiben, Aktualisieren, Suchen nur einmal zentral<br />
• zu haben<br />
• alle erforderlichen Funktionen zur Integritätskontrolle und Fehlerbehandlung in der<br />
erforderlichen Qualität zentral zu halten<br />
• die Programme von den Daten zu entkoppeln (Erhöhung der Datenunabhängigkeit der<br />
Programme)<br />
• Sprachen zur leichteren und flexiblen Handhabung der Daten bereitzustellen<br />
• Es gibt verschiedene Grade der Datenunabhängigkeit. Hier sei die Einteilung sehr grob<br />
gemacht: Relationale Datenbanken weisen keine physische Datenabhängigkeit mehr<br />
auf. Hier ist die physikalische Speicherung dem Anwendungsprogramm verborgen. Der<br />
Benutzer kennt nur noch die logische Beschreibung der Daten.<br />
1.1.4 Datenbankarchitektur<br />
Ziel einer DB-Anwendung: Abbildung eines für eine Anwendung relevanten<br />
Realitätsausschnittes<br />
(UoD = Universe of Discourse, Diskursbereich) in einen Rechner und Recherche/<br />
Manipulation in diesem Modell<br />
Datenbanksystem (DBS) = Datenbank (DB) + Datenbankbetriebssystem (DBMS)<br />
DBMS<br />
Menge von Programmen (Programmsystem) zur Verwaltung, Strukturierung, Manipulation<br />
und zum Auffinden von Daten<br />
DB<br />
Menge von Daten, die Objekte eines UoD abbilden, die logisch untereinander in<br />
Beziehungen stehen. Die Daten werden nach einem einheitlichen Verfahren (Datenmodell)<br />
strukturiert.<br />
Anforderungen an ein Datenbanksystem<br />
• (weitestgehende) Redundanzfreiheit<br />
• Integritätserhaltung durch das System<br />
• Vermeidung von Inkonsistenzen<br />
• Zugriffsschutz<br />
Datenunabhängigkeit<br />
• physische Datenunabhängigkeit<br />
• logische Datenunabhängigkeit [1]
1.2 Begriffe der rationalen Algebra<br />
Selektion Projektion Vereinigung Differenz Durchschnitt<br />
A<br />
B<br />
A<br />
B<br />
A<br />
B<br />
Selektieren<br />
bestimmter Tupel<br />
Selektieren bestimmter<br />
Spalten (ohne Duplikat.)<br />
Zwei Tabellen<br />
verbinden<br />
z.B. Suchen “Müller” Alle, ohne Duplikation Alle „A“ und „B“<br />
Kartesisches Prod. Verbund (Join) Division<br />
Zwei Tabellen<br />
vergleichen<br />
Alle „A“ die nicht in<br />
„B“ enthalten sind<br />
Zwei Tabellen<br />
vergleichen<br />
Alle „A“, die auch in „B“<br />
enthalten sind<br />
A<br />
C<br />
B<br />
Verbinden alle “A” mit<br />
allen “B” zu “C”<br />
A B C<br />
D<br />
Verbinden von einzelnen<br />
Tabellen “A” und “B” und<br />
“C” zu einer Tabelle “D”<br />
über Primär-/Sekundärkey<br />
A B C<br />
“C” enthält alle “A” und<br />
“B” die mit einander in<br />
Beziehung stehen<br />
Tabelle 1-1: Begriffe der rationalen Algebra<br />
!!! Vereinigung, Durchschnitt und<br />
Differenz ist nur möglich wenn<br />
teilnehmende Relationen<br />
„vereinigungsverträglich“ sind.<br />
D.h. wenn diese die gleiche Anzahl an<br />
Merkmalen und diese identische<br />
Merkmalswerte aufweisen<br />
• Selektion σ<br />
Bestimmte Tupel (Zeilen) einer Relation werden ausgeblendet (Filter)<br />
• Projektion ∏<br />
Bestimmte Merkmale (Spalten) einer Relation werden ausgeblendet. Im Resultat sind<br />
immer alle Zeilen der Tabelle enthalten mit Ausnahme derjenigen welche identische<br />
Attributswerte haben.<br />
• Vereinigung ∪<br />
A ∪ B => Kumulation (vertikal) aller Datensätze zweier Tabellen<br />
• Differenz \<br />
A \ B = Ergebnis enthält alle Datensätze aus Tabelle A welche nicht in Tabelle B<br />
enthalten sind<br />
• Durchschnitt ∩<br />
Das Ergebnis des Durchschnitt A B enthält alle Datensätze aus A welche gleichzeitig<br />
auch in B enthalten sind.<br />
• Kartesisches Produkt ⊗<br />
Das Kartesische Produkt A ⊗ B verknüpft (horizontal) alle Datensätze aus A mit allen<br />
Datensätzen aus B Das Ergebnis enthält daher alle Merkmale der teilnehmenden<br />
Tabellen. D.H. kein grosser Informationswert.<br />
• Verbund (Join) X<br />
Die nutzlosen Info des Kartesischen Produkt werden durch das verbinden über Primärund<br />
Fremdschlüssel ausgefiltert.<br />
• Division ÷<br />
A÷B = alle Zeilen aus A welche mit allen Zeilen aus B in Beziehung stehen. (kann nicht<br />
SQL formuliert werden) Bsp: An welchem Tag sind alle Lastwagen im Einsatz
1.3 Drei Ebenen Architektur nach ANSI/SPARC<br />
Die Drei Ebenen Architektur nach ANSI/SPARC bezeichnet man auch als semantisches<br />
Datenmodell oder ganz simpel als drei Ebenen Modell.<br />
Die Ebenen werden angewendet, damit nicht schon zu detailliert in die Tiefe gegangen wird<br />
und die Lösung möglichst HW- / SW- neutral bleibt.<br />
Gründe welche für diese Modell sprechen:<br />
• Unabhängigkeit der physischen Speicherung von der Benutzersicht<br />
• Flexibilität für Änderungen / Anpassungen<br />
Alle Daten, die auf den ersten Blick zusammengehören werden in der konzeptionellen Ebene<br />
gesammelt. So entsteht ein Datenmodell, aus dem beliebig viele Benutzersichten (externe<br />
Ebene) und beliebig viele Speicherarten (interne Ebene) abgeleitet werden können.<br />
Abbildung 1-4: ANSI/SPARC Architektur<br />
Interne Ebene<br />
Beschreibt, wie die Daten auf den externen Speichermedien zu speichern sind.<br />
Konzeptionelle Ebene<br />
Zeigt die umfassende hardware- und softwareneutrale Beschreibung der Daten. Sie dient als<br />
Basis für die Umsetzung des Datenmodells auf die externe Ebene.<br />
Externe Ebene<br />
Beschreibt die Sicht der Daten einzelner Benutzer oder Benutzergruppen
1.4 Definition Datenbank Management System<br />
Ein Datenbank Management System ist ein Programm, welches zwei Hauptkomponenten<br />
enthält; die erste dient der Speicherung von Daten und die zweite ihre Verwaltung<br />
• Die Speicherung der Daten erfolgt entsprechend der Struktur des Datenmodells, auf<br />
welchem die Datenbank basiert.<br />
• Die Verwaltung von Daten enthält Aufgaben zur Verwaltung von Datenstrukturen,<br />
Verwaltung von Daten (z.B. Zugriff im Mehrbenutzerbetrieb), Reorganisation,<br />
Realisierung von Datenschutz und Datensicherheit der Datenbankmodelle.
1.5 Definition Datenmodelle<br />
Modelle sind reale oder irreale Systeme, die andere Systeme so darstellen, dass eine<br />
experimentelle Manipulation der abgebildeten Strukturen oder Zustände möglich wird.<br />
Datenmodelle dienen zur abstrakten Beschreibung von Aspekten der realen Welt. Wichtige<br />
Mechanismen sind die Klassifikation, die Agregation und die Generalisierung.<br />
1.5.1 Übersicht der Datenmodelle<br />
Hierarchisches Modell (K1) Netzwerk-Datenmodell (K1) Relationales Datenmodell (K2)<br />
A1<br />
A2<br />
Root<br />
Meier<br />
Hans<br />
49BF ..<br />
Jenny Fritz ..<br />
Twin<br />
Parent Berger Peter ..<br />
C2<br />
B1<br />
C1<br />
... ... ..<br />
3C49<br />
Mitarbeiter<br />
Arbeitet in<br />
Abteilung<br />
Child<br />
Buha ...<br />
G1<br />
49BF<br />
D1 E1 F1 G1<br />
Verkauf ...<br />
3091<br />
Einkauf ...<br />
Hauptmerkmal<br />
Baumstruktur<br />
Vorteile<br />
Hauptmerkmal<br />
Statische Verknüpfung der Datensätze<br />
Vorteile<br />
Hauptmerkmal<br />
Ansammlung von zwei dimensionalen<br />
Tabellen<br />
Vorteile<br />
• Gute Performance bei Batch<br />
• Existenz bewährter DBMS<br />
• Einfachheit<br />
Nachteile<br />
• Regeln & Navigation<br />
(Read,Del,Ins,Upd)<br />
• Änderungen sind schwierig<br />
• Redundanzen<br />
• Komplexe Löschaktionen<br />
(Elternsatz löscht auch Kindsatz)<br />
• Aufwendige Änderungsaktionen<br />
• Gute Performance, da Direktzugriff<br />
• Existenz bewährter DBMS<br />
• Leichte Implementierung von<br />
komplexen Beziehungen<br />
Nachteile<br />
• Hohe Komplexität<br />
• Komplizierte Änderungen des DB-<br />
Schemas und Adressierung.<br />
Firma<br />
- IMS (IBM) - IMAGE/3000 (HP)<br />
- DBMS-10 (DEC)<br />
- DMS1100 (UNISYS)<br />
- UDS (SIEMENS)<br />
Bedeutung<br />
- Grossunternehmen<br />
- Grosse Datenmengen<br />
• Starre Verkettung und strenge<br />
Strukturen werden vermieden.<br />
• Unterstützung des Standard-SQL<br />
• Transaktionssteuerungs-Konzept<br />
• Datensicherheit/Datenschutz<br />
• Portierbarkeit/Skalierbarkeit<br />
• Werkzeuge und Tools<br />
- DB2 (IBM)<br />
- ORACLE<br />
- INFORMIX<br />
- RDBMS (DEC)<br />
- SYBASE<br />
- DBASE<br />
- Keine grosse Bedeutung mehr - RDBMS ist heute DIE Technologie<br />
Tabelle 1-2: Übersicht der Datenmodelle
1.5.1.1 Hierarchisches Modell<br />
Das hierarchische Datenmodell ist eines der ältesten in Datenbanken verwendeten<br />
Datenmodelle, es entstand aus Dateien, die eine variable Anzahl von geschachtelten<br />
Wiederholungsgruppen ermöglichen. Das bekannteste System, das mit dem hierarchischen<br />
Modell arbeitet, ist IMS (Information Management System) von IBM.<br />
Das hierarchische Datenmodell kennt Records (Sätze) und physisch realisierte Vater-Sohn-<br />
Beziehungen (1:n), ausserdem sind virtuelle Vater-Sohn-Beziehungen möglich.<br />
1.5.1.2 Netzwerkmodell<br />
Für das Netzwerkmodell gibt es einen Standard der Data Base Task Group der Conference<br />
on Data System Languages (CODASYL DBTG). Das Netzwerkmodell kennt Record- und<br />
Set-Typen. Die Set-Typen beschreiben 1:n-Beziehungen zwischen dem Owner-Record-Typ<br />
und dem Member-Record-Typ. Die 1:n Beziehungen müssen hier jedoch keine Hierarchie<br />
bilden, durch sie darf ein beliebiges Netzwerk aufgebaut werden.<br />
Das Netzwerkmodell besitzt eine grössere physische Datenunabhängigkeit als das<br />
hierarchische Modell, da hier auf der konzeptuellen Ebene nicht festgelegt werden muss,<br />
welche 1:n-Beziehungen als "virtuelle Beziehungen" realisiert werden sollen. Sowohl das<br />
hierarchische Modell, als auch das Netzwerkmodell sind relativ implementierungsnah. Beide<br />
Modelle erfordern das Navigieren in oft komplexen Datenstrukturen.<br />
1.5.1.3 Das Entity-Relationship-Modell<br />
Entities sind wohlunterscheidbare Dinge und Konzepte der realen Welt. Ähnliche Entities<br />
werden in Entity-Sets zusammengefasst. Entities haben Werte, Werte sind Elemente von<br />
Wertebereichen (Domains). Werte beschreiben Eigenschaften. Auf der Ebene von Entity-<br />
Sets werden die Eigenschaften auch Attribute genannt.<br />
Die Namen von Entity-Sets sowie die Attribute werden meistens als zeitinvariant angesehen,<br />
der Inhalt der Entity-Sets ist dagegen in der Zeit veränderlich.<br />
Relationships dienen zur Modellierung von Beziehungen zwischen Entities. Relationships<br />
können Attribute besitzen. Auch bei Relationships kann man zwischen dem zeitinvarianten<br />
Typ und den veränderlichen Ausprägungen unterscheiden.<br />
Das Entity-Relationship Modell (ERM) stellt das älteste und allgemeinste Modell zur<br />
strukturierten Modellierung von Daten dar. Es wurde 1970-76 von Chen definiert und später<br />
vielfach weiterentwickelt. Viele neue Ansätze, wie das relationale Datenmodell oder die<br />
Objektorientierte <strong>Datenmodellierung</strong> haben immer noch viel mit dem ursprünglichen ERM<br />
gemeinsam. Wegen ihrer Bedeutung für die Modellierung von Daten wurde die Entity-<br />
Relationship Modellierung nachträglich in die Strukturierte Analyse aufgenommen.<br />
Der zentrale Begriff in diesem Modell ist die Entität (entity). Damit sind eindeutig<br />
identifizierbare1 Objekte der realen Welt gemeint. Dies können sowohl konkrete Objekte wie<br />
Gegenstände, Gebäude oder Personen als auch abstrakte Konzepte wie Verträge, Gesetze<br />
oder Ideen sein. Alle diese Entitäten haben Eigenschaften. Diese werden als Attribute<br />
(attribute) bezeichnet. Jedem der Attribute ist eine Domäne (domain) zugeordnet. Diese<br />
enthält alle Werte, die das Attribut annehmen kann. Ein solcher Wert heisst dann<br />
Ausprägung des Attributs. Damit repräsentiert die Domäne den Wertebereich des Attributs.
Zwischen Entitäten bestehen Beziehungen (relations). Sie werden nach ihrer Komplexität<br />
unterschieden. Je nachdem, wieviele Entitäten an der Beziehung beteiligt sind, unterscheidet<br />
man 3 Fälle:<br />
1.5.2 Darstellung von Beziehungen im ERM<br />
1.5.2.1 1 zu 1, einfache Beziehung<br />
Ein Ehemann hat - in unserer Kultur - genau eine Ehefrau und umgekehrt.<br />
Abbildung 1-5: Einfache Beziehung
1.5.2.2 1 zu n, konditionelle Beziehung<br />
Ein Paar kann mehrere Kinder haben, ein Kind jedoch nur einen Vater und eine Mutter.<br />
Abbildung 1-6: Konditionelle Beziehung<br />
1.5.2.3 n zu m, komplexe Beziehung<br />
Eine Person kann mehrere Telefonnummern haben, unter einer Telefonnummer können<br />
mehrere Personen erreichbar sein.<br />
Abbildung 1-7: Komplexe Beziehung
Beachten Sie, dass in der Notation mit Pfeilen ein Doppelpfeil von Paar auf Kind zeigt, wenn<br />
ein Paar 1-n Kinder hat. Streng genommen müsste man noch solche Beziehungen<br />
unterscheiden, bei denen ein Partner nicht zwingend vorhanden ist (Ein Mann kann<br />
verheiratet sein, er muss es nicht sein, dasselbe gilt natürlich auch für eine Frau). Diese<br />
"kann"-Beziehungen werden jedoch im Allgemeinen als Sonderfälle der obigen Fälle<br />
("muss"-Beziehungen) betrachtet; aus „1 zu“ wird dann „0 oder 1 zu“ aus „genau 1“ wird<br />
„höchstens 1“.<br />
Abbildung 1-8: Spezialfälle: 1 Mann hat 0 oder 1 Frau, 1 Frau hat 0 oder 1 Mann<br />
Zu einem Kind gehört 1 Paar, zu einem Paar gehören 0 bis n Kinder.<br />
Auch Beziehungen können Eigenschaften besitzen. Diese werden dann Link Attribute<br />
genannt. Ein Beispiel hierfür wäre das Datum und der Gegenstand eines Kaufs, der über die<br />
Beziehung „kauft“ zwischen Kunde und Verkäufer modelliert wird. Auch wenn es bei<br />
einfacher (1-zu-1) und konditioneller Beziehung (1-zu-n) noch möglich wäre, die Link-<br />
Attribute einer der einfach an der Beziehung beteiligten Entitäten zuzuordnen (z.B. dem<br />
Kunden, wenn der Verkäufer mehrere Kunden hat, der Kunde aber nur einmal und bei einem<br />
Verkäufer einkauft), macht doch meist die separate Modellierung über die Beziehung im<br />
Hinblick auf Verständlichkeit des Modells und zukünftige Erweiterungen (1-zu-n auf m-zu-n,<br />
ein Kunde darf verschiedene Dinge bei mehreren Verkäufern einkaufen) mehr Sinn.<br />
Gleichartige Entitäten und Beziehungen kann man unter übergeordneten Entitätstypen bzw.<br />
Beziehungstypen zusammenfassen. Beispiel: Der Entitätstyp „Kunde“ statt „Herr Müller“,<br />
„Frau Meier“, etc.<br />
Tabelle 1-3: Beschriftung der wichtigsten Begriffe im ERM<br />
Bei der praktischen Modellierung arbeitet man natürlich nicht direkt textuell mit diesen<br />
Begriffen, sondern - wie bei vielen anderen Verfahren auch - grafisch. Dies kommt der<br />
Übersicht und dem schnellen Verständnis sehr entgegen. Die dabei verwendeten Symbole<br />
finden Sie im Folgenden dargestellt. Wie Sie sehen, werden für Entitäten und Beziehungen<br />
dieselben Symbole wie für die zugehörigen Typen verwendet. Dies rührt daher, dass man im<br />
Modell weniger mit konkreten Entitäten als vielmehr stellvertretend für ihre Gesamtheit mit<br />
den Typen modelliert. Das Modell gestattet jedoch auch die Darstellung von Einzelfällen.
Abbildung 1-9: Symbole in ER Diagrammen<br />
Ein jedes dieser Rechtecke der Grafik, d.h. ein jeder Entitätstyp (ein jeder Objekttyp),<br />
entspricht einem Datenspeicher in einem DFD. Wenn es im Entity-Relationship Diagramm<br />
den Objekttyp „Kunde“ gibt, so ist im Datenflussdiagramm der Datenspeicher „Kunde“<br />
enthalten.<br />
1.5.2.4 Regeln zum Aufbau eines ER Diagramms<br />
Jede Entität wird durch ein oder mehrere Datenelemente - Attribute genannt - beschrieben.<br />
Entitäten werden mit ihren Attributen durch ungerichtete Kanten verbunden.<br />
Die Symbole für Beziehungen stehen zwischen den Entitäten, die sie verbinden, und sind mit<br />
beiden Entitäten durch gerichtete Kanten verbunden.<br />
Die Komplexität von Beziehungen kann durch die Anzahl der Pfeilspitzen, die stets an der<br />
Beziehung ansetzen, ausgedrückt werden. Eine Pfeilspitze bedeutet „1“, zwei Pfeilspitzen<br />
bedeuten „n“ bzw. „m“ bezüglich derjenigen Entität am anderen Ende der Beziehung. Um<br />
auszudrücken, dass auch die Null mit eingeschlossen ist, können die Pfeilspitzen um eine „0“<br />
ergänzt werden. Um beispielsweise zu modellieren, dass ein Paar mehrere Kinder haben<br />
oder auch kinderlos sein kann, verbindet man die Entität „Paar“ über eine Linie mit 2<br />
Pfeilspitzen mit der Beziehung „hat“. Hinter der zweiten Pfeilspitze wird eine „0“ eingefügt.<br />
Von der anderen Seite verbindet man dann die Entität „Kind“ über einen einfachen Pfeil mit<br />
der Beziehung. Will man ausserdem noch die Möglichkeit von Waisenkindern<br />
berücksichtigen, kann man auch hier die Pfeilspitze durch eine „0“ ergänzen (vgl. Beispiele<br />
oben). Eine alternative Notation mit Komplexitätsangaben „1,n“ wurde bereits beschrieben.<br />
In der Literatur existieren weitere alternative Notationen.<br />
Abbildung 1-10: Vergleich Pfeil und „1n“-Notation<br />
Alle Elemente werden entweder direkt im Diagramm beschriftet oder mit einer Nummer<br />
versehen und extern erklärt (letzteres Verfahren wird häufig für Beziehungen angewandt).<br />
Dabei gilt die Empfehlung, Beziehungen so zu beschriften, dass sie von oben nach unten<br />
oder von links nach rechts gelesen werden können. Ist dies nicht möglich und ist die<br />
Leserichtung nicht aufgrund der Namensgebung offensichtlich, so ist die Leserichtung durch<br />
kleine Richtungspfeile neben dem Beziehungssymbol zu kennzeichnen. Alle Namen sollen
kurz, prägnant und vielsagend sein. Für Entitäten und Attribute sind Substantive (Person,<br />
Adresse, Alter, Name), für Beziehungen Verben (hat, ist, wohnt) zu bevorzugen.<br />
Abbildung 1-11: Beispiel<br />
Abbildung 1-12: ER-Diagramm mit Link-Attribut. Mehrere Personen (Familie oder<br />
Wohngemeinschaft) mieten eine Wohnung. Zum Mietvorgang gehört<br />
die Miete. Miete ist also ein Linkattribut.
1.5.2.4.1 Modellerstellung<br />
Wie geht man nun bei der Modellerstellung vor Oftmals wird man als Vorlage eine textuelle<br />
Beschreibung einer Aufgabe oder eines Vorgangs haben. Um aus ihr ein erstes Modell zu<br />
extrahieren, müssen zunächst Entitäten, Attribute und Beziehungen identifiziert werden.<br />
Dabei sind Substantive Kandidaten für Entitäten, Adjektive Kandidaten für Attribute und<br />
Verben Kandidaten für Beziehungen. Es ist jedoch Sorgfalt angebracht, denn auch Attribute<br />
können durch Substantive bezeichnet sein. Entitäten, die aus einer solchen Betrachtung<br />
entstehen, müssen verifiziert werden. Besitzen sie keine Eigenschaften oder gehen sie keine<br />
Beziehungen ein, sind sie vermutlich überflüssig. Umgekehrt ist es oft sinnvoll, eine Gruppe<br />
zusammengehöriger Attribute als eigenen Entitätstyp zu realisieren, wenn dieser für sich<br />
einen Sinn macht, Beziehungen eingehen kann und somit an mehreren Stellen benutzt<br />
werden kann (Zum Beispiel haben Personen und Firmen eine Adresse mit PLZ, Ort, Strasse<br />
und Hausnummer. Diese wird als eigener Entitätstyp realisiert). Für die Attribute müssen die<br />
Domänen definiert werden (z.B. Entität Datum, Attribut Monat: 1..12). An dieser Stelle<br />
werden auch Überlegungen zu Integritätskriterien angestellt. Ein Wert kleiner 1 oder grösser<br />
12 beim Monat ist offensichtlich ungültig. Schwieriger ist da schon die Entdeckung von<br />
Fehlern wie "31.2." . Hier muss der Wertebereich des Tages (1..31) abhängig vom Monat<br />
eingeschränkt werden. Schliesslich ist noch zu prüfen, ob das Modell alle Anfragen, die sich<br />
aus der Aufgabenstellung ableiten lassen, befriedigen kann (einfache Beziehungen können<br />
in beiden Richtungen eindeutig durchlaufen werden, konditionale nur in einer und komplexe<br />
gar nicht). Vor der Implementierung des Modells kann es dann noch nötig sein, das<br />
Datenmodell zu normalisieren. Damit wollen wir uns später in diesem Dokument<br />
beschäftigen.<br />
1.5.2.4.2 Reflexive Beziehungen/Vergabe von Rollen<br />
Reflexive Beziehungen bestehen nicht zwischen Entitäten verschiedener Entitätstypen,<br />
sondern zwischen Entitäten desselben Typs. Ein Beispiel hierfür ist die Beziehung „ist Vater<br />
von“ zwischen Entitäten des Typs Person. Im Diagramm sind demzufolge beide Seiten der<br />
Beziehung mit demselben Entitätstyp verbunden. Die Entitäten treten jedoch in<br />
verschiedenen Rollen auf. In unserem Beispiel als Vater und Kind. Diesem Umstand trägt<br />
man durch Beschriftung der beiden Seiten der Beziehung mit dem Rollennamen Rechnung.<br />
Man beachte, wie mit Hilfe der Beziehungen ausgedrückt werden kann, dass zwar ein Kind<br />
nur einen Vater, ein Vater jedoch durchaus mehrere Kinder haben kann.<br />
Abbildung 1-13: Reflexive Beziehungen mit Rollen
1.5.2.4.3 Vererbungsbeziehung<br />
Vererbung wird verwendet, um auszudrücken, dass Gemeinsamkeiten (d.h. gemeinsame<br />
Attribute) von Entitätstypen in einem separaten, übergeordneten Entitätstyp untergebracht<br />
sind, mit dem die ursprünglichen Entitätstypen eine besondere Beziehung eingehen.<br />
Dadurch wird die redundante Modellierung in beiden Entitätstypen vermieden und<br />
gleichzeitig ihre Gemeinsamkeit explizit im Modell deutlich gemacht.<br />
Abbildung 1-14: Vererbungsbeziehung<br />
Das obige Beispiel drückt aus, dass sowohl Angestellte als auch Arbeiter Personen mit<br />
Name, Vorname und Geburtsdatum sind. Jeder Arbeiter/Angestellte ist mit einer Entität des<br />
Typs Person verbunden, welche die gemeinsamen Attribute aufnimmt. Zusätzlich ist es mit<br />
diesem Mechanismus möglich, dass eine Person ein Arbeitsverhältnis als Angestellter und<br />
gleichzeitig eines als Arbeiter hat (auch bei verschiedenen Firmen), ohne dass seine<br />
Stammdaten doppelt gespeichert werden: Der Arbeiter und der Angestellte referenzieren<br />
einfach dieselbe Person. Eine Vererbungsbeziehung ist also (von unten nach oben)<br />
entweder 1-zu-1 oder n-zu-1. Mehrfachvererbung kann durch mehrere<br />
Vererbungsbeziehungen ausgedrückt werden.<br />
Die Vererbungsbeziehung drückt die is-a (ist) Beziehung aus (z.B. Ein Angestellter ist eine<br />
Person). Sie ist zu unterscheiden von der has-a (hat) Beziehung (z.B. eine Person hat eine<br />
Adresse). Die has-a Beziehung ist eine Beziehung zu einem anderen Entitätstyp, der quasi<br />
ein indirektes Attribut des Ursprungstyps darstellt. Die besondere Darstellungsform der is-a<br />
Beziehung ist eine Erweiterung des ERM nach Chen. Die ursprüngliche Darstellung macht<br />
nochmals deutlich, dass es sich bei is-a lediglich um eine spezielle Beziehung handelt.<br />
Mit Hilfe der Vererbungsbeziehung können auch mehrstufige Hierarchien aufgebaut werden.<br />
Es ist jedoch zu beachten, dass eine Entität der untersten Hierarchiestufe zum Zugriff auf
Attribute die es von ganz oben „geerbt“ hat sämtliche Beziehungen durchlaufen muss. Dies<br />
kann bei der Implementierung u.U. lange dauern. Demnach sollte man den Gebrauch der<br />
Vererbung auf ein vernünftiges Mass beschränken.<br />
1.5.2.4.4 Umwandlung in ein relationales Modell<br />
Das ERM ist ein allgemeines Modell zur Modellierung von Daten, mit der Implementierung<br />
(z.B. von Beziehungen) und den Beschränkungen, die dabei möglicherweise beachtet<br />
werden müssen, befasst es sich nicht. Dieser Unterschied besteht generell zwischen<br />
Modellen und Implementierungen. Modelle sind allgemein und gehen von einer „idealen<br />
Welt“ aus, die Implementierung ist jedoch immer gewissen Beschränkungen unterworfen.<br />
Standard zur Implementierung von Datenbanken sind heute Relationale DBMS. Sie beruhen<br />
auf dem relationalen Datenmodell. Zur Implementierung eines ERM mit Hilfe einer solchen<br />
Datenbank muss dieses zunächst in ein Relationales Modell konvertiert werden. Obwohl<br />
diese Konvertierung über weite Strecken keine Änderung des eigentlichen Modells<br />
notwendig macht, sondern eher einem simplen Wechsel der Notation gleichkommt gibt es<br />
hier und da Dinge, die man beachten muss. So kennt zum Beispiel das relationale Modell<br />
keine m-zu-n Beziehungen. [3]
2 Einführung in Relationale Datenmodelle<br />
2.1 Relationales Datenmodell<br />
Das relationale Datenmodell kennt nur Tabellen, auch Relationen genannt. Auf der Schema-<br />
Ebene werden die Formate der Tabellen beschrieben. Die Tabellen haben eindeutige<br />
Namen. Jede Tabelle hat eine feste Anzahl eindeutig benannter Spalten. Für jede dieser<br />
Spalten muss ein Wertebereich angegeben werden. Die in den Ausprägungen der Tabellen<br />
stehenden Zeilen (Tupel) müssen stets der Schemadefinition entsprechen.<br />
Weitere Forderungen des relationalen Modells:<br />
• Erste Normalform - in den Spalten dürfen nur atomare Werte stehen,<br />
Wiederholungsgruppen sind nicht erlaubt.<br />
• Zeilen können nur durch ihren Inhalt identifiziert werden, d.h. die Tabelle ist eine Menge<br />
von Tupeln (duplikatfrei). Es gibt keine vom Modell vorgeschriebenen Tupel-IDs. [2]<br />
Das relationale Datenbankmodell verwendet zweidimensionale Tabellen (oder alternativ eine<br />
auf der Relationenalgebra beruhende mathematisch-formale Schreibweise, siehe bspw. das<br />
Buch von Vetter) zur Darstellung des Realitätsausschnittes. Alle Gegenstände der<br />
Diskurswelt können durch zweidimensionale Tabellen anschaulich und vollständig<br />
beschrieben werden. Der theoretisch-mathematische Hintergrund ist sehr anspruchsvoll und<br />
begründet die Leistungsfähigkeit des Modelles.<br />
Beim relationalen Datenbankmodell sind einige Begriffe wichtig, die durch nachstehende<br />
Abbildung erläutert werden:<br />
Entity<br />
Abbildung 2-1: Relationales Datenbankmodell in Tabellenform, Relation: Mitarbeiter<br />
ist ein Objekt im ERM, das im Relationenmodell als Zeile mit all seinen Eigenschaften<br />
umgesetzt wird (entspricht Tupel).<br />
Tupel<br />
sind die einzelnen Zeilen in der Tabelle, also die konkreten Objekte (entspricht Entity).<br />
Entity-Typ<br />
ist die Relation, also die gesamte Tabelle.
Attribute<br />
sind die Spaltenüberschriften in der Tabelle. Das unterstrichene Attribut ist das<br />
Schlüsselattribut. In der Abbildung oben ist das Schlüsselattribut die Pers-Nr. Es ist nicht<br />
unterstrichen, weil ACCESS eine Unterstreichung der Schlüsselattribute in der vorgestellten<br />
Ansicht nicht vornimmt. Eigentlich ist das nur eine Kleinigkeit, sie kann dennoch<br />
verdeutlichen, dass Software aus betriebswirtschaftlicher Sicht i.P. immer<br />
verbesserungsfähig ist.<br />
Wertebereich<br />
ist der zulässige Variableninhalt, also die Domänen der einzelnen Attribute.<br />
Attributwert<br />
ist der Inhalt einer Zelle innerhalb der Tabelle.<br />
Das Relationale Daten-Modell, kurz Relationen-Modell genannt, wurde 1970 von E.F. Codd<br />
entwickelt. Das Relationen-Modell besteht wie bereits vorher geschrieben aus 3 Teilen:<br />
Objekten:<br />
Die folgenden Objekte müssen definiert werden:<br />
• Relationen (oder Tabellen). Sie entsprechen den Entitätstypen des Entity-Relationship<br />
Modells<br />
• Tuple (oder Datensatz oder Record). Ein Tuple entspricht einer konkreten Entität des<br />
Entity-Relationship Modells<br />
• Attribut (Spalte). Ein Attribut eines Entitätstyps entspricht einem Attribut einer Relation<br />
und stellt eine Spalte einer Tabelle dar<br />
• Domain (Wertebereich). Der Wertebereich eines Attributs muss festgelegt werden,<br />
damit bei Änderungen der Attributwerte Syntaxprüfungen durchgeführt werden können<br />
• Schlüssel. Schlüssel erlauben den Zugriff auf Tuples. Von Bedeutung sind Candidate-<br />
Keys (eindeutige Schlüssel), Primary Keys (Primärschlüssel, Hauptschlüssel),<br />
Alternate Keys (Sekundärschlüssel, Zweit-Schlüssel), Foreign-Keys<br />
(Fremdschlüssel). Die Bedeutung der einzelnen Schlüssel wird im folgenden noch<br />
erläutert werden<br />
Operationen:<br />
Abfrage- und Update-Operationen auf den Relationen, sowie zum Anlegen und<br />
Löschen von Relationen<br />
Regeln:<br />
Diese dienen zur Gewährleistung der Konsistenz der Daten. Hierbei geht es um die Entity-<br />
Integrität und referentielle Integrität. Beide Integritätsregeln müssen im Folgenden noch<br />
erklärt werden
2.2 Der Begriff der Relation<br />
In diesem Kapitel sollen die grundlegenden Begriffe, die im Zusammenhang mit Relationalen<br />
Daten-Modellen gebraucht werden, erläutert werden. Da die Basis des Relationalen Daten-<br />
Modells das 1970 von Codd entwickelte Relationen-Modell (Codd 70) darstellt, soll dieses<br />
nun kurz charakterisiert werden. Als Relation (dt. Beziehung) bezeichnet man eine logisch<br />
zusammenhängende Einheit von Informationen. Eine Relation entspricht einem Entitätstyp.<br />
Eine Relation stellt eine zweidimensionale Tabelle mit einer festen Anzahl von Spalten<br />
(Attributen) und einer variablen Anzahl von Tupeln (Zeilen) dar. Eine Relation ist durch ihren<br />
Namen und die Namen der Attribute eindeutig beschrieben. Die Anzahl der Attribute einer<br />
Relation heisst Degree (Ausdehnungsgrad). Die Anzahl der Zeilen einer Relation - diese<br />
Anzahl kann sich dynamisch ändern und kann auch Null werden - heisst Kardinalität der<br />
Relation.<br />
Eine Relation hat die folgenden Eigenschaften:<br />
Es gibt keine zwei Tupel, die in ihren Attributwerten übereinstimmen. Die Reihenfolge,<br />
in der die Tupel einer Relation gespeichert werden, ist nicht definiert, d.h. es gibt keine<br />
Reihenfolge der Tupel. Genauso wenig ist die Reihenfolge, in der die Attribute einer Relation<br />
gespeichert werden, definiert. Macht man den Übergang von dem Entity-Relationship Modell<br />
zum Relationalen Datenbank-Entwurf, so werden Beziehungs-Typen zwischen Entitätstypen<br />
(Relationen) im Relationalen Modell abgebildet auf Relationen oder auf Attribute einer<br />
Relation. Die Entitäten als konkrete Objekte werden als Tupel (Datensatz) bezeichnet. Sie<br />
bilden die Zeilen einer Tabelle.<br />
Die Struktur einer Relation wird auch als Relationen-Schema bezeichnet. Das Relationen-<br />
Schema beschreibt den Aufbau der Tupel einer Relation, nicht aber die einzelnen Tupel-<br />
Ausprägungen (Werte). Jedes Tupel einer Relation setzt sich aus den gleichen Relations-<br />
Attributen zusammen. Die Attribute der Relation bilden die Spaltenüberschriften einer<br />
Tabelle. In einer Spalte stehen verschiedene oder gleiche Attributwerte, die alle einer<br />
Domäne angehören.<br />
Atomare Werte der Attribute:<br />
Die Attribute bestehen nur aus einem Wert pro Tupel, nicht aus mehreren Werten. Sie sind<br />
„atomar“.<br />
Abbildung 2-2: Datenstruktur mit einer Periodengruppe (Projekt)<br />
Im Beispiel der Abbildung kann ein Firmen-Mitarbeiter in mehreren Projekten mitarbeiten.<br />
Dies kann durch eine Periodengruppe ausgedrückt werden. Das Feld Projekt kann dabei<br />
mehrere Werte annehmen. Solche Periodengruppen sind aber nicht „atomar“, da mehrere<br />
Werte für ein Attribut existieren. Sie sind also im Rahmen der Relationen nicht zulässig.
2.3 Ein einfaches Beispiel<br />
Ein Relationen-Modell beschreibt Objekte der realen Welt durch eine Menge von Attributen,<br />
die die gemeinsamen Eigenschaften der Objekte repräsentieren. Nachfolgende Abbildung<br />
zeigt ein Beispiel für eine Relation.<br />
Abbildung 2-3: Relation Angestellter<br />
Das Beispiel hat 5 Tupel. Jedes Tupel setzt sich aus 3 Attributen zusammen, von denen<br />
jeder Attributwert einer anderen Domäne entstammt. Die Reihenfolge der Attribute in den<br />
Tupeln muss eingehalten werden. Mit anderen Worten, Attribute müssen immer unter den<br />
dazugehörigen Attributnamen stehen. Eine andere Geschichte ist, dass die Reihenfolge, in<br />
der die Attribute einer Relation gespeichert werden, nicht definiert ist.<br />
Abbildung 2-4: Domänen
2.4 Schlüssel einer Relation<br />
Eine Zusammenstellung von Attributwerten heisst Candidate-Key (Schlüssel- Kandidat),<br />
wenn die Werte, die diese Attribute annehmen, stets ein Tupel eindeutig identifizieren. Ein<br />
Candidate-Key kann aus einem oder mehreren Attributnamen bestehen. Eine Relation kann<br />
einen oder mehrere Candidate-Keys besitzen. Da in einer Relation keine zwei identischen<br />
Tupel existieren, muss es immer mindestens einen Candidate Key - nämlich die<br />
Zusammenstellung aller Attributnamen - geben. Ein Candidate-Key darf keine überflüssigen<br />
Attributnamen enthalten. Diese müssen entfernt werden, jedoch darf keines der Schlüssel-<br />
Attribute vernachlässigt werden, damit die eindeutige Identifizierbarkeit nicht verloren geht.<br />
Mit anderen Worten, ein Candidate-Key umfasst soviel Attributnamen wie nötig und sowenig<br />
wie möglich.<br />
Ein Primary-Key ist ein Candidate-Key, der zum Primary-Key erklärt wird oder der als neues<br />
Attribut (z.B. Personal-Nummer) speziell zu diesem Zweck eingeführt wird. Eine Relation<br />
besitzt genau einen Primärschlüssel. Um auf ein Tupel zugreifen zu können oder ein neues<br />
Tupel einzufügen zu können, ist die Angabe des jeweiligen Primärschlüssels erforderlich.<br />
Fremdschlüssel dienen dazu, um Relationen zu verknüpfen und um die referentielle Integrität<br />
der Datenbank (siehe später) zu gewährleisten. Ein Fremdschlüssel einer Relation muss<br />
dabei immer Primärschlüssel einer anderen Relation sein. Der Fremdschlüssel referenziert<br />
auf ein Tupel der Relation, in der er Primärschlüssel ist. Das Tupel der Relation ist mit dem<br />
Fremdschlüssel und das Tupel der Relation mit dem entsprechenden Primärschlüssel<br />
miteinander durch eine 1 zu n Beziehung verknüpft. Dies wird als Primärschlüssel-<br />
Fremdschlüssel-Prinzip bezeichnet. Um Fremdschlüssel zu kennzeichnen, wird ihnen ein #<br />
Zeichen nachgestellt.<br />
2.5 Relationale Integritätsregeln<br />
Mit der Entity-Integrität wird sichergestellt, dass jedes Tupel (Entity) in einer Relation einen<br />
eindeutigen Schlüssel besitzt. Da NULL-Werte nicht eindeutig sind, darf der Primary-Key<br />
keinen NULL-Wert enthalten. Durch die referentielle Integrität wird sichergestellt, dass jedem<br />
Wert eines Foreign-Keys in einer Relation R2 gleich ist einem Wert des Primary-Keys in<br />
einer Relation R1 oder dass der Wert des Foreign-Keys ein NULL-Wert ist. Referentielle<br />
Integrität bedeutet z.B. dass wenn ein Mitarbeiter aus dem Datenbestand "Mitarbeiter"<br />
verschwindet, dass er dann auch aus dem Datenbestand "Firmenkreditkarte" verschwinden<br />
muss.<br />
2.6 Abbildung Entitätstypen/Beziehungen &<br />
Entitätstypen/Relationen<br />
Nachdem in vorigen Kapitel die Grundlagen des Relationalen Daten-Modells erörtert wurden,<br />
soll nun in diesem Kapitel der Datenbankentwurf im Vordergrund stehen. Auszugehen ist<br />
vom logischen Datenmodell, welches mit Hilfe der Entity- Relationship-Modellierung erstellt<br />
wurde. Die Fragestellung ist nun, wie die Entitätstypen und ihre Beziehungen umzusetzen<br />
sind in Datenbank-Tabellen. Beginnen wir zunächst mit dem einfachsten, der Abbildung von<br />
1 zu 1-Beziehungen. Es folgt dann die Umsetzung von 1 zu n-Beziehungen und last not least<br />
die Abbildung von n zu m-Beziehungen auf Tabellen.
2.7 Übersicht der Kardinalitäten<br />
Eine Kardinalität dient einer genauen Bestimmung einer Beziehung zwischen Entitätstypen.<br />
Sie legt für jede Richtung fest, wieviele Entitäten an einer Beziehung teilnehmen. Dies<br />
geschieht über die Angabe eines Minimum ( 0 oder 1) und eines Maximum ( 1 oder N ).<br />
Notation nach :<br />
Bachmann<br />
1; Genau ein:<br />
(einfache<br />
Assoziation)<br />
C; kein oder ein:<br />
(konditionelle<br />
Assoziation)<br />
M; ein oder mehrere:<br />
(komplexe Assoziation<br />
MC; kein, ein oder mehrere:<br />
Konditionell-komplexe<br />
Assoziation)<br />
Vetter<br />
IEM (James<br />
Martin)<br />
SSADM<br />
Zehnder 1 C m mc<br />
Chen 1:1 0:1 1:N 0:N<br />
Tabelle 2-1: Übersicht der Notationstypen und Kardinalitäten<br />
2.8 Datenbankentwurf für 1 zu 1 -Beziehungen des ERM<br />
Anhand eines Beispiels wird die Modellierung einer 1 zu 1-Beziehung gezeigt. Es werden<br />
zwei Möglichkeiten des Entwurfs vorgestellt. Bei der ersten Möglichkeit werden 2 Relationen<br />
entworfen, bei der anderen nur eine einzige Relation. Den Ausgangspunkt für den Entwurf<br />
stellt das folgende Entity-Relationship-Diagramm dar.<br />
Abbildung 2-5: ERM<br />
Es gibt die Entitätstypen "Mitarbeiter" und "Abteilung", sowie die Beziehung "leitet". Jede<br />
Abteilung wird von einem Mitarbeiter geleitet. Jeder Mitarbeiter kann keine oder maximal 1<br />
Abteilung leiten.
2.8.1 Möglichkeit 1: Entwurf von 2 Relationen<br />
Jeder Entitätstyp wird durch eine eigene Relation dargestellt. Die Beziehung zwischen<br />
beiden Relationen wird hergestellt durch einen Fremdschlüssel in einer der beiden oder in<br />
beiden Relationen. Der Fremdschlüssel entspricht dann dem Primärschlüssel der<br />
verbundenen Relation. Eventuell vorhandene Link-Attribute (hier keine vorhanden) werden<br />
als Attribute in einer der beiden Relationen abgebildet.<br />
In unserem Beispiel leitet ein Mitarbeiter entweder eine oder keine Abteilung (0,1). Würde<br />
man den Fremdschlüssel bei der Relation Mitarbeiter modellieren, hätte man folgendes<br />
Problem: Alle Mitarbeiter, die keine Abteilung leiten, müssten NULL als Attributwert bei dem<br />
Fremdschlüssel (abtlgNr#) haben. Deshalb wird hier entschieden in der Relation<br />
ABTEILUNG mit dem Fremdschlüssel PersNr# den Bezug zwischen beiden Tabellen<br />
herzustellen.<br />
Der Datenbankentwurf sieht dann folgendermassen aus:<br />
Relation (Entitätstyp) MITARBEITER (persNr, name, vorname)<br />
Relation (Entitätstyp) ABTEILUNG (abtlgNr, name, persNr# ... )<br />
Abbildung 2-6: Relationales Modell
2.8.2 Möglichkeit 2: Entwurf von 1 Relation<br />
Abbildung der Entitätstypen auf Attribute dieser Relation<br />
Bei jeder 1 zu 1 Beziehung können die Attribute beider Entitätstypen in einer Relation<br />
zusammengefasst werden, hier in der Relation ABTEILUNG. Dies ist allerdings nur sinnvoll,<br />
wenn der Entitätstyp ANGESTELLTER keine weiteren Beziehungen eingeht und deshalb<br />
nicht eigenständig modelliert wird. Ein Fremdschlüssel ist hier natürlich nicht notwendig.<br />
Der Datenbankentwurf sieht dann folgendermassen aus:<br />
Relation (Entitätstyp) ABTEILUNG (persNr, name, vorname, abtlgNr, name, leiternr... )<br />
Abbildung 2-7: Relationales Modell<br />
2.8.3 Datenbankentwurf für 1 zu n -Beziehungen des ERM<br />
Anhand eines Beispiels soll die Abbildung auf Relationen für 1 zu n-Beziehungen erläutert<br />
werden. In diesem Beispiel arbeiten in einer Abteilung mehrere Mitarbeiter, mindestens<br />
jedoch 1 Mitarbeiter. Jeder Mitarbeiter arbeitet in genau einer Abteilung. Zur Beziehung<br />
gehören 2 Attribute: Eintrittsdatum in die Abteilung und Aufgabe in der Abteilung.<br />
Abbildung 2-8: ERM
Zunächst wäre man versucht, eine Periodengruppe zu entwerfen:<br />
Abbildung 2-9: Entwurf mit Periodengruppen<br />
Periodengruppen sind jedoch - wie Sie bereits wissen - nicht zulässig. Also muss man<br />
anders vorgehen: Ein Entwurf mit nur 1 Relation geht also nicht, man muss 2 Relationen<br />
entwerfen. Jede 1 zu n Beziehung kann durch 2 Relationen definiert werden. Die Beziehung<br />
wird als Fremdschlüssel in der Relation modelliert, deren Tupel n-fach in der Beziehung<br />
auftreten (siehe Modellierungsvergleich auf der nächsten Seite). Der Fremdschlüssel<br />
entspricht dem Primärschlüssel in der 1-fach auftretenden Relation. Würde man den<br />
Fremdschlüssel in der Relation angeben wollen, deren Tupel einfach in der Beziehung<br />
auftreten, so hätte man wieder das Problem der Periodengruppe.<br />
Die Link-Attribute werden in der n-fachen Relation modelliert (im folgenden fett dargestellt).<br />
Der Datenbankentwurf sieht dann folgendermassen aus:<br />
Relation (Entitätstyp) MITARBEITER (persNr, name, vorname, abtlgNr #, eintritt, aufgabe)<br />
Relation (Entitätstyp) ABTEILUNG (abtlgNr, name, leiter, ...)<br />
Abbildung 2-10: Relationales Modell
2.8.3.1 Modellierungsvergleich<br />
Beispiel: 8 Mitarbeiter arbeiten in jeweils einer, von insgesamt 3 Abteilungen.<br />
Abbildung 2-11: Beispiel
Bei der Möglichkeit 2 werden Name und Budget der Abteilung redundant gespeichert, zudem<br />
wird dadurch mehr Speicherplatz benötigt. Deshalb ist Möglichkeit 1 vorzuziehen. Bei einer<br />
1 zu n Beziehung wird also die Beziehung als Fremdschlüssel in der Relation modelliert (hier<br />
Relation Mitarbeiter), deren Tupel n-fach in der Beziehung auftreten.<br />
2.8.4 Datenbankentwurf für m zu n -Beziehungen des ERM<br />
• Zwischen den Entitäten1 und 2 existiert ein Beziehungs-Typ.<br />
• Jeweils m Tupel der Entität 1 können mit n Tupeln der Entität 2 in Beziehung stehen.<br />
• Jede Beziehung hat i Attribute.<br />
Abbildung 2-12: Allgemeine m zu n Beziehung<br />
2.8.4.1 Entwurf für allgemeine m zu n-Beziehungen (n > 1, m > 1)<br />
Die beiden Entitäten werden direkt in zwei Relationen 1 und 2 überführt. Die Beziehung<br />
zwischen der Relation 1 und der Relation 2 wird durch eine neue dritte Relation ausgedrückt.<br />
Der Primärschlüssel der dritten Relation setzt sich aus den Primärschlüssel-Attributen der<br />
Relation 1 und aus den Primärschlüssel-Attributen der Relation 2 zusammen.<br />
Um die obigen Sachverhalte noch etwas zu verdeutlichen, sollen diese anhand eines<br />
Beispiels erläutert werden. Im Beispiel gibt es Projekte, an denen mehrere Mitarbeiter<br />
arbeiten. Ein Mitarbeiter kann in keinem, einem oder mehreren Projekten mitarbeiten.<br />
In den Bildern unten ist der Übergang vom Entity-Relationship-Modell zum Relationalen<br />
Modell zu sehen. Der Entitätstyp Mitarbeiter des ERM wird zur Relation MITARBEITER im<br />
Relationalen Modell, aus dem Entitätstyp Projekt wird die Relation PROJEKT und aus der<br />
Beziehung "arbeitet mit an" wird die Relation MA_PROJEKT. Zur Beziehung gehören zwei<br />
Attribute:<br />
Abbildung 2-13: ERM
Der Datenbankentwurf sieht dann folgendermassen aus:<br />
• Relation MITARBEITER (persNr, name, vorname, abtlgNr, ... )<br />
• Relation PROJEKT (projektNr, name, leiter, ... )<br />
• Relation MA_PROJEKT (persNr#, projektNr#, aufgabe, dauer )<br />
Abbildung 2-14: Relationales Modell<br />
Im Folgenden werden die Relationen-Schemata dargestellt:<br />
Tabelle 2-2: Relationen Schemata zu Beispiel
2.9 Normalisierung<br />
2.9.1 Wozu Normalisierung<br />
Die Normalisierung hilft uns beim fachgerechten Entwurf von relationalen Datenmodellen.<br />
Bei Beachtung der Normalisierungsregeln werden Redundanzen beseitigt und<br />
Updateanomalien vermieden.<br />
Eine Normalisierung findet stets aufgrund bereits bestehender Tabellen statt. Ist die Aufgabe<br />
in Textform gegeben, müssen die Tabellen zuerst erzeugt werden. Dafür werden geeignete<br />
Testdaten benötigt, die den Wertebereich der Aufgabenstellung abdecken. Die<br />
Normalisierung kann nur bezogen auf diese Daten stattfinden. Mit anderen Daten ergibt sich<br />
eine andere Normalisierung. Anhand eines hier durchgeführten Beispiels sollen nun die<br />
Grundlagen und Regeln der Normalisierung bekannt gemacht werden.<br />
2.9.2 Beispiel 1<br />
An einer Fachhochschule für Technik werden Vorlesungen von Dozenten gehalten. Die<br />
Dozenten gehören zu einem Fachbereich, welcher von einem Dekan geleitet wird. Die<br />
Verwaltung erfolgt in einer relationalen Datenbank. Dann könnte ein Eintrag in der<br />
Datenbank wie folgt aussehen:<br />
Tabelle 2-3: Beispiel Dozenten<br />
Als ein Pflegeproblem dieses Beispiels (weitere folgen später), sei hier das folgende<br />
erwähnt:<br />
• Ändert sich die maximale Anzahl der Studenten in einem Semester, so muss in jedem<br />
Eintrag in der Datenbank, in dem die Anzahl Studenten vorkommt, die maximale Anzahl<br />
der Studenten geändert werden<br />
• Wird ein Eintrag vergessen, kommt es zu Inkonsistenzen Abhilfe schafft die<br />
Normalisierung. Dann genügt ein Zugriff auf ein Tupel. Inhaltliche widersprüchliche<br />
Datensätze kommen somit nicht vor. Zudem werden die Updates sehr<br />
änderungsfreundlich (Minimalisierung der Anzahl der Updates).<br />
Wie die Übersicht zeigt, gibt es viele verschiedene Normalformen. In der Praxis<br />
beschränkt man sich jedoch auf die dritte Normalform.
Tabelle 2-4: Übersicht Normalformen<br />
Jede Normalform enthält implizit die vorgehende Normalform (die 3. Normalform enthält die<br />
zweite und damit die erste Normalform). Um auf eine Normalform zu kommen, müssen nicht<br />
zwangsweise die vorgehenden Normalformen durchlaufen werden ( d.h. man kann z.B. mit<br />
etwas Übung direkt auf die 3. NF kommen).<br />
2.9.2.1 Unnormalisierte Relationen<br />
Eine Relation heisst unnormalisiert, wenn die Attribute nicht atomare Werte enthalten,<br />
gegenseitig Beziehungen eingehen oder nicht funktionell abhängig vom eindeutigen<br />
Primärschlüssel sind.<br />
Tabelle 2-5: Beispiel Hochschulbetrieb<br />
Wie in diesem Beispiel (Hochschulbetrieb 1) zu sehen ist, werden alle 3 Normalformen<br />
verletzt.
2.9.2.2 Erste Normalform<br />
Eine Relation befindet sich in der 1. Normalform, wenn alle zugrunde liegenden<br />
Wertebereiche nur atomare Werte enthalten. Vor der Überführung in die zweite Normalform<br />
ist die Einführung des Primärschlüssels von Bedeutung. Der Primärschlüssel muss so<br />
gewählt werden, dass jede Zeile eindeutig ist. In diesem Beispiel wählen wir Dozent_Nr,<br />
Semester und Fach als Primärschlüssel aus.<br />
Wir sehen hier die Relation, in der die 1. NF erfüllt ist, aber die 2. und die 3. NF verletzt sind.<br />
Tabelle 2-6: Beispiel Hochschulbetrieb 2<br />
2.9.2.3 Zweite Normalform<br />
Eine Relation ist in 2. Normalform, wenn sie in 1. Normalform ist und wenn jedes<br />
Nichtschlüsselattribut voll funktional abhängig ist vom Primärschlüssel. Felder, die nur von<br />
einem Schlüsselteil abhängen, werden separat modelliert. Die zweite Normalform kann somit<br />
nur verletzt werden, wenn der Primärschlüssel aus mehr als einem Attribut<br />
zusammengesetzt ist.<br />
In diesem Beispiel ist die 1. und 2. Normalform erfüllt. Aus einer Tabelle entstehen 3<br />
Tabellen (separate Modellierung). Das ist notwendig, da<br />
• die Anzahl der Stunden nur vom jeweiligen Semester abhängt<br />
• und da Anz_Stud/Fachbereich/Dekan_Nr nicht voll funktional abhängig sind von<br />
Semester/Dozent-Nr/Fach (Primärschlüssel)<br />
Tabelle 2-7: Hochschulbetrieb 3 – 1. Tabelle
Tabelle 2-8: Hochschulbetrieb 3 – 2. Tabelle<br />
Tabelle 2-9: Hochschulbetrieb 3 – 3. Tabelle<br />
Beachten Sie, dass die Relation Dozent/Vorlesung den zusammengesetzten Primärschlüssel<br />
Semester/Dozent-Nr/Fach besitzt.<br />
Vorteil: Ändert sich die max. Anzahl der Studenten eines Semesters, so genügt jetzt das<br />
Updaten eines Tupels.
2.9.2.4 Dritte Normalform<br />
Eine Relation ist genau dann in der 3. Normalform, wenn sie in 1. und 2. NF ist und wenn<br />
alle Nichtschlüsselattribute gegenseitig unabhängig, aber voll funktional abhängig vom<br />
gesamten Primärschlüssel sind.<br />
Im Beispiel Hochschulbetrieb 3 ist Dozent_Nr der Primärschlüssel der Relation Dozent. Die<br />
Attribute Fachbereich/Dekan_Nr sind Nichtschlüsselattribute. Da sie gegenseitig abhängig<br />
sind (zu einem Fachbereich gehört der entsprechende Dekan) ist die dritte Normalform<br />
verletzt. Dies ist im Beispiel Hochschulbetrieb 4 korrigiert: es entsteht eine weitere Tabelle<br />
(Dekan).<br />
Tabelle 2-10: Beispiel Hochschulbetrieb 4 – 3. Normalform
Vorteil: Wechselt jetzt ein Dozent den Fachbereich oder ändert sich der Dekan in einem<br />
Fachbereich, so genügt jetzt das Updaten eines einzigen Attributes.<br />
Mit der Modellierung in 4 Tabellen erreichen wir in diesem Beispiel die Einhaltung aller 3<br />
Normalformen.<br />
2.9.3 Beispiel 2<br />
Nicht normalisierte Tabelle:<br />
Tabelle 2-11: Beispiel 2 – Nicht normalisierte Tabelle
2.9.3.1 Erste Normalform<br />
Die erste Normalform beinhaltet nur atomare Feldinhalte. In jedem Feld darf nur ein Wert<br />
stehen. Überzählige Werte führen zu neuen Zeilen.<br />
Tabelle 2-12: Beispiel 2 – 1. Normalform<br />
Vor der zweiten Normalform führen wir den Primärschlüssel ein. In diesem Beispiel handelt<br />
es sich um einen aus drei Attributen zusammengesetzten Primärschlüssel.<br />
Primärschlüsselattribute werden unterstrichen dargestellt. Es wäre hier auch möglich<br />
gewesen, den Primärschlüssel aus anderen Schlüsseln zusammenzusetzen. Es wäre<br />
möglich statt der Matrikelnummer den Studentennamen und statt der Vorlesungsnummer<br />
den Vorlesungstitel zu verwenden. Die Möglichkeit wie der Schlüssel gesetzt werden kann,<br />
wird durch die verwendeten Testdaten bestimmt
2.9.3.2 Zweite Normalform<br />
Bei der Überführung in die zweite Normalform werden die Nichtschlüsselattribute betrachtet.<br />
Sie dürfen nur vom Gesamtschlüssel abhängen, nicht von Teilschlüsseln. Dies wird als<br />
funktionale Abhängigkeit bezeichnet. In unserem Beispiel ist der Student von der<br />
Matrikelnummer und die Vorlesung von der Vorlesungsnummer abhängig. Beide sind jedoch<br />
nur vom Teilschlüssel abhängig. Deshalb werden zwei neue Tabellen gebildet.<br />
Tabelle 2-13: Beispiel 2 – 2. Normalform
2.9.3.3 Dritte Normalform<br />
In der dritten Normalform darf es keine funktionalen Abhängigkeiten geben zwischen<br />
Attributen, die nicht zum Schlüssel gehören. Durch geeignete Wahl der Testdaten und des<br />
Primärschlüssels bei der 1. Normalform befindet sich dieses Beispiel bereits in der dritten<br />
Normalform.<br />
2.9.3.4 Redundanzfreiheit<br />
Die Tabelle oben dargestellte Tabelle weist jedoch immer noch redundante Information auf.<br />
Es handelt sich um die Verschmelzung zweier einfacherer Relationen. Durch eine<br />
Normalisierung bis zur 5. Normalform zerfällt diese Tabelle in zwei Tabellen:<br />
Tabelle 2-14: Beispiel 2 - Redundanzfreiheit<br />
Es ist nicht erforderlich, dass nur zwei Spalten pro Tabelle übrig bleiben! Dies ergibt sich<br />
lediglich durch unser einfach gewähltes Beispiel.
3 Modellierung<br />
Aufgabenstellung:<br />
Für eine Modellierung wird meist eine Beschreibung der Aufgabe als Ausgangspunkt<br />
verwendet:<br />
Für eine Fachhochschule soll ein Verwaltungsprogramm für Professoren, Studenten und<br />
Vorlesungen erstellt werden. Professoren besitzen einen Namen. Studenten besitzen einen<br />
Namen und eine Matrikelnummer. Jede Vorlesung hat ihre eigene Vorlesungsnummer und<br />
einen Vorlesungstitel. Jeder Student kann mehrere Vorlesungen besuchen. Ein Professor<br />
kann mehrere Vorlesungen halten. In einer Vorlesung können mehrere Studenten sein. Eine<br />
Vorlesung kann von mehreren Professoren gehalten werden.<br />
Je nach Modellierungsart entstehen aus dem Text Entitäten, Relationen oder Objekte. Diese<br />
enthalten verschiedene Attribute und sind untereinander mit Beziehungen verknüpft.<br />
Objekt-Darstellungsform:<br />
Abbildung 2-15: Objekte<br />
Ein solches Modell lässt sich einfach in relationale Tabellen umwandeln. Die hier<br />
dargestellten m:n Verknüpfungen müssen aufgelöst werden, indem Zwischentabellen<br />
(Zwischenrelationen) erzeugt werden.<br />
Relationale Darstellungsform:<br />
Jeder Relation wird ein eindeutiger Primärschlüssel hinzugefügt. Die Beziehungen werden<br />
über Fremdschlüssel aufgelöst. Die Trennung zwischen fachlichen Attributen und<br />
Beziehungsattributen erleichtert die Arbeit mit den Tabellen. Die Beziehungsattribute sind in<br />
der unteren Grafik mit Grossbuchstaben abgekürzt. Primärschlüssel sind wieder<br />
unterstrichen, Fremdschlüsseln folgt das Zeichen ‘#’.<br />
Abbildung 2-16: Relationale Darstellungsform
Tabellen:<br />
Mit den Beispieldaten der Normalisierung ergeben sich folgende Tabellen. Es sind in diesem<br />
Beispiel relationale Tabellen entstanden, die der dritten Normalform genügen. Es ist<br />
ausserdem leicht ersichtlich, dass diese Tabellen redundanzfrei sind.<br />
Tabelle 2-15: Tabellen nach Normalisierung
3.1 Vergleich der Methoden<br />
Nachfolgendes Schema zeigt den Zusammenhang zwischen Modellierung und<br />
Normalisierung. Bei einer Aufgabenstellung in Form einer nicht normalisierten Tabelle ist nur<br />
der Schritt der Normalisierung notwendig. Dieser ist jedoch äusserst schwierig. Diese<br />
Aufgabenstellung kommt in der Praxis auch kaum vor. Weit häufiger hat man zum Beispiel<br />
nach einer Besprechung eine Aufgabenstellung in textueller Form vorliegen. Bei dieser sind<br />
bei beiden Wegen zwei Schritte notwendig. Bei der Erstellung einer Tabelle aus einer<br />
Textaufgabe ergibt sich das Problem die richtigen Testdaten zu finden. Diese sollen<br />
möglichst alle auftretenden Möglichkeiten abdecken.<br />
Abbildung 2-17: Modellierung und Normalisierung – Methoden<br />
3.1.1 Modellierung impliziert Normalisierung<br />
Mit einer sachgerechten Modellierung kann man sich die schwierige Normalisierung<br />
ersparen. Die einzelnen Schritte der Normalisierung werden implizit bei der Modellierung<br />
durchgeführt:<br />
• Normalform Atomare Werte - Die Attribute der verschiedenen Modellierungsverfahren<br />
sind per Definition bereits atomar. Es können nicht zwei Werte in einem Attribut<br />
gespeichert werden. Werte von Attributen sind nicht teilbar.<br />
• Normalform funktionale Abhängigkeit<br />
• Normalform transitive Abhängigkeit<br />
Durch die fachliche Modellierung werden die Attribute den Objekten zugeordnet. Sie sind<br />
somit stets vom Objekt funktional abhängig. Für alle nicht fachlichen Abhängigkeiten<br />
zwischen Relationen, die bei der Auflösung von Vererbung, usw. entstehen, gibt es feste<br />
Umwandlungsregeln.
Über die oben beschriebene dritte Normalform hinaus wird mit einer Modellierung meist eine<br />
Redundanzfreiheit erreicht, die beim Normalisierungsverfahren erst in der 5. Normalform<br />
erreicht wird. Die Modellierung mit modernen Verfahren bietet darüber hinaus die Möglichkeit<br />
komplexere Konstrukte wie Vererbung (Generalisierung -Spezialisierung) und Aggregation<br />
zu verwenden. Für die Umwandlung eines Modells in konkrete Datenbanktabellen gibt es<br />
bereits Softwarewerkzeuge.<br />
3.2 Zusammenfassung<br />
Im folgenden Bilde werden die ersten drei Normalformen noch einmal zusammengestellt:<br />
Abbildung 2-18: Darstellung der ersten drei Normalformen<br />
Werden die Daten von Programmsystemen in Dateien gespeichert, so führt dies in der<br />
Praxis oft zur redundanten Speicherung der Daten und damit auch zu inkonsistenten<br />
Datenbeständen. Ein Programm muss die physikalische Speicherung der Daten kennen,<br />
sowie Routinen für das Lesen, Schreiben, Aktualisieren, Suchen vor allem für das<br />
Fehlerhandling beinhalten. Was man aber haben will, ist dass Programme unabhängig von<br />
der physikalischen Speicherung sind (Datenunabhängigkeit der Programme), und dass die<br />
Routinen für das Lesen, Schreiben, Aktualisieren, Suchen und Fehlerhandling nur einmal<br />
zentral vorhanden sein müssen. Solche Vorteile werden von<br />
Datenbankmanagementsystemen geboten. Beim Zugriff auf Datenbanken gibt es interne<br />
Satzschnittstellen, logische Satzschnittstellen und mengenorientierte Schnittstellen.<br />
Relationale Datenbanken besitzen eine mengenorientierte Schnittstelle. Relationale<br />
Datenbanken enthalten Relationen, die in Form von Tabellen dargestellt werden. Die<br />
Relationen entsprechen den Entitätstypen des Entity-Relationship Modells. Ein Attribut eines<br />
Entitätstyps entspricht einem Attribut einer Relation und stellt eine Spalte einer Tabelle dar.<br />
Eine Zeile (Tupel) entspricht einer konkreten Entität des Entitättyps. Die Attribute bestehen<br />
nur aus einem Wert pro Tupel, nicht aus mehreren Werten. Sie sind „atomar“. Eine<br />
Zusammenstellung von Attributwerten heisst Candidate-Key, wenn die Werte, die diese<br />
Attribute annehmen, stets ein Tupel eindeutig identifizieren. Eine Relation kann einen oder<br />
mehrere Candidate-Keys besitzen. Ein Primary-Key ist ein Candidate-Key, der zum Primary-<br />
Key erklärt wird oder der als neues Attribut speziell zu diesem Zweck eingeführt wird.<br />
Fremdschlüssel dienen dazu, um Relationen zu verknüpfen und um die referentielle Integrität<br />
zu gewährleisten. Durch die referentielle Integrität wird sichergestellt, dass jedem Wert eines<br />
Foreign-Keys in einer Relation R2 gleich ist einem Wert des Primary-Keys in einer Relation<br />
R1 oder dass der Wert des Foreign-Keys ein NULLWert ist. Referentielle Integrität bedeutet
z.B., dass wenn ein Mitarbeiter aus dem Datenbestand "Mitarbeiter" verschwindet, er dann<br />
auch aus dem Datenbestand "Firmenkreditkarte" verschwinden muss.<br />
Für den Datenbankentwurf müssen nun die Entitätstypen und die Beziehungen zwischen<br />
Entitätstypen abgebildet werden auf Relationen. Eine 1 zu 1 –Beziehung kann dabei auf 2<br />
Relationen oder auf 1 Relation abgebildet werden. Im zweiten Fall werden die Entitätstypen<br />
auf Attribute dieser Relation abgebildet. Eine 1 zu n Beziehung wird auf 2 Relationen<br />
abgebildet, eine n zu m Beziehung auf 3 Relationen.<br />
Um Redundanzen zu beseitigen und Update-Anomalien zu vermeiden, werden die<br />
Relationen normalisiert. In der Praxis geht man bis zur 3. Normalform. Da die Normalisierung<br />
aber die Zahl der Tabellen erhöht, gibt es in der Praxis auch Fälle, wo man aus<br />
Performance-Gründen auch nicht normalisierte Relationen verwendet. Jede Normalform<br />
enthält implizit die vorhergehende Normalform (die 3. Normalform enthält die 2. und damit<br />
die 1. Normalform). Eine Relation befindet sich in der ersten Normalform, wenn alle Attribute<br />
nur atomare Werte enthalten. Eine Relation ist in der 2. Normalform, wenn sie in 1.<br />
Normalform ist und wenn jedes Nichtschlüsselattribut voll funktional abhängig ist vom<br />
Primärschlüssel. Felder, die nur von einem Schlüsselteil abhängen, werden separat<br />
modelliert. Die zweite Normalform kann somit nur verletzt werden, wenn der Primärschlüssel<br />
aus mehr als einem Attribut zusammengesetzt ist. Eine Relation ist genau dann in der 3.<br />
Normalform, wenn sie in 1. und 2. Normalform ist und wenn alle Nichtschlüsselattribute<br />
gegenseitig unabhängig sind, aber voll funktional abhängig vom gesamten Primärschlüssel<br />
sind. Wenn Attribute gegenseitig abhängig sind, entsteht eine weitere Tabelle. [3]<br />
4 Quellen<br />
Nr. Quelle Abbildungen/Text<br />
[1] Fachhochschule Stralsund – Prof. Dr. Text/Abbildungen<br />
Uwe Hartmann<br />
[2] Uni Trier – Michael Ley Text<br />
[3] Steinbeiss Transferzentrum Text/Abbildungen<br />
5 Information über Dokument<br />
Version 1.0<br />
Letzte Änderung 30. April 2003<br />
Copyright<br />
Für Copyrightinformationen bitte<br />
die Anmerkungen/Fussnoten<br />
beachten, alles übrige Roland<br />
Lenz<br />
Homepage<br />
http://www.2cool4u.ch/<br />
Historie Version Datum<br />
Dokument erstellt 1.0 30. April 2003