Vorlesung Informationsintegration

Werbung
Informationsintegration
Eine sehr kurze Übersicht über
relationale Datenbanken
Ulf Leser
Wissensmanagement in der
Bioinformatik
Was ist Informationsintegration?
• Kurz: Informationsintegration bezeichnet die
Zusammenführung des Inhalts verschiedener
Datenquellen an einer Stelle
• Lang: Informationsintegration bezeichnet die korrekte,
vollständige und effiziente Zusammenführung des
Inhalts verschiedener, verteilter, autonomer und
heterogener Quellen an einer Stelle zu einer
einheitlichen und strukturierten Informationsmenge mit
dem Ziel, eine effektiven Nutzung durch Nutzer und
Anwendungen zu ermöglichen
• Aber: Informationsintegration kann auch auf einer
einzelnen Datenbank sinnvoll sein, wenn deren Inhalt
heterogen ist
Ulf Leser: Informationsintegration, Wintersemester 2008/2009
2
EAI versus Informationsintegration
SCM
ERP
Message
Broker
E-Commerce
Anfrage
CRM
E-Procurement
Integriertes Informationssystem
Oracle,
DB2…
Dateisystem
Web
Service
Anwendung
HTML
Form
Integriertes
Info-system
Ulf Leser: Informationsintegration, Wintersemester 2008/2009
3
Ulf Leser: Informationsintegration, Wintersemester 2008/2009
4
Ulf Leser: Informationsintegration, Wintersemester 2008/2009
5
Warum ist es so schwer?
• System-bedingte Gründe
– Verschiedene Plattformen
– Verteilung, Anfragebearbeitung über mehrere Systeme
– Quellen ändern sich dauernd und „von selbst“
• Semantische Gründe
– Heterogenität auf allen Ebenen (Daten, Schema, Sprachen)
– Semantik von Begriffen ist kontextabhängig
– Semantik ist schwer zu beschreiben
• Soziale Gründe
– Einblick in „fremde“ Datenbanken muss gestattet werden
– Menschen zur Zusammenarbeit überreden
– Einhalten von Verabredungen und Standards
Ulf Leser: Informationsintegration, Wintersemester 2008/2009
6
Eine Schnittstelle
• Integration durch Mediator
– Nimmt Anfrage und berechnet Ergebnis unter Zugriff
auf Quellen
Ulf Leser: Informationsintegration, Wintersemester 2008/2009
7
Ablauf 1
Globale Anfrage
Integrationssystem
Datenquelle 1
Datenquelle 2
Datenquelle 3
Ulf Leser: Informationsintegration, Wintersemester 2008/2009
8
Ablauf 2
Globale Anfrage
Integrationssystem
Anfrageübersetzung,
-optimierung
und -ausführung
Datenquelle 1
Datenquelle 2
Datenquelle 3
Ulf Leser: Informationsintegration, Wintersemester 2008/2009
9
Ablauf 3
Globale Anfrage
Integrationssystem
Anfrageübersetzung,
-optimierung
und -ausführung
Datenquelle 1
Ergebnisintegration
Datenquelle 2
Datenquelle 3
Ulf Leser: Informationsintegration, Wintersemester 2008/2009
10
Ablauf 4
Anfrageergebnis
Globale Anfrage
Integrationssystem
Anfrageübersetzung,
-optimierung
und -ausführung
Datenquelle 1
Ergebnisintegration
Datenquelle 2
Datenquelle 3
Ulf Leser: Informationsintegration, Wintersemester 2008/2009
11
Probleme
• Heterogene Schnittstellen
– Technische Unterschiede
– Unterschiedliche mögliche Funktionsaufrufe / Quellen
• Heterogene Quellformate
– Unterschiedliche Attribute
– Unterschiedlich strukturierte Attribute
– Unterschiedlich benannte Attribute
• Heterogene Daten
– Unterschiedlicher Inhalt der Quellen
– Widersprüche in den Daten
• …
Ulf Leser: Informationsintegration, Wintersemester 2008/2009
12
Inhalt dieser Vorlesung
•
•
•
•
•
•
Relationale Datenbanken
Relationales Modell und Datenbankentwurf
Relationale Operatoren & Algebra
SQL
Anfragebearbeitung
(Integrität und Normalformen)
Ulf Leser: Informationsintegration, Wintersemester 2008/2009
13
Relationale Datenbank
• Relationale Datenbank Management Systeme (RDBMS)
– Serverbasierte Software
– Ein RDBMS – viele RDB
– Aufgaben des Servers
•
•
•
•
•
•
Hauptspeicher- und Sekundärspeicherverwaltung
Transaktionsmanagement
Anfragebearbeitung und –optimierung
Backup und Recovery
Datenkonsistenz
Userverwaltung
– Systeme
• Oracle, DB2 (Informix), Sybase, NCR Teradata, SQL-Server
• PostgreSQL, Interbase, Berkeley-DB, DB4Objects, MySQL, Ingres,
SAP-DB, Monet-DB, ...
Ulf Leser: Informationsintegration, Wintersemester 2008/2009
14
Client-Server
JAVA (JDBC)
JAVA (JDBC)
JAVA (JDBC)
Native (SQL*Plus,
Native (SQL*Plus,
OCI)
Native
(SQL*Plus,
OCI)
OCI)
Andere
Datenbank
Listener
DB1Server
Sekundärspeicher
DB2Server
Sekundärspeicher
Konsistenz
Parallelisierung
Recovery
Lastverteilung
Authentifizierung
Autorisierung
....
Ulf Leser: Informationsintegration, Wintersemester 2008/2009
15
Ein Oracle-Server
Ulf Leser: Informationsintegration, Wintersemester 2008/2009
16
Relationales Datenmodell
• Repräsentation aller Daten in Tabellen
– Tabellenname
– Attribute
– Datentypen
• Vergleich zum UML Datenmodell?
mitarbeiter
p_id
Zeilen/
Rows/
Tupel
vorname
Spalten/Attribute
nachname
alter
adresse
1
Peter
Müller
32
10101 Berlin
2
Stefanie
Meier
34
11202 Berlin
5
Petra
Weger
28
80223 München
7
Andreas
Zwickel
44
80443 München
...
... Wintersemester
...2008/2009 ...
Ulf Leser:
Informationsintegration,
...
17
ER-Modellierung
•
•
•
•
Relationales Modell „semantikarm“
Modellieren in Tabellen wenig intuitiv
Modellierungssprachen: ER, EER, UML, ...
Entity-Relationship Modell
mitarbeiter
– Entitytypen
projekte
p_id
proj_id
vorname
start
– Attribute
– Beziehungen
nachname
arbeitet_in
Ulf Leser: Informationsintegration, Wintersemester 2008/2009
kunde
18
voraussetzen
Uni-Schema
Nachfolger
Vorgänger
N
MatrNr
hören
studenten
Name
M
vorlesungen
N
N
Titel
M
Note
lesen
prüfen
PersNr
1
Name
assistenten
arbeitenFür
N
SWS
M
N
Semester
VorlNr
Stimmt
das
gerade?
Rang
1
professoren
1
Raum
Fachgebiet
PersNr
Ulf Leser: Informationsintegration, Wintersemester 2008/2009
Name
19
Entwicklung des relationalen Schemas
professoren
lesen
1
vorlesungen
N
1:N-Beziehung
• Initial-Entwurf
Vorlesungen : {VorlNr, Titel, SWS}
Professoren : {PersNr, Name, Rang, Raum}
lesen: {VorlNr, PersNr}
Ulf Leser: Informationsintegration, Wintersemester 2008/2009
20
Verfeinerung des relationalen Schemas
1:N-Beziehung
• Initial-Entwurf
Vorlesungen : {VorlNr, Titel, SWS}
Professoren : {PersNr, Name, Rang, Raum}
lesen: {VorlNr, PersNr}
• Verfeinerung durch Zusammenfassung
Vorlesungen : {VorlNr, Titel, SWS, gelesenVon}
Professoren : {PersNr, Name, Rang, Raum}
Regel
Relationen mit gleichem Schlüssel kann man zusammenfassen
aber nur diese und keine anderen!
Ulf Leser: Informationsintegration, Wintersemester 2008/2009
21
Ausprägungen
Vorlesungen
Professoren
Rang Raum
VorlNr
Titel
SWS
Gelesen
Von
5001
Grundzüge
4
2137
5041
Ethik
4
2125
5043
Erkenntnistheorie
3
2126
5049
Mäeutik
2
2125
4052
Logik
4
2125
5052 Wissenschafttheorie
3
2126
5216
Bioethik
2
2126
PersNr
Name
2125
Sokrates
C4
226
2126
Russel
C4
232
2127
Kopernikus
C3
310
2133
Popper
C3
52
2134
Augustinus
C3
309
2136
Curie
C4
36
5259
Der Wiener Kreis
2
2133
2137
Kant
C4
7
5022
Glaube und Wissen
2
2134
4630
Die 3 Kritiken
4
2137
professoren
lesen
1
vorlesungen
N
Ulf Leser: Informationsintegration, Wintersemester 2008/2009
22
So geht es NICHT
Vorlesungen
Professoren
Rang Raum liest
VorlNr
Titel
SWS
5001
Grundzüge
4
5041
Ethik
4
5043
Erkenntnistheorie
3
5049
Mäeutik
2
Logik
4
PersNr
Name
2125
Sokrates
C4
226
5041
2125
Sokrates
C4
226
5049
4052
2125
Sokrates
C4
226
4052
5052 Wissenschafttheorie
3
...
...
...
...
...
5216
Bioethik
2
2134
Augustinus
C3
309
5022
5259
Der Wiener Kreis
2
2136
Curie
C4
36
??
5022
Glaube und Wissen
2
4630
Die 3 Kritiken
4
professoren
lesen
1
vorlesungen
N
Ulf Leser: Informationsintegration, Wintersemester 2008/2009
23
Folgen: Anomalien
professoren
Rang Raum liest
orlesungen
VorlNr
Titel
SWS
5001
Grundzüge
4
5041
Ethik
4
5043
Erkenntnistheorie
3
5049
Mäeutik
2
Logik
4
PersNr
Name
2125
Sokrates
C4
226
5041
2125
Sokrates
C4
226
5049
4052
2125
Sokrates
C4
226
4052
5052 Wissenschafttheorie
3
...
...
...
...
...
5216
Bioethik
2
2134
Augustinus
C3
309
5022
5259
Der Wiener Kreis
2
2136
Curie
C4
36
??
5022
Glaube und Wissen
2
4630
Die 3 Kritiken
4
• Update-Anomalie
– Was passiert wenn Sokrates umzieht?
• Lösch-Anomalie
– Was passiert wenn „Glaube und Wissen“ wegfällt
• Einfügeanomalie
– Curie ist neu und liest noch keine Vorlesungen
Ulf Leser: Informationsintegration, Wintersemester 2008/2009
24
Beziehung „hören“
• m:n Beziehung
• „Brückentabelle“ mit zwei Fremdschlüsseln
vorlesung
vorlesung
student
M
N
hört
v_id
10
11
name
...
...
...
...
...
student
s_id
1
2
name
...
...
...
...
...
Ulf Leser: Informationsintegration, Wintersemester 2008/2009
hört
s_id
1
2
1
2
v_id
10
10
11
11
25
Beziehung „betreuen“
1
studenten
N
betreuen
professoren
1
seminarthemen
Note
betreuen : Professoren x Studenten → Seminarthemen
betreuen : Seminarthemen x Studenten → Professoren
Ulf Leser: Informationsintegration, Wintersemester 2008/2009
26
Erzwungene Konsistenzbedingungen
1. Studenten dürfen bei demselben Professor bzw.
derselben Professorin nur ein Seminarthema „ableisten“
2. Studenten dürfen dasselbe Seminarthema nur einmal
bearbeiten – sie dürfen also nicht bei anderen
Professoren ein schon einmal erteiltes Seminarthema
nochmals bearbeiten.
Es sind aber folgende Datenbankzustände möglich:
–
Professoren können dasselbe Seminarthema
„wiederverwenden“ – also dasselbe Thema auch mehreren
Studenten erteilen
–
Ein Thema kann von mehreren Professoren vergeben werden
– aber an unterschiedliche Studenten
Ulf Leser: Informationsintegration, Wintersemester 2008/2009
27
Wie sieht das relationale Schema aus?
1
studenten
N
betreuen
professoren
1
seminarthemen
Note
• betreuen{ student, professor, thema, note}
• unique( student, professor)
– Jeder Student nur ein Thema pro Professor
• unique( student, thema)
– Jedes Thema nur einmal pro Student
Ulf Leser: Informationsintegration, Wintersemester 2008/2009
28
Ausprägung der Beziehung betreuen
p1
b1
b2
p3
s2
b3
p4
s3
b4
s1
studenten
p2
s4
professoren
t1
b5
Gestrichelte Linien
b6
markieren illegale Ausprägungen
Ulf Leser: Informationsintegration, Wintersemester 2008/2009
t2
t3
t4
seminarthemen
29
• Relationale Operationen
proj_id
p_id
mitarbeiter
vorname
projekte
start
nachname
arbeitet_in
anteil
Ulf Leser: Informationsintegration, Wintersemester 2008/2009
30
Operationen auf Relationen/Tabellen
• Selektion
– Alle Zeilen von Mitarbeiter mit Alter>40 und
Name=„Müller“
• Projektion
– Nur die Mitarbeiter-Spalten Vorname, Nachname
• Kartesisches Produkt
– Alle Zeilen von Mitarbeiter verknüpft mit jeweils allen Zeilen
von Arbeitet_in
• Komposition von Operationen
– Die Spalten Nachname und Proj_id aller Zeilen des
kartesischen Produkts von Mitarbeiter und Arbeitet_in,
bei denen Mitarbeiter.P_ID=Arbeitet_in.P_ID mit
Anteil größer als 10%
Ulf Leser: Informationsintegration, Wintersemester 2008/2009
31
Die relationale Algebra
•
•
•
•
•
•
•
•
•
•
•
•
•
•
σ Selektion
π Projektion
x Kreuzprodukt
⋈ Join (Verbund)
ρ Umbenennung
− Mengendifferenz
÷ Division
∪ Vereinigung
∩ Mengendurchschnitt
⋊ linker Semijoin
⋉ rechter Semijoin
⋈ Left outer join
⋈ Right outer join
⋈ Full outer join
Ulf Leser: Informationsintegration, Wintersemester 2008/2009
32
Der natürliche Verbund (Join)
Gegeben seien:
•R(A1,..., Am, B1,..., Bk)
•S(B1,..., Bk, C1,..., Cn)
R ⋈ S = ΠA1,..., Am, R.B1,..., R.Bk, C1,..., Cn(σR.B1=S. B1
∧...∧ R.Bk = S.Bk(RxS))
R⋈S
R−S
A1
A2
...
R∩S
Am
B1
B2
...
S−R
Bk
Ulf Leser: Informationsintegration, Wintersemester 2008/2009
C1
C2
...
Cn
33
Andere Join-Arten
• Linker äußerer Join
L
R
A
B
C
a1
b1
c1
a2
b2
c2
⋈
Resultat
C
D
E
c1
d1
e1
c3
d2
e2
=
A
B
C
D
E
a1
b1
c1
d1
e1
a2
b2
c2
-
-
• Rechter Semi-Join
L
R
A
B
C
a1
b1
c1
a2
b2
c2
⋉
C
D
E
c1
d1
e1
c3
d2
e2
=
Resultat
A
B
C
a1
b1
c1
Ulf Leser: Informationsintegration, Wintersemester 2008/2009
34
SQL – Grundkonzepte
SELECT
FROM
WHERE
•
•
•
•
•
•
M.nachname, A.arbeitet_in
mitarbeiter M, arbeitet_in A
M.p_id = A.p_id AND
A.anteil > 0.1
SQL: Structured Query Language
ANSI-SQL, SQL-92, SQL-99, SQL-3
Deklarativer Charakter: Was, nicht wie
Vier Grundbefehle: Insert, Update, Delete, Select
DDL versus DML
Andere Sprachen
– Tupel/Domänenkalkül, relationale Algebra, QBE, Datalog
Ulf Leser: Informationsintegration, Wintersemester 2008/2009
35
Insert
• Einfügen von Werten in Tabelle
• Prinzipiell ein Tupel pro Insert
INSERT INTO mitarbeiter VALUES
(1, „Peter“, „Müller“, 38, „10101 Berlin“);
INSERT INTO projekte (proj_id, name, kunde) VALUES
(1, „Stammhaus-BMW“, „BMW“);
• Erweiterungen
– Bulk-Insert
INSERT INTO ... SELECT ...
– Konditionales Insert in mehrere Tabellen
INSERT INTO ... INTO ... INTO ...
Ulf Leser: Informationsintegration, Wintersemester 2008/2009
36
Update
• Ändern von Werten in Tabellen
• Mengensemantik: Ändert mehrere Werte
UPDATE projekte
SET status = „abgebrochen“,
kunde = kunde||“-insolvent“
WHERE kunde=„Grundig“
• Typisches Muster
UPDATE tabelle
SET ... = (SELECT ... FROM ... WHERE)
WHERE id in (SELECT ... FROM ... WHERE)
• Erweiterungen
– UPSERT / MERGE
Ulf Leser: Informationsintegration, Wintersemester 2008/2009
37
Delete
• Löschen von Tupeln in einer Tabelle
DELETE FROM projekte
WHERE status=„abgeschlossen“
• Typisches Muster
DELETE FROM projekte
WHERE id in (SELECT ... FROM ... WHERE)
• Löschen ist eine performancekritische Operation
• DELETE, DROP TABLE, TRUNCATE, Partitionen, ...
Ulf Leser: Informationsintegration, Wintersemester 2008/2009
38
Select
• Selektieren von Werten aus mehreren Tabellen
SELECT
FROM
WHERE
M.nachname, A.anteil
mitarbeiter M, arbeitet_in A
M.p_id = A.p_id AND
a.anteil > 0.1
SELECT
FROM
WHERE
M.nachname, P.name, A.anteil
mitarbeiter M, projekte P, arbeitet_in A
M.p_id = A.p_id AND
A.proj_id = P.proj_id
SELECT
FROM
WHERE
M.nachname, A.anteil
mitarbeiter M, arbeitet_in A
M.p_id = A.proj_id
?
• Ergebnis ist immer eine Tabelle
• Ausführung ist Sache des RDBMS - Optimierung
Ulf Leser: Informationsintegration, Wintersemester 2008/2009
39
Varianten
• Subqueries
– Korreliert oder nicht
– Unkorrelierte Form?
• Self-Join
– „Begrenzte Rekursion“
SELECT
vorname, nachname
FROM mitarbeiter M
WHERE
EXISTS (
SELECT A.p_id
FROM
arbeitet_in A
WHERE A.p_id = M.p_id
SELECT P1.name, P2.name
FROM
projekte P1, projekte P2
WHERE P1.vorgaenger=p2.proj_id AND
P2.status=„abgeschlossen“
• SQL in FROM Klausel
– „In-Line Views“
– Nützlich bei Top-Ten /
Sortieranfragen
– Top Ten Anfragen?
SELECT X.nachname, X.status
FROM
(
SELECT M.nachname, p.status
FROM mitarbeiter, projekte, arbeitet_in
WHERE M.p_id=A.p_id AND
A.proj_id=P.proj_id
) X
WHERE X.status=„Akquisition“
Ulf Leser: Informationsintegration, Wintersemester 2008/2009
40
Unkorrelierte versus korrelierte Unteranfragen
Korrelierte Formulierung – Umformung ?
select s.*
from Studenten s
where exists
(select p.*
from Professoren
where p.GebDatum > s.GebDatum);
Besser: Äquivalente unkorrelierte Formulierung
select s.*
from Studenten s
where s.GebDatum <
(select max (p.GebDatum)
from Professoren p);
• Unteranfrageergebnis kann materialisiert werden
• Unteranfrage braucht nur einmal ausgewertet werden
Ulf Leser: Informationsintegration, Wintersemester 2008/2009
41
Weitere Operationen
• Aggregation und GROUP BY
?
SELECT
FROM
WHERE
GROUP BY
proj_id, COUNT(*), SUM(alter)/COUNT(*)
mitarbeiter M, arbeitet_in A, projekte P
M.p_id=A.p_id AND A.proj_id=P.proj_id
P.proj_id
SELECT
FROM
WHERE
GROUP BY
proj_id, P.name, COUNT(*)
mitarbeiter M, arbeitet_in A, projekte P
M.p_id=A.p_id AND A.proj_id=P.proj_id
P.proj_id
• ORDER BY
SELECT
FROM
WHERE
ORDER BY
P.name, M.nachname
mitarbeiter M, arbeitet_in A, projekte P
M.p_id=A.p_id AND A.proj_id=P.proj_id
P.name, M.nachname
Ulf Leser: Informationsintegration, Wintersemester 2008/2009
42
Views
• Definition von „benannten“ Queries
CREATE VIEW proj_pers AS
SELECT
P.proj_id, P.name,
M.P_id, M.name, M.alter,
FROM
mitarbeiter M, arbeitet_in A, projekte P
WHERE
M.p_id=A.p_id AND A.proj_id=P.proj_id
• Können viel Schreibarbeit sparen
SELECT
FROM
GROUP BY
proj_id, COUNT(*), SUM(alter)/COUNT(*)
proj_pers
proj_id
• Verwendung für tupelgenauen Zugriffsschutz
• Views werden i.d.R. syntaktisch expandiert
• Erweiterungen
– Materialisierte Sichten
– Rekursive Views
Ulf Leser: Informationsintegration, Wintersemester 2008/2009
43
DDL
• DML: Data Manipulation Language
• DDL: Data Definition Language
• Definition von
– Tabellen, Indexen, Views, ...
– Administration: Tablespaces, Segmente, Rollen
– Benutzerverwaltung: User, Gruppen, Rechte, ...
CREATE TABLE mitarbeiter (
p_id
NUMBER,
vorname
VARCHAR2(100),
nachname
VARCHAR2(100),
alter
NUMBER(2) CHECK (alter>0 AND alter<150),
adresse
VARCHAR2(1000)
);
Ulf Leser: Informationsintegration, Wintersemester 2008/2009
44
Anfrageübersetzung und -optimierung
• Prinzipieller Ablauf
–
–
–
–
Parsen der Anfrage (Syntax)
Überprüfen der Schemaelemente („Semantik“)
Expandieren von Views
Berechnung von Ausführungsplänen
• Exponentiell viele
– Wahl des optimalen Ausführungsplans
• Regelbasierter Optimierer
• Kostenbasierter Optimierer - Statistik
– Ausführung
• (Dynamisches Re-Planen?)
Ulf Leser: Informationsintegration, Wintersemester 2008/2009
45
Ausführungspläne
SELECT
FROM
WHERE
M.nachname, A.anteil
mitarbeiter M, arbeitet_in A
M.p_id = A.p_id AND
a.anteil > 0.1
π(nachname, anteil)
π(nachname, anteil)
σ(anteil>0.1)
NLJ(p_id=p_id)
arbeitet_in
mitarbeiter
NLJ(p_id=p_id)
σ(anteil>0.1)
π(p_id,nachname)
arbeitet_in
mitarbeiter
Ulf Leser: Informationsintegration, Wintersemester 2008/2009
46
Ausführungspläne
• Freiheitsgrade
–
–
–
–
Algebraische Anfrageumformung
Joinreihenfolge
Joinmethode (Nested Loop, Sort-Merge, Hash ...)
Access path: Indexzugriff (welcher?), Full-Table-Scan
• 3, 5, 7% Regel
– Operatorreihenfolge
• Kostenbasierter Optimierung
– Einbeziehung von Werteverteilungen, Tabellengrößen, Anzahl
NULL-Werten, Histogrammen, Selektivität, ...
• Heuristische Ziele
– Minimierung von Zwischenergebnissen
– Minimierung von Sekundärspeicherzugriff
Ulf Leser: Informationsintegration, Wintersemester 2008/2009
47
Integrität
• Semantisch konsistenter Zustand der Daten
– Kann nur im Anwendungskontext definiert werden
• Überwachung nach Möglichkeit durch RDBMS
–
–
–
–
Datenmodell selber (Kardinalitäten)
Referentielle Integrität (Fremdschlüssel)
CHECK Constraints in DDL
Trigger
• Zeitpunkt der Überwachung?
– Nach jeder Operation
– Nach jeder Transaktion
Ulf Leser: Informationsintegration, Wintersemester 2008/2009
48
Normalformen
• Attribute hängen funktional voneinander ab
– p_id
→ Vorname, Nachname, Alter ...
– proj_id → Kunde, Status, ...
• Schlüsselkandidaten
– Minimale Menge von Attributen, die alle anderen
Attribute einer Tabelle funktional bestimmen
• Zerlegung nach funktionalen Abhängigkeiten
– Datenbankentwurf
– Ziel: Redundanzfreies Schema ohne Anomalien
– Aber: Performanzsteigerung macht oftmals
Denormalisierung notwendig
Ulf Leser: Informationsintegration, Wintersemester 2008/2009
49
Normalformen
• Relationenschema R, Schlüsselkandidaten P
• Erste Normalform (1NF)
– Alle Attribute von R sind atomar (Adresse!)
– Kann man nicht automatisch überprüfen
– Designentscheidung mit Auswirkung auf alle anderen NFs
• Zweite Normalform (2NF)
– R ist in 1NF
– Kein Attribut A, A nicht Teil eines Schlüssels, hängt von
Teilmenge P‘ ⊂ P funktional ab
– Schlecht: lehrt(p_id,s_id,termin,stud_name)
• Dritte Normalform (3NF)
– R in 1NF
– Kein Attribut A hängt von einem A‘∉P ab
– Schlecht: mitarbeiter(p_id,plz,ort)
Ulf Leser: Informationsintegration, Wintersemester 2008/2009
50
Herunterladen