Laste ned presentasjonen
Presentasjon lastes. Vennligst vent
PublisertJøran Berger Endret for 9 år siden
1
Eksempel idé 1 – ta kartesisk produkt, velg tupler, projiser attributter B,C,Y ( W=X A=3 Z=‘a’ (R S)) ABC...W 1z1 4 2c6 2 3r8 7 4n9 4 2j0 3 3t5 9 7e3 3 8f5 8 1h7 5 XYZ 1aa 2fc 3tb 4bb 7ka 6ea 7gc 8ib 9ec Relasjon RRelasjon S BCY r8k Resultat B,C,Y ... SR ABC...WXYZ 1z1 41aa 2fc 2c6 21aa 2fc 3r8 71aa 2fc 3r8 77ka 4n9 41aa 2fc v 2j0 31aa 2cc 3t5 91aa 2fc 7e3 31aa 2fc v Merk: #attributter = #R-attributter + #S-attributter #tupler = #R-tupler * #S-tupler SELECT B,C,Y FROM R,S WHERE W=X AND A=3 AND Z=‘a’ 1
2
idé 2 – velg tupler, gjør equijoin, projiser attributter B,C,Y (( A=3 (R)) ⋈ W=X ( Z=‘a’ (S))) ABC...W 1z1 4 2c6 2 3r8 7 4n9 4 2j0 3 3t5 9 7e3 3 8f5 8 1h7 5 XYZ 1aa 2fc 3tb 4bb 7ka 6ea 7gc 8ib 9ec Relasjon R Relasjon S BCY r8k B,C,Y ⋈ W=X SR A=3 Z=‘a’ ABC...W 3r8 7 3t5 9 XYZ 1aa 7ka 6ea ABC WXYZ 3r8 77ka Eksempel (forts) SELECT B,C,Y FROM R,S WHERE W=X AND A=3 AND Z=‘a’
3
idé 3 – bruk indekser på R.A og S.X –bruk indeksen på R.A for å velge tupler med R.A = 3 –bruk indeksen på S.X for å finne tupler som matcher R.W –plukk ut S-tupler hvor Z = ‘a’ –join tupler fra R og S som matcher –projiser B,C,Y ABC...W 1z1 4 2c6 2 3r8 7 4n9 4 2j0 3 3t5 9 7e3 3 8f5 8 1h7 5 XYZ 1aa 2fc 3tb 4bb 7ka 6ea 7gc 8ib 9ec Relasjon R Relasjon S BCY r8k ABC...W 3r8 7 3t5 9 XYZ 7ka 7gc 9ec ABC WXYZ 3r8 77ka I R.A I S.X 3 7,9 Eksempel (forts) SELECT B,C,Y FROM R,S WHERE W=X AND A=3 AND Z=‘a’
4
INF3100 - 21.3.2014 - Ellen Munthe-Kaas 4 Enkel grammatikk: eksempel Finn filmer med skuespillere født i 1960: SELECT title FROM StarsIn WHERE starName IN ( SELECT name FROM MovieStar WHERE birthDate LIKE ‘%1960’); SELECT FROM WHERE SELECT FROM WHERE title StarsIn IN starName ( ) name MovieStar LIKE birthDate‘%1960’
5
Konvertering av SFW – eksempel SELECT name FROM MovieStar WHERE birthDate LIKE ‘%1960’ –produktet av relasjonene i –gjør seleksjon basert på –projiser på attributtene i SELECT FROM WHERE name MovieStarbirthDate‘%1960’ LIKE MovieStar birthDate LIKE ‘%1960’ name
6
Konvertering av subspørringer For subspørringer bruker vi en foreløpig operator – to-arguments seleksjon Videre behandling avhenger av typen. Vi skal se på t IN S som et eksempel: –erstatt med treet for S. Hvis S kan inneholde duplikater, må vi legge til en –operator på toppen. –ertstatt to-arguments seleksjon med ett-arguments seleksjon C, hvor C sammenligner hver komponent i t med det tilsvarende attributtet i S. –la C ha produktet av R og S som argument. R INtS R CC S
7
INF3100 - 21.3.2014 - Ellen Munthe-Kaas Konvertering av subspørringer - eksempel SELECT title FROM StarsIn WHERE starName IN (SELECT name FROM MovieStar WHERE birtDate LIKE ‘%1960’) –produktet av relasjonene i –gjør seleksjon basert på, representert ved to-arguments seleksjon –projiser på attributtene i –erstatt foreløpig subspørringen med dens parseringstre SELECT FROM WHERE title StarsIn IN StarsIn IN title starName MovieStar birthDate LIKE ‘%1960’ name IN 7
8
starName = name Eksempel (forts) SELECT title FROM StarsIn WHERE starName IN (...) –erstatt med treet for subspørringen –erstatt to-arguments seleksjon med ett-arguments seleksjon C, hvor C er starName = name –la C ha produktet av StarsIn og MovieStar som argument StarsIn IN title starName MovieStar birthDate LIKE ‘%1960’ name StarsIn starName = name title MovieStar birthDate LIKE ‘%1960’ name 8
9
9 INF3100 - 21.3.2014 - Ellen Munthe-Kaas Dytting av seleksjon oppover i treet Movies96 starName, studio ⋈ StarsIn year = 1996 starName, studio ⋈ StarsIn Movies year = 1996 starName, studio StarsIn ⋈ Movies year = 1996 Movies Noen ganger er det nyttig å dytte seleksjon den andre veien, dvs oppover i treet, ved å bruke loven a (R ⋈ S) = R ⋈ a (S) “bakvendt”. Eksempel: StarsIn(title, year, starName); Movies(title, year, studio …) –CREATE VIEW Movies96 AS SELECT * FROM Movies WHERE year = 1996; –SELECT starName, studio FROM Movies96 NATURAL JOIN StarsIn;
Liknende presentasjoner
© 2024 SlidePlayer.no Inc.
All rights reserved.