41
Informationsintegra tion Global-as-View: GaV 15.11.2005 Felix Naumann

Informationsintegration Global-as-View: GaV 15.11.2005 Felix Naumann

Embed Size (px)

Citation preview

Page 1: Informationsintegration Global-as-View: GaV 15.11.2005 Felix Naumann

InformationsintegrationGlobal-as-View: GaV

15.11.2005

Felix Naumann

Page 2: Informationsintegration Global-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

Page 3: Informationsintegration Global-as-View: GaV 15.11.2005 Felix Naumann

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

Page 4: Informationsintegration Global-as-View: GaV 15.11.2005 Felix Naumann

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?

Page 5: Informationsintegration Global-as-View: GaV 15.11.2005 Felix Naumann

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?

Page 6: Informationsintegration Global-as-View: GaV 15.11.2005 Felix Naumann

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?

Page 7: Informationsintegration Global-as-View: GaV 15.11.2005 Felix Naumann

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?

Page 8: Informationsintegration Global-as-View: GaV 15.11.2005 Felix Naumann

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)

Page 9: Informationsintegration Global-as-View: GaV 15.11.2005 Felix Naumann

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

Page 10: Informationsintegration Global-as-View: GaV 15.11.2005 Felix Naumann

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.

Page 11: Informationsintegration Global-as-View: GaV 15.11.2005 Felix Naumann

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!)

Page 12: Informationsintegration Global-as-View: GaV 15.11.2005 Felix Naumann

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

Page 13: Informationsintegration Global-as-View: GaV 15.11.2005 Felix Naumann

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

Page 14: Informationsintegration Global-as-View: GaV 15.11.2005 Felix Naumann

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.

Page 15: Informationsintegration Global-as-View: GaV 15.11.2005 Felix Naumann

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.

Page 16: Informationsintegration Global-as-View: GaV 15.11.2005 Felix Naumann

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?

Page 17: Informationsintegration Global-as-View: GaV 15.11.2005 Felix Naumann

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!

Page 18: Informationsintegration Global-as-View: GaV 15.11.2005 Felix Naumann

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

Page 19: Informationsintegration Global-as-View: GaV 15.11.2005 Felix Naumann

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)

Page 20: Informationsintegration Global-as-View: GaV 15.11.2005 Felix Naumann

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

Page 21: Informationsintegration Global-as-View: GaV 15.11.2005 Felix Naumann

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)

Page 22: Informationsintegration Global-as-View: GaV 15.11.2005 Felix Naumann

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)

Page 23: Informationsintegration Global-as-View: GaV 15.11.2005 Felix Naumann

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!

Page 24: Informationsintegration Global-as-View: GaV 15.11.2005 Felix Naumann

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.

Page 25: Informationsintegration Global-as-View: GaV 15.11.2005 Felix Naumann

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

Page 26: Informationsintegration Global-as-View: GaV 15.11.2005 Felix Naumann

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

Page 27: Informationsintegration Global-as-View: GaV 15.11.2005 Felix Naumann

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)

Page 28: Informationsintegration Global-as-View: GaV 15.11.2005 Felix Naumann

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)

Page 29: Informationsintegration Global-as-View: GaV 15.11.2005 Felix Naumann

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)

Page 30: Informationsintegration Global-as-View: GaV 15.11.2005 Felix Naumann

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)

Page 31: Informationsintegration Global-as-View: GaV 15.11.2005 Felix Naumann

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

Page 32: Informationsintegration Global-as-View: GaV 15.11.2005 Felix Naumann

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

Page 33: Informationsintegration Global-as-View: GaV 15.11.2005 Felix Naumann

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

Page 34: Informationsintegration Global-as-View: GaV 15.11.2005 Felix Naumann

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

Page 35: Informationsintegration Global-as-View: GaV 15.11.2005 Felix Naumann

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

Page 36: Informationsintegration Global-as-View: GaV 15.11.2005 Felix Naumann

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

Page 37: Informationsintegration Global-as-View: GaV 15.11.2005 Felix Naumann

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

Page 38: Informationsintegration Global-as-View: GaV 15.11.2005 Felix Naumann

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

Page 39: Informationsintegration Global-as-View: GaV 15.11.2005 Felix Naumann

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

Page 40: Informationsintegration Global-as-View: GaV 15.11.2005 Felix Naumann

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?

Page 41: Informationsintegration Global-as-View: GaV 15.11.2005 Felix Naumann

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