INF1300 Introduksjon til databaser

Like dokumenter
INF1300 Relasjonsalgebra og SQL, mengder og bager. Lysark for forelesning v. 2.1

UNIVERSITETET I OSLO RELASJONSALGEBRA. Regning med relasjoner. Institutt for Informatikk. INF Ellen Munthe-Kaas

UNIVERSITETET I OSLO RELASJONSALGEBRA. Regning med relasjoner. Institutt for Informatikk. INF Ellen Munthe-Kaas 1

INF1300 Relasjonsalgebra. Et matematisk fundament for å forstå SQL-setninger

Relasjonsalgebraen. Algebra

UNIVERSITETET I OSLO RELASJONSALGEBRA. Regning med relasjoner. Institutt for Informatikk INF Ellen Munthe-Kaas

Join. Intuitivt: Skjøte sammen to relasjoner. Intuitivt: 1. Beregn R S 2. Velg ut de tuplene som tilfredsstiller joinbetingelsen C

UNIVERSITETET I OSLO SQL. Structured Query Language. (The intergalactic dataspeak) Institutt for Informatikk. INF Ragnar Normann 1

Spørsmålskompilering del 1

Spørsmålskompilering del 1

UNIVERSITETET I OSLO SQL. Structured Query Language. Institutt for Informatikk. INF Ellen Munthe-Kaas 1

Databaser. Relasjonsmodellen 2 Læreboka: Kap. 2 Relasjonsmodellen

UNIVERSITETET I OSLO SQL. Structured Query Language. Institutt for Informatikk. INF Ellen Munthe-Kaas 1

UNIVERSITETET SQL. Structured Query Language. Institutt for Informatikk. INF Ellen Munthe-Kaas 1

UNIVERSITETET I OSLO. Oppskriftsbok. FDer og MVDer Relasjonsalgebra. Institutt for Informatikk. INF3100 Ellen Munthe-Kaas 1

UNIVERSITETET I OSLO SQL. Structured Query Language. Institutt for Informatikk. INF Ellen Munthe-Kaas 1

Oppskriftsbok. FDer og MVDer - oversikt: se s. 3 Relasjonsalgebra - oversikt: se s. 45

Effektiv eksekvering av spørsmål

UNIVERSITETET I OSLO SQL. Structured Query Language. (forts.) Institutt for Informatikk. INF Ragnar Normann 1

Effektiv eksekvering av spørsmål

SQL. SQL-standarder. Flere standarder: ANSI SQL SQL2 (SQL-92) SQL3 (SQL-99) = SQL2 + objekt-relasjonelle egenskaper mm

SQL Structured Query Language. Repetisjon av select spørringer Nestede select spørringer Mengdeoperasjoner Views Flere operatorer

UNIVERSITETET I OSLO SQL. Structured Query Language. (forts.) Institutt for Informatikk. INF Ellen Munthe-Kaas 1

UNIVERSITETET SQL. Structured Query Language (forts.) Institutt for Informatikk. INF Ellen Munthe-Kaas 1

Effektiv eksekvering av spørsmål

Spørsmålskompilering del 2

Alle attributter har NULL som mulig verdi. mulige verdier for integer: NULL, 0, 1, 2, 3...

Relasjonsalgebra. Hva?

INF1300 Introduksjon til databaser

INF1300 Det meste av resten av SQL. Utleggsark v. 2.0

UNIVERSITETET I OSLO. Relasjonsmodellen. Relasjoner og funksjonelle avhengigheter. Institutt for Informatikk. INF Ellen Munthe-Kaas 1

INF1300 Introduksjon til databaser

INF1300 Introduksjon til databaser

SQL Structured Query Language

Spørsmålskompilering. Basert på foiler av Hector Garcia-Molina

UNIVERSITETET I OSLO SQL. Structured Query Language. (The intergalactic dataspeak) Institutt for Informatikk. INF Ellen Munthe-Kaas 1

Effektiv eksekvering av spørsmål

INF3100 Databasesystemer

SQL Structured Query Language

IN2090 Introduksjon til databaser

INF212 - Databaseteori. Kursinnhold

Relasjoner terminologi

INF1300 Introduksjon til databaser

INF1300 SQL Structured Query Language del 1. Stoff som blir/ble forelest i oktober 2013

INF1300 Introduksjon til databaser: SQL Structured Query Language. En første introduksjon Lysark til forelesning onsdag 22.

DBS18 - Strategier for Query-prosessering

Relasjonsdatabasedesign

INF1300 Introduksjon til databaser: SQL Structured Query Language. En første introduksjon Lysark til forelesning mandag 14.

SQL Structured Query Language. Definere tabeller Skranker Fylle tabeller med data

Dagens tema: Relasjonsmodellen (funksjonelle avhengigheter og nøkler, integritetsregler) Realisering: Fra ORM til relasjoner

1. SQL spørringer mot flere tabeller

Relasjonsdatabasedesign

Emnenavn: Ny/utsatt eksamen. Eksamenstid: Faglærer: Edgar Bostrøm. Erik Åsberg. Davide Roverso

INF1300 Introduksjon til databaser: SQL Structured Query Language

SQL og Mengdelære. Oracle, MySQL, Access, bruker forskjellige syntaks.

En lett innføring i foreninger (JOINs) i SQL

SQL: SELECT-spørringer

Normalformer utover 4NF (ikke pensum)

Relasjonsdatabasedesign

Oppdateringsanomalier Normalformer

INF1300 Introduksjon til databaser

INF3100 Databasesystemer

Mengdelære INF1800 LOGIKK OG BEREGNBARHET FORELESNING 2: MENGDELÆRE. Læreboken. Mengder. Definisjon (Mengde) Roger Antonsen

Repetisjon: Normalformer og SQL

Relasjonsdatabasedesign. Ekstramateriale: Normalformer utover 4NF (ikke pensum)

INF1800 Forelesning 2

Metaspråket for å beskrive grammatikk

INF1300 Introduksjon til databaser

PENSUM H2012 INF1300. Joakim Myrvoll Johansen. Pensum fra forelesnings-foilere

UNIVERSITETET I OSLO

Relasjonsdatabasedesign

En liten rekap. Spørrespråk. I dag SELECT

Relasjonsdatabasedesign

Utvikling fra kjernen og ut

Det matematisk-naturvitenskapelige fakultet. Kontroller at oppgavesettet er komplett før du begynner å besvare det

OQL Object Query Language

Relasjonsdatabasedesign

Transkript:

UNIVERSITETET I OSLO INF1300 Introduksjon til databaser Dagens tema: Relasjonsalgebraen Oversettelse av select-from-where til relasjonsalgebra SQL: union, snitt, differanse, kartesisk produkt INF1300 22.10.2007 Ellen Munthe-Kaas 1

Relasjonsalgebraen definerer en mengde av operasjoner på relasjoner gir oss et språk til å beskrive spørsmål om innholdet i relasjonene er et prosedyralt spørrespråk: Vi sier hvordan svaret skal beregnes (Alternativet er deklarative spørrespråk hvor vi sier hva svaret skal oppfylle. SQL er et deklarativt språk.) utgjør det teoretiske grunnlaget for prosessering av SQLspørringer mot relasjonsdatabaser INF1300 22.10.2007 Ellen Munthe-Kaas 2

Algebra Domene (samling av verdier) Atomære operander Konstanter (representerer konkrete verdier i domenet) Variable (representerer vilkårlige verdier fra domenet) Operatorer Tar som argumenter operander Leverer som resultat en operand Uttrykk Bygges av atomære operander med operatorer og parenteser INF1300 22.10.2007 Ellen Munthe-Kaas 3

Eksempel: Heltallsalgebra Domene: Heltallene Konstanter:..., -3, -2, -1, 0, 1, 2, 3,... Variable: x, y, z,... Operatorer: +, -,, / Eksempler på uttrykk: 2 + 5 ((2-x) 5) + (y/z) INF1300 22.10.2007 Ellen Munthe-Kaas 4

Klassisk relasjonsalgebra Domene: Endelige relasjoner (endelig mengde av tupler) Atomære operander: Konstanter: Alle endelige relasjoner Variable: Representerer vilkårlige endelige relasjoner Operatorer: union snitt differanse kartesisk produkt projeksjon seleksjon join renavning divisjon INF1300 22.10.2007 Ellen Munthe-Kaas 5

Mengdeoperatorer Union: R S Snitt: R S Differanse: R\S Rog Småhaparvis identiske attributtnavn (og identiske domener). Eks: Ansatt(navn, tlf, adr) Medlem(navn, adr, tlf) Før operasjonen utføres, ordnes S slik at attributtene kommer i samme rekkefølge som i R Dette kalles unionkompatibilitet INF1300 22.10.2007 Ellen Munthe-Kaas 6

Union R S er en relasjon hvor alle tupler som er i R eller i S eller i både R og S, er i R S (Om t er i både R og S, er t likevel bare representert én gang i R S (fordi en relasjon er en mengde)) ingen andre tupler forekommer i R S Eksempel på vanlig mengdeunion: {a,b,c} {b,c,d,e} = {a,b,c,d,e} INF1300 22.10.2007 Ellen Munthe-Kaas 7

Union Eksempel på union av relasjoner: Ansatt navn tlf adr Tor 23456789 Lia 3 Lise 37485960 Bakken 1 Geir 25364758 Viken 2 Medlem navn adr tlf Lise Bakken 1 37485960 Liv Lia 3 19203142 Jan Heia 7 26374859 Geir Viken 2 25364758 Ansatt Medlem navn tlf adr Tor 23456789 Lia 3 Lise 37485960 Bakken 1 Geir 25364758 Viken 2 Liv 19203142 Lia3 Jan 26374859 Heia 7 INF1300 22.10.2007 Ellen Munthe-Kaas 8

Snitt R S er en relasjon hvor alle tupler som er i både R og S, er i R S ingen andre tupler forekommer i R S Eksempel på vanlig mengdesnitt: {a,b,c} {b,c,d,e} = {b,c} INF1300 22.10.2007 Ellen Munthe-Kaas 9

Snitt Eksempel på snitt mellom relasjoner: Ansatt navn tlf adr Tor 23456789 Lia 3 Lise 37485960 Bakken 1 Geir 25364758 Viken 2 Ansatt Medlem navn tlf adr Lise 37485960 Bakken 1 Geir 25364758 Viken 2 Medlem navn adr tlf Lise Bakken 1 37485960 Liv Lia 3 19203142 Jan Heia 7 26374859 Geir Viken 2 25364758 INF1300 22.10.2007 Ellen Munthe-Kaas 10

Differanse R\S er en relasjon hvor alle tupler som er i R, men ikke i S, er i R\S ingen andre tupler forekommer i R\S Eksempel på vanlig mengdedifferanse: {a,b,c} \ {b,c,d,e} = {a} INF1300 22.10.2007 Ellen Munthe-Kaas 11

Differanse Eksempel på differanse mellom relasjoner: Ansatt navn tlf adr Tor 23456789 Lia 3 Lise 37485960 Bakken 1 Geir 25364758 Viken 2 Ansatt \ Medlem navn tlf adr Tor 23456789 Lia 3 Medlem navn adr tlf Lise Bakken 1 37485960 Liv Lia 3 19203142 Jan Heia 7 26374859 Geir Viken 2 25364758 INF1300 22.10.2007 Ellen Munthe-Kaas 12

Operatorer som fjerner deler av en relasjon Seleksjon: σ C (R) Projeksjon: π L (R) INF1300 22.10.2007 Ellen Munthe-Kaas 13

Seleksjon σ C (R) er relasjonen som fås fra R ved å velge ut de tuplene i R som tilfredsstiller betingelsen C C er et vilkårlig boolsk uttrykk bygget opp fra atomer på formen op 1 θ op 2 der operandene op 1 og op 2 er enten to attributter i R med samme domene eller ett atributt i R og en konstant fra dette attributtets domene operatoren θ { =,, <, >, <=, >=, like } INF1300 22.10.2007 Ellen Munthe-Kaas 14

Seleksjon Eksempel: Ansatt navn tlf adr Tor 23456789 Lia 3 Lise 37485960 Bakken 1 Geir 25364758 Viken 2 σ tlf>25000000 (Ansatt) navn tlf adr Lise 37485960 Bakken 1 Geir 25364758 Viken 2 INF1300 22.10.2007 Ellen Munthe-Kaas 15

Projeksjon π L (R) hvor R er en relasjon og L er en liste av attributter i R, er relasjonen som fås fra R ved å velge ut kolonnene til attributtene i L Relasjonen har et skjema med attributtene i L Ingen tupler skal forekomme flere ganger i π L (R) INF1300 22.10.2007 Ellen Munthe-Kaas 16

Projeksjon Eksempel: Ansatt navn tlf adr Tor 23456789 Lia 3 Lise 37485960 Bakken 1 Geir 25364758 Viken 2 π navn, adr (Ansatt) navn adr Tor Lia 3 Lise Bakken 1 Geir Viken 2 INF1300 22.10.2007 Ellen Munthe-Kaas 17

Operatorer som spleiser tupler Kartesisk produkt: R S Join: R joinbetingelse S Naturlig join: R S INF1300 22.10.2007 Ellen Munthe-Kaas 18

Kartesisk produkt R S er relasjonen som fås fra R og S ved å danne alle mulige sammensetninger av ett tuppel fra R og ett tuppel fra S Vi sier ofte at et tuppel t fra R og et tuppel u fra S blir konkatenert til et tuppel v=t u i R S I resultatskjemaet løses eventuell navnelikhet mellom attributter i R og S ved å kvalifisere navnene med opprinnelsesrelasjonen: R.A, S.B Hvis R og S er samme relasjon, må en av dem først renavnes INF1300 22.10.2007 Ellen Munthe-Kaas 19

Kartesisk produkt Eksempel: Spisested snavn matkategori A kosher A vegetabilsk B uten melk B lactavegetabilsk B glutenfri B kosher C glutenfri C lactavegetabilsk C kosher D vegetabilsk Menykrav navn matkategori Tor lactavegetabilsk Liv kosher Lise kosher Geir glutenfri Spisested x Menykrav snavn Spisested. navn Menykrav. matkategori matkategori A kosher Tor lactavegetablisk A vegetabilsk Tor lactavegetablisk B uten melk Tor lactavegetablisk B lactavegetabilsk Tor lactavegetablisk B glutenfri Tor lactavegetablisk B kosher Tor lactavegetablisk C glutenfri Tor lactavegetablisk C lactavegetabilsk Tor lactavegetablisk C kosher Tor lactavegetablisk D vegetabilsk Tor lactavegetablisk A kosher Liv kosher A vegetabilsk Liv kosher B uten melk Liv kosher B lactavegetabilsk Liv kosher B glutenfri Liv kosher B kosher Liv kosher C glutenfri Liv kosher C lactavegetabilsk Liv kosher C kosher Liv kosher D vegetabilsk Liv kosher A kosher Lise kosher A vegetabilsk Lise kosher B uten melk Lise kosher B lactavegetabilsk Lise kosher B glutenfri Lise kosher B kosher Lise kosher C glutenfri Lise kosher C lactavegetabilsk Lise kosher C kosher Lise kosher D vegetabilsk Lise kosher A kosher Geir glutenfri A vegetabilsk Geir glutenfri B uten melk Geir glutenfri B lactavegetabilsk Geir glutenfri B glutenfri Geir glutenfri B kosher Geir glutenfri C glutenfri Geir glutenfri C lactavegetabilsk Geir glutenfri INF1300 22.10.2007 Ellen Munthe-Kaas C kosher Geir glutenfri 20 D vegetabilsk Geir glutenfri

Join Intuitivt: Skjøte sammen to relasjoner R joinbetingelse S Intuitivt: 1. Beregn R S 2. Velg ut de tuplene som tilfredsstiller joinbetingelsen INF1300 22.10.2007 Ellen Munthe-Kaas 21

Eksempel: Spisested snavn matkategori A kosher A vegetabilsk B uten melk B lactavegetabilsk B glutenfri B kosher C glutenfri C lactavegetabilsk C kosher D vegetabilsk Menykrav navn matkategori Tor lactavegetabilsk Liv kosher Lise kosher Geir glutenfri Join Spisested Menykrav Spisested.matkategori = Menykrav.matkategori snavn Spisested. navn Menykrav. matkategori matkategori B lactavegetabilsk Tor lactavegetablisk C lactavegetabilsk Tor lactavegetablisk A kosher Liv kosher B kosher Liv kosher C kosher Liv kosher A kosher Lise kosher B kosher Lise kosher C kosher Lise kosher B glutenfri Geir glutenfri C glutenfri Geir glutenfri INF1300 22.10.2007 Ellen Munthe-Kaas 22

Naturlig join R S er relasjonen som fås fra R og S ved å danne alle mulige sammensmeltinger av ett tuppel fra R med ett fra S der tuplene skal stemme overens i samtlige attributter med sammenfallende navn Fellesattributtene forekommer bare én gang i de sammensmeltede attributtene Resultatskjemaet har attributtene i R etterfulgt av de attributtene i S som ikke også forekommer i R INF1300 22.10.2007 Ellen Munthe-Kaas 23

Naturlig join Eksempel: Spisested snavn matkategori A kosher A vegetabilsk B uten melk B lactavegetabilsk B glutenfri B kosher C glutenfri C lactavegetabilsk C kosher D vegetabilsk Menykrav navn matkategori Tor lactavegetabilsk Liv kosher Lise kosher Geir glutenfri Spisested Menykrav snavn matkategori navn B lactavegetabilsk Tor C lactavegetabilsk Tor A kosher Liv B kosher Liv C kosher Liv A kosher Lise B kosher Lise C kosher Lise B glutenfri Geir C glutenfri Geir INF1300 22.10.2007 Ellen Munthe-Kaas 24

Hengetupler Et hengetuppel er et tuppel i en av relasjonene som ikke har noe matchende tuppel i den andre relasjonen Hengetupler får ingen representant i resultatrelasjonen etter en join INF1300 22.10.2007 Ellen Munthe-Kaas 25

Hengetupler Eksempel: Spisested snavn matkategori A kosher A vegetabilsk B uten melk B lactavegetabilsk B glutenfri B kosher C glutenfri C lactavegetabilsk C kosher D vegetabilsk Menykrav navn matkategori Tor lactavegetabilsk Liv kosher Lise kosher Geir glutenfri hengetupler Spisested Menykrav snavn matkategori navn B lactavegetabilsk Tor C lactavegetabilsk Tor A kosher Liv B kosher Liv C kosher Liv A kosher Lise B kosher Lise C kosher Lise B glutenfri Geir C glutenfri Geir INF1300 22.10.2007 Ellen Munthe-Kaas 26

Renavning ρ S(A1,A2,...,An) (R) renavner R til en relasjon med navn S og attributter A1,A2,...,An ρ S (R) renavner R til en relasjon med navn S Attributtnavnene fra R beholdes INF1300 22.10.2007 Ellen Munthe-Kaas 27

Renavning Eksempel: Menykrav ρ Menybegrensning(navn, begrensning) (Menykrav) navn matkategori Tor lactavegetabilsk Liv kosher Lise kosher Geir glutenfri har som resultat Menybegrensning navn begrensning Tor lactavegetabilsk Liv kosher Lise kosher Geir glutenfri INF1300 22.10.2007 Ellen Munthe-Kaas 28

Bag Kommersielle DBMSer benytter Bag og ikke Set (mengde) som grunntype for å realisere relasjoner SQL beregner bager (med unntak av noen av operatorene) Set(D): Hvert element i D forekommer maksimalt én gang Rekkefølgen på elementene er likegyldig {a,b,c} = {a,c,b} = {a,a,b,c} = {c,a,b,a} Bag(D): Hvert element i D kan forekomme mer enn en gang Rekkefølgen på elementene er likegyldig {a,b,c} = {a,c,b} {a,a,b,c} = {c,a,b,a} INF1300 22.10.2007 Ellen Munthe-Kaas 29

Hvorfor Bag og ikke Set Bag gir mer effektive beregninger av union og projeksjon enn Set Ved aggregering (foreleses neste uke) trenger vi bagfunksjonalitet Men: Bag er mer plasskrevende enn Set INF1300 22.10.2007 Ellen Munthe-Kaas 30

Relasjonsalgebraens operatorer anvendt på Bag Definisjonene blir litt annerledes Ikke alle algebraiske lover som holder for Set holder for Bag Eks: (R S) \T = (R\T) (S\T) Når vi på de videre foilene skriver bagrelasjon, mener vi et relasjonsskjema + en ekstensjon (instans) hvor ekstensjonen er en bag, og ikke en mengde INF1300 22.10.2007 Ellen Munthe-Kaas 31

Bagunion La R og S være bagrelasjoner Hvis t er et tuppel som forekommer n ganger i R og m ganger i S, så forekommer tn+m ganger i bagrelasjonen R S Eksempel på vanlig bagunion: {a,a,b,c,c} {a,c,c,c,d} = {a,a,a,b,c,c,c,c,c,d} INF1300 22.10.2007 Ellen Munthe-Kaas 32

Bagunion Eksempel på bagunion av relasjoner: Ansatt navn tlf adr Tor 23456789 Lia 3 Lise 37485960 Bakken 1 Geir 25364758 Viken 2 Medlem navn adr tlf Lise Bakken 1 37485960 Liv Lia 3 19203142 Jan Heia 7 26374859 Geir Viken 2 25364758 Ansatt Medlem navn tlf adr Tor 23456789 Lia 3 Lise 37485960 Bakken 1 Geir 25364758 Viken 2 Lise 37485960 Bakken 1 Liv 19203142 Lia3 Jan 26374859 Heia 7 Geir 25364758 Viken 2 INF1300 22.10.2007 Ellen Munthe-Kaas 33

Bagsnitt La R, S være bagrelasjoner Hvis t er et tuppel som forekommer n ganger i R og m ganger i S, så forekommer t min(n,m) ganger i bagrelasjonen R S Eksempel på vanlig bagsnitt: {a,a,b,c,c} {a,c,c,c,d} = {a,c,c} INF1300 22.10.2007 Ellen Munthe-Kaas 34

Bagsnitt Eksempel på bagsnitt mellom relasjoner: Ansatt navn tlf adr Tor 23456789 Lia 3 Lise 37485960 Bakken 1 Lise 37485960 Bakken 1 Geir 25364758 Viken 2 Geir 25364758 Viken 2 Ansatt Medlem navn tlf adr Lise 37485960 Bakken 1 Lise 37485960 Bakken 1 Geir 25364758 Viken 2 Medlem navn adr tlf Lise Bakken 1 37485960 Lise Bakken 1 37485960 Liv Lia 3 19203142 Jan Heia 7 26374859 Geir Viken 2 25364758 INF1300 22.10.2007 Ellen Munthe-Kaas 35

Bagdifferanse La R, S være bagrelasjoner Hvis t er et tuppel som forekommer n ganger i R og m ganger i S, så forekommer t max(0,n-m) ganger i bagrelasjonen R\S Eksempel på vanlig bagdifferanse: {a,a,b,c,c} \ {a,c,c,c,d} = {a,b} INF1300 22.10.2007 Ellen Munthe-Kaas 36

Bagdifferanse Eksempel på bagdifferanse mellom relasjoner: Ansatt navn tlf adr Tor 23456789 Lia 3 Lise 37485960 Bakken 1 Geir 25364758 Viken 2 Geir 25364758 Viken 2 Ansatt \ Medlem navn tlf adr Tor 23456789 Lia 3 Geir 25364758 Viken 2 Medlem navn adr tlf Lise Bakken 1 37485960 Liv Lia 3 19203142 Jan Heia 7 26374859 Geir Viken 2 25364758 INF1300 22.10.2007 Ellen Munthe-Kaas 37

Bagseleksjon Hvis R er en bagrelasjon, er σ C (R) bagrelasjonen som fås fra R ved å anvende C på hvert enkelt tuppel individuelt og velge ut de tuplene i R som tilfredsstiller betingelsen C INF1300 22.10.2007 Ellen Munthe-Kaas 38

Bagprojeksjon Hvis R er en bagrelasjon og L er en (ikketom) liste av attributter, er π L (R) bagrelasjonen som fås fra R ved å velge ut kolonnene til attributtene i L π L (R) har like mange tupler som R INF1300 22.10.2007 Ellen Munthe-Kaas 39

Kartesisk produkt av bager R S er bagrelasjonen som fås fra bagrelasjonene R og S ved å danne alle mulige konkateneringer av ett tuppel fra R og ett tuppel fra S Hvis R har n tupler og S har m tupler, blir det nm tupler i R S INF1300 22.10.2007 Ellen Munthe-Kaas 40

Join på bager Hvis R og S er bagrelasjoner, fremkommer bagrelasjonen R joinbetingelse Sslik: 1.Beregn R S (kartesisk produkt av bager) 2.Velg ut de tuplene som tilfredsstiller betingelsen INF1300 22.10.2007 Ellen Munthe-Kaas 41

Naturlig join på bager Hvis R og S er bagrelasjoner, er R S bagrelasjonen som fås ved å sammensmelte matchende tupler i R og S individuelt INF1300 22.10.2007 Ellen Munthe-Kaas 42

Relasjonsalgebratolkning av select-setningen I 1. Ta det kartesiske produktet av relasjonene i from 2. Selekter ifølge betingelsene i where 3. Projiser ifølge betingelsene i select 4. Fjern flerforekomster hvis select distinct 5. Sorter i henhold til order by INF1300 22.10.2007 Ellen Munthe-Kaas 43

Relasjonsalgebratolkning av select-setningen I eksempel Skjema: Spisested(snavn, matkategori) Menykrav(navn, matkategori) Relasjonsalgebratolkning: τ snavn (δ( π snavn (σ (navn= Tor or navn= Liv ) and (Spisested x Menykrav))) Spisested.matkategori= Menykrav.matkategori Query: select distinct snavn from Spisested, Menykrav where (navn = Tor or navn = Liv ) and Spisested.matkategori = Menykrav.matkategori order by snavn; δ(r) fjerner flerforekomster av tupler fra bagrelasjonen R. τ A1, A2,..., An (R) sorterer tuplene i R etter verdiene i A1, for like verdier i A1 sorteres tuplene etter verdiene i A2, osv. INF1300 22.10.2007 Ellen Munthe-Kaas 44

Relasjonsalgebratolkning av selectsetningen II Hvis vi ser nøyere på vanlige select-setninger, er det ofte to vesensforskjellige typer setningsledd i where-klausulen: Seleksjon av tupler i en relasjon Join av tupler på tvers av relasjoner Selv om den forenklede tolkningen av selectsetningen er riktig matematisk sett, vil databasesystemet velge en tolkning som er mer effektivt beregnbar INF1300 22.10.2007 Ellen Munthe-Kaas 45

Relasjonsalgebratolkning av selectsetningen II (forts.) Derfor vil databasesystemet oversette til et uttrykk som likner det vi får ved å gjøre følgende: 1. Join relasjonene i from i henhold til joinbetingelsene i where 2. Selekter ifølge seleksjonsbetingelsene i where 3. Projiser ifølge betingelsene i select 4. Fjern flerforekomster hvis select distinct 5. Sorter i henhold til order by INF1300 22.10.2007 Ellen Munthe-Kaas 46

Relasjonsalgebratolkning av select-setningen II eksempel Skjema: Spisested(snavn, matkategori) Menykrav(navn, matkategori) Query: select distinct snavn from Spisested, Menykrav where (navn = Tor or navn = Liv ) and Spisested.matkategori = Menykrav.matkategori order by snavn; Relasjonsalgebratolkning: τ snavn (δ( π snavn (σ navn= Tor or navn= Liv (Spisested Menykrav))) Spisested.matkategori= Menykrav.matkategori I dette tilfellet kunne joinbetingelsen alternativt vært oversatt til naturlig join. INF1300 22.10.2007 Ellen Munthe-Kaas 47

Klassisk union, snitt, differanse og kartesisk produkt uttrykt i SQL Algebra R S R S R\S R S SQL select * from R union S; select * from R intersect S; select * from R except S; select * from R cross join S; select * from R, S; Husk krav om unionkompatibilitet for R og S i union, intersect, except! INF1300 22.10.2007 Ellen Munthe-Kaas 48

Bagunion, bagsnitt og bagdifferanse uttrykt i SQL Algebra R S R S R\S SQL select * from R union all S; select * from R intersect all S; select * from R except all S; Husk krav om unionkompatibilitet for R og S i union all, intersect all, except all! INF1300 22.10.2007 Ellen Munthe-Kaas 49

Kostbare operasjoner i SQL distinct: Sortering er generelt kostbart Bør brukes med forsiktighet union, intersect, except: SQL beregner set-variantene av disse (dvs. at flerforekomster fjernes) Vurder å bruke union all, intersect all, except all som er bag-variantene INF1300 22.10.2007 Ellen Munthe-Kaas 50