28
CS-A1150 Tietokannat Osa kalvoista perustuu Juha Puustjärven luentokalvoihin aikaisemmalta kurssikerralta sekä kurssin oppikirjaan 30.1.2018 CS-A1150 Tietokannat 30.1.2018 1 / 28

CS-A1150 Tietokannat - cse.hut.fi · CS-A1150 Tietokannat Osa kalvoista perustuu Juha Puustjärven luentokalvoihin aikaisemmalta kurssikerralta sekä kurssin oppikirjaan 30.1.2018

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: CS-A1150 Tietokannat - cse.hut.fi · CS-A1150 Tietokannat Osa kalvoista perustuu Juha Puustjärven luentokalvoihin aikaisemmalta kurssikerralta sekä kurssin oppikirjaan 30.1.2018

CS-A1150 Tietokannat

Osa kalvoista perustuu Juha Puustjärven luentokalvoihinaikaisemmalta kurssikerralta sekä kurssin oppikirjaan

30.1.2018

CS-A1150 Tietokannat 30.1.2018 1 / 28

Page 2: CS-A1150 Tietokannat - cse.hut.fi · CS-A1150 Tietokannat Osa kalvoista perustuu Juha Puustjärven luentokalvoihin aikaisemmalta kurssikerralta sekä kurssin oppikirjaan 30.1.2018

Aloitusluento: tämän luennon jälkeen

I Tiedät, mitä sinun pitää tehdä kurssin suorittamiseksi.I Tunnet kurssin järjestelyt.I Tiedät, mitä tarkoittaa tietokanta ja tietokannan hallintajärjestelmä.I Tiedät tietokannan hallintajärjestelmän osat ja niiden tehtävät.I Osaat selittää, mitä tarkoittaa relaatiomalli, relaatio, attribuutti ja

relaation avain.

CS-A1150 Tietokannat 30.1.2018 2 / 28

Page 3: CS-A1150 Tietokannat - cse.hut.fi · CS-A1150 Tietokannat Osa kalvoista perustuu Juha Puustjärven luentokalvoihin aikaisemmalta kurssikerralta sekä kurssin oppikirjaan 30.1.2018

CSE-A1200 Tietokannat

I Kurssin tavoite: Kurssin käytyäsi osaat suunnitella yksinkertaisiatietokantoja ja tehdä niihin kyselyitä.

I Pääpaino relaatiotietokannoissa, mutta myös XML:ää jaNoSQL-tietokantoja käsitellään lyhyesti.

CS-A1150 Tietokannat 30.1.2018 3 / 28

Page 4: CS-A1150 Tietokannat - cse.hut.fi · CS-A1150 Tietokannat Osa kalvoista perustuu Juha Puustjärven luentokalvoihin aikaisemmalta kurssikerralta sekä kurssin oppikirjaan 30.1.2018

Miksi tietokannat ovat tärkeitä?

I Tietokantoja on kaikkialla, esimerkiksiI väestörekisteriI terveydenhuollon rekisteritI OodiI lento- ja junayhtiöiden lipunvarausjärjestelmätI nettikaupatI yritysten asiakasrekisterit ja laskutustiedotI pankkien järjestelmätI matkapuhelinoperaattoreiden tiedot asiakkaista ja heidän puhelintensa

sijainneista

CS-A1150 Tietokannat 30.1.2018 4 / 28

Page 5: CS-A1150 Tietokannat - cse.hut.fi · CS-A1150 Tietokannat Osa kalvoista perustuu Juha Puustjärven luentokalvoihin aikaisemmalta kurssikerralta sekä kurssin oppikirjaan 30.1.2018

Käytännön asioitaI Luennot: Kerttu Pollari-Malmi tiistaisin klo 12-14 (yleensä)

poikkeuksellisesti 6.2., 10.4. ja 8.5. klo 11:30-13I Harjoitukset:

I Henri Gröhn, Auli Mustonen, Ville Piiparinen, Venla Pesonen jaJonatan Lehtinen (ratkaisujen arvostelut),

I Kuusi eri ryhmää, jotka kokoontuvat 2–3 viikon välein yhteensä 6kertaa. Tarkat ajat ja paikat ovat MyCoursesissa. Ke 16–18 ryhmäenglanniksi, mutta myös suomenkieliset voivat käydä ko. ryhmässä.

I Ryhmiin ei tarvitse ilmoittautua ja eri viikkoina voi käydä eri ryhmissä.Ryhmissä käyminen ei ole pakollista eikä siitä saa lisäpisteitä.

I Harjoituksissa opiskelijat tekevät harjoitustehtäviä, mutta voivat kysyäneuvoa opettajalta.

I Harjoitustyö (pakollinen)I Tehdään 2–3 hengen ryhmissä.I Palautus kahdessa vaiheessa: suunnitelma (ER-kaavio ym.) 29.3.

mennessä, tietokannan toteutus SQL:llä 8.5. mennessä.I Tietokantaan ei tehdä käyttöliittymää, mutta SQL-käskyt ajetaan

SQLite-ympäristössä.

CS-A1150 Tietokannat 30.1.2018 5 / 28

Page 6: CS-A1150 Tietokannat - cse.hut.fi · CS-A1150 Tietokannat Osa kalvoista perustuu Juha Puustjärven luentokalvoihin aikaisemmalta kurssikerralta sekä kurssin oppikirjaan 30.1.2018

Käytännön asioita, jatkuu

I Osasuoritukset:I Tentti (pakollinen)I Harjoitustyö (pakollinen): jos pistemäärä on vähintään 30/40, saa siitä

yhden arvosanan korotuksen hyväksytyyn tenttisuoritukseen.I Harjoitustehtävät (vapaaehtoiset, 0–4 lisäpistettä hyväksyttyyn

tenttisuoritukseen)I Kurssipalaute (vapaaehtoinen, 16 lisäpistettä harjoitustehtäviin, joiden

maksimi ilman palautepisteitä on noin 160.)

I Oppikirja: Ullman, Widom: A First Course in Database Systems, 3.painos tai New International Edition. (Aalto-yliopiston kirjastossa onmuutama kappale ja e-kirja, jota voi lukea korkeintaan 10 henkilöäsamanaikaisesti.)

I Kurssin MyCourses-sivulla julkaistaan luentokalvot, joiden avulla onmahdollista jotenkin valmistautua tenttiin, mutta oppikirjan lukeminenon suositeltavaa.

CS-A1150 Tietokannat 30.1.2018 6 / 28

Page 7: CS-A1150 Tietokannat - cse.hut.fi · CS-A1150 Tietokannat Osa kalvoista perustuu Juha Puustjärven luentokalvoihin aikaisemmalta kurssikerralta sekä kurssin oppikirjaan 30.1.2018

Käytännön asioita, jatkuu

I Harjoitustehtävät ja niiden palautus:I Harjoitustehtäviä on 6 kierrosta.I Harjoitustehtäviä voi tehdä 1–3 hengen ryhmissä.I Harjoitustehtävät julkaistaan A+:ssa ja kurssin MyCourses-sivulla

(alasivu Harjoitukset).I Osa tehtävistä arvostellaan automaattisesti A+:ssa, osa käsin käsin.I Palautuslinkit ja tarkemmat ohjeet julkaistaan MyCoursesissa.

CS-A1150 Tietokannat 30.1.2018 7 / 28

Page 8: CS-A1150 Tietokannat - cse.hut.fi · CS-A1150 Tietokannat Osa kalvoista perustuu Juha Puustjärven luentokalvoihin aikaisemmalta kurssikerralta sekä kurssin oppikirjaan 30.1.2018

Alustava luentoaikatalu

30.1. Esittely, johdanto, relaatiomalli6.2. Relaatioalgebra20.2. SQL: perusteita27.2. ER-mallinnus6.3 ER-kaavio relaatiokaavioksi; Funktionaaliset riippuvuudet13.3. Boyce-Codd-normaalimuoto; Moniarvoiset riippuvuudet20.3. SQL: alikyselyt, koosteoperaattorit27.3. SQL: taulujen määrittely, tietokannan tilan muuttaminen,

eheysrajoitukset, näkymät10.4. Hakemistot ja niiden käyttö; transaktiot17.4. Laukaisimet, SQL-käskyjen liittäminen muunkieliseen ohjelmaan24.4. Vierailuluento Keijo Heljanko: NoSQL-tietokannat8.5. XML ja sen kyselykielet15.5. Kertaus, tenttivaatimuksista.

CS-A1150 Tietokannat 30.1.2018 8 / 28

Page 9: CS-A1150 Tietokannat - cse.hut.fi · CS-A1150 Tietokannat Osa kalvoista perustuu Juha Puustjärven luentokalvoihin aikaisemmalta kurssikerralta sekä kurssin oppikirjaan 30.1.2018

Arvio kurssin työmäärän jakautumisesta

I Kurssin laajuus on 5 op, joka tarkoittaa noin 133 tuntia työtä. Tuntienon laskettu jakautuvan seuraavasti

I luennot 13 x 2 h = 26 h (tai vastaava aika itseopiskeluun)I vapaaehtoisten harjoitusten tekeminen sekä harjoitustilaisuuksissa että

niiden ulkopuolella ja malliratkaisuihin tutustuminen 6 x 5 h = 30 hI harjoitustyön tekeminen 45 h / henkilöI omatoiminen opiskelu (muu kuin edellä mainittu) 29 hI tenttiin osallistuminen 3 h

CS-A1150 Tietokannat 30.1.2018 9 / 28

Page 10: CS-A1150 Tietokannat - cse.hut.fi · CS-A1150 Tietokannat Osa kalvoista perustuu Juha Puustjärven luentokalvoihin aikaisemmalta kurssikerralta sekä kurssin oppikirjaan 30.1.2018

Viimevuotisesta palautteesta

I Harjoitustyötä pidettiin hyvin hyödyllisenä, samoin automaattisestitarkastettavia SQL-tehtäviä.

Tänä vuonna: Harjoitustyön aihe on vaihdettu, mutta harjoitustyö jaSQL-tehtävät hoidetaan viimevuotiseen tapaan.

Tänä vuonna: Myös suurin osa relaatioalgebran tehtävistä tarkistetaantänä vuonna automaattisesti, jolloin palautteen niistä saa nopeasti.

CS-A1150 Tietokannat 30.1.2018 10 / 28

Page 11: CS-A1150 Tietokannat - cse.hut.fi · CS-A1150 Tietokannat Osa kalvoista perustuu Juha Puustjärven luentokalvoihin aikaisemmalta kurssikerralta sekä kurssin oppikirjaan 30.1.2018

Viimevuotisesta palautteesta (jatkuu)

I Kritiikki: Kurssilla käytetty SQLite ei toteuta kaikki SQL-käskyjä.

Vastaus: Mikään tarjolla oleva järjestelmä ei toteuta kaikkiSQL-standardeissa määriteltyjä ominaisuuksia. Tunnetumpiinjärjestelmiin (esim. Oracle, MySQL tai PostgreSQL) verrattuna SQLiteon ylivoimainen siinä suhteessa, että jokainen voi helposti ottaa senkäyttöön ja ladata halutessaan omalle koneelleen ilman, että tarvitaanesimerkiksi ylläpidon apua tai ylläpidon luomia tunnuksia.

CS-A1150 Tietokannat 30.1.2018 11 / 28

Page 12: CS-A1150 Tietokannat - cse.hut.fi · CS-A1150 Tietokannat Osa kalvoista perustuu Juha Puustjärven luentokalvoihin aikaisemmalta kurssikerralta sekä kurssin oppikirjaan 30.1.2018

Viimevuotisesta palautteesta (jatkuu)

I Kritiikki: Harjoitustehtävistä sai liian vähän pisteitä niiden työmääräänverrattuna.Vastaus: Harjoitustehtäväpisteillä pystyy kuitenkin korottamaantenttiarvosanaa kokonaisella numerolla. Harjoitustehtävästä saatavatbonuspisteet ovat aitoja bonuspisteitä eli tentistä voi saada viitosenilman niitäkin. Jos harjoitustehtäväpisteiden merkitystä lisättäisiinnykyisestä, pitäisi muuta arvostelua muuttaa niin, että kurssista eienää voisi saada parhaita arvosanoja ilman harjoitustehtäviä.

I Kritiikki: ryhmätyönä tehtävä harjoitustyö oli työläs.Vastaus: Ryhmätyölle on varattu kurssin mitoituksessa yli 1/3 kurssiinkäytettävästä ajasta, yhteensä 45 tuntia opiskelijaa kohti.

CS-A1150 Tietokannat 30.1.2018 12 / 28

Page 13: CS-A1150 Tietokannat - cse.hut.fi · CS-A1150 Tietokannat Osa kalvoista perustuu Juha Puustjärven luentokalvoihin aikaisemmalta kurssikerralta sekä kurssin oppikirjaan 30.1.2018

Tietokanta ja tietokannan hallintajärjestelmä

I Tietokanta (database) on kokoelma jollain tavalla yhteen kuuluvaatietoa.

I Tietokannan hallintajärjestelmä (database management system, dbms)

I Mahdollistaa uusien tietokantojen määrittelyn tukemalla jotaintiedonmäärittelykieltä (data-definition language).

I Mahdollistaa tietokantakyselyt ja -päivitykset tukemalla jotainkyselykieltä ja tiedonkäsittelykieltä (query language, data-manipulationlanguage)

I Varmistaa suurien tietomäärien (teratavuja tai enemmän) säilymisenpitkän ajanjakson niin, että samalla kuitenkin kyselyt ja päivityksetovat mahdollisia.

I Varmistaa tiedon säilymisen myös erilaisissa virhe- ja häiriötilanteissa.I Varmistaa sen, että samanaikaiset käyttäjät eivät "häiritse" toisiaan.

CS-A1150 Tietokannat 30.1.2018 13 / 28

Page 14: CS-A1150 Tietokannat - cse.hut.fi · CS-A1150 Tietokannat Osa kalvoista perustuu Juha Puustjärven luentokalvoihin aikaisemmalta kurssikerralta sekä kurssin oppikirjaan 30.1.2018

Miksi tiedostojärjestelmät eivät riitä?

I Tiedostoissa voidaan säilyttää dataa, mutta tiedostojärjestelmät eivättakaa sen säilymistä erilaisissa virhetilanteissa, jos dataa ei erikseenvarmuuskopioida.

I Tiedostojärjestelmät eivät tue korkean tason kyselykieliä.I Tiedostojärjestelmissä tiedon rakenteen määrittely rajoittuu

tiedostorakenteeseen.I Tiedostojärjestelmät eivät tue useamman käyttäjän samanaikaista

käyttöä.

CS-A1150 Tietokannat 30.1.2018 14 / 28

Page 15: CS-A1150 Tietokannat - cse.hut.fi · CS-A1150 Tietokannat Osa kalvoista perustuu Juha Puustjärven luentokalvoihin aikaisemmalta kurssikerralta sekä kurssin oppikirjaan 30.1.2018

Tietokantojen historiasta

I Ensimmäiset kaupalliset tietokannan hallintajärjestelmät 1960-luvullaI Rakennettu tiedostojärjestelmien pohjalle.I Datamalli ja tiedon varastointi olivat tiivisti yhteydessä toisiinsa,

suosituimmat puihin perustuva malli ja verkkorakenteisiin perustuvamalli.

I Esimerkkejä: pankkijärjestelmät, lentoyhtiöittenpaikanvarausjärjestelmät, yhtiöitten kirjanpito-, varasto- jahenkilöstöjärjestelmät.

I Kyselyt hankalia kirjoittaa ja usein hitaita suorittaaI Relaatiotietokannat:

I E.F. Codd: A relational model for large shared data banks,Communications of the ACM, 1970.

I Datamalli ja tiedon varastointi erotettu toisistaan.I Korkean tason kyselykieli, SQL (esitelty 1976).I Edelleen hyvin tärkeä.

CS-A1150 Tietokannat 30.1.2018 15 / 28

Page 16: CS-A1150 Tietokannat - cse.hut.fi · CS-A1150 Tietokannat Osa kalvoista perustuu Juha Puustjärven luentokalvoihin aikaisemmalta kurssikerralta sekä kurssin oppikirjaan 30.1.2018

Nykyisiä suuntauksia

I Olio-ohjelmoinnin yhdistäminen relaatiotietokantoihinI Pienemmät järjestelmät, jotka pyörivät PC:ssäI Suuret järjestelmät, joissa relaatiotietokannan ja SQL:n ominaisuuksia

on karsittu, jotta saadaan tehokas tietokanta määrättyyntarkoitukseen.

I Keskusmuistitietokannat.I Rakenteisten dokumenttien (XML, JSON) käsittely.I Heterogeenisen tiedon kerääminen ja yhdistely monesta eri lähteestä,

tietovarastot (data warehouses).

CS-A1150 Tietokannat 30.1.2018 16 / 28

Page 17: CS-A1150 Tietokannat - cse.hut.fi · CS-A1150 Tietokannat Osa kalvoista perustuu Juha Puustjärven luentokalvoihin aikaisemmalta kurssikerralta sekä kurssin oppikirjaan 30.1.2018

Tietokannan hallintajärjestelmän osat

I Tietokanta (data and metadata)I Sisältää varsinaisen tiedon (data) sekä kuvauksen tiedon rakenteesta

(metadata).I Muistinhallitsija (storage manager)

I Huolehtii tiedonsiirrosta keskusmuistin ja esim. kovalevyllä olevantietokannan välillä.

I Kyselynkäsittelijä (query processor)I Etsii mahdollisimman tehokkaan tavan kyselyiden ja päivitysten

suorittamiseksi.I Tapahtumankäsittelijä (transaction manager)

I Kontrolloi samanaikaisten käyttäjien operaatioiden lomittumista(samanaikaisuuden hallinta, concurrency control) ja varmistaapäivitysten atomisuuden.

CS-A1150 Tietokannat 30.1.2018 17 / 28

Page 18: CS-A1150 Tietokannat - cse.hut.fi · CS-A1150 Tietokannat Osa kalvoista perustuu Juha Puustjärven luentokalvoihin aikaisemmalta kurssikerralta sekä kurssin oppikirjaan 30.1.2018

Muistinhallitsija

I Yleensä tehokkuussyistä tietokannan hallintajärjestelmät kontrolloivatitse levymuistin käyttöä.

I Muistinhallitsijan osat:I Tiedostonhallitsija (file manager)

I Huolehtii tiedostojen sijoittelusta levyllä sekä jaksojen (block) siirroistalevyn ja keskusmuistin välillä.

I Puskurinhallitsija (buffer manager)I Huolehtii keskusmuistin hallinnasta.I Tutkii, mille keskusmuistin sivulle tiedostonhallitsijalta saatu jakso

sijoitetaan.I Pyytää tarvittaessa tiedostonhallitsijaa kirjoittamaan sivuja takaisin

levylle.

CS-A1150 Tietokannat 30.1.2018 18 / 28

Page 19: CS-A1150 Tietokannat - cse.hut.fi · CS-A1150 Tietokannat Osa kalvoista perustuu Juha Puustjärven luentokalvoihin aikaisemmalta kurssikerralta sekä kurssin oppikirjaan 30.1.2018

Kyselynkäsittelijä

I Kääntää korkean tason kielellä (esim. SQL) esitetyn kyselynsuorituskaavioksi (query plan) ja suorittaa kyselyn.

I Usein kysely voidaan suorittaa monessa eri järjestetyksessä.Kyselynkäsittelijän tehtävänä on etsiä mahdollisimman tehokassuoritusjärjestys.

I Kyselynkäsittelijän tehtävänä myös optimoida yksittäisiä kyselyynsisältyviä operaatioita esimerkiksi käyttämällä apuna hakemistojasilloin, kun se on mahdollista.

CS-A1150 Tietokannat 30.1.2018 19 / 28

Page 20: CS-A1150 Tietokannat - cse.hut.fi · CS-A1150 Tietokannat Osa kalvoista perustuu Juha Puustjärven luentokalvoihin aikaisemmalta kurssikerralta sekä kurssin oppikirjaan 30.1.2018

Tapahtumankäsittelijä

I Käyttäjä voi määritellä yhden tai useamman kyselyn tai päivityksentapahtumaksi, transaktioksi (transaction).

I Tapahtumankäsittelijä huolehtii siitä, ettäI Transaktiolla on sama vaikutus tietokantaan riippumatta muista

samanaikaisista tapahtumista.I Kaikki transaktion päivitykset suoritetaan (esim. pankin tilisiirrossa

sekä otto että pano eikä vain toista) tai niistä ei suoriteta mitään.I Transaktion päivitykset säilyvät tietokannassa (myös erilaisissa

virhetilanteissa).

I Transaktioita käsitellään tarkemmin omalla luennollaan.

CS-A1150 Tietokannat 30.1.2018 20 / 28

Page 21: CS-A1150 Tietokannat - cse.hut.fi · CS-A1150 Tietokannat Osa kalvoista perustuu Juha Puustjärven luentokalvoihin aikaisemmalta kurssikerralta sekä kurssin oppikirjaan 30.1.2018

Relaatiomalli

I Käytössä suurimmassa osassa kaupallisista tietokannanhallintajärjestelmistä.

I Hyvin yksinkertainenI Yksinkertainen korkean tason kyselykieli, joka kuitenkin tarjoaa hyvin

monipuoliset mahdollisuudet.I Mahdollista implementoida tehokkaasti.

CS-A1150 Tietokannat 30.1.2018 21 / 28

Page 22: CS-A1150 Tietokannat - cse.hut.fi · CS-A1150 Tietokannat Osa kalvoista perustuu Juha Puustjärven luentokalvoihin aikaisemmalta kurssikerralta sekä kurssin oppikirjaan 30.1.2018

Relaatiomalli, jatkoa

I Tietokanta koostuu kaksiulotteisista tauluista (table), joita kutsutaanrelaatioiksi (relation).

I Jokaisella relaatiolla on joukko nimettyjä attribuutteja (attribute).I Kullakin taulun rivillä eli monikolla (tuple) on arvot eri attribuuteille.I Attribuuttien arvojen tulee olla atomisia (esim. yksittäinen lukuarvo tai

merkkijono, ei esimerkiksi joukko tai monikko). Arvoilla on tyyppi.

Relation CustomerscustNo name born bonus address email112233 Teemu Teekkari 1995 55 Servinkuja 3 [email protected] Riina Raksalainen 1993 43 Otaranta 8 [email protected] Antti Virta 1970 12 Aaltokatu 4 [email protected]

CS-A1150 Tietokannat 30.1.2018 22 / 28

Page 23: CS-A1150 Tietokannat - cse.hut.fi · CS-A1150 Tietokannat Osa kalvoista perustuu Juha Puustjärven luentokalvoihin aikaisemmalta kurssikerralta sekä kurssin oppikirjaan 30.1.2018

Huomautuksia

I Relaatiot ovat monikoiden joukkoja, ei listoja. Monikoidenjärjestyksellä relaation sisällä ei siis ole merkitystä.

I Myös attribuutit voidaan esittää mielivaltaisessa järjestyksessä,kuitenkin niin, että säilyy tieto siitä, mikä arvo kuuluu millekinattribuutille.

I Relaatiokaavio (relation schema) määrittää, mitä attribuuttejarelaatioon kuuluu ja mikä on attribuuttien tyyppi.

I Esimerkiksi edellisen kalvon relaatiokaavio voidaan kirjoittaa jokoCustomers(custNo, name, born, bonus, address, email)tai tyyppien kanssaCustomers(custNo:string, name:string, born:integer,bonus:integer address:string, email:string)

I Relaation instanssi tarkoittaa relaation sisältämiä monikoita tietyllähetkellä.

CS-A1150 Tietokannat 30.1.2018 23 / 28

Page 24: CS-A1150 Tietokannat - cse.hut.fi · CS-A1150 Tietokannat Osa kalvoista perustuu Juha Puustjärven luentokalvoihin aikaisemmalta kurssikerralta sekä kurssin oppikirjaan 30.1.2018

Erikoisarvo NULL

I Erikoisarvolla NULL voidaan kuvata sitä, että jonkin attribuutin arvoaei jollain monikolla tiedetä tai ole määritelty.

I Esimerkki: lisätään edellä esitettyyn Customers-relaatioon uusiasiakas, jonka syntymävuosi ei ole lisääjän tiedossa:

Relation CustomerscustNo name born bonus address email112233 Teemu Teekkari 1995 55 Servinkuja 3 [email protected] Riina Raksalainen 1993 43 Otaranta 8 [email protected] Antti Virta 1970 12 Aaltokatu 4 [email protected] Anne Asiakas NULL 0 Narutie 7 [email protected]

CS-A1150 Tietokannat 30.1.2018 24 / 28

Page 25: CS-A1150 Tietokannat - cse.hut.fi · CS-A1150 Tietokannat Osa kalvoista perustuu Juha Puustjärven luentokalvoihin aikaisemmalta kurssikerralta sekä kurssin oppikirjaan 30.1.2018

NULL-arvojen vaikutuksia

I Halutaan hakea edellisen kalvon relaatiosta kaikki ne asiakkaat, jotkaovat syntyneet vuoden 1990 jälkeen eli joille ehto born > 1990 on tosi.

I Anne Asiakas ei tule mukaan, koska hänelle ei ole määriteltysyntymävuotta.

I Entä, jos ehto onkin born > 1990 OR born <= 1990?I Vaikka ehdon voisi kuvitella kattavan kaikki asiakkaat, niin

todellisuudessa Anne Asiakas ei tule hakutulokseen mukaan, koska senborn-attribuutilla on arvo NULL.

CS-A1150 Tietokannat 30.1.2018 25 / 28

Page 26: CS-A1150 Tietokannat - cse.hut.fi · CS-A1150 Tietokannat Osa kalvoista perustuu Juha Puustjärven luentokalvoihin aikaisemmalta kurssikerralta sekä kurssin oppikirjaan 30.1.2018

AvainI Joukko relaation attribuutteja muodostaa relaation avaimen, jos

millään kahdella relaation monikolla ei saa olla samoja arvoja kaikillaavaimen attribuuteilla.

I Relaatiossa Customers attribuutti custNo sopii relaation avaimeksi,koska jokaisella asiakkaalla on yksikäsitteinen asiakasnumero.

I Joissakin tapauksissa mikään attribuutti ei riitä yksistään relaationavaimeksi, vaan useampi attribuutti yhdessä muodostaa avaimen(esimerkki kohta).

I Avainattribuuttien arvojen pitää olla yksikäsitteisiä kaikilla mahdollisillarelaation instansseilla. Esimerkiksi attribuutti born ei ole relaationCustomers avain, vaikka kalvon instanssissa jokaisella monikolla on eriarvo born-attribuutilla. On täysin sallittua lisätä uusi asiakas, jolla onsama syntymävuosi jonkun relaatiossa jo olevan asiakkaan kanssa.

I Relaatiokaaviossa avaimeen kuuluvat attribuutit merkitään useinalleviivaamalla, esimerkiksi Customers(custNo, name, born,bonus, address, email)

CS-A1150 Tietokannat 30.1.2018 26 / 28

Page 27: CS-A1150 Tietokannat - cse.hut.fi · CS-A1150 Tietokannat Osa kalvoista perustuu Juha Puustjärven luentokalvoihin aikaisemmalta kurssikerralta sekä kurssin oppikirjaan 30.1.2018

Toinen esimerkki relaatioista

I Oletetaan, että halutaan tallentaa tiedot yliopiston opiskelijoista,kursseista ja siitä, kuka opiskelija on suorittanut minkin kurssin.

I Kursseista tarvitaan vain perustiedot (ei esim. lukujärjestys- taiopettajatietoja).

I Oletetaan, että opiskelija voi suorittaa saman kurssin vain yhteenkertaan.

I Mitä relaatioita määrittelisit? Mitä avaimia näille relaatioille tarvitaan?

CS-A1150 Tietokannat 30.1.2018 27 / 28

Page 28: CS-A1150 Tietokannat - cse.hut.fi · CS-A1150 Tietokannat Osa kalvoista perustuu Juha Puustjärven luentokalvoihin aikaisemmalta kurssikerralta sekä kurssin oppikirjaan 30.1.2018

Opiskelijaesimerkki jatkuu

I Tarvitaan yksi relaatio opiskelijoiden ja toinen kurssien tietoja varten.I Koska attribuuttien on oltava atomisia, ei tietoa suoritetuista

kursseista voida tallentaa opiskelijan tietoja kuvaavaan monikkoon eikäkurssin suorittaneita opiskelijoita kurssin monikkoon.

I Tarvitaan siis kolmas relaatio, johon tallennetaan tieto siitä, kukaopiskelija on suorittanut minkin kurssin.

I Esimerkki järkevistä relaatiokaavioista:Students(ID, name, program, year)Courses(code, name, credits)Grades(studentID, courseCode, date, grade)

I Attribuutit studentID ja courseCode muodostavat yhdessä relaationGrades avaimen.

CS-A1150 Tietokannat 30.1.2018 28 / 28