7.11.2006. Helsingin yliopisto/tktl Kyselykielet, s 2006 Relaatiokalkyylit. Harri Laine 1



Samankaltaiset tiedostot
SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet

Relaatiomalli ja -tietokanta

CSE-A1200 Tietokannat

SELECT-lauseen perusmuoto

HELIA 1 (17) Outi Virkki Tiedonhallinta

Esimerkki. pankkien talletus- ja lainatietokanta: Yhdiste, leikkaus, erotus ym. Leikkaus (intersect) Yhdiste (Union) Erotus (except/minus) Leikkaus

Yhdiste, leikkaus, erotus ym.

Kyselyt: Lähtökohtana joukko lukuja Laskukaava kertoo miten luvuista lasketaan tulos soveltamalla laskentaoperaatioita

TIEDONHALLINTA - SYKSY Luento 10. Hannu Markkanen /10/12 Helsinki Metropolia University of Applied Sciences

Relaatioalgebra. Kyselyt:

Helsingin yliopisto/ tktl DO Tietokantojen perusteet, s 2000 Relaatioalgebra Harri Laine 1. Relaatioalgebra

Relaatioalgebra. Relaatioalgebra. Relaatioalgebra. Relaatioalgebra - erotus (set difference) Kyselyt:

joukko operaatioita, joilla relaatioista voidaan muodostaa uusia relaatioita joukko opin perusoperaatiot yhdiste, erotus, ristitulo, leikkaus

Helsingin yliopisto/tktl Kyselykielet, s 2006 Optimointi Harri Laine 1. Kyselyn optimointi. Kyselyn optimointi

CSE-A1200 Tietokannat

Tietokannan eheysrajoitteet ja niiden määrittäminen SQL-kielellä

SQL-kielen perusteet. Tietokantojen perusteet

13. Loogiset operaatiot 13.1

Kyselyn yleisrakenne:

SQL:N PERUSTEET MARKKU SUNI

Helsingin yliopisto/ tktl D Tietokantojen perusteet, s 2000 Relaatioalgebra. Harri Laine 1. Relaatioalgebra.

CS-A1150 Tietokannat CS-A1150 Tietokannat / 39

FROM-lausekkeessa voidaan määritellä useampi kuin yksi taulu, josta tietoja haetaan: Tuloksena on taululistassa lueteltujen taulujen rivien

HELIA 1 (14) Outi Virkki Tiedonhallinta

HAAGA-HELIA Heti-09 1 (12) ICT05 Tiedonhallinta ja Tietokannat O.Virkki Näkymät

Insert lauseella on kaksi muotoa: insert into taulu [(sarakenimet)] values (arvot)

Liitokset - haut useaan tauluun

13. Loogiset operaatiot 13.1

Harjoitustehtävä 1. Harjoitustehtävä 2. Harjoitustehtävä 2. Harjoitustehtävä 2. Harjoitustehtävä 2. SQL kysely

SQL - STRUCTURED QUERY LANGUAGE

T Kevät 2009 Logiikka tietotekniikassa: perusteet Laskuharjoitus 8 (Predikaattilogiikka )

Helsingin yliopisto/tktl DO Tietokantojen perusteet, s 2000 Relaatiomallin peruskäsitteet Harri Laine 1. Relaatiotietokannat DONOTP

Tietokantojen suunnittelu, relaatiokantojen perusteita

HAAGA-HELIA heti09 1 (27) ICT05 Tiedonhallinta ja tietokannat O.Virkki Relaatiomalli

Helsingin yliopisto, Tietojenkäsittelytieteen laitos Tietokantojen perusteet, , H.Laine

select tulostietomäärittely from taulukkeet [where valintaehdot] [group by ryhmitystekijät] [having ryhmärajoitteet] [order by järjestysperusta]

T Kevät 2006 Logiikka tietotekniikassa: perusteet Laskuharjoitus 8 (opetusmoniste, kappaleet )

HELIA TIKO-05 1 (15) ICT03D Tieto ja tiedon varastointi Räty, Virkki

Tietokannan hallinta. Kevät 2004 Jan Lindström R&G Chapter 1

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)

Relaatiotietokantojen perusteista. Harri Laine Helsingin yliopisto

CS-A1150 Tietokannat CS-A1150 Tietokannat / 34

HOJ Haja-aiheita. Ville Leppänen. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.1/10

Johdanto Javaan ja tietokantojen käsittelyyn Java Database Connectivity (JDBC)

TIETOKANTOJEN PERUSTEET MARKKU SUNI

Helsingin yliopisto, TKTL Tietokantojen perusteet, k 2000 SQL- osa Harri Laine 1. SQL-valintaehto. SQL-valintaehto.

Kuva 7.2 vastaustaulu harjoitukseen 7.2

Harjoitustehtävä 1. Harjoitustehtävän 1 ratkaisu. Harjoitustehtävä 1. Relaatioalgebra -liitokset (join) Liitos

MS-A0401 Diskreetin matematiikan perusteet Yhteenveto, osa I

CS-A1150 Tietokannat CS-A1150 Tietokannat / 34

Kirjoita kuhunkin erilliseen vastauspaperiin kurssin nimi, tentin päiväys, oma nimesi, syntymäaikasi ja nimikirjoituksesi.

Tietokantojen perusteet, syksy 1999 SQL- osa Harri Laine 1. SQL-valintaehto. SQL-valintaehto. Opettajien nimet: Opiskelijoiden pääaineet

HELIA TIKO-05 1 (17) ICT03D Tieto ja tiedon varastointi Räty, Virkki

2. Käsiteanalyysi ja relaatiomalli

Java-kielen perusteita

Relaation tyhjyyden testaaminen

Tietokantojen perusteet k2004helsingin yliopisto/tktl Tietokantojen perusteet, s 2005 relaatiomalli Harri Laine 1.

Helsingin yliopisto/tktl Tietokantojen perusteet, s 2007 SQL:n perusteet. Harri Laine 1. SQL tietokantakieli. SQL tietokantakieli

Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi);

TIETOKANTOJEN PERUSTEET OSIO 14 MARKKU SUNI

4.3.4 SQL kyselyt... 45

Laajennettu relaatiomalli ERDM ja suoraviittauksinen kyselykieli NSQL. Mika Niemelä

Hahmon etsiminen syotteesta (johdatteleva esimerkki)

Tietokantojen perusteet k2004helsingin yliopisto/tktl Tietokantojen perusteet, s 2005 SQL-perusteet. Harri Laine 1. SQL tietokantakieli

HAAGA-HELIA TIKO-05 1 (19) ICT23a Tietokannan suunnittelu ja toteutus O.Virkki

Joukossa X määritelty relaatio R on. (ir) irrefleksiivinen, jos x Rx kaikilla x X,

SQL. ! nykystandardi SQL3 eli SQL'99. ! CREATE TABLE, ALTER TABLE ja DROP TABLE. ! CREATE VIEW ja DROP VIEW. ! CREATE INDEX ja DROP INDEX

Relaation ominaisuuksia. Ominaisuuksia koskevia lauseita Sulkeumat. Joukossa X määritelty relaatio R on. (ir) irrefleksiivinen, jos x Rx kaikilla x X,

Tehtäväsarja I Tehtävät 1-5 perustuvat monisteen kappaleisiin ja tehtävä 6 kappaleeseen 2.8.

Helsingin yliopisto Tietojenkäsittelytieteen laitos (H.Laine) Tietokantojen perusteet. Liitteenä: Tiivistelmä SQL-syntaksista

TIEDONHALLINNAN PERUSTEET - SYKSY 2013

TIEDONHALLINTA - SYKSY Luento 8. Saapumisryhmä: Pasi Ranne /9/13 Helsinki Metropolia University of Applied Sciences

Ehto- ja toistolauseet

HELIA 1 (21) Outi Virkki Tietokantasuunnittelu

Opettajana Mika Sorsa, HAMK:n ammatillisen opettajakoulutuksen opetusharjoittelija

811120P Diskreetit rakenteet

1. Logiikan ja joukko-opin alkeet

etunimi, sukunimi ja opiskelijanumero ja näillä

811120P Diskreetit rakenteet


Relaatioista TIETOJENKÄSITTELYTIETEIDEN LAITOS, JUHA IISAKKA 11-14

Tietokannat II -kurssin harjoitustyö

määritellä ja muokata tietokantaa ja sen käyttöoikeuksia virittää tietokannan talletusrakenteita hakea tietoa tietokannasta

Tutoriaaliläsnäoloista

T Kevät 2005 Logiikka tietotekniikassa: erityiskysymyksiä I Kertausta Ratkaisut

HELIA 1 (11) Outi Virkki Tiedonhallinta

MS-A0402 Diskreetin matematiikan perusteet Yhteenveto, osa I

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin.

CSE-A1200 Tietokannat

Säännölliset kielet. Sisällys. Säännölliset kielet. Säännölliset operaattorit. Säännölliset kielet

määritellä ja muokata tietokantaa ja sen käyttöoikeuksia virittää tietokannan talletusrakenteita hakea tietoa tietokannasta

KAAVAT. Sisällysluettelo

HELIA 1 (12) Outi Virkki Tiedonhallinta

TIETOKANNAT JOHDANTO

Kirjoita jokaiseen erilliseen vastauspaperiin kurssin nimi, tenttipäivä, oma nimesi (selkeästi), opiskelijanumerosi ja nimikirjoituksesi

saadaan kvanttorien järjestystä vaihtamalla ehto Tarkoittaako tämä ehto mitään järkevää ja jos, niin mitä?

IIO10200 TIETOKANTAOHJELMOINTI (4 OP) OPINTOJAKSON ESITTELY JOUNI HUOTARI

Hakukyselyt: SELECT * FROM taulu WHERE sarake1 = Malli Nimi [WHERE sarake1 LIKE M% ] [WHERE BETWEEN ehto1 AND ehto2] [WHERE sarake1 IN/= (alikysely)]

Sisällys. 3. Muuttujat ja operaatiot. Muuttujat ja operaatiot. Muuttujat. Operaatiot. Imperatiivinen laskenta. Muuttujat. Esimerkkejä: Operaattorit.

Transkriptio:

perusteita - relaatiokalkyylit perusteita - relaatiokalkyylit Relaatioalgebra on luonteeltaan proseduraalinen tapa käsitellä tietoa. Tiedon haetaan sarjaksi järjestettyjen operaatioiden avulla. Edellä todettiin, että operaatiot voidaan järjestää eri tavoin ja saada sama tulos. Operaatiosarjan muodostus on aika vaikeaa Kyselyn tuloksen määrittelyyn laskentajärjestystä kiinnittämättä on teoreettiseksi pohjaksi kehitetty relaatiokalkyylejä Kalkyyleissä esitetään määritelmällisesti (declarative), millainen tulos täyttää halutun tietotarpeen Relaatiomallin kyselykielten teoriapohjaksi on tarjottu kahta erityyppistä relaatiokalkyyliä: Rivimuuttujiin pohjautuvaa rivikalkyyliä (tuple relational calculus) ja Sarakemuuttujiin perustuvaa sarakekalkyyliä (domain relational calculus) Kummankin pohjalta on kehitetty käytännön kyselykieliä Kumpikin perustuu predikaatilogiikkaan 1 2 Rivikalkyylissä kyselykielen keskeisiä rakenneosia ovat rivimuuttujat (tuple variable) Rivimuuttujan arvoalue on jokin relaatio, ts se voi saada arvokseen minkä tahansa kyseisen relaation rivin Tyypillinen rivikalkyylin kysely on muotoa {t cond(t)} eli tuloksen muodostavat ehdon cond täyttävät monikot. Ehdossa esitellään, minkä relaation monikosta on kyse. Lisäksi voidaan antaa muita vaatimuksia. Esimerkiksi Hae kaikki Teokset, jotka on painettu vuonna 2006 esitettäisiin {t Teos(t) and t.painovuosi=2006} (Huom: tässä käytetään teoksen Elmasri&Navathe käyttämää esitystapaa Silberschatz:in tapa on vähän monimutkaisempi) Ehto Teos(t) määrittelee muuttujan t arvoalueeksi (range) relaation Teos Ehto t.painovuosi=2006 antaa lisäehdon t.painovuosi viittaa attribuutin painovuosi arvoon rivillä t 3 4 Jos halutaan mukaan tulokseen vain osa relaation attribuuteista, nämä voidaan luetella {t.nimi, t.kustantaja Teos(t) and t.painovuosi=2006} (* Silberschatzin käyttämässä tavassa ei voida luetella *) Kyselyn tuloksen muodostavat niiltä riveiltä poimitut arvot, joiden kohdalla annettu ehto on tosi. Rivikalkyylin kyselyn yleinen muoto on {t 1.A 1,t 2.A 2,,t n.a n Cond(t 1,t 2,,t n,t n+1, t n+m )} t 1,t 2,,t n,t n+1, t n+m ovat rivimuuttujia Kukin A i on t i :n viittaaman relaation attribuutti 5 6 Harri Laine 1

Cond on kaava, jonka atomeja ovat. Muuttujaesittelyt R(t i ) : tosi, jos muuttujan arvona R:n monikko Vertailut t i.a i Θ t j.a j tai t i.a j Θ c, missä Θ on vertailuoperaattori <,>,<=,>=,!= ja c on jokin vakio Kaava muodostuu yhdestä tai useammasta atomista, jotka on liitetty toisiinsa loogisilla operaattoreilla and, or ja not (,, ) Kaavaan voi lisäksi sisältyä kvanttoreita: Olemassaolokvanttori ( t) (on olemassa t) ja Universaalikvanttori ( t) (kaikille t) Jos F on kaava, jossa t on vapaa muuttuja, niin ( t) (F) on kaava, joka on tosi, jos kaava F on tosi kun t:n arvoksi on sijoitettu jokin tietokannan monikko. 7 8 Jos F on kaava, jossa t on vapaa muuttuja, niin ( t)(f) on kaava, joka on tosi, jos kaava F on tosi kaikilla t:n arvoksi kelpaavilla monikoilla. Muuttuja t on vapaa (free) ellei sitä ole sidottu (bound) millään kvanttorilla k.nimi= Database design [k on vapaa] ( k) (k.teosnumero=h.teostunnus) [k on sidottu, h on vapaa] Kurssi(knro,kurssinimi,taso, ) Materiaali(kurssi->Kurssi,kirjanro->Teos, tyyppi, ) Kurssin Kyselykielet oheishakemistona käytettävien kirjojen tunnukset? {m.kirjanro Materiaali(m) and ( k) (Kurssi(k) and m.kurssi=k.knro and m.tyyppi= oheislukemisto and k.kurssinimi= Kyselykielet )} 9 10 Rivikalkyylin lausekkeessa kaikkien vapaiden muuttujien pitää esiintyä tulostietomäärittelyssä ( palkin vasemmalla puolella). Millä kurssilla ja mihin tarkoitukseen käytetään Database Management nimistä teosta? {k.kurssinimi, m.tyyppi Kurssi(k) and Materiaali(m) and m.kurssi=k.knro and (( t) (Teos(t) and t.kirjanro=m.kirjanro and t.nimi= Database Management ))} Kyselyssä voi olla useita rivimuuttujia, jotka viittaavat saman relaation monikoihin {p.nimi Työntekijä(p) and ( a) (Työntekijä(a) and a.pomo=p.ttnro and a.ttnro=190)} Luettele kirjat, joita käytetään jollain aineopintotason kurssilla {t.nimi Teos(t) and (( k) ( m) (Kurssi(k) and Materiaali(m) and m.kurssi=k.knro and m.kirjanro=t.kirjanro and k.taso= aineopinnot ))} 11 12 Harri Laine 2

Anna niiden teosten tunnukset, joita ei käytetä millään kursseilla {t.knro Teos(t) and not (( m) (Materiaali(m) and m.kirjanro=t.knro)) } (= Ei ole olemassa materiaaliriviä, jossa esiintyisi) Toisin: {t.knro Teos(t) and (( m)(not(materiaali(m)) or not (m.kirjanro=k.knro)))} Universaalikvanttori on vaikea käytettävä toisaalta myös tarpeeton Muunnossääntöjä: ( x)(p(x)) = not ( x)(not (Px)) ( x)((px)) = not ( x)(not P(x)) ( x)(p(x) and Q(x)) = not( x)(not (P(x)) or not (Q(x))) muitakin on.. 13 14 Käytettäessä kvanttoreita ja negaatiota pitää varmistua siitä, että lausekkeet ovat järkeviä Turvallinen lauseke (safe expression) tuottaa tarkoin määritellyn äärellisen joukon monikkoja tulokseksi {t not Kurssi(t)} ei ole turvallinen karkaa Kurssi relaation ulkopuolelle eikä tulos ole äärellinen On osoitettu, että relatioalgebra ja rivikalkyyli ovat ilmaisuvoimaltaan samat eli mikä tahansa kysely joka voidaan esittää relaatioalgebralla voidaan esittää rivikalkyylillä ja päinvastoin. Kieltä, jonka ilmaisuvoima on vähintään relaatioalgebran tasoa kutsutaan relationaalisesti täydelliseksi (relationally complete) 15 16 SQL-kielen teoriaperustana on rivikalkyyli Tulostiedot määritellään kuten kalkyylissä From-osassa esitellään vapaat ja olemassaolokvantifioidut muuttujat Explisiittisesti muutujan saa näkyviin käyttämällä muotoa from table as alias, muuten taulun nimi toimii samalla rivimuuttujana Where-osa vastaa kalkyylin ehto-osaa SQL ei kuitenkaan ole puhdas rivikalkyylin toteutus mukana algebran operaatioita, alikyselyt, yhteenvedot, yms. aikanaan SQL:n kilpailijana ollut QUEL (Ingres) oli puhtaampi rivikalkyylikieli Sarakekalkyyli (domain relational calculus) on vaihtoehtoinen formaali malli relaatiomallin määritelmälliselle kyselykielelle. Sarakekalkyyli kehitettiin käytännön kyselyympäristön (Query By Example, QBE) pohjalta 70-80 luvuilla julkaistiin paljon vertailututkimuksia, joissa QBE ja sarakekalkyyli todettiin helppokäyttöisemmäksi kuin SQL ja rivikalkyyli. Kummatkin päihittivät tässä suhteessa relaatioalgebran. 17 18 Harri Laine 3

Sarakekalkyylissä perusero rivikalkyyliin on sarakemuuttujien käyttö (domain variable) Sarakemuuttuja saa arvokseen yksittäisiä sarakkeen arvojoukkoon kuuluvia arvoja. Sarakekalkyylin kyselylauseke on muotoa {x 1,x 2,,x n Kaava muodostuu atomeista, joita ovat riviesittelyt R(x 1,x 2,,x j ), missä R on relaation nimi ja x i :t sarakemuuttujia.tämä on tosi, jos monikko <x 1,x 2,,x j > kuuluu relaatioon R Vertailut x i Θ x j tai x i Θ c, missä Θ on vertailuoperaattori <,>,<=,>0,!= ja c on jokin vakio Cond(x 1,x 2,,x n,x n+1,x n+2,,x n+m )} x i ovat sarakemuuttujia ja cond on kaava 19 20 Kuten rivikalkyylissä voi sarakekalkyylissä yhdistää atomeja loogisilla operaattoreilla ja käyttää kvanttoreita. Teos(kirjanro,nimi,painovuosi,kustantaja) Kurssi(knro,kurssinimi,taso) Materiaali(kurssi->Kurssi,kirjanro->Teos, tyyppi) Kurssin Kyselykielet oheishakemistona käytettävien kirjojen tunnukset? {m ( k)(( t)(( i) (( n) (( y) (Materiaali(k,m,t) and Kurssi(i,n,y) and k=i and t= oheislukemisto and n= Kyselykielet )))))} usein käytetään erilaisia lyhennemerkintojä lausekkeen luettavuuden helpottamiseksi 21 22 {m ( k,t,i,n,y) (Materiaali(k,m,t) and Kurssi(i,n,y) and k=i and t= oheislukemisto and n= Kyselykielet )} (Silberschatz: Jätetään olemassaolokvanttori toistamatta) Käytetään ei väliä (esim _ ) muuttujia ilman esittelyä, jos muuttujat eivät osallistu vertailuihin {m ( k,t,i,n) (Materiaali(k,m,t) and Kurssi(i,n,_) and k=i and t= oheislukemisto and n= Kyselykielet )} Muuttujina voi toki käyttää luettavampia nimiä, esimerkiksi sarakenimiä {kirjanro ( kurssi,tyyppi,knro,nimi) (Materiaali(kurssi,kirjanro,tyyppi) and Kurssi(knro,nimi,_) and kurssi=knro and tyyppi= oheislukemisto and nimi= Kyselykielet )} 23 24 Harri Laine 4

Millä kurssilla ja mihin tarkoitukseen käytetään Database Management nimistä teosta? {knimi, tyyppi ( knro,taso,kurssi,kirja, tnro,tnimi,pv,kust nimi) (Kurssi(knro,knimi,taso) and Materiaali(kurssi,kirja,tyyppi) and kurssi=knro and Teos(tnro,tnimi,pv,kust) and tnro=kirja and tnimi= Database Management )} Tyontekijä(ttnro, nimi, pomo, muuta) {ttnimi, pomonimi ( joku,ttnro, pomo, isopomo, muuta, else) (Työntekijä(joku,ttnimi,pomo,muuta) and Työntekija(ttnro,pomonimi,isopomo, else) and pomo=ttnro)} 25 26 Anna niiden teosten tunnukset, joita ei käytetä millään kursseilla {tunnus ( nimi,pv,kust) (Teos(tunnus,nimi,pv,kust) and not (( k,m,t) (Materiaali(k,m,t) and tunnus=m))) } (= Ei ole olemassa materiaaliriviä, jossa esiintyisi) Toisin: {tunnus ( nimi,pv,kust) (Teos(tunnus,nimi,pv,kust) (( kirja,kurssi,tyyppi) (not(materiaali(kurssi,kirja,tyyppi)) or not (tunnus=kirja)))} Sarakekalkyyliin perustuvista kielistä tunnetuin on Query By Example, jonka pohjalta sarakekalkyyli kehitettiin sille teoriataustaksi QBE on graafinen kieli. Se perustuu taulupohjien (skeleton) käyttöön Taulupohja on taulukko, jossa näkyvät taulun sarakkeet 27 28 Esimerkiksi Hae kaikki Teokset, jotka on painettu vuonna 2006. Tulosta kirjanumero ja nimi. P. P. 2006 Vakioarvoihin peustuvat ehdot suoraan pohjalle oikeaan sarakkeeseen (2006) tulostusvaatimus P. tuplat voidaan jättää lisämääreellä ALL. (P.ALL.) 29 30 Harri Laine 5

Tulosta koko rivi: P. 2006 yhdistäminen muuttujilla (kurssit, jotka ovat samalla tasolla kuin Kyselykielet) Kyselykielet P. Kyselykielet P. oheishakemisto Kurssin Kyselykielet oheishakemistona käytettävien kirjojen tunnukset? 31 32 _y Database Management _kn Perus tai aineopintokurssit P. _y _tp Result kurssinimi tyyppi P. _kn _tp tulostaulu conditions =perus or =aine Millä kurssilla ja mihin tarkoitukseen käytetään Database Management nimistä teosta? 33 34 Anna niiden teosten tunnukset, joita ei käytetä millään kursseilla Kirja josta on vähintään 2 painosta P._y _y P. _y _y 35 36 Harri Laine 6