CS-A1150 Tietokannat CSE-A1150 Tietokannat / 32

Samankaltaiset tiedostot
CS-A1150 Tietokannat CSE-A1150 Tietokannat / 29

CS-A1150 Tietokannat CSE-A1150 Tietokannat / 39

CSE-A1200 Tietokannat

CSE-A1200 Tietokannat

CS-A1150 Tietokannat CS-A1150 Tietokannat / 43

CS-A1150 Tietokannat CS-A1150 Tietokannat / 43

CSE-A1200 Tietokannat

CS-A1150 Tietokannat CS-A1150 Tietokannat / 51

CS-A1150 Tietokannat CS-A1150 Tietokannat / 39

CS-A1150 Tietokannat CS-A1150 Tietokannat / 44

CS-A1150 Tietokannat CS-A1150 Tietokannat / 51

CSE-A1200 Tietokannat

CS-A1150 Tietokannat CS-A1150 Tietokannat / 54

CSE-A1200 Tietokannat

CSE-A1200 Tietokannat

CS-A1150 Tietokannat CS-A1150 Tietokannat / 43

CS-A1150 Tietokannat CS-A1150 Tietokannat / 43

CS-A1150 Tietokannat CS-A1150 Tietokannat / 44

CS-A1150 Tietokannat CS-A1150 Tietokannat / 43

CS-A1150 Tietokannat CS-A1150 Tietokannat / 47

CSE-A1200 Tietokannat

CS-A1150 Tietokannat CS-A1150 Tietokannat / 35

CSE-A1200 Tietokannat

CSE-A1200 Tietokannat

CS-A1150 Tietokannat

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

CS-A1150 Tietokannat

CS-A1150 Tietokannat

CSE-A1200 Tietokannat

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

CS-A1150 Tietokannat CS-A1150 Tietokannat / 34

CS-A1150 Tietokannat CS-A1150 Tietokannat / 34

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

CSE-A1200 Tietokannat

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

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

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

CS-A1150 Tietokannat

Relaatiotietokantojen perusteista. Harri Laine Helsingin yliopisto

TIEDONHALLINNAN PERUSTEET - SYKSY 2013

HELIA 1 (17) Outi Virkki Tiedonhallinta

Relaatioalgebra. Kyselyt:

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

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

Kyselyn yleisrakenne:

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

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

HELIA 1 (14) Outi Virkki Tiedonhallinta

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

HAAGA-HELIA Heti-09 1 (14) ICT05: Tiedonhallinta ja Tietokannnat O.Virkki Transaktionkäsittely

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

SQL - STRUCTURED QUERY LANGUAGE

HELIA 1 (21) Outi Virkki Tietokantasuunnittelu

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas

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

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

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

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

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

Relaatioista TIETOJENKÄSITTELYTIETEIDEN LAITOS, JUHA IISAKKA 11-14

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

NORMALISOINTI TIETOJEN MALLINNUS JOUNI HUOTARI & ARI HOVI

TIETOKANNAN NORMALISOINTI JA NORMAALIMUODOT

HELIA 1 (14) Outi Virkki Tiedonhallinta

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

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

SELECT-lauseen perusmuoto

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

Tietokantakurssit / TKTL

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

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

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

OUTER JOIN se vanha kunnon kaveri

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

Relaatiomalli ja -tietokanta

Tietokannat II -kurssin harjoitustyö

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

TIEDONHALLINNAN PERUSTEET - SYKSY 2013

Ohjelmoinnin peruskurssi Y1

Liitokset - haut useaan tauluun

HELIA 1 (17) Outi Virkki Tiedonhallinta

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

ITKA204 Tietokannat ja tiedonhallinnan perusteet

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

Ohjelmoinnin peruskurssi Y1

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

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

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

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

18 LIITTYMÄT MUIHIN JÄRJESTELMIIN

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

D B. Kyselypuut ja ekvivalenssi

Ohjelmoinnin peruskurssi Y1

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

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

Opettajana Mika Sorsa, HAMK:n ammatillisen opettajakoulutuksen opetusharjoittelija

HELIA 1 (19) Outi Virkki Tietokantasuunnittelu

Tietokanta (database)

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

Ohjelmoinnin perusteet Y Python

Transkriptio:

CS-A1150 Tietokannat 15.5.2018 CSE-A1150 Tietokannat 15.5.2018 1 / 32

Kertausluento Tällä luennolla kerrataan lyhyesti tenttivaatimuksissa esitettyjä asioita ja samalla tarkastellaan sitä, mitä niistä voidaan kysyä tentissä. Huomaa kuitenkin, että kaikki kurssialueen asiat asiat kuuluvat tenttivaatimuksiin, jos ei ole erikseen mainittu, että ne eivät kuulu. Kysymyksiä voi olla myös erilaisia kuin mitä tässä on esitetty esimerkkeinä. Vierailuluennon (NoSQL-tietokannat) asiat eivät kuulu tenttivaatimuksiin. Tämän luennon kalvot eivät sovellu niillä mainittujen asioiden itseopiskeluun, koska asiat on esitetty niillä liian lyhyesti. Asiat on selitetty tarkemmin vastaavien luentojen kalvoissa. Voit luennon aikana lähettää kysymyksiä ja kommentteja myös sivulla http://presemo.aalto.fi/tietokannat CSE-A1150 Tietokannat 15.5.2018 2 / 32

Tärkeä käytännön asia Ensimmäiseen tenttiin ei tarvitse ilmoittautua erikseen, jos on ilmoittautunut kurssille. Rästitentteihin pitää ilmoittautua viimeistään viikko ennen tenttiä WebOodissa. Toukokuun tentin jälkeen on vielä kolme rästitenttiä, joissa keväällä 2018 tehty ja hyväksytty harjoitustyö sekä harjoitustehtävistä saatavat lisäpisteet ovat voimassa. Todennäköiset päivät ovat 6.9.2018, 26.10.2018 ja 22.2.2019. (Tarkista päivät, kun tiedot on julkaistu WebOodissa, sillä näihin voi vielä tulla muutoksia.) CSE-A1150 Tietokannat 15.5.2018 3 / 32

Mitä tämän kurssin jälkeen? CS-C3170 Web Software Development Ei varsinaisesti tietokantakurssi, mutta kurssilla tehdään harjoitustyönä web-ohjelma, joka käyttää tietokantaa. Harjoitustyössä käytetään Django-kehitysympäristöä. CS-E4640 Big Data Platforms Kurssi sisältää lisätietoa NoSQL-tietokannoista Kurssin jatko syksyn 2018 jälkeen vielä epävarma Muita kursseja, kun alan professoritilanne CS-laitoksella vakiintuu. CSE-A1150 Tietokannat 15.5.2018 4 / 32

Esimerkkitietokanta Tämän luennon esimerkit käsittelevät aikaisempien luentojen esimerkkitietokantaa, joka koostuu seuraavista relaatioista Customers(custNo, name, born, bonus, address, email) Products(number, prodname, description, price, manufid) Manufacturers(ID, manufname, phone) Orders(orderNo, deliver, status, custno) BelongsTo(orderNo, productno, count) CSE-A1150 Tietokannat 15.5.2018 5 / 32

Esimerkkitenttikysymyksiä tietokannoista ja tietokannan hallintajärjestelmästä yleisesti Mitä etuja tietokannan hallintajärjestelmä tarjoaa siihen verrattuna, että dataa säilytettäisiin tavallisissa tekstitiedostoissa. Tietokannan hallintajärjestelmän osat ja niiden tehtävät. CSE-A1150 Tietokannat 15.5.2018 6 / 32

ER-mallinnus ER-kaavio on graafinen tapa tietokannan mallintamiseen. Esimerkki name phone Manufacturers name number ID deliver Made by Belongs to Products description price Orders count name custno orderno status Ordered by Customers born bonus address email CSE-A1150 Tietokannat 15.5.2018 7 / 32

Heikot yksilöjoukot ER-kaavioissa Yksilöjoukkoa sanotaan heikoksi (weak entity set), jos kaikki tai osa sen avainattribuuteista kuuluu toiseen yksilöjoukkoon size color name number Versions Version of Products description price CSE-A1150 Tietokannat 15.5.2018 8 / 32

Mahdollisia tenttikysymyksiä ER-kaavioista Laadi ER-kaavio annettua kuvausta vastaavaan tilanteeseen. Muunna annettu ER-kaavio relaatiokaavioiksi. Vastaa annetusta ER-kaaviosta esitettyihin kysymyksiin. (Esim. onko tämän kaavion perusteella mahdollista, että...?) CSE-A1150 Tietokannat 15.5.2018 9 / 32

Tyypillisiä virheitä ER-kaavioita koskevissa tenttivastauksissa ER-kaaviossa yksilöjoukoilla on ylimääräisiä attribuutteja, esimerkiksi suhteen kautta tulevia tietoja. Kaksi yksilöjoukkoa on yhdistetty suoraan toisiinsa ilman, että niiden välissä on suhde. Suhteella on avainattribuutti. (Tällöin pitää käyttää suhteen sijasta yksilöjoukkoa.) Yksilöjoukkoa, jonka avainattribuuteista osa tulee toisesta yksilöjoukosta, ei ole merkitty heikoksi yksilöjoukoksi ja / tai näiden kahden yksilöjoukon välistä suhdetta ei ole merkitty kaksinkertaisella vinoneliöllä. Suhteen valitsevuutta ei ole merkitty oikein (nuolia puuttuu tai on liikaa tai ne ovat vääränlaisia tai nuolet on piirretty viivan väärään päähän). CSE-A1150 Tietokannat 15.5.2018 10 / 32

Tyypillisiä virheitä ER-kaavioita koskevissa tenttivastauksissa, jatkuu Samaan suhteeseen on yhdistetty asioita, jotka eivät kuulu kaikki yhteen. Yleensä kannattaa suosia kaksijakoisia suhteita ja käyttää useampijakoisia suhteita vain perustellusta syystä. Kun yksilöjoukkoja ja suhteita on muutettu relaatioiksi, niin attribuutteja on joko liikaa tai liian vähän (osa avainattribuuteista puuttuu relaatiosta tai sitten suhteesta tehdyssä relaatiossa on mukana ylimääräisiä attribuutteja). Osaa avaimeen kuuluvista attribuuteista ei ole alleviivattu tai on alleviivattu liikaa attribuutteja. Monesta moneen -suhteesta ei ole tehty omaa relaatiota, kun ER-kaavio on muunnettu relaatioiksi. CSE-A1150 Tietokannat 15.5.2018 11 / 32

Avaimella on väliä! Mitä eroa on relaatioilla Products(number, prodname, description, price, manufid) ja Products(number, prodname, description, price, manufid) CSE-A1150 Tietokannat 15.5.2018 12 / 32

Avaimella on väliä! Mitä eroa on relaatioilla Products(number, prodname, description, price, manufid) ja Products(number, prodname, description, price, manufid) Jälkimmäisessä sama tuote (tuotenumero) voi esiintyä relaatiossa Products monta kertaa, jos sillä on joka monikossa eri valmistaja. CSE-A1150 Tietokannat 15.5.2018 12 / 32

Funktionaaliset riippuvuudet ja tietokannan normalisointi Ongelma: Mitä relaatioita tietokantaan pitäisi määritellä ja mitä attribuutteja näillä pitäisi olla? Samat tiedot voidaan esittää useilla eri tietokantakaavioilla. Jotkin niistä ovat parempia kuin toiset. Keskeisiä huonojen relaatiokaavioiden aiheuttamia ongelmia: Tiedon toisteisuus (redundancy) Päivitysanomaliat (update anomalies) Poistoanomaliat (deletion anomalies) Huonot relaatiokaaviot voidaan muuttaa parempaan muotoon normalisoimalla. Normalisoinnissa tarvitaan tietoa relaatioiden attribuuttien funktionaalisista riippuvuuksista. CSE-A1150 Tietokannat 15.5.2018 13 / 32

Boyce-Codd-normaalimuoto Jos relaatio on Boyce-Codd-normaalimuodossa (Boyce-Codd normal form, BCNF), siinä ei ole lainkaan funktionaalisista riippuvuuksista johtuvaa toisteista tietoa. Relaatio R on BCNF:ssä (Boyce-Codd-normaalimuodossa) jos ja vain jos kaikille R:ssä voimassa oleville epätriviaaleille funktionaalisille riippuvuuksille A 1 A 2... A n B 1 B 2... B m pätee se, että {A 1, A 2,..., A n } on relaation R yliavain. Esimerkki: relaatio Products1(number, prodname, description, price, manufid, manufname, phone) ei ole BCNF:ssä, koska relaatiolle pätee riippuvuus manufid manufname phone mutta riippuvuuden vasen puoli ei ole relaation yliavain, vaan relaation avain on {number} CSE-A1150 Tietokannat 15.5.2018 14 / 32

Relaation osittaminen Boyce-Codd-normaalimuotoon Laske annettujen epätriviaalien riippuvuuksien vasempien puolten sulkeumat. Jos yksikin sulkeumista ei sisällä relaation kaikkia attribuutteja (eli vasen puoli ei ole relaation yliavain), relaatio ei ole BCNF:ssä, ja se pitää osittaa. Valitse yksi niistä riippuvuuksista, jossa vasen puoli ei ole relaation yliavain ja ota tämän riippuvuuden vasemman puolen sulkeuma. Jaa ositettava relaatio kahdeksi uudeksi relaatioksi: Ensimmäiseen tulee em. sulkeuma. Toiseen tulee edellä valitun riippuvuuden vasen puoli ja lisäksi ne ositettavan relaation attribuutit, jotka eivät kuulu vasemman puolen sulkeumaan. Tutki, mitkä riippuvuudet ovat voimassa uusissa relaatioissa. Laske uusien relaatioiden riippuvuuksien vasempien puolien sulkeumat. Jos jokin sulkeuma ei sisällä uuden relaation kaikkia attribuutteja, uusi relaatio ei ole BCNF:ssä ja se pitää osittaa samalla tavalla. CSE-A1150 Tietokannat 15.5.2018 15 / 32

Mahdollisia tenttikysymyksiä funktionaalisesta riippuvuudesta ja BCNF:stä Tämä on erittäin tärkeä asia, ja on hyvin todennäköistä, että asiasta kysytään jokaisessa tentissä. Todennäköisin tehtävätyyppi: on annettu relaatio ja siinä esiintyvät funktionaaliset riippuvuudet. Kysytään, onko relaatio BCNF:ssä (perustelut) ja pyydetään osittamaan se tarvittaessa BCNF:ään. Myös moniarvoiset riippuvuudet ovat mahdollisia tenttitehtävien aiheita. Tästä aihepiiristä mahdollinen tehtävä on sellainen, jossa vaaditaan moniarvoisen riippuvuuden käsitteen ymmärtämistä. Tehtävissä ei kysytä mitään 4. normaalimuodosta. CSE-A1150 Tietokannat 15.5.2018 16 / 32

BCNF-tehtävä toukokuun 2017 tentistä Tarkastellaan relaatiota R(A, B, C, D, E), jossa on voimassa riippuvuudet A B, A C ja D A. Perustele, miksi relaatio ei ole BCNF:ssä. Osita relaatio BCNF:ään käyttämällä kurssilla (ja oppikirjassa) esitettyä algoritmia. Perustele lyhyesti jokainen muodostamasi uusi relaatio. Jatka osittamista niin pitkälle, että jäljellä on vain BCNF:ssä olevia relaatioita. Perustele, miksi lopulliset relaatiosi ovat BCNF:ssä. Ratkaisu esitetään luennolla. CSE-A1150 Tietokannat 15.5.2018 17 / 32

Tyypillisiä virheitä tenttivastauksissa BCNF-tehtävissä Kun on kysytty, onko relaatio BCNF:ssä, ei ole laskettu funktionaalisten riippuvuuksien vasempien puolien sulkeumia, vaan on annettu jokin erikoinen perustelu, joka on joko selvästi väärä tai sitten liian ylimalkainen. Relaatiota ei ole ositettu annetulla algoritmilla, vaan jollain itse keksityllä tavalla (esimerkiksi yhteen uuteen relaatioon on aina otettu kaikki yhdessä riippuvuudessa esiintyvät attribuutit), joka voi johtaa informaation katoamiseen On annettu aivan oikeat uudet relaatiot, mutta ei ole kunnolla perusteltu sitä, miten niihin on päädytty tai miksi uudet relaatiot ovat BCNF:ssä. Relaatio on ositettu aivan oikein yhden kerran, mutta ei ole huomattu sitä, että toinen tai molemmat ositetuista relaatioista ei vielä ole BCNF:ssä ja ositusta pitäisi jatkaa. CSE-A1150 Tietokannat 15.5.2018 18 / 32

Mahdollisia tenttikysymyksiä relaatioalgebrasta Pyydetään esittämään kysely relaatioalgebran lausekkeilla. On annettu relaation instanssi ja relaatioalgebran lauseke. Kysytään, mikä on lausekkeen tulos. Pyydetään selvittämään jotain yleisempää relaatioalgebran operaatioista, esim. miten jonkin operaation voi korvata toisilla operaatioilla tai miten monta monikkoa voi esiintyä lausekkeen tulosrelaation instanssissa, jos monikoiden määrät lähtörelaatioiden instansseissa tunnetaan. CSE-A1150 Tietokannat 15.5.2018 19 / 32

Tyypillisiä virheitä relaatioalgebran tenttivastauksissa Lausekkeissa on käytetty luonnollista liitosta, vaikka attribuutit, joiden yhtäsuuruuden mukaan liitos tehdään, ovat erinimisiä. Samaan ehtoon on yritetty sisällyttää liikaa. Esimerkiksi: haettava niiden asiakkaiden asiakasnumerot, joilla on tilaus, jonka tila on in post, mutta ei yhtään tilausta, jonka tila on delivered. Lauseke π custno (σ status= in post AND status delivered (Orders)) ei tuota haluttua vastausta, koska se tarkastelee vain yhden tilauksen tietoja kerrallaan. Ehto ei estä sitä, että asiakkaalla olisi toinen tilaus, jonka status on delivered. CSE-A1150 Tietokannat 15.5.2018 20 / 32

SQL: yksinkertaiset kyselyt ja liitokset Esimerkki 1 SELECT prodname, description FROM Products WHERE price > 100.0; Esimerkki 2: SELECT Customers.custNo, name FROM Customers, Orders WHERE Customers.custNo = Orders.custNo AND status = returned ; CSE-A1150 Tietokannat 15.5.2018 21 / 32

SQL: Alikyselyt SQL-kyselyn sisään voi kirjoittaa WHERE- tai FROM-osan sisään toisen kyselyn. Tällaista kyselyä sanotaan alikyselyksi (subquery). Esimerkki relaation tuottavista alikyselystä: SELECT DISTINCT orderno FROM BelongsTo WHERE productno IN (SELECT number FROM Products WHERE description = camera ); CSE-A1150 Tietokannat 15.5.2018 22 / 32

SQL: koosteoperaattorit SQL tarjoaa koosteoperaattorit SUM, AVG, MIN, MAX ja COUNT, joiden avulla voidaan laskea tilastoja jonkin relaation jonkin attribuuttien arvoista. Koosteoperaattoreita käytettäessä monikoita voidaan ryhmitellä GROUP BY-operaattorin avulla. Ryhmille voidaan antaa myös jokin koosteoperaattoria käyttävä ehto HAVING-osan avulla. Esimerkki: SELECT manufid, manufname, AVG(price) FROM Products, Manufacturers WHERE id = manufid GROUP BY manufid HAVING MAX(price) > 100; CSE-A1150 Tietokannat 15.5.2018 23 / 32

SQL: mahdollisia tenttikysymyksiä Tyypillisessä tenttikysymyksessä pyydetään kirjoittamaan jokin SQL-kysely. Kyselyissä voi tarvita mitä tahansa niistä ominaisuuksista, joita kurssin luentokalvoissa ja harjoitustehtävissä on käytetty. Myös taulujen luomiseen, monikoiden lisäämiseen ja tietojen päivittämiseen tarvittavia käskyjä voi tarvita, vaikka niitä ei olekaan tällä kertausluennolla esitelty. Eheysehtojen kirjoittamisesta tarvitsee osata niin paljon kuin luentokalvoilla ja harjoitustehtävissä on esitetty. Tentissä ei pyydetä kirjoittamaan laukaisimia, mutta on tunnettava laukaisimien toimintaperiaate ja ymmärrettävä, mikä ero on FOR EACH ROW-tyyppisillä ja FOR EACH STATEMENT-tyyppisillä laukaisimilla. CSE-A1150 Tietokannat 15.5.2018 24 / 32

SQL: mahdollisia tenttikysymyksiä (jatkuu) Myös näkymien määrittely ja niiden käyttö on osattava siinä laajudessa kuin mitä luentomateriaalissa on määritelty. SQL-käskyjen liittämistä muulla kielillä kirjoitettuun ohjelmaan (joko kirjastofunktioita tai sulautettua SQL:ää käyttämällä) ei kysytä tentissä. CSE-A1150 Tietokannat 15.5.2018 25 / 32

Tyypillisiä virheitä SQL-tenttitehtävissä Liitosehdot tai osa niistä puuttuu. Alikyselyn edessä on käytetty IN-operaattorin sijasta yhtäsuuruusmerkkiä, vaikka alikyselyn tuloksena on relaatio eikä yksittäinen arvo. Ei ole ymmärretty sitä, että WHERE-osassa oleva ehto käsittelee aina yhtä FROM-osassa olevien relaatioiden karteesisen tulon monikkoa kerrallaan. On kirjoitettu ehtoja, joiden pitäisi tutkia samalla kerralla useita monikoita. Kyselyssä pitäisi laskea koostefunktioiden arvoja tietyille ryhmille (esim. kunkin valmistajan tuotteiden hintojen keskiarvo), mutta GROUP BY-osa puuttuu kyselystä. Koostefunktiota koskeva ehto on kirjoitettu WHERE-osaan, vaikka se pitäisi olla HAVING-osassa. On käytetty sellaisia operaattoreita, joita kurssilla ei ole opetettu, mutta ei ole ymmärretty, mitä ne tarkoittavat. Esimerkiksi LEFT JOIN tarkoittaa oikeasti samaa kuin LEFT OUTER JOIN. CSE-A1150 Tietokannat 15.5.2018 26 / 32

Hakemistot, tenttitehtävätyyppejä Tentissä voi olla tehtävä, jossa joutuu arvioimaan, mitä hakemistoja kuvatulle tietokannalle kannattaa luoda. Tentissä voidaan myös pyytää selostamaan yleisemmin, millaisia asioita pitää ottaa huomioon, kun päätetään tietokantaan tulevista hakemistoista. B-puusta ei tentissä tarvitse osata muuta kuin pystyä arvioimaan se, miten hakemiston käyttö vaikuttaa levyhakujen määrään kyselyissä ja päivityksissä. CSE-A1150 Tietokannat 15.5.2018 27 / 32

Transaktiot (tapahtumat) Ohjelmoija voi suojata tietokannan monilta erilaisilta häiriöiltä, esimerkiksi sähkökatkoilta, laiterikoilta ja muiden samanaikaisten käyttäjien aiheuttamilta häiriöiltä määrittelemällä transaktioita, jotka voivat koostua useista tietokantaoperaatioista. Kun ohjelmoija on määritellyt joidenkin operaatioiden muodostavan transaktion, niin tietokannan hallintajärjestelmä pitää huolen siitä, että tietokanta toteuttaa seuraavalla kalvolla mainitut transaktioilta vaaditut ominaisuudet. CSE-A1150 Tietokannat 15.5.2018 28 / 32

Transaktioilta vaadittavat ominaisuudet Atomicity (atomisuus): kaikki transaktion sisältämät käskyt suoritetaan tai mitään niistä ei suoriteta. Consistency (eheys): jos tietokannassa määritellyt eheysehdot ovat voimassa ennen transaktion suoritusta, niin ne ovat voimassa myös sen jälkeen. Isolation (serializability, sarjallistuvuus): transaktio suoritetaan niin kuin muita transaktioita ei suoritettaisi samaan aikaan. Toisin sanoen: jos useita transaktioita suoritetaan samanaikaisesti, niin lopputulos on sama kuin jos samat transaktiot olisi suoritettu jossain järjestyksessä peräkkäin yksi kerrallaan. Durability (pysyvyys): Jos transaktiot on suoritettu onnistuneesti loppuun (on suoritettu transaktion commit-operaatio), niin sen vaikutukset eivät katoa tietokannasta. Näitä ominaisuuksia kutsutaan usein ACID-ominaisuuksiksi. CSE-A1150 Tietokannat 15.5.2018 29 / 32

Transaktioihin liittyviä tenttikysymyksiä Transaktiot on tärkeä aihe tentissä. Tentissä voidaan suoraan kysyä transaktioilta vaadittavia ominaisuuksia ja pyytää selittämään niitä tai osaa niistä tarkemmin. Tentissä voidaan myös kysyä, mitä muita eristyvyystasoja SQL:ssä on mahdollista määritellä transaktioille sarjallistuvuuden sijasta. CSE-A1150 Tietokannat 15.5.2018 30 / 32

Esimerkki XML-dokumentista <?xml version = "1.0" encoding = "utf-8" standalone = "yes"?> <StarMovieData> <Star> <Name>Carrie Fischer</Name> <Address> <Street>123 Maple St.</Street> <City>Hollywood</City> </Address> <Address> <Street>5 Locust Ln.</Street> <City>Malibu</City> </Address> </Star> <Star> <Name>Mark Hamill</Name> <Street>456 Oak Rd.</Street> <City>Brentwood</City> </Star> <Movie> <Title>Star Wars</Title> <Year>1977</Year> </Movie> </StarMovieData> CSE-A1150 Tietokannat 15.5.2018 31 / 32

Tenttitehtäviä XML:stä Tentissä ei tarvitse kirjoittaa itse XML-dokumentteja eikä DTD- tai XML Schema -määrittelyjä. On kuitenkin ymmärrettävä annettuja XML-dokumentteja sekä tiedettävät periaatteessa, mistä DTD- tai XML Schema -määrittelyissä on kysymys. Tentissä ei pyydetä kirjoittamaan XPath-kyselyjä, mutta siinä voidaan antaa XPath-kysely ja kysyä, mikä on sen tulos annetussa XML-dokumentissa. Tällöin on syytä muistaa, että myös alku- ja loppumerkinnät (tagit) pitää olla mukana vastauksessa, jos ne kuuluvat kyselyn tulokseen. Aiheesta tarvitsee osata vain ne asiat, joita on käsitelty luennoilla ja / tai harjoituksissa. Esimerkiksi avainten ja viiteavainten määrittelystä XML-dokumentissa ei tarvitse tietää. CSE-A1150 Tietokannat 15.5.2018 32 / 32