Relation - Fakultät für Mathematik und Informatik - Friedrich

Werbung
3. Relationales Daten(bank)modell
ƒ Vorbemerkung
- Historie
- Einordnung
ƒ Begriffe und Eigenschaften
- Relationen und Tabellen
- Relationsschema
- Schlüssel, Integrität
ƒ Relationale Abbildung des E/R-Modells
- Beziehungstypen
- Nichtatomare Attribute
Datenbanksysteme
Friedrich-Schiller-Universität Jena
Seite 97
3.1 Vorbemerkung/Historie
ƒ Datenbanksysteme nach dem hierarchischen Modell und Netzwerk-Modell
"weit entfernt" vom gelegentlichen Endbenutzer ("casual user"):
- Datenbank nur aus Anwendungsprogramm heraus ansprechbar, dazu
sind Programmierkenntnisse erforderlich
- Datenbanksprache (DL/1, CODASYL) schwer zu erlernen
• GET UNIQUE, GET NEXT, GET NEXT WITHIN PARENT
• FIND OWNER, FIND FIRST, FIND NEXT
- Datenbanksystem nur für kleinen Kreis von Spezialisten zugänglich,
dadurch "Entwicklungsstau"
- Komplizierter Umgang mit Datenbanksystem führt zu Fehlern
• Datenbank wird inkonsistent, DBVS kann dies nicht feststellen
• "Zustand der modellierten Miniwelt <> Zustand der Datenbank"
• Fatal vor allem bei kritischen Anwendungen (z.B. Prozessteuerung
in der Industrie, Finanzbereich)
Datenbanksysteme
Friedrich-Schiller-Universität Jena
Seite 98
3.1 Vorbemerkung/Historie
ƒ Entwicklungsziele für relationales Datenmodell / Datenbanksysteme im IBM
Forschungslabor in San Jose Ende 60er Jahre (E.F. Codd u.a.):
- Einfaches Datenmodell mit mathematisch fundierter Grundlage
- Einfache Datenbanksprache (auch für Ad-hoc-Anfragen) mit
mathematisch fundierter Grundlage
• Verhalten von Datenbanksprachanweisungen (Semantik) ist
wohldefiniert auf mathematischer Grundlage
• Benutzer beschreibt nur noch, was er haben möchte (lesen, einfügen,
ändern, löschen), das wie überlässt er dem DBS
• Deskriptive Anfragen statt Navigation!
- Überwachung von Konsistenz/Integrität möglichst weitgehend durch das
DBVS und nicht durch den Benutzer
• Semantik der Daten muss dem DBVS offengelegt werden, so dass
automatische Überprüfungen möglich sind
• DBVS berücksichtigt bei Operationen die Dateninhalte und verlässt
sich nicht darauf, dass der Benutzer "die Zeiger richtig setzt"
Datenbanksysteme
Friedrich-Schiller-Universität Jena
Seite 99
3.1 Vorbemerkung/Historie
ƒ Ergebnis der Entwicklung/Forschung:
- Datenmodell und Datenbanksprache leichter zu erlernen Æ näher am
(End-)Benutzer Æ breiterer Benutzerkreis Æ weniger Entwicklungsstau
- Datenbankzugriffe auch ad-hoc möglich, nicht zwingend per Anwendung
- Inkonsistente Datenbanken unwahrscheinlicher
- Ineffizienter Datenbankzugriff unwahrscheinlicher
• DBVS ist für das wie des Datenzugriffs verantwortlich
• Optimale Ausführungsstrategie wählbar (Zugriffsplan, Optimizer)
ƒ Entwicklungsweg relationaler DBMS
- Erste Prototypen ab Mitte der 1970er
• System R (IBM, später DB2), Ingres (Univ. of California)
- Erste Produkte ab Ende der 1970er
• SQL/DS, DB2, Ingres, Oracle
- Stärkere Verbreitung in der Praxis ab Mitte der 1980er und 1990er
• Informix, Sybase, MS SQL Server, MySQL
Datenbanksysteme
Friedrich-Schiller-Universität Jena
Seite 100
3.2 Begriffe und Eigenschaften
ƒ Ziele bei der Definition des Modells:
- Wenige, einfache, mathematisch fundierte Konzepte und Begriffe
- Beschreibung ausschließlich logischer Aspekte (konzeptuelles
Schema)
- Physische Aspekte (internes Schema) nicht Gegenstand des Modells
ƒ Modellierung in Form von Relationen, Grundlage zur
- Darstellung der Daten
- Datenabfrage und Manipulation
ƒ Begriffsklärung nachfolgend:
- Relation
- Relationsschema
- Schlüssel
Datenbanksysteme
Friedrich-Schiller-Universität Jena
Seite 101
3.2.1 Relation
ƒ Definition:
- Gegeben seien Wertebereiche/Domänen D1, D2, ..., Dn
- Eine Relation (Menge) R ist eine Teilmenge des kartesischen Produkts
der Domänen D1, D2, ..., Dn
• R ⊆ D1 × D2 × ... × Dn (n≥1)
• n = Stelligkeit (Grad) der Relation
• Element r = (d1, d2, ..., dn) mit diєDi wird als Tupel von R bezeichnet,
di als die i-te Komponente des Tupels
ƒ Darstellungsform:
- Relationen können als Tabellen dargestellt / aufgefasst werden
- Tupel = Tabellenzeile ("rows")
- Komponente des Tupels = Wert in Tabellenspalte ("columns")
Relation R
D1
D2
...
Dn
d1
d2
...
dn
Å Tupel
...
Datenbanksysteme
Friedrich-Schiller-Universität Jena
Seite 102
3.2.1 Relation
ƒ Beispiel:
- Domänen:
• D1 = {rot, blau, grün}
• D2 = {0,1}
- Kartesisches Produkt:
• D1 × D2 = {(rot,0), (rot,1), (blau,0), (blau,1), (grün,0), (grün,1)}
- Mögliche 2-stellige Relationen:
• R1 = {(rot,0), (grün,1)}
rot
0
grün
1
rot
0
• R2 = { }
• R3 = {(rot,0)}
Datenbanksysteme
Friedrich-Schiller-Universität Jena
Seite 103
3.2.2 Relationsschema
ƒ Bisher wurden Relationen (Mengen von Tupeln) betrachtet
- Aus Datenbanksicht ist aber auch das zugehörige Schema von
Interesse, das einen Relationstyp beschreibt
- Abstraktion von konkreter Relation zum Relationstyp
ƒ Definition: Relationsschema besteht aus
- Schemaname
- Menge von Domänen(namen) D1, D2, ..., Dn
- Menge von Attributnamen A1, A2, ..., An (Tabellenspalten mit aiєDi)
- Zusätzlichen Integritätsbedingungen
ƒ Beispiel:
- Schemaname: FarbTabelle, kurz: FarbTabelle(Farbe, Wert)
- Domänen: D1 = {rot, blau, grün}, D2 = {0,1}
- Attributnamen: Farbe (D1), Wert (D2)
- Integritätsbedingung: Farbe rot darf nicht mit Wert 1 ein Tupel bilden
Datenbanksysteme
Friedrich-Schiller-Universität Jena
Seite 104
3.2.2 Relationsschema
ƒ Beispiel:
- Relationsschema Angest (Name, Beruf, Wohnort, GebJahr)
- Domänen/Integritätsbedingungen hier nicht aufgeführt
- Darstellung von Schema + Daten
• Schemaname: Angest
• Attributnamen: Name, Beruf, Wohnort, GebJahr
Attributname
Schemaname
Angest
Tupel
(Darstellung als
Tabellenzeilen)
Name
Müller
Meier
Schulze
Beruf
Schreiner
Schmied
Bergmann
Wohnort
GebJahr
Schema
Jena
Jena
Seiffen
1960
1958
1935
Daten,
konkrete
Relation
Attributwert
Datenbanksysteme
Friedrich-Schiller-Universität Jena
Seite 105
3.2.2 Relationsschema
ƒ Datenbankschema = Menge von Relationsschemata (mit verschiedenen
Schemanamen) + Integritätsbedingungen (relationsschemaübergreifend)
ƒ Keine strikte Unterscheidung zwischen Relationsschema und Relation; wenn
von Relation die Rede ist, wird meist darunter auch das Schema subsumiert
(d.h. Daten + Schema oder auch nur Schema)
ƒ Definition: Eine Relation ist in 1. Normalform, wenn jedes Attribut aufgrund
der Schemadefinition nur atomare Wertebereich hat.
- Mengenwertige, strukturierte und geschachtelte Attribute im E/RVerständnis sind verboten, Relation ist frei von Wiederholungsgruppen
• Entscheidung abhängig vom Anwendungskontext
• Bsp: Attribut "Adresse" (PLZ, Ort, Strasse, Nr) in 4 Attribute splitten
- Das relationale Modell, wie von Codd definiert und in DBVS-Produkten
realisiert, verlangt "im Prinzip" 1. Normalform!!!
- Typische atomare Attribute: Integer, Real, Decimal, Char, String, Boolean
Datenbanksysteme
Friedrich-Schiller-Universität Jena
Seite 106
3.2.3 Schlüssel
ƒ Relationen sind Mengen, es dürfen also in einer Relation keine identischen
Tupel auftauchen
Müller
Müller
Schreiner
Schreiner
Jena
Jena
1960
1960
ƒ Relationenmodell ("reine Lehre") verlangt für jede Relation einen
- Schlüssel als identifizierende Attributkombination mit
- Minimalitätseigenschaft, d.h. bei Weglassen eines Attributs aus der
Kombination geht die Schlüsseleigenschaft verloren
- Existieren für eine Relation mehrere Schlüssel(kandidaten), muss einer
ausgewählt werden als Primärschlüssel
ƒ Beispiel: Relation Angest (Name, Beruf, Wohnort, GebJahr)
- Was ist hier der Schlüssel?
- Erweiterung der Relation erforderlich/sinnvoll:
• Angest (PNR, Name, Beruf, Wohnort, GebJahr)
• Schlüssel = PNR
Datenbanksysteme
Friedrich-Schiller-Universität Jena
Seite 107
3.2.3 Schlüssel
ƒ Definition: besitzt eine Attributkombination einer Relation R1 in einer Relation
R2 (Primär-)Schlüsseleigenschaft, kann sie in R1 als Fremdschlüssel mit
Bezug auf den (Primär-)Schlüssel in R2 bezeichnet werden
- Fremdschlüssel ist üblicherweise kein Schlüssel in R1!
- Fremdschlüssel als Definitionsmittel für referentielle Integrität, wobei
Werte als Verweise dienen (keine "Pointer")
- Namensidentität nicht zwingend, aber Kompatibilität der Wertebereiche
- Relationen dürfen beliebig viele Fremdschlüssel haben
ƒ Beispiel:
- R1 = Angest (PNR, Name, Beruf, Wohnort, GebJahr, ANR)
- R2 = Abteilung (ANR, AOrt, Mgr, Budget)
- "ANR" kann als Fremdschlüssel in der Relation "Angest" bezüglich des
Primärschlüssels "ANR" in "Abteilung" vereinbart werden (per DDL)
- Bedeutung: Für "ANR" in "Angest" dürfen nur Werte auftreten, die auch
als ANR-Wert in "Abteilung" vorkommen
• Reine Lehre: Waisenkinder sind verboten, Einfügereihenfolge!
• SQL / Produkte: Möglichkeiten der Aufweichung (on update/delete ...)
Datenbanksysteme
Friedrich-Schiller-Universität Jena
Seite 108
3.3 Relationale Abbildung des E/R-Modells
ƒ Beziehungstypen
- Nichtrekursive 1:n-Beziehung
- Rekursive 1:n-Beziehung
- Nichtrekursive n:m-Beziehung
- Rekursive n:m-Beziehung
ƒ Umgang mit nichtatomaren Attributen
- Strukturierte Attribute
- Mengenwertige Attribute
Datenbanksysteme
Friedrich-Schiller-Universität Jena
Seite 109
3.3.1 Nichtrekursive 1:n-Beziehung
ƒ E/R-Diagramm:
ABTEILUNG
(0,*)
HAT
(1,1)
MITARBEITER
ƒ Relational:
- ABTEILUNG (ANR, AOrt, ...)
- MITARBEITER (PNR, Name, ..., ANR)
ƒ Beispieltabellen:
- Reihenfolge der Spalten und Zeilen ist unerheblich (Menge!)
Abteilung
ANR
AOrt
...
3815
3952
4717
...
Jena
Weimar
Erfurt
...
...
...
...
...
Mitarbeiter
PNR
2837
1113
1548
...
Name
Meier
Meyer
Maier
...
...
...
...
...
...
ANR
3815
3952
4717
...
ƒ Überführung eines Entity-Typ in Relation(sschema)
- Unmittelbare Übernahme der (atomaren) Attribute
- Vorsicht bei Schlüsselüberführung wegen Minimalitätsforderung
Datenbanksysteme
Friedrich-Schiller-Universität Jena
Seite 110
3.3.1 Nichtrekursive 1:n-Beziehung
ƒ ANR in MITARBEITER ist Fremdschlüssel bezüglich Primärschlüssel in
ABTEILUNG
- Darstellung des Beziehungstyp HAT aus dem E/R-Diagramm
- Überführung von HAT in eigenständige Relation nicht erforderlich
ƒ Beliebige Kardinalitäten (z.B. (3,7)) nicht direkt im rel. Modell darstellbar
ƒ Falls Mitarbeiter erlaubt sein sollen, die keiner Abteilung angehören, ist für
ANR in MITARBEITER definierbar, dass ein Nullwert (NULL) gestattet ist
- Nullwert ("undefiniert") hat spezielle Semantik, nicht normaler Wert 0
- Bsp: Attribute ANR und Name in MITARBEITER dürfen Nullwerte haben
Mitarbeiter
PNR
2837
1113
1548
2964
Name
Meier
Meyer
Maier
NULL
...
...
...
...
...
ANR
3952
NULL
4717
3815
ƒ Nullwerte sind für Primärschlüssel verboten, auch für Teil-Attribute!!
Datenbanksysteme
Friedrich-Schiller-Universität Jena
Seite 111
3.3.2 Rekursive 1:n-Beziehung
ƒ E/R-Diagramm:
(0,1)
ist ...
MITARBEITER
(0,1)
hat als ...
VORGESETZTER
ƒ Relational:
- MITARBEITER (PNR, Name, ..., MgrPNR)
ƒ MgrPNR ist Fremdschlüssel in MITARBEITER bezüglich Primärschlüssel der
gleichen Relation (ist erlaubt!!)
ƒ Problem: wie stellen wir als Tupel den "obersten Boss" dar? Alternativen:
- MgrPNR und PNR besitzen gleichen Wert (Trick nicht empfehlenswert!)
- MgrPNR bekommt in diesem Fall einen undefinierten Wert (Nullwert)
• Dies muss im relationalen Modell an MITARBEITER definiert werden
• Weitere Integritätsbedingung dann notwendig, die sicherstellt, dass am
MgrPNR-Attribut nur einmal der Wert NULL vorkommt (Big Boss)
• Integritätsbedingung wegen Zyklenfreiheit
Datenbanksysteme
Friedrich-Schiller-Universität Jena
Seite 112
3.3.2 Rekursive 1:n-Beziehung
ƒ Beispieltabelle:
Mitarbeiter
PNR
3814
4755
5812
6719
...
Name
Schmidt
Dagobert
Graf
Schneider
...
...
...
...
...
...
...
MgrPNR
NULL
3814
3814
4755
...
ƒ Ausprägungsbaum:
- Tabelle (Relation) Mitarbeiter enthält für jeden Knoten (Mitarbeiter) im
Ausprägungsbaum ein Tupel
- Kanten im Ausprägungsbaum werden in der Tabelle durch die
Primärschlüssel-Fremdschlüssel-Beziehungen dargestellt
PNR 3814
PNR 4755
PNR 5812
...
PNR 6719
Datenbanksysteme
Friedrich-Schiller-Universität Jena
Seite 113
3.3.3 Nichtrekursive n:m-Beziehung
MENGE
ƒ E/R-Diagramm:
LIEFERANT
(0,*)
LIEFERT
(0,*)
TEIL
ƒ Relational:
- LIEFERANT (LieferNr, Name, Ort, ...)
- TEIL (TeileNr, Bezeichnung, ...)
- LIEFERT (TeileNr, LieferNr, Menge)
ƒ Beziehungstyp wird in eigenständige Relation überführt (LIEFERT)
- Primärschlüssel von LIEFERT ist die Attributkombination der Schlüssel
der Relationen LIEFERANT und TEIL
- Fremdschlüssel in LIEFERT: TeileNr (TEIL), LieferNr (LIEFERANT)
- Warum Beziehungstyp als eigenständige Relation statt TeileNr aus TEIL
als Fremdschlüssel in LIEFERANT aufnehmen?
• Redundanzvermeidung
• Abbildung von Lieferanten ohne Teile bzw. Teile ohne Lieferanten
Datenbanksysteme
Friedrich-Schiller-Universität Jena
Seite 114
3.3.3 Nichtrekursive n:m-Beziehung
ƒ Konsequenz der 2 Primärschlüssel-Fremdschlüssel-Beziehungen:
- In der Spalte TeileNr/LieferNr von LIEFERT dürfen nur Teilenummern
bzw. Lieferantennummern vorkommen, die auch in TEIL/LIEFERANT
vorhanden sind
- Nullwerteproblematik hier durch Definition ausgeschlossen (warum?)
LIEFERANT LieferNr
Name
Ort
3612
Jenoptik
Jena
2525
Zeiss
Jena
5888
Rodenstock Stuttgart
...
...
...
TEIL
Datenbanksysteme
TeileNr
374
812
111
...
Bezeichnung
Glasauge
Linse
Okular
...
...
...
...
...
...
...
...
...
...
...
LIEFERT TeileNr
374
374
111
812
812
...
Friedrich-Schiller-Universität Jena
LieferNr
3612
5888
2525
2525
3612
...
Menge
7
5
8
30
30
...
Seite 115
3.3.4 Rekursive n:m-Beziehung
ƒ E/R-Diagramm:
- Modell einer Stückliste
- Entitytyp TEIL als Synonym für
• Einzelteil
• Baugruppe
TEIL
(0,*)
(0,*)
enthält / enthalten in
MENGE
ƒ Relational:
- TEIL (TeileNr, Bezeichnung, ...)
- STRUKTUR (OberteilNr, UnterteilNr, Menge)
ƒ Beziehungstyp wird in eigenständige Relation überführt (STRUKTUR)
- Primärschlüssel von STRUKTUR setzt sich aus Attributen OberteilNr
und UnterteilNr zusammen
- OberteilNr und UnterteilNr sind jeweils einzeln Fremdschlüssel in
STRUKTUR mit Bezug auf Primärschlüssel von TEIL
Datenbanksysteme
Friedrich-Schiller-Universität Jena
Seite 116
3.3.4 Rekursive n:m-Beziehung
ƒ Konsequenz der 2 Primärschlüssel-Fremdschlüssel-Beziehungen:
- In der Spalte OberteilNr/UnterteilNr von STRUKTUR dürfen nur
Teilenummern vorkommen, die auch in TEIL vorhanden sind
- Nullwerteproblematik hier ebenfalls durch Definition ausgeschlossen
- Zusätzliche Integritätsbedingung wegen Zyklenfreiheit!
TEIL TeileNr
A
B
C
D
E
F
Bezeichnung
Getriebe
Gehäuse
Welle
Schraube
Schraube
Kugellager
...
...
...
...
...
...
...
ƒ Darstellung als Gozinto-Graph
- "Zepartzat Gozinto"
- DAG = directed acyclic graph
STRUKTUR Ober- UnterteilNr teilNr
B
A
C
A
E
A
D
B
E
B
E
C
F
C
B
3
D
Datenbanksysteme
Friedrich-Schiller-Universität Jena
1
1
4
7
3
1
5
2
Mengen
A
1
Menge
4
C
7
5
E
2
F
Seite 117
3.3.5 Abbildung nichtatomarer Attribute
ƒ Nichtatomare Attribute sind nicht direkt im relationalen Modell abbildbar
- Grund: Einhaltung 1. Normalform
- Vorstellung von Lösungsmöglichkeiten am Beispiel ANGEST
• Mengenwertige Attribute (Telefon#)
• Strukturierte Attribute (Adresse)
ƒ E/R-Diagramm-Beispiel:
Telefon#
ANGEST
PNR
Name
PLZ
Datenbanksysteme
Adresse
Ort
Straße
Friedrich-Schiller-Universität Jena
Hausnummer
Seite 118
3.3.5 Abbildung nichtatomarer Attribute – Mengenwertige Attribute
ƒ Modellierungsvorschlag 1: Eine Tabelle
ANGEST
PNR
3814
3814
4755
4755
4755
...
TelNr
31350
31051
31189
24753
24752
...
Name
Schmidt
Schmidt
Dagobert
Dagobert
Dagobert
...
...
...
...
...
...
...
...
nein!
- Mitarbeiter ohne Telefon können in ANGEST nicht aufgenommen werden!
- Redundanz in Tabellenspalte Name, dadurch Änderungsaufwand und
Integritätsgefährung! Æ Lösung: 2. Normalform
ƒ Modellierungsvorschlag 2: Zwei Tabellen
ANGEST
Datenbanksysteme
PNR
3814
4755
5812
...
Name
Schmidt
Dagobert
Graf
...
...
...
...
...
...
TELEFON
Friedrich-Schiller-Universität Jena
PNR
3814
3814
4755
4755
4755
TelNr
31350
31051
31189
24753
24752
Seite 119
3.3.5 Abbildung nichtatomarer Attribute – Mengenwertige Attribute
- PNR in TELEFON ist Fremdschlüssel mit Bezug auf den Primärschlüssel
von ANGEST
- Nullwertproblematik hier per Definition ausgeschlossen
- Zusätzliche Integritätsbedingung denkbar:
• Kein "Telefonnummern-Sharing", d.h. zwei Angestellte besitzen nie
die gleiche Telefonnummer
• TelNr in TELEFON zum Schlüsselkandidaten machen garantiert
Werteeindeutigkeit!
• Primärschlüssel wäre nach der reinen Lehre dann TelNr, aber
Definition über (PNR, TelNr) mit UNIQUE-Bedingung auf TelNr lassen
SQL/Produkte auch zu
- Nachteil der Verwendung zweier Tabellen (ANGEST, TELEFON):
• Eine Datenbankanfrage, die z.B. Name und TelNr sehen möchte,
muss auf beide Tabellen zugreifen
• Verknüpfungs-Operation (JOIN) ist bei falscher Verwendung sehr
teuer (Optimizer-Aufgabe!)
Datenbanksysteme
Friedrich-Schiller-Universität Jena
Seite 120
3.3.5 Abbildung nichtatomarer Attribute – Strukturierte Attribute
ƒ Modellierungsvorschlag 1: Eine Tabelle
ANGEST PNR
3814
4755
...
Name
Schmidt
Dagobert
...
PLZ
73428
13121
...
Ort
Jena
Berlin
...
Straße
Freiheit
Moabit
...
Hausnr.
47
17
...
...
...
...
...
- Herausnehmen der Ebene "Adresse" und Hochziehen der zugehörigen
atomaren Attribute
- Nachteil: Verlust von Semantik
• Zusammengehörigkeit von PLZ-Ort-Straße-Hausnummer verloren
• Adresse in DB-Anfrage nicht mehr einfach als ganzes ansprechbar
ƒ Modellierungsvorschlag 2: Zwei Tabellen
Name
ANGEST PNR
3814 Schmidt
4755 Dagobert
...
...
...
...
...
...
ADRESSEN
PNR
3814
4755
...
PLZ
73428
13121
...
Ort
Jena
Berlin
...
...
...
...
...
- PNR in ADRESSEN ist Primär-/Fremdschlüssel auf PNR in ANGEST
- Adresstabelle liefert gesamte Adresse für eine gegebene PNR
Datenbanksysteme
Friedrich-Schiller-Universität Jena
Seite 121
Herunterladen