Relasjonsmodellen, del II

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

Datamodellering og databaser SQL, del 2

SQL, del 1 - select. Hva er SQL?

Datamodellering og databaser SQL, del 2

SQL, del 1 - select. Hva er SQL?

LC238D Datamodellering og databaser SQL, del 1 - SELECT

Datamodellering og databaser SQL, del 2

Løsningsforslag til Obligatorisk oppgave 2

x 1, x 2,..., x n. En lineær funksjon i n variable er en funksjon f(x 1, x 2,..., x n ) = a 1 x 1 + a 2 x a n x n,

SQL 3: Opprette tabeller, datainnsetting og utsnitt

5: Algebra. Oppgaver Innhold Dato

Snarveien til. MySQL og. Dreamweaver CS5. Oppgaver

Løsningsforslag til avsluttende eksamen i HUMIT1750 høsten 2003.

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

DEL 1 Uten hjelpemidler

Eneboerspillet. Håvard Johnsbråten

Effektivitet og fordeling

R1 kapittel 1 Algebra

Faktorisering. 1 Hva er faktorisering? 2 Hvorfor skal vi faktorisere? Per G. Østerlie Senter for IKT i utdanningen 11.

2-komplements representasjon. Binær addisjon. 2-komplements representasjon (forts.) Dagens temaer

Mer øving til kapittel 3

Forkunnskaper i matematikk for fysikkstudenter. Trigonometri. Omregning mellom grader og radianer skjer etter formelen nedenfor:

DEL 1 Uten hjelpemidler

Eksamen høsten 2015 Løsninger

Kapittel 4 Tall og algebra Mer øving

Temahefte nr. 1. Hvordan du regner med hele tall

LØSNINGSFORSLAG(Sensor) I TMA4140 og MA0302

MED SVARFORSLAG UNIVERSITETET I OSLO

1 Tallregning og algebra

Nøtterøy videregående skole

Kapittel 3. Potensregning

S1 kapittel 6 Derivasjon Løsninger til oppgavene i boka

FY2045/TFY4250 Kvantemekanikk I, løsning øving 10 1 LØSNING ØVING 10

Årsprøve trinn Del 2

UNIVERSITETET I OSLO

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

2 Symboler i matematikken

Repetisjon: Normalformer og SQL

Læringsmål og pensum. Forberdring vha preallokering. Oversikt

Brøkregning og likninger med teskje

Oppgave 2 Betydningen til hvert enkelt siffer er bestemt av sifferets plassering eller posisjon. Tallet 4321 betyr

Normalisering. Hva er normalisering?

STATISTIKK, KOMBINATORIKK OG SANNSYNLIGHET

Integrasjon. et supplement til Kalkulus. Harald Hanche-Olsen 14. november 2016

Nytt skoleår, nye bøker, nye muligheter!

1 Algebra. 1 Skriv disse uttrykkene så enkelt som mulig: a) 2(a + 3) (3 + 3a) b) 2(1 a) + a(2 + a) c) 1 + 2(1 3a) + 5a d) 4a 3ab 2(a 5b) + 3(ab 2b)

R1 kapittel 7 Sannsynlighet. Kapitteltest. Oppgave 1. Oppgave 2. Oppgave 3. Del 1 Uten hjelpemidler. Løsninger til oppgavene i boka

Eksempeloppgaver 2014 Løsninger

... JULEPRØVE 9. trinn...

3.7 Pythagoras på mange måter

Databaser: Relasjonsmodellen, del I

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

Numerisk derivasjon og integrasjon utledning av feilestimater

Normalisering. Hva er normalisering?

6 Brøk. Matematisk innhold Brøk i praktiske situasjoner Brøk som del av en mengde. Utstyr Eventuelt ulike konkreter, som brikker og knapper

S1 kapittel 4 Logaritmer Løsninger til oppgavene i boka

DEL 1 Uten hjelpemidler

Matematikk Øvingsoppgaver i numerikk leksjon 8 Numerisk integrasjon

Fasit. Oppgavebok. Kapittel 5. Bokmål

FY2045/TFY4250 Kvantemekanikk I, øving 10 1 ØVING 10

Pensumoversikt - kodegenerering. Maskinen det oversettes til. Kodegenerering del 2: tilleggsnotat, INF5110 v2006

S1 kapittel 8 Eksamenstrening Løsninger til oppgavene i læreboka

Kalkulus 2. Volum av et omdreiningslegeme. Rotasjon rundt x-aksen

... JULEPRØVE

Løsningsforslag til obligatorisk oppgave i ECON 2130

Mer øving til kapittel 2

Eksamen våren 2018 Løsninger

Oppgave 1 Diagrammet nedenfor viser hvordan karakteren var fordelt på en norskprøve.

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

M2, vår 2008 Funksjonslære Integrasjon

Løsninger til oppgaver i boka

Sem 1 ECON 1410 Halvor Teslo

Normalisering. Hva er normalisering?

Microsoft PowerPoint MER ENN KULEPUNKTER

Integralregning. Mål. for opplæringen er at eleven skal kunne

Integrasjon av trigonometriske funksjoner

DEL 1 Uten hjelpemidler

FASIT, tips og kommentarer

1T kapittel 3 Funksjoner Løsninger til oppgavene i læreboka

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

6. Beregning av treghetsmoment.

1T kapittel 1 Algebra Løsninger til oppgavene i læreboka

Integrasjon Skoleprosjekt MAT4010

Hva er tvang og makt? Tvang og makt. Subjektive forhold. Objektive forhold. Omfanget av tvangsbruk. Noen eksempler på inngripende tiltak

Fasit. Grunnbok. Kapittel 4. Bokmål

Kap. 3 Krumningsflatemetoden

R2 kapittel 4 Tredimensjonale vektorer

DELPRØVE 2 (35 poeng)

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

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

Numerisk Integrasjon

gir g 0 (x) = 2x + x 2 (x + 3) x x 2 x 1 (x + 3) 2 x 5 + 2x 4 + 6x 3 + x 2 + x + 3 x 2 (x + 3) 2 g(x; y) h(x) F (x; y) =

Løsningsforslag til eksamensoppgaver i ECON 2200 våren 2015

Kapittel 4.7. Newtons metode. Kapittel 4.8.

Oppgave N2.1. Kontantstrømmer

Transkript:

LC238D http://www.itel.hist.no/fg/_dmd/ Relsjonsmodellen, del II Eksempelse side 2 Relsjonslger side 3 SQL-opertorer side 4 Seleksjon og side 5 Produkt side 6 Forening (join) side 7-10 Settopersjonene side 11-13 Grupperingsopertoren divisjon side 14-15 Hv er en sdtse? side 16 Bsisrefernsen er: E.F. Codd (IBM): A Reltionl Model of Dt for Lrge Shred Dt Bnks Comm. ACM, juni 1970 Se ellers læreok, side 59-76 Else Lervik, septemer 2012 Forelesning 3, uke 36 Eksempelse leverndor lev_nr lev_nvn sttus lev_y 1 Svendsen 20 Lillehmmer 2 Jensen 10 Porsgrunn 3 Bø 30 Porsgrunn 4 Christinsen 20 Lillehmmer 5 Andersen 30 Arendl produkt prod_nr prod_nvn kode vekt prod_y 1 synåler rød 12 Lillehmmer 2 inders grønn 17 Porsgrunn 3 skruer lå 17 Risør 4 skruer rød 14 Lillehmmer 5 knpper lå 12 Porsgrunn 6 spiker rød 19 Lillehmmer levernse lev_nr prod_nr ntll 1 1 300 1 2 200 1 3 400 1 4 200 1 5 100 2 1 300 2 2 400 3 2 200 4 2 200 4 4 300 4 5 400 Sqlsript vedlgt side 2 1

Relsjonslger Et sett med opersjoner som utføres på er Resulttet er lltid en ny, dvs t vi kn kominere og nøste opersjonene etter ønske De egentlige lgeropertorene:,, produkt og forening Settopertorene: union, snitt, differnse Grupperingsopertoren: divisjon Kn uttrykkes slik (en v flere mulige notsjoner) opersjon(r1:s:r.., r2:s:r...,...); r1, r2, osv er er, der den siste er resultten s uttrykker horisontlt utvlg (), mens r uttrykker vertiklt utvlg (, ttriutter), flere prmetere kommer etter hvert Bruker selet-setningen til å utføre opersjonene i et SQL-sert dtsesystem Med unntk v divisjon er lle opersjonene enkle å utføre i SQL. side 3 SQL-opertorer Smmenlikningsopertorer: = > < >= <= <> IN <> etyr ikke lik Aritmetiske opertorer: + - * / / utfører heltllsdivisjon hvis operndene er heltll Smmenstte logiske uttrykk lges vhj AND, OR og NOT. AND hr høyere prioritet enn OR slik det også er i Jv. Prenteser kn rukes til å overstyre prioritetene. Eksempler (kn ruke OR i eksempel 2 og 3): 1. Finn produkter med frgekode rød og som veier mindre enn 15 grm selet * from produkt where kode = 'rød' nd vekt < 15; 2. Finn levernser på enten 100, 200 eller 400 enheter selet * from levernse where ntll in (100, 200, 400); 3. Finn levernser som verken er 100 eller 200 enheter selet * from levernse where ntll not in(100, 200); side 4 2

Seleksjon og Seleksjon, også klt restriksjon, lger en ny ut fr estemte tupler i en eksisterende. egrenser ntll rder eksempel: SELECT(leverndor:(sttus > 20):*, R::); SELECT * FROM leverndor WHERE sttus > 20; En eller reduksjon lger en ny ut fr estemte ttriutter i en eksisterende. egrenser ntll kolonner eksempel: PROJECT(leverndor::lev_nr lev_nvn, R::); SELECT DISTINCT lev_nr, lev_nvn FROM leverndor; opersjon(r1:s:r, r2:s:r,...); side 5 Produkt Det krtesiske produkt eller kryssprodukt lger en ny R med lle mulige smmensettinger v tupler fr to er A og B. ntll tupler i resultten er lik ntll tupler i A multiplisert med ntll tupler i B ntll ttriutter i resultten er lik summen v ntll ttriutter i A og ntll ttriutter i B CROSS(A::, B::, R::); Eksempel: Ønsker å få ut hele levernsetellen med lle opplysninger om leverndørene CROSS(levernse::, leverndor::, R::); SELECT * FROM levernse, leverndor; Sjekk resulttet fr SQL-setningen! opersjon(r1:s:r, r2:s:r,...); x y z p q A B R x y z p q x y z p q x y z p q side 6 3

Indre forening (inner join) opersjon(a:s:r:k, B:s:r:k, R:s:r); Forening (join) lger en ny med smmensettinger v tupler fr to er på et ttriutt, slik t hver smmensetting tilfredsstiller en gitt etingelse. Vnligvis «De to ene» er to forskjellige relsjoener Fellestriuttet er primærnøkkel i den ene en og fremmednøkkel i den ndre. Fellesttriuttet hr smme nvn i de to ene. Men det ehøver ikke være slik. Fellesttriuttet må defineres! Likhetsforening (equijoin) ttriutt de to ttriuttene hr smme verdi Nturlig forening (nturl join) det smme som likhetsforening, men dupliktttriuttene er fjernet Generelt, k er ttriuttet/-ene JOIN(A:s:r:k, B:s:r:k, R:s:r) Eksempel, nturlig forening hele levernsetellen med lle opplysninger om leverndørene: JOIN(leverndor:::lev_nr, levernse:::lev_nr, R::lev_nr lev_nvn sttus lev_y prod_nr ntll) side 7 Eksempelse, lite dt for å illustrere SQL-forening leverndor lev_nr lev_nvn sttus lev_y 1 Svendsen 20 Lillehmmer 2 Jensen 10 Porsgrunn 3 Bø 30 Porsgrunn levernse lev_nr prod_nr ntll 1 1 300 2 1 300 produkt prod_nr prod_nvn kode vekt prod_y 1 synåler rød 12 Lillehmmer 2 inders grønn 17 Porsgrunn side 8 4

Indre forening (inner join), SQL SQL: Prøv: SELECT * FROM leverndor, levernse; Resultt: Krtesisk produkt Hv må gjøres? SELECT * FROM leverndor, levernse WHERE leverndor.lev_nr = levernse.lev_nr; Nturlig forening lir dermed slik: SELECT leverndor.*, prod_nr, ntll FROM leverndor, levernse WHERE leverndor.lev_nr = levernse.lev_nr; eller: SELECT leverndor.*, prod_nr, ntll FROM leverndor JOIN levernse ON (leverndor.lev_nr = levernse.lev_nr); eventuelt (Orle ok, Jv DB ok fr versjon 10.6) SELECT * FROM leverndor NATURAL JOIN levernse; Vær klr over t NATURAL JOIN kun fungerer korrekt dersom nvnene på kolonnene i de to involverte tellene er de smme. Det går ltså ikke nødvendigvis på kopling primær- - fremmednøkkel. Indre forening, dvs der etingelsen lir evluert til snn. side 9 Ytterforening En venstre ytterforening er en likhetsforening, men med det tillegg t lle tupler i venstre skl være med. Der det mngler smmenfllende verdier fr høyre, er ttriuttene fr høyre gitt nullverdier. Vil også h med leverndører som ikke leverer noe opersjon(a:s:r:k, B:s:r:k, R:s:r); LEFT-OUTER-JOIN(leverndor:::lev_nr, levernse:::lev_nr, R::lev_nr lev_nvn sttus lev_y prod_nr ntll) SELECT leverndor.*, prod_nr, ntll FROM leverndor LEFT OUTER JOIN levernse ON (leverndor.lev_nr = levernse.lev_nr); Resulttet som før, men med følgende tilleggsrd: 3, Bø, 30, Porsgrunn, null, null Kn ikke sette opp denne spørringen uten å ruke LEFT JOIN. Høyre ytterforening defineres tilsvrende. Full ytterforening (FULL OUTER JOIN) kominerer venstre og høyre ytterforening (Orle ok, Jv DB ikke ok) ttriutt side 10 5

Å kominere tre er vi koplings (SQL) Prolem: Lg en liste med lle levernsene og nvn og nummer på leverndør og produkt. Løsninger: SELECT lev_nvn, levernse.*, prod_nvn FROM leverndor, levernse, produkt WHERE leverndor.lev_nr = levernse.lev_nr AND levernse.lev_nr = produkt.lev_nr; SELECT lev_nvn, levernse.*, prod_nvn FROM leverndor JOIN (levernse JOIN produkt ON (levernse.prod_nr = produkt.prod_nr)) ON leverndor.lev_nr = levernse.lev_nr; side 11 Eksempelse leverndor lev_nr lev_nvn sttus lev_y 1 Svendsen 20 Lillehmmer 2 Jensen 10 Porsgrunn 3 Bø 30 Porsgrunn 4 Christinsen 20 Lillehmmer 5 Andersen 30 Arendl produkt prod_nr prod_nvn kode vekt prod_y 1 synåler rød 12 Lillehmmer 2 inders grønn 17 Porsgrunn 3 skruer lå 17 Risør 4 skruer rød 14 Lillehmmer 5 knpper lå 12 Porsgrunn 6 spiker rød 19 Lillehmmer levernse lev_nr prod_nr ntll 1 1 300 1 2 200 1 3 400 1 4 200 1 5 100 2 1 300 2 2 400 3 2 200 4 2 200 4 4 300 4 5 400 Sqlsript vedlgt side 12 6

Settopersjonen UNION Union lger en ny med tupler som finnes i den ene eller egge v to er. Relsjonene må være unionkomptile, dvs. t de hr det smme ntllet ttriutter, og t ttriuttene er definert på smme domene (hr smme dttype). UNION(A:s:r:k, B:s:r:k, R:s:r) Alle involverte yer UNION(leverndor:::lev_y, produkt:::prod_y, R::); SELECT lev_y FROM leverndor UNION SELECT prod_y FROM produkt; Resultt: LEV_BY --------------- Arendl Lillehmmer Porsgrunn Risør opersjon(a:s:r:k, B:s:r:k, R:s:r); ttriutt side 13 Settopersjonen SNITT Relsjonsopertoren snitt (interset) lger en ny med tupler som finnes i egge v to er. Relsjonene må være unionkomptile. INTERSECT(A:s:r:k, B:s:r:k, R:s:r) INTERSECT(leverndor:::lev_y, produkt:::prod_y, R::); SQL: SELECT lev_y FROM leverndor INTERSECT SELECT prod_y FROM produkt Resultt: LEV_BY --------------- Lillehmmer Porsgrunn opersjon(a:s:r:k, B:s:r:k, R:s:r); ttriutt side 14 7

Settopersjonen DIFFERANSE Relsjonsopertoren differnse lger en ny med tupler som finnes i den første, men ikke i den ndre v to er. Relsjonene må være unionkomptile. DIFFERENCE(A:s:r:k, B:s:r:k, R:s:r) Byer der det er leverndører, men ikke produkter DIFFERENCE(leverndor:::lev_y, produkt:::prod_y, R::); SELECT lev_y FROM leverndor EXCEPT SELECT prod_y FROM produkt; OBS! Orle krever t vi ruker MINUS istf. EXCEPT Omvendt: DIFFERENCE(produkt:::prod_y, leverndor:::lev_y, R::); SELECT prod_y FROM produkt EXCEPT SELECT lev_y FROM leverndor; PROD_BY --------------- Risør opersjon(a:s:r:k, B:s:r:k, R:s:r); LEV_BY --------------- Arendl ttriutt side 15 Grupperingsopertoren DIVISJON Opertoren krever t vi hr to er. Den første må h flere eller like mnge tupler som nummer to. Den første en, A, hr to ttriutter eller ttriuttgrupper, g og. Tuplene i A grupperers på g. Tuplene i B hr ttriutter som er smmenliknre med. Tuplenes -del i hver gruppe testes så mot lle tuplene i B. Hvis lle Bs tupler finnes for smme gruppe, vil gruppenes smlingsttriutt(er) g, inkluderes i resultten. DIVIDE(A:s:r:g:, B:s:r:, R:s:r); Hvem hr levernser på lle produktene? DIVIDE(levernse::lev_nr prod_nr:lev_nr:prod_nr, produkt::prod_nr:prod_nr, R::lev_nr) Denne opersjonen finnes ikke i SQL, men kn løses f.eks. ved å ruke EXISTS, se egne SQL-forelesninger senere i kurset. side 16 8

Divisjon, eksempel g r levernse:: lev_nr prod_nr:lev_nr:prod_nr lev_nr 1 1 prod_nr produkt::prod_nr:prod_nr prod _nr 1 Hvem hr levernser på lle produktene? DIVIDE(levernse::lev_nr prod_nr:lev_nr:prod_nr, produkt::prod_nr:prod_nr, R::lev_nr) 1 2 1 3 1 4 1 5 2 1 2 2 3 2 2 3 4 5 6 R::lev_nr 4 2 4 4 4 5 side 17 Hv er en sdtse? Relsjonsmodellen er et teoretisk fundment for dtser. En dtse må tilfredsstille krvene i modellen for å kunne klles en sdtse. Codd sier t et dtsesystem er elt hvis det tilfredsstiller følgende: Brukeren v systemet skl oppftte dtene som en smling med er (teller som tilfredsstiller visse krv), og intet nnet. Systemet må minst tily følgende opersjoner: Seleksjon,, forening (join) uten på forhånd å måtte definere fysiske ksessveier for å kunne ruke disse opersjonene. Detljert i tolv regler ng dtrepresentsjon, ksessveier, dtktloger, dtsespråk, virtuelle er (views), fysisk og logisk dtuvhengighet og integritet. I hht denne definisjonen finnes det ikke elle systemer på mrkedet i dg. Kontroversielt. Kun en kdemisk øvelse? Unsett en solid teoretisk sis og et mål å strekke seg etter. side 18 9