1 Datenmodelle für Datenbanksysteme

Werbung
Technische Datenorganisation
Alexander Stadlmann 4.HBa 1995/96
1 Datenmodelle für Datenbanksysteme
Wir unterscheiden verschiedene Modelle, die in Datenbanksystemen verwendet werden und im
folgenden Kapitel ausgeführt sind.
1.1 Datenmodelle (allgemein)
Ein Datenmodell ist ein mathematischer Formalismus mit zwei Teilen:
• Eine Schreibweise um Daten zu beschreiben.
• Eine Reihe von Operationen um die Daten zu manipulieren.
Das eine Modell ist das relationale Modell, wo die Schreibweise um Daten zu beschreiben auf
Attributen basiert (Spalten). Das andere Modell ist das Netzwerkmodell, welches Diagramme
verwendet, um Daten zu identifizieren.
Es werden nun Unterschiede zwischen den Modellen aufgelistet, die beeinflussen wo und wann sie
ihre beste Verwendung finden:
a) Zweck: Viele Modelle beabsichtigen als Schreibweise für Daten in Datenbanken und als
grundlegende Schreibweise für die Datenmanipulationssprache zu dienen. Auf der anderen Seite
beabsichtigt das „Entity-Relationship-Model“ eine Schreibweise für ein begriffliches (von Begriff)
Schema.
b) Objekt- und Wertorientierung: „Wertorientierte Modelle“ sind das relationale und logische
Modell. Das Netzwerk-, Hierarchische- und Objektmodell, jedes ausgestattet mit Objektidentität,
kann als „objektorientiert“ angesehen werden. Das „Entity-Relationship-Model“ erfordert
ebenfalls Objektidentitäten.
c) „Handeln mit Überflüssen“: Alle Modelle haben eine Hilfe für den User integriert, um gleiche
Fakten nicht mehr als einmal speichern zu können. Solche Überflüsse verschwenden nicht nur
Platz, sondern sie können auch Widersprüchlichkeiten zwischen Daten verursachen, da manchmal
Fakten in einer aber nicht in die andere Richtung gewechselt gehören. Objektorientierte Modelle
eignen sich besser um mit „Überflüssen zu handeln“, da sie eine eigene Kopie eines Objekts
anlegen und mittels Zeiger von den verschiedensten Plätzen darauf hinweisen.
d) „Handeln mit m:n Beziehungen“: Oft kommt es vor, daß Datenmodelle m:n Beziehungen
speichern sollen, in welcher jede von einer Gruppe von Elementen auf viele Elemente einer
anderen Gruppe bezogen ist.
Beispiel: Kurse und Studenten. Ein bezeichnender Student, belegt mehrere Kurse und ein
bezeichnender Kurs wird von mehreren Studenten besucht. Das Problem besteht darin, die
geeignete Speicherstruktur zu entwickeln, welche eine effiziente Abfrage erlaubt.
1.2 Das „Entity-Relationship-Model“
Der Zweck vom „Entity-Relationship-Model“ ist eine Beschreibung eines begrifflichen Schemas zu
erlauben, ohne der Vernachlässigung der Aufmerksamkeit zur Effizienz oder dem physikalischem
Datenbankdesign. Es ist normalerweise vom „Entity-Relationship-Diagramm“ übernommen, so
konstruiert, das sie später in begriffliche Schemen eines anderen Modells, z.B. eines relationalen
Modells, umgedreht werden können.
1.2.1 Entities (ein spezielles Objekt)
So wie ein Punkt und eine Linie in der Geometrie nur im Unterschied ihrer Proportionalität definiert
sind, so ist es auch mit den Entities. Es genügt zu sagen, daß sie existierende Dinge definieren und
unterscheidbar sind bzw. sein müssen.
Beispiel: Jede Person oder jedes Auto sind Entities. Man kann auch jede Ameise als Entity
betrachten, wenn sie sich in irgend einer Art und Weise von einander unterscheiden. (Nummern)
1.2.2 Entity Sets (Tabelle; Einheitensatz)
Eine Gruppe, welche gleiche Entities enthält, formt ein „Entity Set“.
Beispiele:
1
Technische Datenorganisation
Alexander Stadlmann 4.HBa 1995/96
• alle Personen
• alle rothaarigen Personen
• alle Autos
Bei Beispiel 1 und 2 ist das Wort „gleiche Entities“ nicht präzise definiert und kann eine unendliche
Nummer von verschiedenen Eigentumsrechten schaffen, welches eine Tabelle definiert.
Es ist notwendig alle Mitglieder einer Reihe mittels Sammeln von Eigenschaften, genannt Attribute,
zu charakterisieren.
Beispiel 1.1: Die kalifornische Abteilung für Motoren kreiert ein Datenbanksystemsschema um ein
Tabelle, namens „AUTOMOBILS“ zu haben. Im gegenwärtigen Beispiel dieser Entity Reihe sind alle
Autos in Kalifornien registriert, aber nicht alle Autos der ganzen Welt oder alle Autos jemals
existieren können.
1.2.3 Attribute und Schlüsseln
Tabellen haben Eigenschaften, genannt Attribute, welche mit der jeder Entität im Satz verbunden
sind. Normalerweise besteht der Inhalt von Attributen aus Ganzzahlen, Gleitkommazahlen oder
Zeichenketten.
Die Auswahl von relevanten Attributen für Tabellen ist ein anderer kritischer Schritt im kreiren eines
Datenbankschemas. Ein Attribut oder ein Satz von Attributen, welche Werte einen Datensatz einmalig
identifizieren wird Schlüssel für die Tabelle genannt. Im Prinzip, hat jede Tabelle einen Schlüssel,
seitdem wir festgestellt haben, daß sich jeder Datensatz von allen anderen unterschiedet. Aber wenn
wir keinen Satz von Attributen haben, welche einen Schlüssel beinhalten, dann sind wir nicht in der
Lage einen Datensatz von den anderen zu unterscheiden. Eine willkürliche Seriennummer ist oft als
ein Attribut ausgestattet, um als Schlüssel zu dienen.
Beispiel 1.2: Eine Tabelle, die nur U.S. Staatsbürger enthält, kann das einzelne Attribut der „Social
Security Number“ als Schlüssel verwenden. Wie auch immer, vorausgesetzt wir wollen einmalige
Bewohner einer Tabelle, welche die Bevölkerung von mehreren Ländern beinhaltet, dann können wir
nicht sicher sein, daß zwei Länder nicht dieselbe Identifizierungsnummern verwenden, so daß ein
verwendeter Schlüssel ein Paar von Attributen ID_NO und COUNTRY sein könnte.
1.2.4 Isa Hierarchie
Wir sagen A isa B, gelesen „A is a B“, wenn Tabelle B eine Verallgemeinerung von einer Tabelle A
ist, oder gleichwertig, A ist ein spezieller Teil von B. Der primäre Zweck im deklarieren von isa
Relationen zwischen Tabellen A und B ist, daß A die Attribute von B erben kann, aber hat auch einige
zusätzliche Attribute, die keinen Sinn für jene Teile von B machen, welche auch keine Teile von A
sind. Jeder Datensatz a in Tabelle A ist genau mit einem Datensatz b von Tabelle B in Beziehung, so
daß a und b wirklich derselbe Datensatz sind.
Beispiel 1.3: Eine Firma hat eine Tabelle EMPLOYEES mit den Attributen wie ID_NO, NAME und
SALARY. Wenn die Firma eine Baseballmannschaft wäre, gewisse Angestellte die Spieler wären,
würden sie andere wichtige Attribute haben, wie BATTING_AVG oder HOME_RUNS, welche die
Angestellten nicht haben. Der vernünftigste Weg um dieses Schema zu entwerfen ist, eine andere
Tabelle zu haben, mit der Relation PLAYERS isa EMPLOYEES. Attribute wie Name, gehören zu
EMPLOYEES und auch PLAYERS, aber nur PLAYERS haben Attribute wie BATTING_AVG.
1.2.5 Beziehungen
Eine Beziehung unter Tabellen, ist eine geordnete Liste von Tabellen. Ein besondere Tabelle darf
mehr als einmal in der Liste erscheinen. Diese Liste von Tabellen ist die Schemen-EbenenVorstellung einer Beziehung. Wenn eine Beziehung R unter Tabellen E1, E2, ..., Ek besteht, dann ist
das aktuelle Beispiel von R ein Satz von k-fach. Wir nennen solch einen Satz einen Beziehungssatz.
Beispiel 1.4: Angenommen wir haben eine Tabelle PERSONS und wir haben eine Beziehung
MOTHER_OF, welche eine Liste von Tabellen PERSONS, PERSONS ist. Der Beziehungssatz von
Beziehung MOTHER_OF besteht aus den Paaren (p1, p2), wo diese Person p2 die Mutter von Person
p1 ist.
2
Technische Datenorganisation
Alexander Stadlmann 4.HBa 1995/96
Ein alternativer Weg um diese Information zu repräsentieren, ist die Existenz der Tabelle MOTHERS
und Beziehung MOTHERS isa PERSONS zu übertragen. Diese Anordnung, Vereinbarung würde sich
mehr eignen, wenn die Datenbank Werte speichert, die für Attribute von Müttern, die normalerweise
für Personen nicht gespeichert werden. Dann würde die Beziehung MOTHER_OF eine Liste von
Tabellen PERSONS, MOTHERS sein.
Um die Information über die Mutter einer Person als Person zu erhalten, würden wir die
Beziehungen MOTHER_OF und isa zusammensetzen (im Sinne von üblichen Satz-theoretischen
Beziehungen).
1.2.6 Geborgte Schlüsselattribute
Wir erwähnten in Verbindung mit isa Beziehungen, daß wenn A isa B, dann der Schlüssel von A
natürlich das Schlüsselattribut von B sein, und diese Attribute würden nicht als Attribute der Tabelle
A erscheinen. Somit würde im Beispiel 1.3 der Schlüssel für Tabelle PLAYERS natürlich das Attribut
ID_NO von EMPLOYEES sein. Dann würde ein Spieler einzigartig von ID_NO von dem Angestellten,
welcher er ist, identifiziert werden.
Beachte, das wenn Schlüsselattribute geborgt sind, es wichtig ist, daß aus der Beziehung ein
eindeutiger Datensatz in der Zieltabelle folgt. Das muß der Fall sein, wenn eine isa Relation folgt,
aber es braucht nicht der Regelfall sein, z.B. stellt sich die Frage, ob Personen Bürger von zwei
Ländern sein können? Kurzerhand, sollen wir die Bedeutung der Funktionalität von Beziehungen
untersuchen, welches uns mitteilt, wenn ein Datensatz von einer Tabelle in Relation mit einer
teilweisen Beziehung zu einem einzigartigen Mitglied von einer anderen Tabelle steht.
1.2.7 Entity-Relationship Diagramme
Es ist hilfreich die Informationen mit Hilfe der ERD´s zusammenzufassen, wo:
a) Rechtecke Tabellen entsprechen
b) Kreise Attribute entsprechen. Sie sind zu ihren Tabellen mit Linien verbunden. Manchmal werden
Attribute, die ein Teil des Schlüssels sind, unterstrichen. In einem speziellen Fall wird, betreffend
Attribute, manchmal eine Tabelle identifiziert, welche nur ein Attribut hat. Mit dem Attribut selbst
benennen wir die Tabelle nach dem Namen des Attributes. In diesem Fall erscheint die Tabelle als
ein Kreis, verbunden zu Beziehungen der betroffenen Tabellen, anstatt normalerweise als
Rechteck.
c) Rhomben Beziehungen entsprechen. Sie sind zu ihren betreffenden Tabellen mit Linien
verbunden, welche direkte oder indirekt Rhomben sein können. Die Sortierung von Tabellen in der
Liste von Beziehungen kann durch Numerierung angezeigt werden, obwohl die Sortierung nicht
relevant ist, es sei denn dieselbe Tabelle erscheint mehr als einmal in der Liste.
Beispiel 1.5: Die folgende Abbildung (a) zeigt ein einfaches ERD mit 3 Tabellen, EMPS, DEPTS und
MANAGERS. Die ersten beiden Tabellen stehen mittels ASSIGNED_TO in Verbindung, die zweite
und dritte mittels MANAGES (die Pfeilverbindungen werden vorerst ausgelassen). EMPS besitzt 3
Attribute, nämlich NAME, PHONE und SALARY, wobei NAME als Schlüssel verwendet wird. DEPTS
verwendet 2 Attribute, NAME und LOCATION, hingegen besitzt MANAGERS nur NAME.
In Abbildung (b) wird eine Beziehung mit PERSONS auf sich selbst über PARENT_OF dargestellt.
Die erste Verbindung zur einen Ecke beschreibt das Kind und die zweite Verbindung zur anderen
Ecke den zugehörigen Elternteil. Die Beziehung PARENT_OF beinhaltet Paare (p1, p2), so daß p2
als Elternteil von p1 erkannt werden kann.
3
Technische Datenorganisation
Alexander Stadlmann 4.HBa 1995/96
Beispiele für ERD´s
1.2.8 Funktionalität von Beziehungen
Bei einem Modell, das der Wirklichkeit entspricht ist es oft notwendig Beziehungen zu gruppieren,
gemäß wieviele Einheiten, Objekt von einer Tabelle, Einheitssatz mit wievielen Einheiten von einem
anderen Einheitssatz vereinigt werden können. Die einfachste und seltenste Form einer Beziehung
von zwei Sätzen ist die 1:1 Beziehung. Für jede Einheit in jedem Satz ist ein zugehöriges Mitglied in
einem anderen Satz vorhanden. Zum Beispiel die Beziehung MANAGES zwischen DEPTS und
MANAGERS, die Abbildung (a) könnte als 1:1 Beziehung bezeichnet werden. Ist dies der Fall, so
kann in der Datenbank nicht mehr als ein Manager pro Abteilung vorhanden sein oder eine Person
mehrere Abteilungen verwaltet. Es ist möglich, daß eine Abteilung zur Zeit keinen Manager besitzt
oder, daß ein Manager derzeit keine Abteilung zum Verwalten hat.
1.2.9 n:1 Beziehungen
In einer n:1Beziehung ist eine Einheit im Satz E2 mit 0 oder mehrere Einheiten in E1 verbunden, aber
jede Einheit in E1 ist mit höchstens einer Einheit in E2 verbunden. Diese Beziehung bedeutet n:1 (von
E1 nach E2). Zum Beispiel kann die Beziehung zwischen EMPS und DEPTS in Abbildung (a) als n:1
von EMPS zu DEPTS angesehen werden, so daß zu jeder Abteilung mehrere Mitarbeiter eingetragen
sind. Es ist auch möglich, wie z.B. der Präsident, einige Mitarbeiter bei keiner Abteilung eingetragen
sind.
1.2.10 m:n Beziehungen
Wir treten auch der m:n Beziehung entgegen, bei der es keine Einschränkung von k-fachen Einheiten
der Sätze gibt, die möglicherweise in einem Beziehungssatz erscheint. Zum Beispiel ist die Beziehung
PARENT_OF in obigen Abbildung eine m:n Beziehung, da wir zwei Elternteile zu jedem Kind finden
und umgekehrt zu jedem Elternteil mehrere Kinder vorhanden sein können. Die Beziehung der
Eintragung zwischen den Kursen und den Studenten ist noch ein Beispiel für eine m:n Beziehung, da
typisch, mehrere Studenten einen Kurs belegen können und mehrere Kurse von einem Studenten
belegt sein können.
Während m:n Beziehungen regelmäßig in der Praxis erscheinen, müssen wir vorsichtig sein wie diese
Beziehungen in einem begrifflichem Schema der aktuellen Datenbank zum Ausdruck gebracht werden.
Viele Datenmodelle erlauben keine direkte Darstellung von m:n Beziehungen, statt dessen ist es
nötig, daß die Beziehungen in einzelne n:1 Beziehungen zerlegt werden.
1.2.11 Anzeigen der Funktionalität bei ERD´s
In ERD´s verwenden wir Rhomben, bei der die Richtung mittels eines Pfeils angezeigt wird, um
wiederum anzuzeigen, wenn eine 1:1 oder 1:m Beziehung vorliegt. Anhand eines Beispiels nehmen
wir an, daß die Angestellten zu höchstens einer Abteilung zugewiesen sind, welche den Pfeil von
ASSIGNED_TO nach DEPTS in der obigen Abbildung erklärt.
1.3 Das relationale Datenmodell
Das relationale Modell stieg in seiner Bedeutung seit ihrer Ausstellung von E. Codd im Jahre 1970,
zu einem Punkt, wo es generell das Modell von der Auswahl für die Durchführung bzw. Verwendung
von neuen Datenbanken ist. Möglicherweise ist der wichtigste Grund für dessen Popularität der
wirksame Weg, den es, um einfache Sprachen mit welcher Operationen an Daten ausgedrückt
werden, unterstützt.
4
Technische Datenorganisation
Alexander Stadlmann 4.HBa 1995/96
1.3.1 Die „set-theoretic“ Vorstellung einer Relation
Das mathematische Konzept, das dem relationalen Modellen zugrunde liegt, ist die „set-theoretic
relation“, welche die „subset“ des kartesischen Produkts von einer Liste von Bereichen ist. Ein
Bereich ist hierbei einfach ein Satz von Werten, z.B. ist ein Satz von Integer-Werten ein Bereich.
5
Herunterladen