Upload
ivo-ebbers
View
110
Download
0
Tags:
Embed Size (px)
Citation preview
InformationsintegrationGlobal-as-View: GaV
15.11.2005
Felix Naumann
15.11.2005 Felix Naumann, VL Informationsintegration, WS 05/06 2
Überblick
Global as View (GaV) Modellierung Anfragebearbeitung
Local as View (LaV) Modellierung Ausblick: Anfragebearbeitung
Global Local as View (GLaV) Vergleich
15.11.2005 Felix Naumann, VL Informationsintegration, WS 05/06 3
Wdh.: Architekturen
4-Schichten-Architektur 5-Schichten-Architektur Mediator-Wrapper-Architektur Peer-Data-Management-Architektur
15.11.2005 Felix Naumann, VL Informationsintegration, WS 05/06 4
Das Problem
Föderiertes Schema
Externes Schema 1
Externes Schema N...
Komponenten-schema
Komponenten-schema
Lokales internes Schema
Lokales internes Schema
...
...
Exportschema ExportschemaWie drückt man diesen
Übergang aus?
15.11.2005 Felix Naumann, VL Informationsintegration, WS 05/06 5
Das Problem
Quelle 1 Quelle 2 Quelle 3
Anwendung 1 Anwendung 2
DataWarehouse
ETL 1
ETL 2
ETL 3
Wie spezifiziert man die Datentransformationen?
15.11.2005 Felix Naumann, VL Informationsintegration, WS 05/06 6
Das Problem
Quelle 1 Quelle 2 Quelle 3
Mediator
Anwendung 1 Anwendung 2
Wrapper 2
Wrapper 3Wrapper 1
Wie drückt man die Funktionalität des Wrappers aus?
15.11.2005 Felix Naumann, VL Informationsintegration, WS 05/06 7
Das Problem
Peer 1
Peer 2
Peer 4
Peer 3Peer 5
Wie sieht so ein „Mapping“ aus?
15.11.2005 Felix Naumann, VL Informationsintegration, WS 05/06 8
Das Problem Zwei heterogene Schemata
Quellschema: Hier sind die Daten. Zielschema: Hiergegen wird die Anfrage gestellt.
Teilproblem 1 Beziehungen zwischen Schemata spezifizieren Mappings
Teilproblem 2 Daten von der Quelle zum Ziel transformieren Transformationsanfragen
Teilproblem 3 Wie mache ich dies alles automatisch? -> VL 22-24 (Schema Mapping & Schema Matching)
15.11.2005 Felix Naumann, VL Informationsintegration, WS 05/06 9
Modellierung von Datenquellen
Kernidee Modellierung strukturell heterogener Quellen in Bezug auf
ein globales Schema als Views (Sichten) Relationales Modell
Allgemein: Eine Sicht verknüpft mehrere Relationen und produziert
eine Relation. Sichten zur Verknüpfung von Schemata
Sicht definiert auf Relationen eines Schemas und produziert eine Relation des anderen Schemas
Jetzt: Unterscheidung lokales und globales Schema
15.11.2005 Felix Naumann, VL Informationsintegration, WS 05/06 10
Global as View / Local as View
Global as View Relationen des globalen
Schemas werden als Sichten auf die lokalen Schemas der Quellen ausgedrückt.
Local as View Relationen der Schemas der
Quellen werden als Sichten auf das globale Schema ausgedrückt.
15.11.2005 Felix Naumann, VL Informationsintegration, WS 05/06 11
Global as View (GaV) – Beispiel
Globales Schema Film(Titel, Regie, Jahr, Genre) Programm(Kino, Titel, Zeit)
S1: IMDB(Titel, Regie, Jahr, Genre)S2: MyMovies(Titel, Regie, Jahr, Genre)S3: RegieDB(Titel, Regie)S4: GenreDB(Titel, Jahr, Genre)
CREATE VIEW Film ASSELECT * FROM IMDB
UNIONSELECT * FROM MyMovies
UNIONSELECT RegieDB.Titel, RegieDB.Regie, GenreDB.Jahr, GenreDB.GenreFROM RegieDB, GenreDBWHERE RegieDB.Titel = GenreDB.Titel
Quelle: VL „Data Integration“, Alon Halevy, University of Washington, 2002
Typisches Merk-mal bei GaV
Join über mehrere Quellen
(Anfragebearbeitung!)
15.11.2005 Felix Naumann, VL Informationsintegration, WS 05/06 12
Global as View (GaV) – Beispiel
Globales Schema Film(Titel, Regie, Jahr, Genre) Programm(Kino, Titel, Zeit)
S5: MDB(Titel, Regie, Jahr)S6: MovDB(Titel, Regie, Genre)
CREATE VIEW Film ASSELECT Titel, Regie, Jahr, NULL AS GenreFROM MDB
UNIONSELECT Titel, Regie, NULL AS Jahr, GenreFROM MovDB
Quelle: VL „Data Integration“, Alon Halevy, University of Washington, 2002
Fehlende Attribute
Form des Ergebnisses;Datenfusion
15.11.2005 Felix Naumann, VL Informationsintegration, WS 05/06 13
Global as View (GaV) – Beispiel
Globales Schema Film(Titel, Regie, Jahr, Genre) Programm(Kino, Titel, Zeit)
S7: KinoDB(Kino, Genre)
CREATE VIEW Film ASSELECT NULL, NULL, NULL, GenreFROM KinoDB
CREATE VIEW Programm ASSELECT Kino, NULL, NULLFROM KinoDB
Problem: Assoziationen werden getrennt,da nur eine Sicht pro globalerRelation.
Quelle: VL „Data Integration“, Alon Halevy, University of Washington, 2002
Allenfalls interessant für
passing bindings
15.11.2005 Felix Naumann, VL Informationsintegration, WS 05/06 14
Vorschau: Local as View (LaV) – Beispiel
Globales Schema Film(Titel, Regie, Jahr, Genre) Programm(Kino, Titel, Zeit)
S7: KinoDB(Kino, Genre)
CREATE VIEW S7 ASSELECT Programm.Kino, Film.GenreFROM Film, ProgrammWHERE Film.Titel = Programm.Titel
Assoziationen des globalenSchemas können in derSicht hergestellt werden.
15.11.2005 Felix Naumann, VL Informationsintegration, WS 05/06 15
Global as View (GaV) – Beispiel
Globales Schema NeuerFilm(Titel, Regie, Jahr, Genre) Programm(Kino, Titel, Zeit) Nebenbedingung: Jahr > 2000
S1: IMDB(Titel, Regie, Jahr, Genre)S2: MyMovies(Titel, Regie, Jahr, Genre)
CREATE VIEW NeuerFilm ASSELECT * FROM IMDBWHERE Jahr > 2000
UNIONSELECT * FROM MyMoviesWHERE Jahr > 2000
Bekannte Nebenbedingung auf dem globalen Schema kannmodelliert werden.
15.11.2005 Felix Naumann, VL Informationsintegration, WS 05/06 16
Global as View (GaV) – Beispiel
Globales Schema Film(Titel, Regie, Jahr, Genre) Programm(Kino, Titel, Zeit)
S8: NeueFilme(Titel,Regie, Genre)(Nebenbedingung: Jahr > 2000)
Problem: Bekannte Nebenbedingung auf der Quelle kannnicht modelliert werden.
CREATE VIEW Film ASSELECT Titel, Regie, NULL, GenreFROM NeueFilme
Frage: Warum ist das schlimm?
15.11.2005 Felix Naumann, VL Informationsintegration, WS 05/06 17
Global as View (GaV) – globale Nebenbedingungen
Globales Schema NeuerFilm(Titel, Regie, Jahr, Genre)Nebenbedingung: Jahr > 2000
oder NeuerFilm(Titel, Regie, Genre)Nebenbedingung: Jahr > 2000
S1: AlleFilmeNett(Titel, Regie, Jahr, Genre)S2: AlleFilmeBöse(Titel, Regie, Genre)
CREATE VIEW NeuerFilm ASSELECT * FROM AlleFilmeNettWHERE Jahr > 2000
oderCREATE VIEW NeuerFilm ASSELECT Titel, Regie, Genre FROM AlleFilmeNettWHERE Jahr > 2000
Quelle S2 kann nicht modelliert werden!
15.11.2005 Felix Naumann, VL Informationsintegration, WS 05/06 18
Global as View (GaV) – lokale Nebenbedingungen
Globales Schema Film(Titel, Regie, Jahr, Genre)
S1: AlleFilmeNett(Titel, Regie, Jahr, Genre)S2: AlleFilmeBöse(Titel, Regie, Genre)S3: NeueFilmeNett(Titel, Regie, Jahr, Genre)
(Nebenbedingung: Jahr > 2000)S4: NeueFilmeBöse(Titel, Regie, Genre)
(Nebenbedingung: Jahr > 2000)S5: AktuelleFilme(Titel, Regie, Genre)
(Nebenbedingung: Jahr = 2004)
CREATE VIEW Film ASSELECT *FROM AlleFilmeNett
UNIONSELECT Titel, Regie, NULL, GenreFROM AlleFilmeBöse
UNIONSELECT *FROM NeueFilmeNett(WHERE Jahr > 2000)
UNIONSELECT Titel, Regie, NULL, GenreFROM NeueFilmeBöse
UNIONSELECT Titel, Regie, 2004, GenreFROM AktuelleFilmeJede Sicht exportiert
alle Daten der Quelle!
Jede Quelle kann modelliert werden!
Modellierung nur für Optimierung
15.11.2005 Felix Naumann, VL Informationsintegration, WS 05/06 19
Global as View (GaV) – Nebenbedingungen
Globales Schema Film(Titel, Regie, Jahr, Genre)
CREATE VIEW Film ASSELECT *FROM AlleFilmeNett
UNIONSELECT Titel, Regie, NULL, GenreFROM AlleFilmeBöse
UNIONSELECT *FROM NeueFilmeNettWHERE Jahr > 2000
UNIONSELECT Titel, Regie, NULL, GenreFROM NeueFilmeBöse
UNIONSELECT Titel, Regie, 2004, GenreFROM AktuelleFilme
Anfrage 1:SELECT * FROM Film
SELECT * FROM(SELECT *FROM AlleFilmeNett
UNIONSELECT Titel, Regie, NULL, GenreFROM AlleFilmeBöse
UNIONSELECT *FROM NeueFilmeNettWHERE Jahr > 2000
UNIONSELECT Titel, Regie, NULL, GenreFROM NeueFilmeBöse
UNIONSELECT Titel, Regie, 2004, GenreFROM AktuelleFilme)
15.11.2005 Felix Naumann, VL Informationsintegration, WS 05/06 20
Global as View (GaV) – Nebenbedingungen
Globales Schema Film(Titel, Regie, Jahr, Genre)
Anfrage 1:SELECT * FROM FilmWHERE Jahr > 2001
SELECT * FROM(SELECT *FROM AlleFilmeNett
UNIONSELECT Titel, Regie, NULL, GenreFROM AlleFilmeBöse
UNIONSELECT *FROM NeueFilmeNett(WHERE Jahr > 2000)
UNIONSELECT Titel, Regie, NULL, GenreFROM NeueFilmeBöse
UNIONSELECT Titel, Regie, 2004, GenreFROM AktuelleFilme)
WHERE Jahr > 2001
Trägt voll zum Ergebnis bei
Trägt nicht zum Ergebnis bei, obwohl nützlich
Trägt voll zum Ergebnis bei
Trägt nicht zum Ergebnis bei, obwohl nützlich
Trägt voll zum Ergebnis bei
15.11.2005 Felix Naumann, VL Informationsintegration, WS 05/06 21
Global as View (GaV) – Nebenbedingungen
Globales Schema Film(Titel, Regie, Jahr, Genre)
Anfrage 1:SELECT * FROM FilmWHERE Jahr = 2001
SELECT * FROM(SELECT *FROM AlleFilmeNett
UNIONSELECT Titel, Regie, NULL, GenreFROM AlleFilmeBöse
UNIONSELECT *FROM NeueFilmeNettWHERE Jahr > 2000
UNIONSELECT Titel, Regie, NULL, GenreFROM NeueFilmeBöse
UNIONSELECT Titel, Regie, 2004, GenreFROM AktuelleFilme)
WHERE Jahr = 2001
Trägt voll zum Ergebnis bei
Trägt nicht zum Ergebnis bei, obwohl nützlich
Trägt voll zum Ergebnis bei
Trägt nicht zum Ergebnis bei, obwohl nützlich
Trägt nicht zum Ergebnis bei (2001 2004)
15.11.2005 Felix Naumann, VL Informationsintegration, WS 05/06 22
Global as View (GaV) – Nebenbedingungen
Globales Schema Film(Titel, Regie, Jahr, Genre)
Anfrage 1:SELECT * FROM FilmWHERE Jahr < 1950
SELECT * FROM(SELECT *FROM AlleFilmeNett
UNIONSELECT Titel, Regie, NULL, GenreFROM AlleFilmeBöse
UNIONSELECT *FROM NeueFilmeNettWHERE Jahr > 2000
UNIONSELECT Titel, Regie, NULL, GenreFROM NeueFilmeBöse
UNIONSELECT Titel, Regie, 2004, GenreFROM AktuelleFilme)
WHERE Jahr < 1950
Trägt voll zum Ergebnis bei
Trägt nicht zum Ergebnis bei, obwohl nützlich
Trägt nicht zum Ergebnis bei (2000 > 1950)
Trägt nicht zum Ergebnis bei (zum Glück)
Trägt nicht zum Ergebnis bei (2004 > 1950)
15.11.2005 Felix Naumann, VL Informationsintegration, WS 05/06 23
Global as View (GaV) – globale und lokale NebenbedingungenGlobales Schema NeuerFilm(Titel, Regie, Genre)Nebenbedingung: Jahr > 2000
S1: AlleFilmeNett(Titel, Regie, Jahr, Genre)S2: AlleFilmeBöse(Titel, Regie, Genre)S3: NeueFilmeNett(Titel, Regie, Jahr, Genre)
(Nebenbedingung: Jahr > 2000)S4: NeueFilmeBöse(Titel, Regie, Genre)
(Nebenbedingung: Jahr > 2000)S5: AktuelleFilme(Titel, Regie, Genre)
(Nebenbedingung: Jahr = 2004)
CREATE VIEW Film ASSELECT Titel, Regie, GenreFROM AlleFilmeNettWHERE Jahr > 2000
UNION???
UNIONSELECT Titel, Regie, GenreFROM NeueFilmeNett(WHERE Jahr > 2000)
UNIONSELECT Titel, Regie, GenreFROM NeueFilmeBöse
UNIONSELECT Titel, Regie, GenreFROM AktuelleFilme
Quelle S2 kann nicht modelliert werden!
15.11.2005 Felix Naumann, VL Informationsintegration, WS 05/06 24
Global as View (GaV) – Nebenbedingungen
Fazit Nebenbedingungen im globalen Schema
können die Integration von Quellen verhindern, wenn die Bedingung nicht geprüft werden kann (fehlendes
Attribut).
Nebenbedingungen in den lokalen Schemas können modelliert werden,
wenn sie auf exportierten Attributen gelten, oder wenn sie auf globalen Attributen gelten und die Form
attribute = <constant> haben. tragen möglicherweise nicht zum Anfrageergebnis bei,
wenn Nebenbedingung nicht modelliert wurde.
15.11.2005 Felix Naumann, VL Informationsintegration, WS 05/06 25
Überblick
Global as View (GaV) Modellierung Anfragebearbeitung
Local as View (LaV) Modellierung Ausblick: Anfragebearbeitung
Global Local as View (GLaV) Vergleich
15.11.2005 Felix Naumann, VL Informationsintegration, WS 05/06 26
Anfragebearbeitung – GaV
Gegeben: Anfrage an globales Schema
Insbesondere: Auf Relationen des globalen Schemas Für jede globale Relation genau eine Sicht auf lokale
Quellen Gesucht:
Alle Tupel, die die Anfragebedingungen erfüllen Aber: Daten sind in lokalen Quellen gespeichert.
Idee: Ersetze jede Relation der Anfrage durch ihre Sicht
(Sichtentfaltung, View Expansion, Query Unfolding). Geschachtelte Anfrage
15.11.2005 Felix Naumann, VL Informationsintegration, WS 05/06 27
GaV – Beispiel
Globales Schema Film(Titel, Regie, Jahr, Genre) Programm(Kino, Titel, Zeit)
SELECT *FROM Film
SELECT * FROM ( SELECT * FROM IMDB
UNION SELECT R.Titel, R.Regie, G.Jahr, G.Genre FROM RegieDB R, GenreDB G WHERE R.Titel = G.Titel
)
Globale Sicht für Film
S1: IMDB(Titel, Regie, Jahr, Genre)S2: RegieDB(Titel, Regie)S3: GenreDB(Titel, Jahr, Genre)
15.11.2005 Felix Naumann, VL Informationsintegration, WS 05/06 28
GaV – Beispiel
Globales Schema Film(Titel, Regie, Jahr, Genre) Programm(Kino, Titel, Zeit)
SELECT Titel, JahrFROM FilmWHERE Jahr = ‚2003‘
SELECT Titel, Jahr FROM ( SELECT * FROM IMDB
UNION SELECT R.Titel, R.Regie, G.Jahr, G.Genre FROM RegieDB R, GenreDB G WHERE R.Titel = G.Titel
)WHERE Jahr = ‚2003‘
S1: IMDB(Titel, Regie, Jahr, Genre)S2: RegieDB(Titel, Regie)S3: GenreDB(Titel, Jahr, Genre)
15.11.2005 Felix Naumann, VL Informationsintegration, WS 05/06 29
GaV – Beispiel
SELECT F.Titel, P.KinoFROM Film F, Programm PWHERE F.Titel = P.TitelAND P.Zeit > 20:00
SELECT F.Titel, P.Kino FROM ( SELECT * FROM IMDB
UNION SELECT R.Titel, R.Regie, G.Jahr, G.Genre FROM RegieDB R, GenreDB G WHERE R.Titel = G.Titel
) AS F, ( SELECT * FROM KinoDB ) AS PWHERE F.Titel = P.TitelAND P.Zeit > 20:00
S1: IMDB(Titel, Regie, Jahr, Genre)S2: RegieDB(Titel, Regie)S3: GenreDB(Titel, Jahr, Genre)S7: KinoDB(Titel, Kino, Genre, Zeit)
15.11.2005 Felix Naumann, VL Informationsintegration, WS 05/06 30
GaV - Schachtelung
Geschachtelte Anfragen Beliebig tiefe Schachtelung Bearbeitung
Konzeptionell: Ausführung der Anfragen von innen nach außen und Speicherung in temporären Relationen.
Tatsächlich: Optimierungspotential durch Umschreiben der Anfrage (Entschachtelung)
Caching und Materialisierte Sichten (materialized views)
15.11.2005 Felix Naumann, VL Informationsintegration, WS 05/06 31
GaV - Schachtelung
Schachtelung i.d.R. Belassen bei entfernten Quellen i.d.R. Auflösung bei materialisierten Sichten
SELECT F.Titel, P.Kino FROM ( SELECT * FROM IMDB
UNION SELECT R.Titel, R.Regie, G.Jahr, G.Genre FROM RegieDB R, GenreDB G WHERE R.Titel = G.Titel
) AS F, ( SELECT * FROM KinoDB ) AS PWHERE F.Titel = P.TitelAND P.Zeit > 20:00
SELECT F.Titel, P.Kino FROM IMDB F, KinoDB PWHERE F.Titel = P.TitelAND P.Zeit > 20:00
UNION
SELECT F1.Titel, P1.Jino FROM RegieDB F1, GenreDB F2, KinoDB PWHERE F1.Titel = F1.TitelWHERE F1.Titel = P1.TitelAND P1.Zeit > 20:00
15.11.2005 Felix Naumann, VL Informationsintegration, WS 05/06 32
GaV - Schachtelung
SELECT F.Titel, P.KinoFROM ( SELECT * FROM IMDB
UNION SELECT R.Titel, R.Regie, G.Jahr, G.Genre FROM RegieDB R, GenreDB G WHERE R.Titel = G.Titel
) AS F, ( SELECT * FROM KinoDB ) AS PWHERE F.Titel = P.TitelAND P.Zeit > 20:00
P.Zeit>20:00
⋈Titel
KinoDBIMDBRegieDBGenreDB
⋈Titel
∪
15.11.2005 Felix Naumann, VL Informationsintegration, WS 05/06 33
GaV - Schachtelung
P.Zeit>20:00
⋈Titel
KinoDBIMDBRegieDBGenreDB
⋈Titel
∪P.Zeit>20:00
⋈Titel
KinoDBIMDBRegieDBGenreDB
⋈Titel
∪
15.11.2005 Felix Naumann, VL Informationsintegration, WS 05/06 34
GaV - Schachtelung
P.Zeit>20:00
⋈Titel
KinoDBIMDBRegieDBGenreDB
⋈Titel
∪
P.Zeit>20:00
⋈Titel
KinoDBIMDBRegieDBGenreDB
⋈Titel
∪
15.11.2005 Felix Naumann, VL Informationsintegration, WS 05/06 35
GaV - Schachtelung
Globales Schema Film(Titel, Regie, Genre) Programm(Kino, Titel, Zeit)
S5: MDB(Titel, Zeit, Regie)S6: MovDB(Kino, Genre, Titel)
CREATE VIEW Film ASSELECT Titel, Regie, GenreFROM MDB, MovDBWHERE MDB.Titel = MovDB.Titel
CREATE VIEW Programm ASSELECT Kino, Titel, ZeitFROM MovDB, MDBWHERE MDB.Titel = MovDB.Titel
SELECT F.Titel, P.KinoFROM Film F, Programm PWHERE F.Titel = P.TitelAND P.Zeit > 20:00
SELECT F.Titel, F.Jahr FROM ( SELECT Titel, Regie, Genre
FROM MDB, MovDBWHERE MDB.Titel = MovDB.Titel
) AS F, ( SELECT Kino, Titel, Zeit
FROM MovDB, MDBWHERE MDB.Titel = MovDB.Titel
) AS PWHERE F.Titel = P.TitelAND P.Zeit > 20:00
15.11.2005 Felix Naumann, VL Informationsintegration, WS 05/06 36
GaV - Schachtelung
P.Zeit>20:00
⋈Titel
MovDBMDB
⋈Titel
SELECT F.Titel, F.Jahr FROM ( SELECT Titel, Regie, Genre
FROM MDB, MovDBWHERE MDB.Titel = MovDB.Titel
) AS F, ( SELECT Kino, Titel, Zeit
FROM MovDB, MDBWHERE MDB.Titel = MovDB.Titel
) AS PWHERE F.Titel = P.TitelAND P.Zeit > 20:00
⋈Titel
15.11.2005 Felix Naumann, VL Informationsintegration, WS 05/06 37
GaV - Schachtelung
P.Zeit>20:00
⋈Titel
MovDBMDB
⋈Titel ⋈Titel
P.Zeit>20:00
⋈Titel
MovDBMDB
15.11.2005 Felix Naumann, VL Informationsintegration, WS 05/06 38
SQL – Schachtelungen
Teilanfrage in FROM Klausel s.o.
Teilanfrage (subquery) in WHERE Klausel Skalare Teilanfrage Nicht-skalare Teilanfrage
15.11.2005 Felix Naumann, VL Informationsintegration, WS 05/06 39
Skalare Teilanfragen Teilanfrage überall dort wo Konstanten erwartet werden Typisch:
Eine Relation wird nur benutzt um einen einzigen Wert zu ermitteln Es werden nur Daten einer Relation ausgegeben (denn Daten aus
Teilanfragen können nicht im Ergebnis erscheinen) SELECT Regie
FROM RegieDB, MovieDBWHERE Titel = ‚Star Wars‘ AND RegieDB.movieID = MovieDB.ID
SELECT RegieFROM RegieDBWHERE movieID =
(SELECT IDFROM MovieDBWHERE Titel = ‚Star Wars‘)
Falls 0 oder >1 Tupel produziert werden: error
15.11.2005 Felix Naumann, VL Informationsintegration, WS 05/06 40
Nicht-skalare Teilanfragen Für Quantoren
EXISTS SELECT ID
FROM MovieDBWHERE EXISTS
(SELECT * FROM GenreDBWHERE Genre = ‚Drama‘)
IN SELECT Jahr
FROM MovieDBWHERE ID IN
(SELECT MovieID FROM RegieDBAND Regie = ‚Coppola‘)
Teilanfrage darf nur ein Attribut haben ALL
... WHERE JAHR < ALL (SELECT FROM WHERE) ANY
... WHERE JAHR < ANY (SELECT FROM WHERE) Jeweils mit NOT Variante
Besseres Beispiel?
15.11.2005 Felix Naumann, VL Informationsintegration, WS 05/06 41
Literatur
Gute Zusammenfassung für LaV und weiterführende Literatur: [Levy01] Alon Y. Halevy: Answering queries using views: A
survey, in VLDB Journal 10: 270-294, 2001.
Eher theoretisch [Ull00] Jeffrey D. Ullman: Information Integration Using
Logical Views. TCS 2000: 189-210 [Hull97] Managing Semantic Heterogeneity in Databases:
A Theoretical Perspective. Richard Hull. PODS 1997 tutorial