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



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

1. SQL spørringer mot flere tabeller

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

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

Relasjonsalgebra. Hva?

INF1300 Introduksjon til databaser

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

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

SQL 3: Opprette tabeller, datainnsetting og utsnitt

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

Innhold Forord Innledning Kapittel 1 Introduksjon til databaser og databasesystem

1. SQL datadefinisjon og manipulering

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

Spørsmålskompilering del 1

Spørsmålskompilering del 1

Relasjonsalgebraen. Algebra

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

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

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

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

SQL, del 1 - select. Hva er SQL?

Repetisjon: Normalformer og SQL

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

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

Databaser: Relasjonsmodellen, del I

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

Datamodellering og databaser SQL, del 2

SQL, del 1 - select. Hva er SQL?

LC238D Datamodellering og databaser SQL, del 1 - SELECT

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

Datamodellering og databaser SQL, del 2

Datamodellering og databaser SQL, del 2

Metaspråket for å beskrive grammatikk

Oppgave 1 1. Spørring: Resultattabell: 2. Spørring: Resultattabell: 3. Spørring:

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

Tabeller og enkle spørringer

Andre sett obligatoriske oppgaver i INF3100 V2013

UNIVERSITETET I OSLO

Spørringer mot flere tabeller

Objektorientering i ER-modeller EER-modeller Enhanced Entity Relationship Models

1. Innføring i bruk av MySQL Query Browser

INFO122 Innføring i databaser. Oblig 2. av Frode H. Pedersen, Kjartan B. Michalsen og Kristin Breivik

UNIVERSITETET I OSLO

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

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

Oppgaver Oppgave a: Sett opp mulige relasjoner

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

Løsningsskisse til Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

Dagens program. Kunnskapsorganisasjon og gjenfinning 1. Spørring mot databaser: SQL 2 - Spørring mot flere tabeller

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

SQL Structured Query Language

INF1300 Introduksjon til databaser

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

OM DATABASER DATABASESYSTEMER

Oppgave 1 Datamodellering 22 %

1. Relasjonsmodellen Kommentarer til læreboka

Eksamen i IBE Databaser H 2008

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

Utvikling fra kjernen og ut

DBS18 - Strategier for Query-prosessering

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

Normalisering. Hva er normalisering?

Oppgave 1 Datamodellering 25 %

1. Designe ER-modeller med MS Visio

LO118D Forelesning 3 (DM)

Romlig datamanipulering

SQL Structured Query Language

SQL Introduksjonskurs. Oversikt

Relasjoner terminologi

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

Introduksjon til fagfeltet

Avansert bruk av SQL. Avanserte spørringer Valguttrykk Spørring på spørring Unionspørringer Delspørringer, vekselvirkende delspørringer Kvantorer

Institutt for datateknikk. Fag TDT4145 Datamodellering og databasesystemer Løsningsforslag til øving 3: Algebra og SQL

Obligatorisk oppgave 2 i Databaseadministrasjon.

SQL: SELECT-spørringer

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

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

ITGK - H2010, Matlab. Dagens tema : Teori - Databaser

UNIVERSITETET I OSLO

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

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

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

Normalisering. Hva er normalisering?

Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

Andre sett obligatoriske oppgaver i INF3100 V2012

Transkript:

Databaser Relasjonsmodellen 2 Læreboka: Kap. 2 Relasjonsmodellen

Tema for dagen Hva er relasjonsalgebra? Seleksjon Projeksjon Produkt Indre forening Ytterforening Settoperasjoner: union, snitt, differanse Grupperingsoperatoren divisjon Hva er en relasjonsdatabase? 10.10.2008 Kjell Toft Hansen 2

Hva er relasjonsalgebra? Relasjonsalgebra er et matematisk system bestående av: Atomiske operander: relasjoner eller variabler som representerer relasjoner Operatorer: designet for å gjøre de mest vanlige operasjonene vi har behov for å gjøre med relasjoner i en database Et sett med operasjoner som utføres på relasjoner Resultatet er alltid en ny relasjon 10.10.2008 Kjell Toft Hansen 3

Hva er relasjonsalgebra? De egentlige algebraoperatorene: seleksjon, projeksjon, produkt og forening Settoperatorene: union, snitt, differanse Grupperingsoperatoren: divisjon 10.10.2008 Kjell Toft Hansen 4

Hva er relasjonsalgebra? Et algebraisk uttrykk kan skrives slik: OPERASJON(R1:s:r:, R2:s:r:, RES::); R1 og R2 er relasjoner, RES er resultatrelasjonen s (selektor)uttrykker horisontalt utvalg (seleksjon) og r (reduktor)uttrykker vertikalt utvalg (projeksjon) 10.10.2008 Kjell Toft Hansen 5

Hva er relasjonsalgebra? Seleksjon, projeksjon, produkt, union og differanse er primitive fordi de øvrige kan uttrykkes ved hjelp av disse Bruker SELECT setningen til å utføre operasjonene i et SQL (Structered Query Language) basert databasesystem Med unntak av divisjon, er alle operatorene enkle å utføre i SQL 10.10.2008 Kjell Toft Hansen 6

Seleksjon Seleksjon (restriksjon): vi lager en ny relasjon ut fra bestemte tupler i en eksisterende relasjon Vi begrenser antall tupler SELECT(R1:s:r:, RES::); 10.10.2008 Kjell Toft Hansen 7

Seleksjon Tabell: Ansatt Skriv ut alle ansatte som har etternavnet Olsen og jobber i avdeling 1: SELECT(ANSATT:(etternavn= Olsen) AND (avd_nr = 1):r:, RES::); SQL: SELECT * FROM ansatt WHERE etternavn = 'Olsen' AND avd_nr = 1; RES 10.10.2008 Kjell Toft Hansen 8

Projeksjon Projeksjon (reduksjon): vi lager en ny relasjon ut fra bestemte attributter i en eksisterende relasjon Vi begrenser antall kolonner PROJECT(R1:s:r:, RES::); 10.10.2008 Kjell Toft Hansen 9

Projeksjon Tabell: Ansatt Skriv ut alle ansatte med ansatt_nr, etternavn og fornavn: PROJECT(ANSATT:s:ansatt_nr etternavn fornavn:, RES::); SQL: SELECT ansatt_nr, etternavn, fornavn FROM ansatt; RES 10.10.2008 Kjell Toft Hansen 10

Produkt (Kartesisk) produkt (kryssprodukt): lager en ny relasjon ved å sette sammen hver tuppel i R1 med hvert tuppel i R2 slik at R1 x R2 = RES Antallet attributter i resultatrelasjonen er lik summen av antall attributter i R1 og antall attributter i R2 og i rekkefølge Unntaket er attributter med samme navn som blir R1.a og R2.a CROSS(R1:s:r:, R2:s:r:, RES::) 10.10.2008 Kjell Toft Hansen 11

Produkt Tabell: Ansatt Tabell: Avdeling CROSS(ANSATT:s:r:, AVDELING:s:r:, RES::); Antall tuppler: 3 x 3 = 9 Antall attributter: 7 + 2 = 9 SQL: SELECT * FROM ansatt, avdeling; Tabell: RES 10.10.2008 Kjell Toft Hansen 12

Indre forening (eng. inner join) Forening (eng. join): vi lager en ny relasjon med sammensettinger av tupler fra to relasjoner på et felles attributt, slik at hver sammensetting tilfredsstiller en gitt betingelse Ofte (ikke alltid) vil det felles attributtet være primærnøkkel i den ene relasjonen og fremmednøkkel i den andre Likhetsforening (eng. equijon): de to felles attributtene har samme verdi Naturlig forening (eng. natural join): det samme som likhetsforening, men duplikatattributtene er fjernet 10.10.2008 Kjell Toft Hansen 13

Indre forening (eng. inner join) JOIN(R1:s:r:k, R2:s:r:k, RES::); En resultattabell RES dannes når gitte attributter, spesifisert ved attributtlisten k, i R1 og R2, har samme verdi: R1.k = R2.k. En av de viktigste og nyttigste av relasjonsoperatorene Den mest brukte måte for å kombinere informasjon fra to eller flere tabeller 10.10.2008 Kjell Toft Hansen 14

Indre forening (eng. inner join) Tabell: Ansatt Tabell: Avdeling Skriv ut hvilke ansatte som jobber i hvilke avdelinger Naturlig forening: JOIN(ANSATT:s:r:avd_nr, AVDELING:s:avd_navn:avd_nr, R::); SQL: SELECT a.*, avd_navn FROM ansatt a, avdeling av WHERE a.avd_nr = av.avd_nr; SELECT a.*, avd_navn FROM ansatt a INNER JOIN avdeling av ON a.avd_nr = av.avd_nr; Tabell: RES 10.10.2008 Kjell Toft Hansen 15

Ytterforening (eng. outer join) Venstre ytterforening (eng. left outer join) Er en likhetsforening, men med det tillegg at alle tupler i venstre relasjon skal være med. Der det mangler sammenfallende verdier fra høyre relasjon, er attributtene fra høyre relasjon gitt NULL verdier Høyre ytterforening er tilsvarende LEFT OUTER JOIN(R1:s:r:k, R2:s:r:k; RES::); 10.10.2008 Kjell Toft Hansen 16

Ytterforening Tabell: Ansatt Tabell: Avdeling Skriv ut alle ansatte (også de som ikke jobbe i noen Avdeling) og hvilke avdelinger de jobber i Venstre ytterforening: LEFT-OUTER-JOIN(ANSATT:s:r:avd_nr, AVDELING:s:avd_navn:avd_nr, RES::); SQL: SELECT a.*, avd_navn FROM ansatt a LEFT JOIN avdeling av ON a.avd_nr = av.avd_nr; Tabell: RES 10.10.2008 Kjell Toft Hansen 17

Ytterforening Tabell: Ansatt Tabell: Avdeling Skriv ut alle ansatte og hvilke avdelinger (også de avdelinger som ikke har noen ansatte) de jobber i Høyre ytterforening: RIGHT-OUTER-JOIN(ANSATT:s:ansatt_nr etternavn fornavn adresse epost telefon:avd_nr, AVDELING:s:r:avd_nr avd_navn, RES::); SQL: SELECT a.ansatt_nr, etternavn, fornavn, adresse, epost, telefon, av.* FROM ansatt a RIGHT JOIN avdeling av ON a.avd_nr = av.avd_nr; Tabell: RES 10.10.2008 Kjell Toft Hansen 18

Settoperasjonen UNION Union lager en ny relasjon med tupler som finnes i den ene eller begge av to relasjoner. Relasjonene må være unionkompatible, dvs. at de har samme antallet attributter, og at attributtene er definert på samme verdidomene (har samme datatype) UNION(R1:s:r:k, R2:s:r:k, RES::); NB!! Alle duplikattupler blir fjernet 10.10.2008 Kjell Toft Hansen 19

Settoperasjonen UNION Tabell: Leverandor Tabell: Produkt Finn byer som har leverandører og/eller produkter : UNION(LEVERANDOR:s:r:lev_by, PRODUKT:s:r:prod_by, RES::lev_by); SQL: SELECT lev_by FROM leverandor UNION SELECT prod_by FROM produkt; RES 10.10.2008 Kjell Toft Hansen 20

Settoperasjonen SNITT Snitt (eng. intersect) lager en ny relasjon med tupler som finnes i begge av to relasjoner. Relasjonene må være unionkompatible. INTERSECT(R1:s:r:k, R2:s:r:k, RES::); NB!! Alle duplikattupler blir fjernet 10.10.2008 Kjell Toft Hansen 21

Settoperasjonen SNITT Tabell: Leverandor Tabell: Produkt Finn byer som har både leverandører og produkter INTERSECT(LEVERANDOR:s:r:lev_by, PRODUKT:s:r:prod_by, RES::lev_by); SQL (MySQL): SELECT DISTINCT lev_by FROM leverandor WHERE lev_by IN ( SELECT prod_by FROM produkt); RES 10.10.2008 Kjell Toft Hansen 22

Settoperasjonen DIFFERANSE Differanse (eng. difference) lager en ny relasjon med tupler som finnes i den første, men ikke i den andre av to relasjoner. Relasjonene må være unionkompatible DIFFERENCE(R1:s:r:k, R2:s:r:k, RES::); NB!! Alle duplikattupler blir fjernet 10.10.2008 Kjell Toft Hansen 23

Settoperasjonen DIFFERANSE Tabell: Leverandor Tabell: Produkt Finn byer hvor det er leverandører, men ikke produkter : DIFFERENCE(LEVERANDOR:s:r:lev_by, PRODUKT:s:r:prod_by, RES::lev_by); SQL (MySQL): SELECT DISTINCT lev_by FROM leverandor WHERE lev_by NOT IN ( SELECT prod_by FROM produkt); RES 10.10.2008 Kjell Toft Hansen 24

Grupperingsoperatoren DIVISJON Operatoren krever at vi har to relasjoner Den første må ha flere eller like mange tupler som relasjon to Den første relasjonen, R1, har to attributter eller attributtgrupper, g og c Tuplene i R1 grupperes på g Tuplene i R2 har attributter som er sammenlignbare med c Tuplenes c del i hver gruppe testes så mot alle tuplene i R2. Hvis all R2s tupler finnes for samme gruppe, vil gruppenes samlingsattributter g, inkluderes i resultatrelasjonen DIVISJON(R1:s:r:g:c, R2:s:r:c, RES:s:r); 10.10.2008 Kjell Toft Hansen 25

Grupperingsoperatoren DIVISJON Tabell: Produkt Tabell: Leveranse Finn hvilke leverandører som har leveranser av alle produktene: DIVISJON(LEVERANSE:s:lev_nr prod_nr:lev_nr:prod_nr, PRODUKT:s:prod_nr:prod_nr, RES::lev_nr); r:c g r c SQL: SELECT lev_nr FROM leverandor l WHERE NOT EXISTS ( SELECT * FROM produkt p WHERE NOT EXISTS ( SELECT * FROM leveranse le WHERE le.lev_nr = l.lev_nr AND le.prod_nr = p.prod_nr )); Velg leverandører slik at det ikke fins produkter som de ikke leverer. 10.10.2008 26 Kjell Toft Hansen

Hva er en relasjonsdatabase? Relasjonsmodellen er et teoretisk fundament for databaser En database må tilfredsstille kravene i relasjonsmodellen for å kunne kalles en relasjonsdatabase Codd sier at et databasesystem er relasjonelt hvis det tilfredsstiller følgende kriterier: Brukeren av systemet skal oppfatte dataene som en samling med relasjoner (tabeller som tilfredsstiller visse krav), og intet annet. Systemet må minst tilby følgende operasjoner: seleksjon, projeksjon, forening (eng. join) uten på forhånd å måtte definere fysiske aksessveier for å kunne bruke disse operasjonene. I tillegg finnes det 12 detaljerte regler angående: datarepresentasjon, aksessveier, datakataloger, databasespråk, virtuelle relasjoner (eng. views), fysisk og logisk datauavhengighet og integritet. Men i henhold til denne definisjonen finnes det ikke relasjonelle systemer på markedet i dag. Dette er kontroversielt, men uansett så danner relasjonsmodellen en solid teoretisk basis og dernest utgjør definisjonen et mål å strekke seg etter. 10.10.2008 Kjell Toft Hansen 27