Relasjonsalgebra. Hva?



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

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

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

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

INF1300 Introduksjon til databaser

Spørsmålskompilering del 1

Spørsmålskompilering del 1

1. SQL spørringer mot flere tabeller

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

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

Repetisjon: Normalformer og SQL

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Spørringer mot flere tabeller

DBS18 - Strategier for Query-prosessering

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

UNIVERSITETET I OSLO

1. SQL datadefinisjon og manipulering

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

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

1. Relasjonsmodellen Kommentarer til læreboka

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

Relasjonsalgebraen. Algebra

Metaspråket for å beskrive grammatikk

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

Andre sett obligatoriske oppgaver i INF3100 V2013

Datamodellering: ER-modeller ER = Enitity-Relationship del 1: Notasjon og oversetting av ulike ER-modeller til tilsvarende relasjonsmodeller

Databaser. Relasjonsmodellen 1 Læreboka: Kap. 2 Relasjonsmodellen Faglærere: Tore Mallaug, Kjell Toft Hansen

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

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

Databaser: Relasjonsmodellen, del I

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

SELECT DISTINCT Fornavn, Etternavn, Programtittel FROM Program P, Medvirkende M, Deltagelse D. SELECT Tilgjengelighet FROM Program

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

Spørsmålskompilering del 2

Databaser noen temaer.

Andre sett obligatoriske oppgaver i INF3100 V2012

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

D: Ingen trykte eller håndskrevne hjelpemiddel tillatt. Bestemt, enkel kalkulator tillatt.

Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

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

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

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

1. Innføring i bruk av MySQL Query Browser

Et utsagn (eng: proposition) er en erklærende setning som enten er sann eller usann. Vi kaller det gjerne en påstand.

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

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

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

SQL, del 1 - select. Hva er SQL?

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

OM DATABASER DATABASESYSTEMER

Mer om mengder: Tillegg til Kapittel 1. 1 Regneregler for Booleske operasjoner

EKSAMEN DATABASER

Sensorveiledning for IN2090 og INF desember :30 18:30 (4 timer)

Løsningsforslag til eksamen i IN2090 Databaser og datamodellering og INF1300 Introduksjon til databaser 6. desember :30 18:30 (4 timer)

Løsningsforslag. Oppgavesettet består av 9 oppgaver med i alt 20 deloppgaver. Ved sensur vil alle deloppgaver telle omtrent like mye.

Effektiv eksekvering av spørsmål

TMA 4140 Diskret Matematikk, 3. forelesning

Introduksjon til fagfeltet

MAT1030 Diskret matematikk

Innledning. MAT1030 Diskret matematikk. Kapittel 11. Kapittel 11. Forelesning 33: Repetisjon

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

SQL, del 1 - select. Hva er SQL?

Romlig datamanipulering

Tabeller og enkle spørringer

LC238D Datamodellering og databaser SQL, del 1 - SELECT

Diskret matematikk tirsdag 15. september 2015

Datamodellering og databaser SQL, del 2

Ekvivalente utsagn. Eksempler: Tautologi : p V p Selvmotsigelse: p Λ p

IN3020 V2019 Obligatorisk oppgave nr. 1

Oppgave 1 Datamodellering 22 %

Innhold Forord Innledning Kapittel 1 Introduksjon til databaser og databasesystem

Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

Forelesning 33. Repetisjon. Dag Normann mai Innledning. Kapittel 11

EKSAMEN 6102 / 6102N DATABASER

IN2090 Databaser og datamodellering. 06 Enkele joins og nestede SELECT

Høgskolen i Telemark EKSAMEN 6102 DATABASER Tid: Hjelpemidler: Vedlegg: Eksempeldata til oppgave 1

Python: Valg og betingelser. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Datamodellering og databaser SQL, del 2

Oppgave 1 Datamodellering 25 %

Datamodellering og databaser SQL, del 2

SQL SELECT-FROM-WHERE. Skjemadefinisjon og datainnsetting i SQL. Semantikk bak ein-relasjons-spørring

Aksiom 3.1 (Likhet av mengder). La A og B være mengder. Da er A og B like hvis og bare hvis de har akkurat de samme elementene.

Et utsagn (eng: proposition) er en erklærende setning som enten er sann eller usann. Vi kaller det gjerne en påstand.

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

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

Transkript:

Relasjonsalgebra. Hva? Relasjonsalgebra består av et sett med høynivås operatorer som kan brukes til å manipulere med relasjoner (slå sammen to tabeller, selektere data etc.). Tankegangen er viktig å kjenne godt til dersom man skal arbeide seriøst med relasjonsdatabaser. Brukes til bl.a. å forstå grunnlaget for relasjonsdatabaser og -spørrespråk å forstå hvorledes SQL-setninger kan utføres (og effektiviseres/optimaliseres) forstå og arbeide med datavarehus forstå og arbeide med distribuerte databaser Operatorer: attributtliste (Rel) betingelse (Rel) R S, alle mot alle R S R S R \ S R <bet.> S R S (fra Date: Introduction to Database Systems, utgave 6) Relasjonsalgebra. Optimalisering. Litt relasjonskalkyle. 12.10.10 1

Relasjonsalgebra - vanlige operasjoner. Mengdeoperasjoner: Notasjon, Notasjon, variant -2 variant 1 Union R S R union S Snitt R S R intersect S Mengdedifferanse R - S R \ S R difference S R minus S Mengdeprodukt, kartesisk produkt ("alle mot alle") R S R product S R times S Spesielt for relasjoner: Horisontalt utvalg <beting.> (R) R where <bet.> R where <bet.> Vertikalt utvalg π <feltliste> (R) R[<feltliste>] Mengdedivisjon. (Gitt R[c,d] og S[d]. c er med i mengden R dividert med S hvis c i R forekommer sammen med alle d-er som finnes i S. ) R S R S R divideby S Spesialiteter av produkt: -join (produkt med en eller annen betingelse på kompatible attributter, f.eks. >, <, og komb.) R <bet.> S R join <betingelse> S (R join S) where <bet.> Equi-join ( -opersjonen er = ) " " " " Natural join (Equi-join hvor felles " " " " attributt kommer bare en gang) ** den mest vanlige jointypen ** Varianter for produkt: Outer join, normalt venstre.. R S R left join <bet.> S (alle i R, samt alle fra S som oppfyller koblingsbetingelsen) Full join (alle i R, alle i S, samt R S R full join <bet.> S alle som oppfyller koblingsbet.) Semijoin (de i R som tilfredsstiller R <bet.> S R semijoin <bet.> S R join <betingelse> S) Legg merke til at operasjonene her er på mengder, slik at evt. dublikater tas bort tilsvarende select distinct i SQL. Dersom betingelsen er på primær/fremmednøkkelkomb., droppes ofte <bet>. Relasjonsalgebra. Optimalisering. Litt relasjonskalkyle. 12.10.10 2

Eksempler: - med bruk av Gitt tabellene: Avdeling (Avdnr, Avdnavn, Etasjenr) Ansatt (Ansnr, Etternavn, Fornavn, Avdnr, Postnr) Post (Postnr, Poststed) Skriv ut alt om ansatte med ansattnr > 100 ansnr > 100 (Ansatt) Skriv ut ansattnr, etternavn og fornavn: Ansnr,Etternavn, Fornavn (Ansatt) Skriv ut ansattnr og etternavn og fornavn for ansnr > 100: Ansnr,Etternavn, Fornavn ( ansnr > 100 (Ansatt)) evt. delt opp: R1 := ansnr > 100 (Ansatt) R2 := Ansnr,Etternavn, Fornavn (R1) Skriv ut avdnr, avdnavn og ansnr for alle med postnr < 2000: f.eks.: avdnr, avdnavn, ansnr ( postnr < 2000 (Ansatt NB! Kan gjøres på flere andre måter. Avdeling)) Skriv ut avdnr, avdnavn for avdelinger som holder til i 3. etasje og har minst en ansatt som bor i 'Bø'. f.eks.: R1 := poststed= Bø (Post) R2 := (R1 Ansatt ) R3 := avdnr (R2) R4 := R3 Avdeling R5 := etasjenr = 3(R4) R6 := avdnr, avdnavn (R5) - Kunne vært samlet i en. Prøv! - Kunne vært gjort på mange måter Finn avdelingsnr for avdelinger uten ansatte Avdnr (Avdeling) \ Avdnr (Ansatt) Finn avdelinger uten ansatte ta med både avdelingsnr, -navn og etasje ( Avdnr (Avdeling) \ Avdnr (Ansatt)) Avdeling NB! Siden det er mengdeoperasjoner, tas dublikater automatisk bort Relasjonsalgebra. Optimalisering. Litt relasjonskalkyle. 12.10.10 3

Eksempler, forts: Gitt tabellene: Avdeling (Avdnr, Avdnavn, Etasjenr) Ansatt (Ansnr, Etternavn, Fornavn, Avdnr, Postnr) - fast ansatte Post (Postnr, Poststed) MAnsatt (Ansnr, Etternavn, Fornavn, Avdnr, Postnr) - midlertidige. Lag en liste over evt. som både er midlertidige og faste ansatte Mansatt Ansatt Lag en liste over både midlertidige og faste ansatte Mansatt Ansatt - NB! Forutsetter at like Ansnr == > likt på de andre - NB! Forutsetter at like Ansnr == > likt på de andre. Evt. dublikater forsvinner. Hvis noen er både midlertidige og faste, skal de slettes fra midlertidige Mansatt := Mansatt \ Ansatt Mansatt - NB! Forutsetter som over. Finn alle postnr, og liste over de som har dette postnr Postnr (Post) Postnr, Ansnr, ansnavn (Ansatt) Skriv ut alle ansatte i avdelingen for Gressklippere enklest: Ansatt avdnavn = Gressklippere (Avdeling) Kombiner alle etternavn med alle fornavn forrnavn (Ansatt) etterrnavn (Ansatt) Finn postnr som er slik at minst en fra hver avdeling har dette postnr avdnr, postnr (Ansatt) / avdnr (Avdeling) Finn avdelingsnr som er slik at de har ansatte fra alle aktuelle postnr avdnr, postnr (Ansatt) / postnr (Post) Relasjonsalgebra. Optimalisering. Litt relasjonskalkyle. 12.10.10 4

Relasjonsalgebra vs. SQL Det kan vises at alle utsagn som skrives i SQL kan skrives i relasjonsalgebra og motsatt dvs. språkene er like kraftfulle. Vi finner igjen relasjonsoperatorene i vanlige SQL-setninger: Eks. 1: SELECT avdnr, avdnavn, ansnr, ansnavn FROM avd, ans WHERE avd.avdnr = ans.avdnr AND etasjenr = 3; hvilken relasjonsoperator i utgangspunktet? hvilken relasjonsoperator? hvilken relasjonsoperator? hvilken relasjonsoperator? Eks. 2: SELECT avdnr FROM ans WHERE NOT EXISTS (SELECT postnr FROM post WHERE NOT EXISTS (SELECT postnr FROM ans ans2 WHERE ans2.ansnr = ans.ansnr and ans.postnr = post.postnr) dvs. Selekter ut avdnr som er slik at det ikke eksisterer postnr som er slik at det ikke finnes korresponderende avdnr/postnr skriv en setning i relasjonsalgebra som gir samme resultat: Relasjonsalgebra. Optimalisering. Litt relasjonskalkyle. 12.10.10 5

Noen regler/egenskaper i rel. algebra. (temmelig teoretisk..) Lukkethet: Relasjonsalgebra er lukket under relasjonsoperatorene. Assoiativitet: Union og snitt er assosiative: (R S) T R (S T) og (R S) T R (S T). Med vår def. av produkt er også denne assosiativ. Kommutativitet: Union og snitt er kommutative: R S S R og R S S R Det samme gjelder produkt og inner join. Derimot er ikke f.eks. mengdedifferanse og outer join. Distributivitet: I matematikk f.eks. a (b+c) = a b+a c, x y = x y er distributiv når operatoren er eller /, men ikke dersom den er + eller -. Restrict er distributiv mht. join i enkle operasjoner, f.eks. <R_betingelse> and <S_betingelse> (R S) <R_betingelse> (R) <S_betingelse> (S) Projeksjon er distributiv mht. join (bortsett fra attributter som deltar i koblingen), <R_attrliste> <S_attrliste> (R S) <R_attrliste> (R) <S_attrliste> (S) disse brukes bl.a. i forbindelse med optimaliseringsstrategier Relasjonsalgebra. Optimalisering. Litt relasjonskalkyle. 12.10.10 6

Utvidelser av relasjonsalgebra. Alias, etc. (.. renames ) Beregede attributter (EXTEND) Summering / gruppering Bruksområder for relasjonsalgebra allmenn begrepsdannelse forståelse av hva som foregår "bak kulissene" mulighet for å sjekke kompletthet av et språk forståelse av optimaliseringsprosesser forståelse av distribuerte databaser (bl.a. hvordan distribuere data i et nettverk) kunne vært brukt som spørrespråk, inkl. endring av databasen, men neppe særlig praktisk. m.m. Relasjonsalgebra. Optimalisering. Litt relasjonskalkyle. 12.10.10 7

Optimalisering Hvorledes gjennomføres en spørring? SQL-spørring Lag aksessplan / kompilér Gjennomføring av aksessplanen Optimalisering: Hvordan finne en smart aksessplan? total tid tid til optimalisering tid til optimalisering tid til gjennomføring ===> Kan ikke analysere alt for mye for å finne den optimale aksessplanen!! Spørringer kan være adhoc, en kompilering + direkte gjennomføring lagrede, en kompilering + 0 m {gjennomføring} Tidkrevende / "tunge" operasjoner: sortering gruppering oftest lønnsomt å sortere først kobling (join) "rå kraft" (alle mot alle, O(n 2 ) ) sorter + sammenlign (evt. via fletting) sammenlign via indekser (full søk på en relasjon, via indeks på den andre) hash-metodikk Relasjonsalgebra. Optimalisering. Litt relasjonskalkyle. 12.10.10 8

Optimalisering - hvorledes? Skritt i optimaliseringsprosessen: nedbrytning til en enkeltoperasjoner og kanonisk form. analyse med omformulering i hht. lovlige regler, bl.a. ut fra betingelser i where-setningen (= vs. > etc.) hvilke attributter som skal med i resultatet krav til sortering og gruppering antall poster pr. relasjon antall bytes i attributter som skal kobles indekser som finnes (og om clustede, unike, ikke-unike) ideelt sett hvor dataene finnes (lokalt, på nettet etc.) ideelt sett også variasjonsbredden i dataene. sammenstilling til en samlet aksessplan Enkle optimaliseringskriterier: Overordnet: begrens data mest mulig før tunge operasjoner utføres. Projeksjoner gjøres først, men reelt bare hvis relasjoner trengs til mellomregninger, ellers bare ved å vite hvilke attributter som skal med Restrict / select-setninger med = verdi/verdisett gjøres først, og de som begrenser mest gjøres først. Eks: R.a = <v> (R S) ==> R.a = <v> (R) S Operasjoner som bør benytte seg av indekser gjøres først Operasjoner som gjelder primærnøkkelen gjøres først Sjekk om data i en subselect er stabile eller om de må beregnes for hver gang utenforliggende løkke beregnes. Boolske shortcut og forenklinger, f.eks.: P and P P; P and false false; P or false P; P and not P false; P and (P or Q) P NB! Antall kombinasjoner øker svært fort, så effektive avskjæringsmekanismer er nødvendig. Relasjonsalgebra. Optimalisering. Litt relasjonskalkyle. 12.10.10 9

Optimalisering - eksempel: Gitt en Avdelings- og ansattabell. Avdeling (avdnr, avdnavn, ) Ansatt (ansnr, ansnavn, avdnr, adresse,..) 5 attributter, 100 tupler 15 attributter, 5000 tupler Finn ansnr & -navn for de(n) i Oste-avd. som har Dal som etternavn. SELECT ansnr, ansnavn FROM Avdeling, Ansatt WHERE Avdeling.avdnr = Ansatt.avdnr AND ansnavn like 'Dal %' AND avdnavn = 'Ost' Alternativ 1: S1 := Avdeling.Avdnr = Ansatt.Avdnr (Avdeling Ansatt) where -- 19 attributter, 500.000 poster kobles, resultat 5000 poster S2 := Ansnavn = Dal ( S1) S3 := Avdnavn = Ost ( S2) S4 := ansnr, ansnavn(s3) -- fra 19 til 2 attributter Alternativ 2: Skritt 1: a) Sett betingelser som gjelder bare en tabell sammen med denne tabellen (kalles detachment = frakobling) b) Fjern overfødige attributter Skritt 2: Gjør nødvendige koblinger Skritt 3: Fjern evt. overflødige attributter S1 := Avdnavn = Ost (Avdeling) S2 := avdnr(s1) S3 := Ansattnavn like Dal% (Ansatt) S4 := avdnr, ansnr, ansnavn (S3) S5 := S2 S4 S6 := ansnr, ansnavn (S5) -- antagelig bare 1 post -- og en kolonne -- en/noen få poster -- og 3 kolonner -- 1 x 1 / svært få å koble -- kobl.feltet skal ikke med i resultatet Project Join Project Project I en jafs: ansnr,ansnavn ( avdnr ( Avdnavn = Ost (Avdeling)) avdnr,ansnr,ansnavn ( Ansnavn = Dal (Ansatt))) Restrict Restrict Relasjonsalgebra. Optimalisering. Litt relasjonskalkyle. 12.10.10 10

Optimalisering i databasesystemer: I teorien: Alle spørringer som er ekvivalente burde gi opphav til samme aksessplan. I praksis: Stor forskjell på databasesystemer m.h.t. optimalisering. I mange systemer kan man titte på, evt. også endre aksessplanen. Med mangeprosessormaskiner eller maskiner koblet i klynge blir parallelliserbarhet et viktig kriterium for hele aksessplanen enkeltalgoritmer f.eks. for sortering og kobling Relasjonsalgebra. Optimalisering. Litt relasjonskalkyle. 12.10.10 11

Relasjonskalkyle I. (ikke pensum høst 2010) I stedet for å basere et språk på mengder, kan det baseres på vanlig predikatlogikk. For én variabel: x P(x), P er et utsagn som er sant eller usant avhengig av x. Mer kompliserte uttrykk kan settes sammen av: symbol alternativt symbol og AND eller OR negasjon / ikke eller NOT for alle FORALL det eksisterer minst en EXISTS Eksempler: Gitt: Range of x_ans is Ansatt; Range of x_avd is Avdeling; 1. Finn ansattnr med postnr = 1500 og avdnr = 17: x_ans.ansattnr x_ans.postnr = 1500 x_ans.avdnr = 17 2. Finn alle avdelinger som har minst en ansatt: x_avd (x_ans x_avd.avdnr = x_ans.avdnr) 3. Finn alle avdelinger uten ansette x_avd (x_ans x_avd.avdnr = x_ans.avdnr) 4. Finn om det er én avdeling som har alle ansatte: x_avd (x_ans x_avd.avdnr = x_ans.avdnr) 5. Skriv ut avdelinger som har samme navn. Vi trenger to avdelingsvariable, slik at vi kan sammenligne alle mot alle. Range of y_avd is avdeling; x_avd (y_avd (x_avd.avdnavn = y_avd.avdnavn) (x_avd.avdnr <> y_avd.avdnr) )) Relasjonsalgebra. Optimalisering. Litt relasjonskalkyle. 12.10.10 12

Relasjonskalkyle II. (ikke pensum høst 2010) WFF, frie og bundne variable. Et syntaktisk og semantisk korrekt utsagn kalles en wff, wellformed formula. Dersom F er en WFF, så gjelder x : F(x) x F(x) - dvs.: er egentlig ikke nødvendig. SQL har ikke noen FORALL, derfor må denne omformuleringen brukes. Tilsvarende : x F(x) ( x : F(x)) x : F(x) G(x) x ( F(x) G(x)) og Variablene er av to typer: Frie variable "løper over alle verdier" Bundne variable frie variable som knytter seg til formler som har eller NB! Sammenlign med frie og bundne kontroller i 4.gen.syst. Relasjonskalkyle - konkluderende punkter: like kraftfullt som relasjonsalgebra men helt non-prosydurelt SQL bygger mye på tenkningen i relasjonskalkyle. Relasjonsalgebra. Optimalisering. Litt relasjonskalkyle. 12.10.10 13

Oppgavesett relasjonsalgebra Formål: Trening i relasjonsalgebra og optimaliseringsforståelse. Oppgave 1 a j er viktigst,.. de andre er morsomst.. Oppgave 1. Gitt relasjonene: STUDENT (studnr, studnavn, adresse,..,postnr ) KURS (kursnr, kursnavn,, nivå) EKSAMEN (studnr, kursnr,gangnr, dato) a) Finn studentnr og -navn med postnr = 9000 b) * Finn studentnr og-navn som har tatt kurs nr. 345 c) Finn alle studenter (studnr, studnavn) og de kurs (kursnr) som de (evt.) har tatt d) Som over, men kursnavnet skal også være med. e) * Som over, men bare personer med postnr = 9000 og kurs på nivå 3. f) Finn alle studenter (alt om studenten) som ikke har tatt kurs nr. 100 g) Finn de studenter som har tatt samme eksamen mer enn en gang h) Systemet gjelder en høyskole som slås sammen med 3 andre høyskoler som har samme relasjonsoppbygging. Foreslå endringer i datastrukturen og vis hvorledes du skal slå sammen relasjonene for de de ulike skolene slik at det danner et felles system. i) Finn de studenter (hvis noen) som har tatt alle kursene som finnes. j) Finn de kursene som alle studenter har tatt, hvis noen. k) Formuler denne spørringen, gjerne også andre spørringer i SQL. Hva er lettest for de forskjellige spørringene? Oppgave 2. Gitt en relasjon R. a) Hvorledes kan du bruke relasjonsalgebra til å sette inn tuppelet (a1,a2,.)? b) til å slette et gitt tuppel? Oppgave 3. Gitt en skog. Finn alle røtter og blader. Relasjonsalgebra. Optimalisering. Litt relasjonskalkyle. 12.10.10 14

Oppgave 4. Vanlige SQL-setninger med koblinger mellom f.eks. to tabeller formuleres vanligvis enten som en kobling i where-setningen eller som en delspørring, f.eks. enten: select. from student, eksamen where student. studnr = eksamen.studnr eller: select.. from student where studnr in (select from eksamen ) Hvilke(n) join-operator(er) egner seg for å bruke delspørring? Forklar! Oppgave 5 - optimalisering. Ta for deg de *-merkede deloppgavene i oppgave 1. Ut fra et optimaliseringshensyn, formuler en "verst mulig" og en "god" gjennomføringsmåte for disse. Oppgave 6. a) Av operatorene UNION, DIFFERENCE, PRODUCT, RESTRICT, PROJECT og JOIN, INTERSECT, DIVIDEBY er de 5 første "basale", mens de 3 siste kan avledes av de første. Vis dette. NB! Divideby er langt fra lett! b) Vis at hvis card(r) > 1 og card(s) > 1så er R[pk_for_r, pk_for_s] : S[pk_for_s] =. betegner her den tomme relasjonen. c) Divisjonsoperatoren er ikke lukket under reelle tall (fordi x/0 ikke er definert). Hva med divisjonsoperatoren i relasjonsalgebra? Relasjonsalgebra. Optimalisering. Litt relasjonskalkyle. 12.10.10 15