TIETOKANNAT kevät 2002 Itseopiskeluosio osa 2/3



Samankaltaiset tiedostot
Mikä on tietomalli? Relaatiomallin käsitteitä 1/2 (kuva 5.1) Relaatiomallin taustaa

Relaatiomalli ja -tietokanta

HELIA 1 (12) Outi Virkki Tiedonhallinta

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

HELIA 1 (17) Outi Virkki Tiedonhallinta

Tietokantakurssit / TKTL

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

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

HELIA 1 (14) Outi Virkki Tiedonhallinta

Opettajana Mika Sorsa, HAMK:n ammatillisen opettajakoulutuksen opetusharjoittelija

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

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas

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

CSE-A1200 Tietokannat

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

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

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

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

CSE-A1200 Tietokannat

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

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

TIEDONHALLINNAN PERUSTEET - SYKSY 2013

HELIA TIKO-05 1 (22) ICT03D Tieto ja tiedon varastointi E.Räty, O.Virkki

SQL - STRUCTURED QUERY LANGUAGE

TIETOKANTOJEN PERUSTEET OSIO 11 MARKKU SUNI

HELIA 1 (21) Outi Virkki Tietokantasuunnittelu

HELIA 1 (19) Outi Virkki Tietokantasuunnittelu

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

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

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

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

Tietokannat II -kurssin harjoitustyö

Kyselyn yleisrakenne:

CS-A1150 Tietokannat CS-A1150 Tietokannat / 39

Yhdiste, leikkaus, erotus ym.

TIETOKANNAT JOHDANTO

Kirjasto Relaatiotietokannat Kevät Auvinen Annemari Niemi Anu Passoja Jonna Pulli Jari Tersa Tiina

Tietokantojen suunnittelu, relaatiokantojen perusteita

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

TIEDONHALLINTA - SYKSY Luento 2. Pasi Ranne /8/17 Helsinki Metropolia University of Applied Sciences

2. Käsiteanalyysi ja relaatiomalli

Liitokset - haut useaan tauluun

CSE-A1200 Tietokannat

TIETOKANTOJEN PERUSTEET OSIO 14 MARKKU SUNI

3. Käsiteanalyysi ja käsitekaavio

TIETOKANTOJEN PERUSTEET MARKKU SUNI

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

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu

Relaatiotietokantojen perusteista. Harri Laine Helsingin yliopisto

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

Muita tietokantaobjekteja. Näkymät, synonyymit, indeksointi, valtuudet ja systeemihakemisto

MUITA TIETOKANTAOBJEKTEJA NÄKYMÄT, SYNONYYMIT, INDEKSOINTI, VALTUUDET JA SYSTEEMIHAKEMISTO

HELIA TIKO-05 1 (28) ICT03D Tieto ja tiedon varastointi O.Virkki

Relaatioalgebra. Kyselyt:

3. Taulujen määrittely ja muuttaminen

HELIA 1 (14) Outi Virkki Tiedonhallinta

Harjoituksen aiheena on tietokantapalvelimen asentaminen ja testaaminen. Asennetaan MySQL-tietokanta. Hieman linkkejä:

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

Harjoitustyö. CSE-A1200 Tietokannat! Jasse Lahdenperä! ! Henri Nurmi! !

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

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

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

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

SELECT-lauseen perusmuoto

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

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

3. TAULUJEN MÄÄRITTELY JA MUUTTAMINEN

Tällä viikolla. Kotitehtävien läpikäynti Aloitetaan Pelifirman tietovaraston suunnittelu Jatketaan SQL-harjoituksia

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

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

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

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

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

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

Tietokannanhoitaja DBA (Database Administrator) ja tietokannan hallinta

POLKU LUOKKAKAAVIOISTA TAULUJEN TOTEUTUKSEEN

HELIA 1 (11) Outi Virkki Tiedonhallinta

On autoja, henkilöitä, Henkilöllä on nimi Autolla on omistaja, joka on henkilö. Taulu AUTO(rekno, malli) Taulu HENKILO(nimi, )

SQL-kielen perusteet. Tietokantojen perusteet

CS-A1150 Tietokannat CS-A1150 Tietokannat / 43

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

HELIA 1 (13) Outi Virkki Tietokantasuunnittelu

Tietomallit. Näkökulmat tietoon. Näkökulmat tietoon. Mitä malleja olisi tarjolla? Abstraktiotasot tiedon käsittelyssä

Tiedonhallinnan perusteet. H11 Ovien ja kulun valvontajärjestelmän tietokanta

TIEDONHALLINTA - SYKSY Luento 7. Pasi Ranne /10/17 Helsinki Metropolia University of Applied Sciences

Denormalisointia turvallisesti. Ougf syysseminaari Pörssitalo Helsinki Timo Raitalaakso

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

CS-A1150 Tietokannat

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

Tietotekniikan laitos Käki-projekti TIETOKANTASUUNNITELMA. 1. Johdanto

NORMALISOINTI TIETOJEN MALLINNUS JOUNI HUOTARI & ARI HOVI

2. Haet työntekijöiden tiedot etunimen mukaan nousevasti järjestettyinä. (ORDER BY) SELECT * FROM employees ORDER BY firstname ASC;

CSE-A1200 Tietokannat

SQL:N PERUSTEET MARKKU SUNI

Tietokannan suunnittelu

CS-A1150 Tietokannat CS-A1150 Tietokannat / 44

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

Tietokannat II -kurssin harjoitustyö

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

Transkriptio:

TIETOKANNAT kevät 2002 Itseopiskeluosio osa 2/3 Relaatiomalli tutuksi - myös käytännössä! Toisin kuin johdannossa, tässä vaiheessa lienee helpointa ottaa yksinkertainen käytännön näkökulma. Johdanossa oli käsitteiden ja ajattelutavan omaksumista, kokonaisuuksien hahmottamista kolmitasoarkkitehtuurin mukaisesti ja mallinnuksen laatua. Nyt tavoite on yksinkertaisesti osata luoda relaatiotietokanta ja käyttää sitä. (Vihje: Tästä ei kannata tehdä liian vaikeaa asiaa. Kyseessä on rajattu tapa käsitellä tietoa, joten yksinkertaisuuteen ja selkeyteen asian omaksumisessa kannattaa pyrkiä ottamalla perusteet kunnolla haltuun.) Tämä käytännön tavoite tarvitsee ensin 1) lyhyen johdannon tauluesitykseen ja niiden käsittelyyn relaatiolagebralla; mm. päivitysongelmat relaatiomallin rajoitusten ja eheyssääntöjen (constraints and intergrity rules) suhteen on hyvä sisäistää tässä vaiheessa. Miten relaatiotietokantakaava (schema) sitten suunnitellaan? Siihen antaa vastauksen 2) EERto-relation mapping ohjeet. Tämän jälkeen tutustutaan helppokäyttöiseen 3) SQL-kieleen, jonka avulla kanta luodaan (DDL) ja jolla sitä käytetään (DML). SQL-ominaisuuksiin tutustutaan myös käytännössä Access-ohjelmistolla kolmansissa demoissa. Nämä kolme osaa vaativat paljon harjoituksia. Lopuksi esitellään lyhyesti, osin lisälukemistona, toinen tapa tarkastella taulujen joukkoja eli kalkyylit ja näistä erityisesti Query-By-Example (QBE) kyselykieli mm. Accesissa. Tietokantaopiskelun kannalta on hyödyllistä nähdä QBE-näytön perusteena oleva toimintamekanismi teoriatasollakin. Relaatiomalliosuudessa käytäntö on vahvasti mukana: tietokantakyselyjä harjoitellaan Accessrelaatiotietokantaohjelmistolla. Access (tms. relaatiotietokanta) -harjoittelu on omiaan myös asioiden omaksumiseen, mutta siitä huolimatta harjoittelua olisi syytä tehdä myös käsin paperilla. Harjoittelua voi tehostaa esimerkiksi seuraavasti: Tutustu relaatioalgebraan ja SQL- ja QBE-tehtäviin. Tee vastaukset (esim. kirjan esimerkkeihin, nini että et katso vastausta) paperille, ainakin osaan niistä ja ainakin pääpiirteittäin. Jos mahdollista, testaa sen jälkeen kysely Access tms. ohjelmistolla. Jatka harjoittelua tekemällä kyselyyn variaatioita, mieti niiden vaikutus tulokseen etukäteen ja testaa jälleen. Harjoittele erilaisia käytännön tapoja tehdä yksi ja sama kysely. Välineeseen tutustumiseen on syytä varata aikaa. Muista Access-tutustumisdemo ja ohjelmiston oma Access-tutoriaali, jos et ole aiemmin välinettä käyttänyt. Edelleen ryhmätyö on myös sallittua eli voitte tehdä harjoituksia esimerkiksi samassa ryhmässä, joka tekee myös kurssin ryhmätyön.

Johdanto relaatiomalliin ja SQL-kieleen sekä tietomallin muuttaminen relaatiokaavaksi Aiheen käsittelystä ja jäsennyksestä Pyri omaksumaan keskeiset käsitteet ja asiakokonaisuudet merkityksineen sekä osien liittyminen toisiinsa (kokonaisuus). SQL-osiossa esitellään SQL2-standardin mukaan, joten pieniä eroavaisuuksia käytännön sovelluksiin löytyy. Lisäksi kielissä on yksityiskohtia enemmän, kuin pelkällä lukemalla pystyy käsittelemään, joten harjoittelu ja pääominaisuuksien omaksuminen on ensisijainen tehtävä. Runsauden ei saa antaa sekoittaa kielen perusrakenteiden haltuunottamista. Alla on ehdotettu aihealueen jäsennys: A. Relaatiomallin peruskäsitteet: taulujen eli relaatioiden olemassaolo - perusteet tauluesitykseen o relaaation käsite ja ominaisuudet o relaation rajoitukset (yl. constraints)!"arvojoukko- ja avainrajoite (constraints)!"olio- ja viite-eheys (integrity rules) o päivitysongelmat (mitä, miksi ja miten hoidetaan)!"insert, delete, modify (eli update) ja mahdolliset toimenpiteet B. Relaatiomallin käyttäytyminen - relaatioalgebran peruskäyttö o rivit (select) o sarakkeet (project) o taulujen yhdistäminen (join) o joukko-opilliset operaatiot o jakolasku ja muut ominaisuudet (mm. aggregaattifunktiot, ryhmittely jne.) C. SQL - historiakatsaus; käytännön työkalu o joukkokäsite (SQL) vs. relaatiokäsite (algebra) - kielen ominaisuudet: määrittely (DDL) ja käyttö (DML) o Data Definition Language!"käyttäjien,!"tietokantakaavan,!"taulujen ja!"rajoitusten määrittely ja hallinta huom! viiteavain ja restrict, set default, set null, cascade o Data Manipulation Language!"peruskyselyt!"taulujen liittäminen!"aggregaatit ja ryhmittely!"sisäkkäiset kyselyt ja joukkojen vertailu, exists-testaus 2

!"taulujen päivitys säännöt käyttö: insert, delete, update!"näkymät ja näkymien päivittäminen!"muut ominaisuudet (esim. lisärajoitukset assertions ) - harjoittelua! Tarvittaessa käytä Accessin tutoriaalia, opasteita ja Northwind-tietokantaa apuna. D. EER-mallista relaatiokaavaksi - hyvät, helpot säännöt ER- ja EER-rakenteiden muuttamiseksi relaatiokaavaksi o tutustu ER- ja EER-muunnossääntöihin ja esimerkkeihin o harjoittele o tehkää ryhmätyön suunnitelman muuttaminen relaatiokaavaksi - erityisesti EER-mallien muuntaminen relaatioksi on syytä omaksua kirjan esimerkkien, harjoitusten ja omien esimerkkien avulla, koska niissä on erilaisia vaihtoehtoja riippuen yli/aliluokan ominaisuuksista (esim. osittaisuus/täydellisyys) - korkean tason mallin muutaminen (tässä relaatiomalliksi) implementaatioksi on välttämätön jatkumo tietokantalähestymistavan haltuunottamiseksi. Ei riitä, että osaa abstrahoida ja mallintaa tietoa korkean tason käsitteillä, vaan on myös ymmärrettävä, miten vaatimukset muutetaan käytännön sovellukseksi o HUOM! Täytyy kuitenkin varoa, ettei tee korkean tason tietomalliin ominaisuuksia, jotka perustuvat tekniseen rajoituksisiin. Silloin malli ei kuvaa kohdetta vaan valitun toteutusvälineen (rajallisia) ominaisuuksia! Suunta on siis aina suunnitelmasta (käyttäjien vaatimuksista, tarpeista) tekniseen toteutukseen; käytäntö on sitten se, että korkean tason mallissa esitetyt vaatimukset tiedon hallinnalle täytyy toteuttaa jotenkin jollakin välineellä. E. Muita relaatiokieliä (tutustu) - tämä aihealue on pääosin tutustumisen arvoista lisälukemistoa, erityisesti QBE-kieleen liittyvä arvojoukkokalkyyli on hyödyllinen. QBE:hen tutustutaan myös demoissa. - kalkyylit (monikko ja arvojoukkokalkyyli) o tutustu erityisesti arvojoukkokalkyyliin (domain relation calculus)... o... ja sen toteutukseen QBE:hen esim. Accessissa. Tee harjoituksia. 3

Kertauskysymyksiä, osio II Seuraavat kysymykset pyrkivät liittymään aihealueeseen laajasti ja soveltavasti jaoteltuna kirjan rakenteen mukaan. Siten ne sopivat mietittäväksi demojen ja harjoitusten jälkeen. Kysymykset pyrkivät testaamaan käsitteiden ja aihealueiden tuntemista, joten niiden avulla voit myös kerrata kurssin sisältöä ennen tenttiä. Toki voit käyttää materiaalia myös omalla tavallasi. Kpl 7 Relaatioalgebra 1. Mikä on relaatio? Missä järjestyksessä instanssit (rivit, tuplat) ovat relaatiossa? 2. Mitkä ovat relaatiokannan eheyssäännöt (4 kpl) ja mitä ne tarkoittavat käytännössä? 3. Mikä on vierasavain (viiteavain)? 4. Mitä ovat relaatiotietokannan päivitysongelmat? Keksi esimerkkejä kuvaamaan eri tilanteita. Miten em. ongelmatilanteeet tulisi hoitaa? 5. Onko suoritusjärjestyksellä väliä relaatioalgebrassa? Miksi? 6. Mikä on karteesinen tulo ja mihin sitä tarvitaan? Puhdas karteesinen tulo on kovin raskas operaatio suuriin tauluihin. Mitä fiksuja tapoja on tehdä karteesinen tulo (liitos)? 7. Mikä on täydellinen joukko algebraoperaatioita? Miksi? 8. Tee kuvan 7.15 jakolaskut (a ja b) sivun 224 alalaidassa (myös kalvo nro 76) olevalla kaavalla välivaiheineen. 9. Miten rekursio voidaan käsitellä algebrassa? 10. Mitä lisää tuovat ulkoiset liitokset (OUTER JOIN ja OUTER UNION) algebraan? 11. Monissa tietokantaohjelmistoissa (myös Access) on automaattinen laskuri - ominaisuus, jolla on helppo identifioida relaation rivi toteutuksessa. Mitä on huomioitava seuraavassa toteutetussa tietokantataulussa: OPISKELIJA(LASKURI_ID, henkilötunnus, opiskelijanumero, nimi, koulutusohjelma, pääaine)? Olisiko parempia toteutusratkaisuja? Miksi? Mitä hyötyä automaattisesta laskurista on? 12. Tee kirjan (tai itseopiskelumateriaalin) tehtäviä siten, että peitä vastaus, tee oma versiosi ja vertaa tuloksia (kyselyt QUERY1-QUERY7) Kpl 8 SQL 13. Mitä datatyyppejä SQL-kielessä on? 14. Miten viiteavaimeen liittyvät relaatiotietokannan rajoitukset ja eheyssäännöt voidaan määritellä? 15. Miten kokonaista taulua tai kaavaa voidaan muuttaa SQL2-kielessä? Miten eheyssäännöt toimivat tässä tilanteessa? Miten tämä liittyy kolmitasoarkkitehtuuriin? 16. Vertaa relaatioalgebran taulu- ja joukkokäsityksiä SQL:n vastaaviin. 17. Vertaa uudelleennimeämistä relaatioalgebrassa ja SQL:ssä. 18. Miten WHERE lauseella toimii useamman taulun kanssa? Tee kysely: Hae kaikki sellaiset projektit (projektinumerot), joista vastaavan osaston konttori on Denverissä. 19. Miten toimivat päivityskomennot (insert, delete, update) ja eheyssäännöt? a. Kirjassa s. 276 on esimerkki, jossa luodaan tilapäisesti Osastoinfo -taulu, johon Insert-komenolla lisätään osastojen henkilömäärä ja kokonaispalkka. Tämä taulu ei päivity automaattisesti, toisin kuin näkymä (virtuaalinen taulu). 4

20. Mihin käytetään näkymiä (view, virtuaalitauluja)? Milloin näkymää voidaan päivittää? Miten tämä liittyy kolmitasoarkkitehtuuriin? Miten kantataulu (base table) ja näkymä (view, virtual table) eroavat toisistaan? 21. Onko keinoja, millä tietokantakaavaan voisi tehdä lisärajoituksen, että alaisen palkka ei saa olla suurempi kuin hänen osastopäällikkönsä? 22. Tee kirjan (tai itseopiskelumateriaalin) tehtäviä siten, että peitä vastaus, tee oma versiosi ja vertaa tuloksia (kyselyt QUERY0-QUERY28) Kpl 9: ER- ja EER-to-relational-mapping 23. Miten heikko entiteetti kuvataan relaatiokaavassa? 24. Miten kolmannen asteen liittymä mallinnetaan? 25. Miten M:N ja 1:1 mallinnetaan? Entä liittymän attribuutit? Entä jos osallistuminen liittymään on osittainen, pakollinen tai niiden kombinaatio? 26. Selvitä eri vaihtoehdot yli-aliluokkien mallintamiseen osittaisuuden/pakollisuuden näkökulmasta. 27. Miten kategoria mallinnetaan? (Kpl 10 Itseopiskelun tukimateriaalia) 28. Luku 10 tarjoaa relaatiotietokannoista kiinnostuneille lisälukemistoa: Oracle ja Access esitellään yleisellä tasolla. Etenkin jos (relaatio)tietokantatutkimus kiinnostaa, niin osiosta saa viitteet muutamiin olennaisiin lähteisiin. 5

Harjoitustehtäviä ja vastauksia Tehtäviin löytyy vastaukset kurssin www-sivulta pdf-tiedostosta. HUOM! Kyselytehtäviin voi olla useita oikeita vastauksia (siis eri järjestyksessä tehtyjä ja eri tavalla ryhmiteltyjä komentoja, jotka päätyvät samaan lopputulokseen). 1. Esitä itsellesi SQL-kyselyn perusidea, eli osaset, joista SQL-kysely oppikirjan mukaan muodostuu. 2. Osoita (ei muodollista todistusta), että relaatioalgebran viisi primitiivioperaattoria (Valinta, Projektio, Unioni, Erotus, Karteesinen tulo) todella ovat primitiivisiä, eli mitään niistä ei pystytä ilmaisemaan muiden neljän avulla. 3. Tarkastellaan kääntöpuolella (kirja kuva 7.19, s. 236) esitettyyn lentoyhtiön paikanvarausjärjestelmän relaatiokaavaan tehtävää päivitystä, jossa syötetään varaus tietylle lennolle (flight), sen tietylle etapille (flight leg) ja vieläpä tiettynä ajankohtana (date). a) Mitä relaatiotietokannan sääntöjä (rajoituksia, constraint) kyseisessä päivityksessä on tarkistettava ja minkä tyyppisiä nämä säännöt ovat? b) Etsi kaikki kaavassa tarvittavat viite-eheyssäännöt. 4. a) SQL:ssä on mahdollista määritellä tietokannnan viite-eheyksiin liittyvät toiminnot neljällä eri tavalla (reject, cascade, set null, set default). Miten määrittely (yleisellä tasolla) tapahtuu SQL:ssä ja mitä eri vaihtoehdot tarkoittavat? b) Oletetaan, että seuraavat päivitysoperaatiot tehdään kukin suoraan (toisistaan riippumatta; esim. (a)-kohdan lisäystä ei huomioida kohdissa (b)-(g), jne.) oppikirjan COMPANYtietokantaan (kuva 7.6 s. 205, ks. tehtäväpaperin kääntöpuoli). Selvitä kunkin operaation yhteydessä tapahtuvat tietokannan eheyssääntöjä koskevat rikkomukset. Ehdota sopivia toimenpiteitä rikkomusten välttämiseksi. (a) Lisää Employee-relaatioon tupla < 'Robert', 'F', 'Scott', 943775543', '21-jun-42', '2365 Newcastle Rd, Bellaire, TX, M, 58000, '888665555', 1 >. (b) Lisää PROJECT-relaatioon monikko < ProductA, 4, Bellaire, 2>. 6

(c) Lisää Dependent-relaatioon tupla < '453453453', 'John', M, '12-dec-60', 'SPOUSE' >. (d) Poista Works_On -relaatiosta tuplat joiden ESSN = '333445555'. (e) Poista DEPARTMENT-relaatiosta monikko, jossa DNAME = Research. (f) Muuta WORKS_ON-relaation siihen monikkoon, jossa ESSN = 999887777 ja PNO =10, attribuutin HOURS arvoksi 5.0. (g) Muuta Department-relaation tuplan, jossa DNUMBER = 5 kenttiin MGRSSN ja MGRSTARTDATE arvot '123456789' ja '01-oct-88'. 5. Tee seuraavat kyselyt relaatioalgebralla COMPANY-tietokantaan (a) Hae niiden osastolla 4 työskentelevien työntekijöiden nimet, jotka työskentelevät viikottain 20 tuntia tai enemmän 'Newbenefits' -projektissa. (b) Listaa isä-poika ja äiti-tytär suhteessa olevien työntekijöiden ja omaisten nimet. (c) Listaa jokaisesta projektista sen nimi ja siihen käytetty keskimääräinen viikottainen työaika. (d) Tee kysely joka hakee niiden työntekijöiden nimet ja osoitteet, joiden osastolla ei ole toimipistettä Bellairessa, mutta jotka silti työskentelevät Bellairessa sijaitsevassa projektissa. 6. Kirjoita seuraavat COMPANY-tietokantaan kohdistuvat kyselyt relaatioalgebralla: (a) Etsi niiden työntekijöiden nimet, jotka eivät työskentele missään projektissa. (b) Etsi kaikki isä-poika-parit, missä isä on työntekijä ja poika huollettava (dependent). Tulokseen otetaan kummankin nimet. 7. Demonstroi relaatioalgebran Jakolasku -operaation (division) hyödyllisyyttä käyttäen esimerkkinä Company-tietokantaan kohdistettavaa kyselyä: Etsi niiden työntekijöiden nimet, jotka työskentelevät jokaisessa Administration -osaston projektissa. Esitä myös myös välitulosten relaatiokaavat ja selitä mitä tuplia ne sisältävät (ei tarvitse kirjoittaa jokaista), kun operaatio kohdistetaan oppikirjan kuvan 7.6. esittämään Company tietokannan instanssiin. 7

8.a) EER-to-relational mapping harjoitus. Muunna YLIOPISTO-tietokanta (s. 84, kuva 4.7) relaatiokaavaksi (katso liite) b) Lisäharjoituksena kannattaa tehdä kuvan 4.8 AJONEUVO-rekisterin muuntaminen relaatiokaavaksi (katso liite) 9. Kirjoita oppikirjan oppien mukaan sopivat SQL:n DDL-lauseet kirjastotietokannan (kirja ss. 238, kuva 7.20) relaatioiden määrittelemiseksi. BOOK BookId, Title, PublisherName BOOK_AUTHORS BookId, AuthorName PUBLISHER Name, Address, Phone BOOK_LOANS BookId, BranchId, CardNo, DateOut, DueDate LIBRARY_BRANCH BranchId, BranchName Address BOOK_COPIES BookId, BranchId, No_Of_Copies BORROWER CardNo, Name, Address, Phone 8

10. (7.23) Pohdi KIRJASTO relaatiokaavaa (Figure 7.20), jossa esitetään kirjojen, lainaajien ja lainojen tietojenhallintaa. Kirjoita seuraavat kyselyt relaatioalgebralla KIRJASTO-tietokantaan: a. How many copies of the book titled The Lost Tribe are owned by the library branch whose name is "Sharpstown"? b. How many copies of the book titled The Lost Tribe are owned by each library branch? c. Retrieve the names of all borrowers who do not have any books checked out. d. For each book that is loaned out from the "Sharpstown" branch and whose DueDate is today, retrieve the book title, the borrower's name, and the borrower's address. e. For each library branch, retrieve the branch name and the total number of books loaned out from that branch. f. Retrieve the names, addresses, and number of books checked out for all borrowers who have more than five books checked out. g. For each book authored (or co-authored) by "Stephen King", retrieve the title and the number of copies owned by the library branch whose name is "Central". 11. (8.11) Kirjoita tehtävän 10 kyselyt SQL-kielellä KIRJASTO-tietokantaan: Kysely voidaan kirjoittaa useammalla tavalla. Alla on esitetty joissakin tapauksissa pari vaihtoehtoa. 9

10