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

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

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

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

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

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

Majoittuminen? X.= 2p muut vaihtoehdot 0 p. e) Montako riviä on taulussa Hotelli. tunnus=hotelli

Relaatiomalli ja -tietokanta

Helsingin yliopisto, TKTL Tietokantojen perusteet, k 2000 Tietokannan suunnittelusta Harri Laine 1

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

Relaatioalgebra. Kyselyt:

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

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

Relaatiotietokantojen perusteista. Harri Laine Helsingin yliopisto

SELECT-lauseen perusmuoto

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

TIEDONHALLINNAN PERUSTEET - SYKSY 2013

Tietokannat II -kurssin harjoitustyö

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

Tietokantasuunnittelun pääperiaatteena on tiedon toiston välttäminen. Tiedon toistumiseen liittyy monenlaisia ongelmia.

Opintopiiritehtävä 3: Verkkohuutokauppa

SQL - STRUCTURED QUERY LANGUAGE

CSE-A1200 Tietokannat

HELIA 1 (17) Outi Virkki Tiedonhallinta

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

Tietokantasuunnittelun pääperiaatteena on tiedon toiston välttäminen. Tiedon toistumiseen liittyy monenlaisia ongelmia

Relaation tyhjyyden testaaminen

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

Helsingin yliopisto, TKTL Tietokantojen perusteet, k 2004 Tietokannan suunnittelusta. Harri Laine 1

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

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

Tietokantojen perusteet k2004helsingin yliopisto/tktl Tietokantojen perusteet, k 2006 relaatioalgebra. Harri Laine 1

Yhdiste, leikkaus, erotus ym.

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

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

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

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

Tietokantojen suunnittelu, relaatiokantojen perusteita

HELIA 1 (14) Outi Virkki Tiedonhallinta

HELIA 1 (12) Outi Virkki Tiedonhallinta

Nimi: Henkilötunnus: {id} {+id}

CS-A1150 Tietokannat CSE-A1150 Tietokannat / 29

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

Kyselyn yleisrakenne:

Opettajana Mika Sorsa, HAMK:n ammatillisen opettajakoulutuksen opetusharjoittelija

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

NORMALISOINTI TIETOJEN MALLINNUS JOUNI HUOTARI & ARI HOVI

TIETOKANTOJEN PERUSTEET MARKKU SUNI

Tietokantojen perusteet, syksy 1999 SQL- osa Harri Laine 1. SQL-yhteenvetofunktiot. SQL-yhteenvetofunktiot

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

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

HELIA SQL-harjoituksia 1(1) atk72d Versiopvm:

Helsingin yliopisto, tktl DO Tietokantojen perusteet, kevät 2000 SQL- osa Harri Laine 1. SQL-yhteenvetofunktiot. SQL-yhteenvetofunktiot

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

CSE-A1200 Tietokannat

HELIA 1 (21) Outi Virkki Tietokantasuunnittelu

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

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

Tietokantakurssit / TKTL

OUTER JOIN se vanha kunnon kaveri

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

Lisätään avainarvo 6, joka mahtuu lehtitasolle:

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

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

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

CS-A1150 Tietokannat CS-A1150 Tietokannat / 39

1. Tarkastellaan seuraavaa kaaviota

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

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

Liitokset - haut useaan tauluun

SQL:N PERUSTEET MARKKU SUNI

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

HELIA 1 (17) Outi Virkki Tiedonhallinta

Helsingin yliopisto, tktl DO Tietokantojen perusteet, kevät 2000 SQL- osa Harri Laine 1. SQL-yhteenvetofunktiot. SQL-yhteenvetofunktiot

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

Virta_Latausraportti - Tarkistukset

Tietokantasuunnittelun pääperiaatteena on tiedon toiston välttäminen. Tiedon toistumiseen liittyy monenlaisia ongelmia.

CS-A1150 Tietokannat CSE-A1150 Tietokannat / 32

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas

HELIA 1 (11) Outi Virkki Tiedonhallinta

Koostefunktiot. Viisi standardifunktiota: Esim. montako henkilöä on henkilo-taulussa:

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

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

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

CS-A1150 Tietokannat CSE-A1150 Tietokannat / 39

TIETOKANNAN NORMALISOINTI JA NORMAALIMUODOT

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

HELIA 1 (13) Outi Virkki Tietokantasuunnittelu

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

Lisätään avainarvo 1, joka mahtuu lehtitasolle:

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

Relaatioista TIETOJENKÄSITTELYTIETEIDEN LAITOS, JUHA IISAKKA 11-14

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

TIEDONHALLINNAN PERUSTEET - SYKSY 2013

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

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

VINKKI: Katso Kentät Muistioon -painikkeella, mikä on taulukon nimen oikea kirjoitusasu.

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

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

HELIA 1 (15) Outi Virkki Tiedonhallinta

Transkriptio:

Helsingin yliopisto, Tietojenkäsittelytieteen laitos Tietokantojen perusteet, 3.5.2007, H.Laine Kirjoita kuhunkin erilliseen vastauspaperiin kurssin nimi, oma nimesi, syntymäaikasi ja nimikirjoituksesi Anna vastauksesi kahdella eri konseptilla, toisella tehtävät 1 ja 2 ja toisella tehtävät 3 ja 4. 1. Kulunvalvontajärjestelmä perustuu henkilökohtaisiin avainkortteihin. Kortti täytyy esittää kontrolloitavaksi aina kun henkilö haluaa kulkea mistä tahansa portista. Jokainen kontrollikerta kirjataan kontrollitietueena tauluun kontrolli. Jos porttia ei avata, kirjataan myös syy. Syy voi olla esimerkiksi puutuva kulkuoikeus tai epäonnistunut korttinumeron luku. Lupia voivat myöntää vain taulussa myöntöoikeus määritellyt henkilöt. Merkintä A->B tarkoittaa, että sarake A on tauluun B viittaava viiteavain. Pääavain on alleviivattu. Järjestelmä käyttää seuraavia tauluja: henkilö (henkilötunnus, nimi, osoite, tehtävänimike, työsuhteenalkamisaika, työsuhteenpäättymisaika), 200 riviä avainkortti (korttinumero, hankintaaika, henkilötunnus->henkilö, voimassaalkaen, voimassaasti), 300 riviä kontrolli (porttitunnus->portti, tapahtumaaika, korttinumero, aukesiko, syy), 600000 riviä, noin vuoden ajalta portti (porttitunnus, sijoituspaikka), 20 riviä kulkulupa (lupanumero, porttitunnus->portti, korttinumero->avainkortti, oikeusalkoi, oikeuspäättyy, lupatyyppi, myöntäjä->henkilö), 2000 riviä myöntöoikeus(porttitunnus->portti, myöntäjä->henkilö), 60 riviä a) Onko erotus avainkortti henkilö mahdollinen, ja jos on, niin montako riviä sisältyy operaation tulosrelaatioon. Ei ole mahdollinen. Relaatiot eivät ole samarakenteisia. (On mahdollinen, ja tuloksena avainkortti-relaatio: 1p, On mahdollinen, mutta tulos on tyhjä: piste vain, jos perustelu osoittaa edes jonkinlaista tietoa asiasta) b) Kumpi tulosrelaatio on rivimäärältään suurempi π korttinumero (kulkulupa) vai π korttinumero, porttitunnus (kulkulupa)? Perustele lyhyesti. Jälkimmäinen on isompi. Koska kortteja on vain 300, täytyy samalle kortille olla lupia usealle portille. (Periaattessa voisi tietenkin olla jokaisella kortilla vain yhdelle portille useita lyhytaikaisia lupia, jolloin taulut olisivat yhtä suuret vain tallä perustelulla yhtä suuret vaihtoehdosta saa täydet pisteet, muuten 1p) c) Montako riviä on liitoksen kontrolli kontrolli.korttinumero=avainkortti.korttinumero avainkortti tulostaulussa? Lähes 600000 (korttinumero voi kontrolli-taulussa olla tyhjä) (600000 antaa myös täydet pisteet) d) Taulun kontrolli avaimena on yhdistelmä porttitunnus,tapahtumaaika. Kelpaisiko yhdistelmä korttinumero, tapahtumaaika myös avaimeksi? Perustele lyhyesti. Ei kelpaa koska korttinumero voi olla tyhjä ( luku epäonnistuu kuvaustekstissä). Jos väitetään kelpaavan koska sama kortti ei voi olla samaan aikaan usealla portilla saa 1 pisteen. e) Taulusta myöntöoikeus poistetaan rivi (porttitunnus:12, myöntäjä: 12345). Mitä muita muutoksia kantaan pitää tehdä viite-eheyden säilyttämiseksi. (10p) Ei mitään, tähän tauluun ei viitata.

Arvostelu periaatteessa 0 tai 2 pistettä /kohta. 2. Anna tehtävän 1 tietokantaan liittyen seuraavat SQL-kyselyt. Määrittele kyselyiden tuloksille tarkoituksenmukainen järjestys. a) Laadi luettelo porteista, joille ei ole annettu lainkaan kulkulupia. select portttitunnus, sijainti from portti where porttitunnus not in (select porttitunnus from kulkulupa) order by porttitunnus; = null : -2p, liitos ja erisuuruus: -3p; järjestys puuttuu -1p b) Listaa kaikki henkilöt, joille Matti Meikäläinen on myöntänyt kulkuluvan porttiin 18. select distinct saaja.nimi, saaja.henkilötunnus from henkilö saaja,avainkortti,kulkulupa,henkilö antaja where saaja.henkilötunnus=avainkortti.henkilötunnus and antaja.nimi= Matti Meikäläinen and kulkulupa.korttinumero=avainkortti.korttinumero and kulkulupa.porttinumero=18 and kulkulupa.myöntäjä=antaja.henkilötunnus order by saaja.nimi; distinct puuttuu -1 kytkentöjä puuttuu (1-2) p taulu henkilö ei ole kahdesti -1p c) Listaa kultakin portilta porttitunnus, sijaintipaikka ja voimassaolevien kulkulupien määrä. select porttitunnus,sijaintipaikka, count(*) from kulkulupa where sysdate >= oikeusalkoi and (oikeuspäättyy is null or sysdate<oikeuspäättyy) group by porttitunnus, sijainti order by porttitunnus (voidaan myös olettaa, että päättymisaika on aina annettu, jolloin tyhjyyttä ei tarvitse testata) d) Kenellä on eniten voimassaolevia kulkulupia ja kuinka monta? (16p) Voidaan olettaa, että kullakin on vain yksi voimassaoleva kortti. Voidaan myös olettaa, että kulkulupia myönnetään vain kortin voimassaoloajaksi siten, että kortin voimassaolon lakatessa lakkautetaan myös siihen perustuvat luvat. select nimi, henkilötunnus,count(*) from henkilö,avainkortti,kulkulupa where henkilö.henkilötunnus=avainkortti.henkilötunnus and kulkulupa.korttinumero=avainkortti.korttinumero and sysdate >= oikeusalkoi and (oikeuspäättyy is null or sysdate<oikeuspäättyy) group by nimi, henkilötunnus

having count(*)>= all (select count(*) from kulkulupa where sysdate >= oikeusalkoi and (oikeuspäättyy is null or sysdate<oikeuspäättyy) group by korttinumero) order by nimi: Voimassaolotestin virhe sakotetaan vain kerran Muutenkin yritetään sakottaa samasta virheestä vain kerran., esim järjestysten puute yhteensä max 2p. max(count()) rakenne -3p Tämän saa ratkaista, myös näkymiä käyttäen. Tehtävät 3 ja4 kääntöpuolella (eri vastauspaperille) 3. Seuraavassa kaaviossa on kuvattu yksinkertaisen projektihallintajärjestelmän tietosisältöä. Esitä tietosisältöä vastaava relaatiotietokannan kaavio käyttäen tehtäväpaperin alussa käytettyä esitystapaa. Merkitse avaimet ja viiteavaimet. (9p) osasto(osastonumero,nimi) henkilö(henkilönumero,nimi,puhelin,kotiosasto->osasto) erityisosaamisalue(henkilönumero->henkilö, erityisosaamisalue) projekti(projektitunnus,nimi,vastuussa->osasto)

tehtävä(tehtävänro,nimi, työmääräarvio, projektitunnus->projekti) sijoitus(henkilönumero->henkilö, tehtävänumero->tehtävä, alku_pvm, loppu_pvm,viikkotunnit) järjestys(edeltäjä->tehtävä, seuraaja->tehtävä) Kohdetyyppejä vastaavat taulut ja yksiarvoiset attribuutit oikein 3p em.taulujen paitsi sijoitus avaimet oikein 1p sijoitu: avain oikein 1p erityiosaamisalue 1p edeltäjä-seuraaja oikein 2p muut yhteydet ok,1p Muitakin toimivia ratkaisuja on. 4. Hotelliketjun varausjärjestelmää suunniteltaessa on päädytty seuraavista sarakkeista muodostuvaan asiakkaiden varauksia kirjaavaan tauluun varaus(varausnumero, saapumis_pvm, yöpymis_vuorokausia, varaajan_nimi, varaajan_luottokortin_nro, henkilöiden_lkm, huonetyyppi, hotellin_tunnus, hotellin_nimi, hotellin_osoite) a) Mitä tarkoittaisi käytännössä funktionaalinen riippuvuus hotellin_tunnus -> saapumis_pvm Kuhunkin hotelliin voi tehdä vain samana (yhtenä) päivänä alkavia varauksia. (tai samansisältöiseksi tulkittava vastaus) 3p; jos jotain sinne päin, mutta ei selkeästi 2p, hotellin tunnus määrää funktionaalisesti saapumispäivän: 1p b) Esitä funktionaalisena riippuvuutena sääntö samalla luottokortilla voidaan varmistaa vain yksi varaus samalle saapumispäivälle. varaajan_luottokortin_nro, saapumis_pvm -> varausnumero 3p: jos oikeat attribuutit, mutta väärä järjestys 2p, jos vain osa attribuuteista 1p, c) Oletetaan, että taulussa ovat voimassa riippuvuudet: varausnumero -> saapumis_pvm varausnumero -> yöpymis_vuorokausia varausnumero -> varaajan_luottokortin_nro varausnumero -> henkilöiden_lkm varausnumero -> hotellin_tunnus varausnumero -> huonetyyppi varaajan_luottokortin_nro -> varaajan_nimi hotellin_tunnus -> hotellin_nimi hotellin_tunnus -> hotellin_osoite Onko taulu Boyce Codd normaalimuodossa. Perustele vastauksesi. (10p) Ei ole. BCNF:ssa jokaisen riippuvuuden määrääjän pitää sisältää taulun avain. Tässä avain sisältää sarakkeen varausnumero ja kolmen viimeisen riippuvuuden määrääjät eivät sisällä tätä. 4p (pelkkä ei ole 2p) Tehtävät 1-2 kääntöpuolella (eri vastauspaperille)

Anna kurssipalautetta: https://ilmo.cs.helsinki.fi/kurssit/servlet/valinta.