37
CSE-A1200 Tietokannat 9.2.2016 CSE-A1200 Tietokannat 9.2.2016 1 / 34

CSE-A1200 Tietokannat · Kertausta: relaatio I Tietokanta koostuu kaksiulotteisista tauluista (table), joita kutsutaan relaatioiksi(relation). I Jokaisella relaatiolla on joukko nimettyjä

  • Upload
    trannga

  • View
    220

  • Download
    5

Embed Size (px)

Citation preview

CSE-A1200 Tietokannat

9.2.2016

CSE-A1200 Tietokannat 9.2.2016 1 / 34

Oppimistavoitteet: tämän luennon jälkeen

I Tiedät, mitä tarkoitetaan relaatioalgebralla.I Osaat tehdä erilaisia kyselyitä relaatioalgebran operaattoreiden avulla.

CSE-A1200 Tietokannat 9.2.2016 2 / 34

Kertausta: relaatio

I Tietokanta koostuu kaksiulotteisista tauluista (table), joita kutsutaanrelaatioiksi (relation).

I Jokaisella relaatiolla on joukko nimettyjä attribuutteja (attribute).I Kullakin taulun rivillä eli monikolla (tuple) on arvot eri attribuuteille.I Attribuuttien arvojen tulee olla atomisia (esim. yksittäinen lukuarvo tai

merkkijono, ei esimerkiksi joukko tai monikko). Arvoilla on tyyppi.

Relation Customersnumber name born bonus address email112233 Teemu Teekkari 1995 55 Servinkuja 3 [email protected] Riina Raksalainen 1993 43 Otaranta 8 [email protected] Antti Virta 1970 12 Aaltokatu 4 [email protected]

CSE-A1200 Tietokannat 9.2.2016 3 / 34

Relaatioalgebra

I Relaatioalgebralla voidaan muodostaa uusia relaatioita olemassaolevista relaatioista.

I Käytännössä relaatioalgebran lausekkeet vastaavat yleensä kyselyitä,jotka ovat muutettavissa suoraan SQL-kielelle.

I Relaatioalgebran lausekkeessaI operandeina ovat relaatiotI operaattoreina ovat relaatioalgebran operaatiot

CSE-A1200 Tietokannat 9.2.2016 4 / 34

Relaatioalgebran operaatiot

I Lähtörelaatioita pienentävät operaatiotI valintaoperaatio (poistaa relaatiosta osan monikoista)I projektio-operaatio (poistaa relaatiosta osan attribuuteista)

I Relaatioiden monikkoja yhdistävät operaatiotI karteesinen tuloI liitosoperaatiot

I Uudelleen nimeäminenI ei muuta relaatiota lainkaan, mutta voi olla tarpeellinen toisten

operaatioiden kannaltaI Joukko-operaatiot:

I yhdisteI leikkausI erotus

CSE-A1200 Tietokannat 9.2.2016 5 / 34

Valinta

I Relaatioon R kohdistuva valinta (selection) tuottaa uuden relaation,joka on R :n osajoukko. Valinta

σC (R)

tuottaa tulosrelaation, johon on valittu ne R :n monikot, jotkatäyttävät ehdon C .

I Ehto C on ehtolauseke, jonkaI operandit ovat R:n attribuutteja tai niiden arvojoukkojen vakioitaI operaattorit ovat loogisia operaattoreita tai R:n attribuuteille

määriteltyjä vertailuoperaattoreita.

CSE-A1200 Tietokannat 9.2.2016 6 / 34

Esimerkkejä valintaoperaatiostaI Seuraavasta relaatiosta vuoden 1992 jälkeen syntyneet asiakkaat:

Relation Customersnumber name born bonus address email112233 Teemu Teekkari 1995 55 Servinkuja 3 [email protected] Riina Raksalainen 1993 43 Otaranta 8 [email protected] Antti Virta 1970 12 Aaltokatu 4 [email protected] Nina Teekkari 1991 20 Servinkuja 3 [email protected]

I Relaatioalgebran lauseke

σborn>1992(Customers)

I Tulosrelaatio on

Resultnumber name born bonus address email112233 Teemu Teekkari 1995 55 Servinkuja 3 [email protected] Riina Raksalainen 1993 43 Otaranta 8 [email protected]

CSE-A1200 Tietokannat 9.2.2016 7 / 34

Esimerkkejä valintaoperaatiosta, jatkoa

I Haetaan edellisen kalvon relaatiosta Customers ne monikot, joissasyntymävuosi on suurempi kuin 1992 ja osoite Servinkuja 3.

I Relaatioalgebran lauseke

σborn>1992 AND address=’Servinkuja 3’(Customers)

I Tulosrelaatio on

Resultnumber name born bonus address email112233 Teemu Teekkari 1995 55 Servinkuja 3 [email protected]

CSE-A1200 Tietokannat 9.2.2016 8 / 34

Projektio

I Projektion (projection) avulla voidaan valita relaatiosta R halututsarakkeet.

I ProjektioπA1,A2,...,An(R)

tuottaa relaation valitsemalla R :stä attribuutteja A1,A2, . . . ,An(R)vastaavat sarakkeet ja poistamalla mahdolliset toisteiset monikot.

I Ero (alkuperäisen) relaatioalgebran ja SQL-kyselykielen välillä:relaatioalgebrassa toisteiset rivit poistetaan, SQL jättää toisteisetmonikot.

CSE-A1200 Tietokannat 9.2.2016 9 / 34

Esimerkki projektiostaI Tarkastellaan relaatiota Customers

Relation Customersnumber name born bonus address email112233 Teemu Teekkari 1995 55 Servinkuja 3 [email protected] Riina Raksalainen 1993 43 Otaranta 8 [email protected] Antti Virta 1970 12 Aaltokatu 4 [email protected] Nina Teekkari 1991 20 Servinkuja 3 [email protected]

I Tulosrelaatio lausekkeesta

πnumber,name,email(Customers)

Resultnumber name email112233 Teemu Teekkari [email protected] Riina Raksalainen [email protected] Antti Virta [email protected] Nina Teekkari [email protected]

CSE-A1200 Tietokannat 9.2.2016 10 / 34

Esimerkki projektiosta, jatkuu

I Sen sijaan lausekkeen

πaddress(Customers)

tulosrelaatio on

ResultaddressServinkuja 3Otaranta 8Aaltokatu 4

CSE-A1200 Tietokannat 9.2.2016 11 / 34

Operaatioiden yhdistäminen

I Relaatioalgebran lausekkeen tulos on uusi relaatio. Se voidaan antaaoperandiksi toiselle relaatioalgebran operaattorille.

I Esimerkki: tarkastellaan relaatiota Customers(number, name, born,bonus, address, email). Kirjoita lauseke, joka esittää seuraavaakyselyä: Mitkä ovat niiden asiakkaiden nimet ja sähköpostiosoitteet,jotka ovat syntyneet vuoden 1992 jälkeen ja joiden osoite onServinkuja 3?

CSE-A1200 Tietokannat 9.2.2016 12 / 34

Operaatioiden yhdistäminen, jatkoa

I Mitkä ovat niiden asiakkaiden nimet ja sähköpostiosoitteet, jotka ovatsyntyneet vuoden 1992 jälkeen ja joiden osoite on Servinkuja 3?

I Kyselyä kuvaava relaatioalgebran lauseke:

πname,email(σborn>1992 AND address=’Servinkuja 3’(Customers))

CSE-A1200 Tietokannat 9.2.2016 13 / 34

Karteesinen tulo

I Joukkojen R ja S karteesinen tulo (cartesian product) muodostuukaikista sellaisista pareista, joissa ensimmäinen alkio kuuluu joukkoonR ja toinen alkio joukkoon S .

I Jos R ja S ovat relaatioita, niin niiden karteesisten tulon R × Stulosrelaation kaavio on R :n ja S :n kaavion yhdiste.

I Tulosrelaatio sisältää kaikki mahdolliset monikot, joissa jokin R :nmonikko on yhdistetty jonkin S :n monikon kanssa.

I Jos R :ssä on m monikkoa ja S :ssä n monikkoa, on tulosrelaatiossa mnmonikkoa.

I Jos R :n ja S :n kaavioissa on yhteisiä attribuutteja, ne on nimettäväuudelleen siten, että ne ovat erotettavissa. Esimerkiksi yhteinenattribuutti A voidaan nimetä R.A:ksi ja S .A:ksi.

CSE-A1200 Tietokannat 9.2.2016 14 / 34

Esimerkki karteesisesta tulosta

Relation UA B1 23 4

Relation VB C D2 5 64 7 89 10 11

Tulosrelaatio U × V

ResultA U.B V.B C D1 2 2 5 61 2 4 7 81 2 9 10 113 4 2 5 63 4 4 7 83 4 9 10 11

CSE-A1200 Tietokannat 9.2.2016 15 / 34

Mitä karteesisella tulolla voi tehdä?

I Tarkastellaan seuraavia relaatioita

Relation Studentsid name program123456 T Teekkari SCI1224455 R Konemies ENG1332211 K Kemisti CHEM1

Relation GradesstudId courseId date grade123456 CSE-A1110 3.12.2015 5332211 MS-A0107 5.12.2015 1224455 CSE-A1111 5.12.2015 4123456 MS-A0101 4.12.2015 3224455 MS-A0105 9.12.2015 2123456 MS-A0001 2.12.2015 4

I Mitä niiden karteesinen tulo edustaa? Mitä sillä voisi tehdä?

CSE-A1200 Tietokannat 9.2.2016 16 / 34

Karteesinen tulo yhdistettynä valintaan

I Karteesinen tulo yksistään voi vaikuttaa oudolta operaatiolta, muttakun tulosrelaatioon kohdistetaan valinta, voidaan relaatioita yhdistäämonipuolisesti mielekkäillä tavoilla.

I Esimerkki: hae kalvon 15 esimerkin tulosrelaatiosta ne monikot, joillamolempien lähtörelaatioiden B-attribuutit ovat samoja.

I Vastaava relaatioalgebran lauseke:

σU.B=V .B(U × V )

I Tulosrelaatio

ResultA U.B V.B C D1 2 2 5 63 4 4 7 8

CSE-A1200 Tietokannat 9.2.2016 17 / 34

Välitehtävä

I Kirjoita kalvon 16 relaatioille Students ja Grades relaatioalgebranlauseke, joka tuottaa relaation, jossa on kunkin opiskelijan suorittamatkurssit.

I Tulosrelaation yhdessä monikossa pitää olla opiskelijanumero,opiskelijan nimi, suoritetun kurssin koodi ja arvosana.

CSE-A1200 Tietokannat 9.2.2016 18 / 34

Luonnollinen liitos

I Relaatioiden R ja S luonnollinen liitos (natural join) R ./ S saadaanottamalla näiden relaatioiden karteesinen tulo ja valitsemalla siitätulosrelaatioon vain ne rivit, joilla on samat arvot relaatiokaavioiden Rja S yhteisten attribuuttien osalta.

I Yhteiset attribuutit otetaan tulosrelaatioon mukaan vain kerran.I Esimerkiksi muodostamalla edellä esitettyjen esimerkkirelaatioiden U

ja V luonnollinen liitos U ./ V saadaan tulosrelaatio

ResultA B C D1 2 5 63 4 7 8

CSE-A1200 Tietokannat 9.2.2016 19 / 34

Luonnollinen liitos, jatkoaI Luonnollinen liitos on tärkeä, koska sen avulla voidaan kyselyissä

yhdistää eri relaatioihin tallennettua toisiinsa liittyvää tietoa.I Tarkastellaan esimerkkinä pankin tietokantaa.

Relation BankcustomersidNo firstName lastName address901-222 Robbie Banks 43 Bridge St805-333 Lena Hand 28 Maple St965-111 Matt Smith 55 Oak St

Relation AccountsaccountNo idNo type balance12345 805-333 checking 5200.0043276 901-222 checking 643.5094235 901-222 savings 14400.2023987 965-111 checking 12345.20

CSE-A1200 Tietokannat 9.2.2016 20 / 34

Luonnollinen liitos, jatkoa

I Halutaan listata niiden asiakkaiden nimet, joiden jonkin tilin saldo onvähintään 10 000 euroa.

I Lauseke

πfirstName,lastName(σbalance≥10000(Bankcustomers ./ Accounts))

CSE-A1200 Tietokannat 9.2.2016 21 / 34

Theta-liitos

I Luonnollisessa liitoksessa liitosehto on aina yhteisten attribuuttienyhtäsuuruus.

I Jos relaatioilla ei ole samannimisiä attribuutteja, luonnollisessaliitoksessa ei ole järkeä.

I Luonnollinen liitos ei myöskään anna mahdollisuutta mielivaltaisilleehdoille.

I Theta-liitoksessa (theta join) annetaan erillinen liitosehdonmäärittelevä ehto C . Se voi olla vastaava ehtolauseke kuinvalintaoperaation yhteydessä.

I Relaatioiden R ja S theta-liitos R ./C S voidaan muodostaaseuraavasti:1. Muodostetaan R:n ja S :n karteesinen tulo R × S2. Valitaan tulosrelaatiosta ne monikot, jotka toteuttavat ehdon C3. Jos R:llä ja S :llä on samannimisiä attribuutteja, nimetään ne uudelleen.

CSE-A1200 Tietokannat 9.2.2016 22 / 34

Esimerkki theta-liitoksesta

Relation UA B C1 2 36 7 89 7 8

Relation VB C D2 3 42 3 57 8 10

Tulosrelaatio U ./A<D V

ResultA U.B U.C V.B V.C D1 2 3 2 3 41 2 3 2 3 51 2 3 7 8 106 7 8 7 8 109 7 8 7 8 10

CSE-A1200 Tietokannat 9.2.2016 23 / 34

Relaatioiden joukko-operaatiot

I Relaatioiden joukko-operaatiot ovatI R ∪ S , relaatioiden R ja S yhdiste eli unioni (union)I R ∩ S , relaatioiden R ja S leikkaus (intersection)I R − S , relaatioiden R ja S erotus (difference)

I Joukko-operaatiot edellyttävät, että1. relaatioiden R ja S relaatiokaaviot muodostuvat samoista

attribuuteista.2. ennen laskentaa R:n ja S :n sarakkeet järjestetään uudelleen niin, että

molempien relaatioiden attribuutit ovat samassa järjestyksessä.

CSE-A1200 Tietokannat 9.2.2016 24 / 34

Yhdiste

I Relaatioiden R ja S yhdiste R ∪ S sisältää kaikki ne monikot, jotkaesiintyvät joko R :ssä, S :ssä tai molemmissa. Jos monikko esiintyy sekäR :ssä että S :ssä, esiintyy se tulosrelaatiossa vain kerran.

Relation Subscribers1custNo name osoite123 Matti Pihakuja 5441 Maisa Lintutie 6 A

Relation Subscribers2custNo name osoite256 Minna Kauppakatu 8123 Matti Pihakuja 5

Yhdiste Subscribers1 ∪ Subscribers2

ResultcustNo name osoite123 Matti Pihakuja 5441 Maisa Lintutie 6 A256 Minna Kauppakatu 8

CSE-A1200 Tietokannat 9.2.2016 25 / 34

Leikkaus

I Relaatioiden R ja S leikkaus R ∩ S sisältää kaikki ne monikot, jotkaesiintyvät sekä R :ssä että S :ssä.

Relation Subscribers1custNo name osoite123 Matti Pihakuja 5441 Maisa Lintutie 6 A

Relation Subscribers2custNo name osoite256 Minna Kauppakatu 8123 Matti Pihakuja 5

Leikkaus Subscribers1 ∩ Subscribers2

ResultcustNo name osoite123 Matti Pihakuja 5

CSE-A1200 Tietokannat 9.2.2016 26 / 34

Erotus

I Relaatioiden R ja S erotus R − S sisältää kaikki ne monikot, jotkaesiintyvät R :ssä, mutta eivät esiinny S :ssä.

Relation Subscribers1custNo name osoite123 Matti Pihakuja 5441 Maisa Lintutie 6 A

Relation Subscribers2custNo name osoite256 Minna Kauppakatu 8123 Matti Pihakuja 5

Erotus Subscribers1− Subscribers2

ResultcustNo name osoite441 Maisa Lintutie 6 A

CSE-A1200 Tietokannat 9.2.2016 27 / 34

Uudelleen nimeäminen

I Uudelleennimentäoperaation ρ avulla voidaan joko relaatiolle, senattribuuteille tai molemmille antaa uusi nimi.

I OperaatioρS(A1,A2,...,An)

(R)

tuottaa relaatiokaavion S(A1,A2, . . . ,An) mukaisen relaation, jossa ontäsmälleen samat monikot kuin relaatiossa R . Relaation jaattribuuttien nimet ovat siis vaihtuneet.

I Jos ainoastaan relaatiolle R annetaan uusi nimi, mutta attribuuttiennimiä ei muuteta, esitetään operaatio muodossa

ρS(R)

CSE-A1200 Tietokannat 9.2.2016 28 / 34

Uudelleen nimeäminen, jatkoa

I Uudelleennimeämisoperaation avulla voidaan esim.I karteesisen tulon yhteydessä vaihtaa samannimisten attribuuttien nimiä

sekaannusten välttämiseksiI vaihtaa kahden relaation attribuuttien nimiä samoiksi ennen

joukko-operaatioitaI kirjoittaa liitosoperaatioita, joissa relaatio liitetään itsensä kanssa.

CSE-A1200 Tietokannat 9.2.2016 29 / 34

Esimerkki: uudelleennimeäminen ja liitos

I Tarkastellaan seuraavaa relaatiota, joka esittää Q-kauppaketjunmyymälöiden sijaintia.

Relation Storesname address cityQ-Otaniemi Otakaari 11 EspooQ-Peltolammi Peltolamminkatu 40 TampereQ-Herttoniemi Hiihtomäentie 14 HelsinkiQ-Tampella Lapintie 3 TampereQ-Leppävaara Läkkisepänkuja 3 EspooQ-Kruununhaka Kirkkokatu 2 HelsinkiQ-Amuri Puuvillatehtaankatu 12 TampereQ-Lintuvaara Linnuntie 2 Espoo

I Kirjoita kysely: tulosta pareittain niiden myymälöiden nimet, jotkasijaitsevat samalla paikkakunnalla.

CSE-A1200 Tietokannat 9.2.2016 30 / 34

Esimerkki jatkuu

I Kyselyyn vastaamiseksi relaatio Stores pitää liittää itsensä kanssa jatutkia attribuutin city yhtäsuuruutta.

I Vähintään toinen liitettävistä relaatiosta pitää nimetä uudelleen, jottaehdossa voidaan yksilöidä, kumman relaation attribuuttejatarkoitetaan.

I Ensimmäinen yritys:

πM1.name,M2.name(ρM1(Stores) ./M1.city=M2.city ρM2(Stores))

I Ongelma: tulosrelaatiossa on myös ne parit, joissa sama myymäläesiintyy kahdesti

CSE-A1200 Tietokannat 9.2.2016 31 / 34

Esimerkki jatkuu

I Kyselyyn vastaamiseksi relaatio Stores pitää liittää itsensä kanssa jatutkia attribuutin city yhtäsuuruutta.

I Vähintään toinen liitettävistä relaatiosta pitää nimetä uudelleen, jottaehdossa voidaan yksilöidä, kumman relaation attribuuttejatarkoitetaan.

I Ensimmäinen yritys:

πM1.name,M2.name(ρM1(Stores) ./M1.city=M2.city ρM2(Stores))

I Ongelma: tulosrelaatiossa on myös ne parit, joissa sama myymäläesiintyy kahdesti

CSE-A1200 Tietokannat 9.2.2016 31 / 34

Esimerkki jatkuuI Duplikaattien poisto: lisätään ehto, että nimi ei saa olla sama

(rivinvaihto ei oikeasti kuulu lausekkeeseen):

πM1.name,M2.name(ρM1(Stores)

./M1.city=M2.city AND M1.name 6=M2.name ρM2(Stores))

I Jäljelle jäänyt ongelma: sama pari esiintyy tulosrelaatiossa kahdesti,esim. (Q-Otaniemi, Q-Leppävaara) ja (Q-Leppävaara,Q-Otaniemi).

I Korjaus: vaaditaan nimien erisuuruuden lisäksi sitä, että ensimmäisennimen pitää olla (jollain kriteerillä) pienempi kuin toisen.

πM1.name,M2.name(ρM1(Stores)

./M1.city=M2.city AND M1.name<M2.name ρM2(Stores))

CSE-A1200 Tietokannat 9.2.2016 32 / 34

Esimerkki jatkuuI Duplikaattien poisto: lisätään ehto, että nimi ei saa olla sama

(rivinvaihto ei oikeasti kuulu lausekkeeseen):

πM1.name,M2.name(ρM1(Stores)

./M1.city=M2.city AND M1.name 6=M2.name ρM2(Stores))

I Jäljelle jäänyt ongelma: sama pari esiintyy tulosrelaatiossa kahdesti,esim. (Q-Otaniemi, Q-Leppävaara) ja (Q-Leppävaara,Q-Otaniemi).

I Korjaus: vaaditaan nimien erisuuruuden lisäksi sitä, että ensimmäisennimen pitää olla (jollain kriteerillä) pienempi kuin toisen.

πM1.name,M2.name(ρM1(Stores)

./M1.city=M2.city AND M1.name<M2.name ρM2(Stores))

CSE-A1200 Tietokannat 9.2.2016 32 / 34

Esimerkki jatkuuI Duplikaattien poisto: lisätään ehto, että nimi ei saa olla sama

(rivinvaihto ei oikeasti kuulu lausekkeeseen):

πM1.name,M2.name(ρM1(Stores)

./M1.city=M2.city AND M1.name 6=M2.name ρM2(Stores))

I Jäljelle jäänyt ongelma: sama pari esiintyy tulosrelaatiossa kahdesti,esim. (Q-Otaniemi, Q-Leppävaara) ja (Q-Leppävaara,Q-Otaniemi).

I Korjaus: vaaditaan nimien erisuuruuden lisäksi sitä, että ensimmäisennimen pitää olla (jollain kriteerillä) pienempi kuin toisen.

πM1.name,M2.name(ρM1(Stores)

./M1.city=M2.city AND M1.name<M2.name ρM2(Stores))

CSE-A1200 Tietokannat 9.2.2016 32 / 34

Vaihtoehtoinen notaatio: peräkkäiset sijoitukset

I Relaatioalgebran lausekkeita voidaan esittää myös nimeämällävälituloksia uusiksi relaatioiksi ja kirjoittamalla sarja sijoituksia, jotkatuottavat saman tulosrelaation kuin alkuperäinen lauseke.

I Esimerkki: tarkastellaan aikaisemmin esitettyä relaatiota Customers.Mitkä ovat niiden asiakkaiden nimet ja sähköpostiosoitteet, jotka ovatsyntyneet vuoden 1992 jälkeen ja joiden osoite on Servinkuja 3?

I Kysely voidaan esittää peräkkäisten sijoitusten avulla seuraavasti (:=on sijoitusoperaatio):R(o, n, b, s, a, e) := σyear>1992(Customers)S(o, n, b, s, a, e) := σaddress=’Servinkuja 3’(Customers)T(o, n, b, s, a, e) := R ∩ SAnswer(name, email) := πn, e(T)

CSE-A1200 Tietokannat 9.2.2016 33 / 34

Toinen vaihtoehtoinen notaatio: puurakenneI Relaatioalgebran lausekkeet voidaan myös esittää puurakenteena.

I Puun lehdet edustavat lähtörelaatioita.I Puun solmut edustavat relaatioalgebran operaatioita.I Puun juuri edustaa kyselyn vastausta.

I Esimerkki: sama kysely kuin edellisellä kalvolla esitettynä puurakenteenavulla.

πname, email

U

U

address> 1992 σ

CustomersCustomers

bornσ = ’Servinkuja 3’

CSE-A1200 Tietokannat 9.2.2016 34 / 34