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



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

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

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

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

Liitokset - haut useaan tauluun

SELECT-lauseen perusmuoto

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

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

OUTER JOIN se vanha kunnon kaveri

Relaatiotietokantojen perusteista. Harri Laine Helsingin yliopisto

Kyselyn yleisrakenne:

SQL - STRUCTURED QUERY LANGUAGE

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

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.

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

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

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

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

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

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

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

NORMALISOINTI TIETOJEN MALLINNUS JOUNI HUOTARI & ARI HOVI

Tietokantojen suunnittelu, relaatiokantojen perusteita

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas

Relaation tyhjyyden testaaminen

ETELÄ-AMERIKAN PUNAVIINEJÄ

Opintopiiritehtävä 3: Verkkohuutokauppa

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

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

Tällä viikolla. Kotitehtävien tarkistus Upotettu SQL Indeksi-harjoitus täydennetään pelifirman tietokantamallia SQL-tehtäviä

Tietokannat II -kurssin harjoitustyö

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

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

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

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

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

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

Yhdiste, leikkaus, erotus ym.

CSE-A1200 Tietokannat

HELIA 1 (14) Outi Virkki Tiedonhallinta

KUTSU Vuoden Viinit 2016 kilpailuun

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

CSE-A1200 Tietokannat

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

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

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

CSE-A1200 Tietokannat

TIETOKANTOJEN PERUSTEET MARKKU SUNI

HELIA SQL-harjoituksia 1(1) atk72d Versiopvm:

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

TIEDONHALLINNAN PERUSTEET - SYKSY 2013

(6) 0,75 litran pullo South Eastern Australian ala-alue

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

Käsiteanalyysi prosessina ja tarveanalyysi

Kuva 7.2 vastaustaulu harjoitukseen 7.2

17 BUDJETOINTI. Asiakaskohtainen Budjetti Ylläpito-ohjelma. Dafo Versio 10 BUDJETOINTI. Käyttöohje. BudgCust Yleistä

KÄSITEANALYYSI PROSESSINA JA TARVEANALYYSI

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

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

Argentiinanviini-ilta Olli Olli Kokkonen Heikki Puolakka

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

SQL:N PERUSTEET MARKKU SUNI

Opettajana Mika Sorsa, HAMK:n ammatillisen opettajakoulutuksen opetusharjoittelija

2. Käsiteanalyysi ja relaatiomalli

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

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

Relaatioista TIETOJENKÄSITTELYTIETEIDEN LAITOS, JUHA IISAKKA 11-14

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

TIETOKANTOJEN PERUSTEET MARKKU SUNI

Opiskeluoikeuksien maaran tiedonkeruu

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

Argentiinalaiset punaviinit Lambropoulos Paavo

b) Määritä myös seuraavat joukot ja anna kussakin tapauksessa lyhyt sanallinen perustelu.

HELIA 1 (17) Outi Virkki Tiedonhallinta

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

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

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

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

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

Relaatioalgebra. Kyselyt:

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

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

3. Käsiteanalyysi ja käsitekaavio

Ohjelmoinnin jatkokurssi, kurssikoe

TIETOKANTOJEN PERUSTEET MARKKU SUNI

Testidatan generointi

HELIA 1 (17) Outi Virkki Tiedonhallinta

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

(a) L on listan tunnussolmu, joten se ei voi olla null. Algoritmi lisäämiselle loppuun:

Vino Nobile di Montepulciano Brunello di Montalcino

Ohjelmointi 1 / 2009 syksy Tentti / 18.12

Vain valitut kentät: SELECT Päivämäärä, Laskutusnimi, [ale mk], Loppusumma FROM Laskuotsikot

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

Action Request System

Normalisointi. Jouni Huotari & Ari Hovi. kirjan Hovi, Huotari, Lahdenmäki: Tietokantojen suunnittelu & indeksointi, Docendo (2003, 2005) luku 5

CS-A1150 Tietokannat CSE-A1150 Tietokannat / 29

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

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

Transkriptio:

Helsingin yliopisto, Tietojenkäsittelytieteen laitos Tietokantojen perusteet, kurssikoe 4.3.2015, H. Laine Tehtävien mukana jaetaan sql-syntaksin tiivistelmä. Kirjoita kuhunkin erilliseen vastauspaperiin kurssin nimi, tentin päiväys, oma nimesi, syntymäaikasi ja nimikirjoituksesi. 1. Oletko antanut kurssipalautetta tai annatko sitä 6.3.2015 mennessä {osoite on https://ilmo.cs.helsinki.fi/kurssit/servlet/valinta} (1p) a) Kyllä (oikein) b) En (väärin) Kohdasta (a) annettiin kaikille piste vaikka yli puolet jätti palautteen antamatta. Kohdan (b) valinneet toimivat todennäköisesti vastauksensa mukaisesti, joten siitä piste. 2 Tarkastellaan viiniharrastajayhteisön tietokantaa. Tietokantaan on koottu tietoja viineistä, niiden julkaistuista arvosteluista ja yhteisön jäsenten omista arvioista. Taulussa Rypäle on tietoja rypälelajeista. Taulussa Koostumus kerrotaan, mitä rypälelajeja viineissä on käytetty. Taulu Viini esittelee viinin vuosikerran. Taulu tarha esittelee viinitarhat. Taulu Lista esittelee ulkopuoliset arviointikokoelmat. Taulu Arvio pitää sisällään ulkopuolisia arvioita viinistä. Näissä viineille on annettu pisteitä asteikolla 0-100. Taulussa Maistelu esitetään yhteisön jäsenten omia arvioita. Yhteisön jäsenten käyttämät laatumääreet on lueteltu taulussa Asteikko. Arvoja on kuusi huonosta erinomaiseen (tunnukset 1-6). Nuoli kaaviossa ( ) ilmaisee viiteavaimen ja sen kohteen, alleviivaus pääavaimen. Rypäle(RypäleID, RypäleenNimi, Tietoa) 40 riviä Viini(ViiniID, ViiniMerkki, Maa, Alue, TarhaID ViiniTarha, Väri, Tyyppi, Vuosikerta, Hinta, Kuvailu) 350 riviä Koostumus(ViiniID Viini, RypäleID Rypäle) 1000 riviä Viinitarha(TarhaID, Nimi, Alue, Maa) 130 riviä Lista(ListausID, ListanNimi, Arvioijataho) 5 riviä Arvio(ViiniID Viini, ListaID Lista, Arviointivuosi, Pisteet, Kommentti) 1300 riviä Jäsen(JäsenID, Nimi) 20 riviä Asteikko(LuokkaNro, Selite) 6 riviä Maistelu(MaisteluID, Maistaja Jäsen, ViiniID Viini, HankintaPvm, MaistoPvm, Arviointitilanne, Arvio Asteikko, Kommentti) 2000 riviä a) Taululla Maistelu on keinoavain MaisteluID. Mitä sarakeyhdistelmää voisi käyttää luonnollisena avaimena taululle? Olettaen, että maistaja voi samana päivänä kirjata samasta viinistä vain yhden arvion, olisi avain Maistaja, ViiniID, MaistoPvm Muitakin vaihtoehtoja on hyväksytty, jos ne on perusteltu. b) Mitä arvoja on taulun Maistelu sarakkeessa Arvio? Asteikon sarakkeen LuokkaNro arvoja eli 1-6 c) Miten suhtautuvat toisiinsa projektioiden ViiniID (Viini) ja viiniid (Maistelu) tulosten rivimäärät? ViiniID (Viini) >= viiniid (Maistelu), Yhtäsuuret 1p d) Montako riviä on liitoksen Viini Viini.ViiniID=Maistelu.ViiniID Maistelu tulostaulussa? 2000, sillä jokaiselle maistelulle löytyy yksi viini e) Millä ehdoin viinitarha Black Pearl of Caribean voidaan poistaa tietokannasta. Taulussa viini ei ole viinejä tältä tarhalta. (10p) 3. Anna SQL-kyselyt seuraaviin tietotarpeisiin

a) Tuota lista espanjalaisista viineistä (merkki, vuosikerta ja hinta), jotka jäsen Pekka on tänä vuonna arvioinut erinomaisiksi. select distinct ViiniMerkki, Vuosikerta, Hinta from viini, maistelu, jäsen where viini.viiniid=maistelu.viiniid and maistelu.maistaja=jäsen.jäsenid and maistelu.maistopvm>= date 2015-01-01 and maistelu.arvio=6 and viini.maa= Espanja and jäsen.nimi= Pekka ; Tänä vuonna testauksen puuttumisesta 1p Liitosehtojen puute, muut rakenteelliset virheet 1-2p Samojen rivien toistuminen 1p b) Kuinka monta valkoviinimerkkiä Alsacen alueen (Ranskassa) kultakin viinitarhalta on tietokannassa. Listaa viinitarhat viinimerkkien lukumäärän mukaan laskevassa järjestyksessä. select Viinitarha.Tarhaid, Viinitarha.nimi, count(distinct viinimerkki) as määrä from ViiniTarha left outer join Viini on Viinitarha.TarhaID=Viini.TarhaID where Viinitarha.Maa= Ranska and Viinitarha.Alue= Alsace and viini.tyyppi= valkoviini group by Viinitarha.Tarhaid, Viinitarha.nimi order by määrä desc valkoviinin voi valita myös värin perusteella Tarhat, joilta ei ole viinejä pitäisi huomioida Kysyttiin viinimerkkejä ei rivejä c) Listaa espanjalaiset vuoden 2010 punaviinit, jotka ovat jossain ulkopuolisessa arviossa saaneet yli 90 pistettä mutta joita kukaan jäsen ei ole arvioinut. select viiniid, ViiniMerkki, vuosikerta from viini where vuosikerta=2010 and tyyppi= punaviini and viini.maa= Espanja and viiniid in(select viiniid from arvio where pisteet>90) and viiniid not in (select ViiniID from maistelu) punaviinin voi valita myös värin perusteella Tyypillinen virhe oli tuottaa sama viini listaan moneen kertaan esim. viinin ja arvion liitoksen tuloksena.

d) Anna niiden viinien merkit, joissa on käytetty sekä Cabernet Sauvignon että Cabernet Franc rypäleitä. Edellä olevat nimet ovat rypälelajien nimiä. (16p) select distinct ViiniMerkki from viini where viiniid in (select viiniid from koostumus, rypäle where koostumus.rypäleid=rypäle.rypäleid and rypäleennimi= Cabernet Sauvignon ) and viiniid in (select viiniid from koostumus, rypäle where koostumus.rypäleid=rypäle.rypäleid and rypäleennimi= Cabernet Franc ) rypäleennimi= Cabernet Sauvignon and rypäleennimi= Cabernet Franc valintaehtona tuottaa tyhjän tuloksen, koska rivillä voi olla vain yksi arvo (2p). Ratkaisu rypäleennimi= Cabernet Sauvignon or rypäleennimi= Cabernet Franc ei sekään toimi, mutta antaa kuitenkin tuloksen. Katsottu olevan vähemmän väärin. (1p) 4. Seuraava kaavio kuvaa yksinkertaistettuna SQLTrainer-harjoittelujärjestelmän tietosisältöä. Määrittele tietosisällölle toteutus relaatiotietokannan tauluina. Käytä taulujen kuvaamiseen tehtävässä 2 käytettyä kaavion esitystapaa. Ilmaise kaaviossa avaimet ja viiteavaimet. (9p)

Kurssi(KurssiID,Nimi,AlkuPvm,TKID Tietokanta) Tehtäväryhmä(KurssiID Kurssi,TrNro,TrNimi,TehtäväLkm,Määräaika) Tietokanta(TkID,TkNimi,TkSkeema,TkKuvaus) Tehtävä(TehtäväID,Nimi,Teksti,Mallivastaus,Mallitulos,RivejaTuloksessa, Tehtävätyyppi, TKID Tietokanta) SisällytettyTehtävä(JärjestysNro,(KurssiID,TrNro) Tehtäväryhmä, TehtäväID Tehtävä) Vastaus((JärjestysNro, (KurssiID,TrNro) SisällytettyTehtävä, YritysNro, OpiskelijaID Opiskelija, VastausTeksti,OnkoHyväksytty) Opiskelija(OpiskelijaID,Nimi,OpNro,Salasana, ViimeinenKayttoPvm) TauluMukana(TmSääntöID,Taulunimi,KylläEi, TehtäväID Tehtävä) IlmausKyselyssä(IlmausSääntöID, Regexp,KylläEi, TehtäväID Tehtävä) Vastaustilanne((JärjestysNro, KurssiID,TrNro) SisällytettyTehtävä, OpiskelijaID Opiskelija, YritystenMäärä,MilloinHyväksytty) Osallistuminen (KurssiID Kurssi, OpiskelijaID Opiskelija) tai keinoavaimia käyttäen Kurssi(KurssiID,Nimi,AlkuPvm,TkID Tietokanta) Tehtäväryhmä(TrID,KurssiID Kurssi,TrNro,TrNimi,TehtäväLkm,Määräaika) Tietokanta(TkID,TkNimi,TkSkeema,TkKuvaus) Tehtävä(TehtäväID,Nimi,Teksti,Mallivastaus,Mallitulos,RivejaTuloksessa, Tehtävätyyppi, TKID Tietokanta) SisällytettyTehtävä(SisID, JärjestysNro, TrID Tehtäväryhmä, TehtäväID Tehtävä) Vastaus(VastID, SisID SisällytettyTehtävä, YritysNro, OpiskelijaID Opiskelija, VastausTeksti,OnkoHyväksytty) Opiskelija(OpiskelijaID,Nimi,OpNro,Salasana, ViimeinenKayttoPvm) TauluMukana(TmSääntöID,Taulunimi,KylläEi, TehtäväID Tehtävä) IlmausKyselyssä(IlmausSääntöID, Regexp,KylläEi, TehtäväID Tehtävä) Vastaustilanne(TilID, SisID SisällytettyTehtävä, OpiskelijaID Opiskelija, YritystenMäärä, MilloinHyväksytty) Osallistuminen (osid, KurssiID Kurssi, OpiskelijaID Opiskelija) Virheitä, joista sakotettiin: 1:N- yhteyksien toteutus (salmiakilla / ilman) M:N yhteyksien toteutus Avainten ja viiteavainten yhteensopivuus Avainten valinta (esim. tehtäväryhmän numero on kurssin sisäinen, jne.) Taulujen perusattribuuttien sijoittelu, muihin kuin omaan tauluun

5. Tarkastellaan tehtävän 2 taulua Viini(ViiniID, ViiniMerkki, Maa, Alue, TarhaID, Väri, Tyyppi, Vuosikerta, Hinta, Kuvailu) a) Mitä muita kuin sellaisia funktionaalisia riippuvuuksia taulussa esiintyy, joissa määrääjä on pääavain ViiniID? Tehtävässä 2 on kerrottu että taulun viini rivi kuvaa viinin vuosikertaa. Tästä voi suoraan johtaa riippuvuuksia. On selvää (esim. tehtävän 2 perusteella), että tarhaid maa tarhaid alue Riippuen siitä ovatko viinimerkit globaalisti vai vain tarhan sisällä yksikäsitteisiä pätee (TarhaID), Viinimerkki,vuosikerta ViiniID + kaikki muut sarakkeet (TarhaID), Viinimerkki väri (TarhaID), Viinimerkki tyyppi mahdollisesti Viinimerkki TarhaID Voisi hyvinkin olla: tyyppi väri max 3 b) Onko taululla vaihtoehtoinen avain tai avaimia? (TarhaID), Viinimerkki,vuosikerta on vaihtoehtoinen avain edellä annettujen riippuvuuksien perusteella. Jos taululla on vaihtoehtoinen avain, sen täytyy määrätä funktionaalisesti kaikki muut sarakkeet taulussa. Avainmäärittelyn ja riippuvuuksien tulisi olla yhdenmukaisia. kuvailu ei voi olla avain. Kuvailua laadittaessa pitäisi tietää kaikki muut kuvailut ja yrittää väkisin keksiä erilainen. Ei voi olla tiedon tarkoitus. max 2 c) Onko taulu Boyce-Codd normaalimuodossa? Perustele vastauksesi lyhyesti. (8p) Taulu ei ole Boyce-Codd normaalimuodossa koska tarhaid ei sisällä avainta. Pelkät yhden sana vastaukset ilman perusteluja antoivat korkeintaan pari pistettä. Tähän tehtävään tarvittiin perustelu. max 3 Tehtävät 1-3 kääntöpuolella.