Vorlesung Informationsintegration

Werbung
Informationsintegration
Eine sehr kurze Übersicht über
relationale Datenbanken
Ulf Leser
Wissensmanagement in der
Bioinformatik
Was ist Informationsintegration?
• Informationsintegration bezeichnet die
Zusammenführung des Inhalts verschiedener
Datenquellen an einer Stelle?
• 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.
Ulf Leser: Informationsintegration, Wintersemester 2006/2007
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 2006/2007
3
Ulf Leser: Informationsintegration, Wintersemester 2006/2007
4
Ulf Leser: Informationsintegration, Wintersemester 2006/2007
5
Warum ist es so schwer?
• System-bedingte Gründe
– Verschiedene Plattformen
– Anfragebearbeitung über mehrere Systeme
• Soziale Gründe
– Finden relevanter Daten in Unternehmen
– Beschaffen relevanter Daten in Unternehmen
– Menschen zur Zusammenarbeit überreden
• Logik-bedingte Gründe
– Schema- und Datenheterogenität
– Semantik von Begriffen ist immer kontextabhängig
Ulf Leser: Informationsintegration, Wintersemester 2006/2007
6
Eine Schnittstelle
• Integration durch Mediator
– Nimmt Anfrage und berechnet Ergebnis unter Zugriff
auf Quellen
Ulf Leser: Informationsintegration, Wintersemester 2006/2007
7
Ablauf 1
Globale Anfrage
Integrationssystem
Datenquelle 1
Datenquelle 2
Datenquelle 3
Ulf Leser: Informationsintegration, Wintersemester 2006/2007
8
Ablauf 2
Globale Anfrage
Integrationssystem
Anfrageübersetzung,
-optimierung
und -ausführung
Datenquelle 1
Datenquelle 2
Datenquelle 3
Ulf Leser: Informationsintegration, Wintersemester 2006/2007
9
Ablauf 3
Globale Anfrage
Integrationssystem
Anfrageübersetzung,
-optimierung
und -ausführung
Datenquelle 1
Ergebnisintegration
Datenquelle 2
Datenquelle 3
Ulf Leser: Informationsintegration, Wintersemester 2006/2007
10
Ablauf 4
Anfrageergebnis
Globale Anfrage
Integrationssystem
Anfrageübersetzung,
-optimierung
und -ausführung
Datenquelle 1
Ergebnisintegration
Datenquelle 2
Datenquelle 3
Ulf Leser: Informationsintegration, Wintersemester 2006/2007
11
Inhalt dieser Vorlesung
•
•
•
•
•
•
Relationale Datenbanken
Relationales Modell und Datenbankentwurf
Relationale Operatoren & Algebra
SQL
Anfragebearbeitung
Integrität und Normalformen
Ulf Leser: Informationsintegration, Wintersemester 2006/2007
12
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 2006/2007
13
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 2006/2007
14
Ein Oracle-Server
Ulf Leser: Informationsintegration, Wintersemester 2006/2007
15
Relationales Datenmodell
• Repräsentation aller Daten in Tabellen
– Tabellenname
– Attribute
– Datentypen
• Vergleich zu UML Datenmodellen?
Spalten/Attribute
Mitarbeiter
P_ID
Zeilen/
Rows/
Tupel
Vorname
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
...2006/2007 ...
Ulf Leser:
Informationsintegration,
...
16
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 2006/2007
kunde
17
Uni-Schema
voraussetzen
Nachfolger
Vorgänger
MatrNr
N
Name
Semester
hören
Studenten
N
N
Titel
M
lesen
prüfen
1
Assistenten
N
Fachgebiet
SWS
M
PersNr
Name
M
Vorlesungen
N
Note
VorlNr
arbeitenFür
Rang
1
Professoren
1
PersNr
Ulf Leser: Informationsintegration, Wintersemester 2006/2007
Stimmt
das
gerade?
Name
Raum
18
Entwicklung des relationalen Schemas
Professoren
1
lesen
N
Vorlesungen
1:N-Beziehung
• Initial-Entwurf
Vorlesungen : {VorlNr, Titel, SWS}
1
Professoren : {PersNr, Name, Rang, Raum}
lesen: {VorlNr, PersNr}
Ulf Leser: Informationsintegration, Wintersemester 2006/2007
19
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 2006/2007
20
Ausprägungen
Vorlesungen
VorlNr
Titel
SWS
Gelesen
Von
Professoren
5001
Grundzüge
4
2137
PersNr
Name
5041
Ethik
4
2125
2125
Sokrates
C4
226
5043
Erkenntnistheorie
3
2126
2126
Russel
C4
232
5049
Mäeutik
2
2125
2127
Kopernikus
C3
310
4052
Logik
4
2125
2133
Popper
C3
52
5052
Wissenschaftstheorie
3
2126
2134
Augustinus
C3
309
5216
Bioethik
2
2126
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
Rang Raum
1
lesen
Ulf Leser: Informationsintegration, Wintersemester 2006/2007
N
Vorlesungen
21
So geht es NICHT
Vorlesungen
Professoren
PersNr
Name
2125
Sokrates
C4
226
5041
2125
Sokrates
C4
226
5049
2125
Sokrates
C4
226
4052
...
...
...
...
...
2134
Augustinus
C3
309
5022
2136
Curie
C4
36
??
Professoren
Rang Raum
1
liest
VorlNr
Titel
SWS
5001
Grundzüge
4
5041
Ethik
4
5043
Erkenntnistheorie
3
5049
Mäeutik
2
4052
Logik
4
5052
Wissenschaftstheorie
3
5216
Bioethik
2
5259
Der Wiener Kreis
2
5022
Glaube und Wissen
2
4630
Die 3 Kritiken
4
lesen
Ulf Leser: Informationsintegration, Wintersemester 2006/2007
N
Vorlesungen
22
Folgen: Anomalien
Professoren
Vorlesungen
VorlNr
Titel
SWS
5001
Grundzüge
4
5041
Ethik
4
5043
Erkenntnistheorie
3
5049
Mäeutik
2
PersNr
Name
Rang
Raum
liest
2125
Sokrates
C4
226
5041
2125
Sokrates
C4
226
5049
4052
Logik
4
2125
Sokrates
C4
226
4052
5052
Wissenschaftstheorie
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
Ulf Leser: Informationsintegration, Wintersemester 2006/2007
– Curie ist neu und liest noch keine Vorlesungen
23
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 2006/2007
hört
s_id
1
2
1
2
v_id
10
10
11
11
24
Beziehung „betreuen“
1
Studenten
N
betreuen
1
Professoren
Seminarthemen
Note
betreuen : Professoren x Studenten → Seminarthemen
betreuen : Seminarthemen x Studenten → Professoren
Ulf Leser: Informationsintegration, Wintersemester 2006/2007
25
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 2006/2007
26
Wie sieht das relationale Schema aus?
1
Studenten
N
betreuen
1
Professoren
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 2006/2007
27
Ausprägung der Beziehung betreuen
p1
Studenten
b1
p2
b2
p3
s2
b3
p4
s3
b4
s1
s4
Professoren
t1
b5
Gestrichelte Linien
b6
markieren illegale Ausprägungen
Ulf Leser: Informationsintegration, Wintersemester 2006/2007
t2
t3
t4
Seminarthemen
28
• Relationale Operationen
proj_id
p_id
Mitarbeiter
Projekte
vorname
start
nachname
arbeitet_in
anteil
Ulf Leser: Informationsintegration, Wintersemester 2006/2007
29
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 2006/2007
30
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 2006/2007
31
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 2006/2007
C1
C2
...
Cn
32
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 2006/2007
33
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 2006/2007
34
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 2006/2007
35
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 2006/2007
36
Delete
• Löschen von Tupeln in einer Tabellen
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 2006/2007
37
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 2006/2007
38
Varianten
• Subqueries
– Korreliert oder nicht
– Unkorrelierte Form?
• Self-Join
– „Begrenzte Rekursion“
• SQL in FROM Klausel
– „In-Line Views“
– Nützlich bei Top-Ten /
Sortieranfragen
– Top Ten Anfragen?
SELECT
FROM
WHERE
SELECT
FROM
WHERE
vorname, nachname
mitarbeiter M
EXISTS (
A.p_id
arbeitet_in A
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“
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 2006/2007
39
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 2006/2007
40
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 2006/2007
41
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 2006/2007
42
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 2006/2007
43
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 2006/2007
44
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)
NLJ(p_id=p_id)
σ(anteil>0.1)
NLJ(p_id=p_id)
Arbeitet_in
mitarbeiter
σ(anteil>0.1)
π(p_id,nachname)
Arbeitet_in
mitarbeiter
Ulf Leser: Informationsintegration, Wintersemester 2006/2007
45
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 2006/2007
46
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 2006/2007
47
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 2006/2007
48
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 2006/2007
49
Herunterladen