CS-A1150 Tietokannat

Samankaltaiset tiedostot
Transkriptio:

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

Aloitusluento: tämän luennon jälkeen Tiedät, mitä sinun pitää tehdä kurssin suorittamiseksi. Tunnet kurssin järjestelyt. Tiedät, mitä tarkoittaa tietokanta ja tietokannan hallintajärjestelmä. Tiedät tietokannan hallintajärjestelmän osat ja niiden tehtävät. Osaat selittää, mitä tarkoittaa relaatiomalli, relaatio, attribuutti ja relaation avain. Voit luennon aikana kirjoittaa kysymyksiä sivulle http://presemo.aalto.fi/tietokannat2023/ CS-A1150 Tietokannat 6.2.2023 2 / 26

CS-A1150 Tietokannat Kurssin tavoite: Kurssin käytyäsi osaat suunnitella yksinkertaisia tietokantoja ja tehdä niihin kyselyitä. Pääpaino relaatiotietokannoissa, mutta myös NoSQL-tietokantoja käsitellään yhdellä vierailuluennolla. CS-A1150 Tietokannat 6.2.2023 3 / 26

Miksi tietokannat ovat tärkeitä? Tietokantoja on kaikkialla, esimerkiksi... Mieti, mitä tietokantoja sinulla tulee mieleen, ja kirjoita ideoita sivulla http://presemo.aalto.fi/tietokannat2023/ CS-A1150 Tietokannat 6.2.2023 4 / 26

Käytännön asioita Luennot: Kerttu Pollari-Malmi Periodeilla III ja V maanantaisin klo 12:15 14 Periodilla IV tiistaisin klo 12:15 14. Harjoitustehtävät ja harjoitustehtäväneuvonta Tehtävät ja niiden palautus A+:ssa. Harjoitustehtäväneuvonta Otaniemessä. Tarkempi aikataulu MyCoursesissa. Harjoitustyö (pakollinen) Tehdään 2 3 hengen ryhmissä. Palautus kahdessa vaiheessa: suunnitelma (UML-kaavio ym.) 4.4. mennessä, tietokannan toteutus SQL:llä 10.5. mennessä. Tietokantaan ei tehdä käyttöliittymää. CS-A1150 Tietokannat 6.2.2023 6 / 26

Käytännön asioita, jatkuu Osasuoritukset: Tentti (pakollinen) Harjoitustyö (pakollinen) Harjoitustehtävät (vapaaehtoiset, 0 6 lisäpistettä hyväksyttyyn tenttisuoritukseen) Kurssipalaute (vapaaehtoinen, 20 harjoitustehtäväpistettä.) Oppikirja: Ullman, Widom: A First Course in Database Systems, 3. painos tai New International Edition. (Aalto-yliopiston kirjastossa on muutama kappale ja e-kirja.) Kurssin MyCourses-sivulla julkaistaan luentokalvot. CS-A1150 Tietokannat 6.2.2023 7 / 26

Käytännön asioita, jatkuu Harjoitustehtävät: 5 kierrosta Tehtäviä voi tehdä 1 3 hengen ryhmissä. Julkaistaan A+:ssa ja varsinaiset kierrokset myös kurssin MyCourses-sivulla (alasivu Harjoitustehtävät ja harjoitustehtäväneuvonta). Osa tehtävistä arvostellaan automaattisesti A+:ssa, osa käsin. Palautetaan A+:aan. Malliratkaisut julkaistaan MyCoursesissa tehtäväkierroksen sulkeutumisen jälkeen. Neuvontakanava netissä: https://cs-a1150-2023.zulip.aalto.fi/. Kirjaudu A+:n vasemman reunan valikosta tai Aalto-tunnuksella. CS-A1150 Tietokannat 6.2.2023 8 / 26

Alustava luentoaikatalu 6.2. Esittely, johdanto, relaatiomalli 13.2. Relaatioalgebra 28.2. SQL: perusteita 7.3. UML-mallinnus 14.3 UML-kaavio relaatiokaavioksi; Funktionaaliset riippuvuudet 21.3. Boyce-Codd-normaalimuoto; Moniarvoiset riippuvuudet 28.3. SQL: alikyselyt, koosteoperaattorit 4.4. SQL: taulujen määrittely, tietokannan tilan muuttaminen, eheysrajoitukset, näkymät 24.4. Hakemistot ja niiden käyttö; transaktiot Video Lisää transaktioista; laukaisimet 8.5. SQL-käskyjen liittäminen toisella kielellä kirjoitettuun ohjelmaan 15.5. Vierailuluento Keijo Heljanko: NoSQL-tietokannat Video Kertausta ja tenttivaatimuksista CS-A1150 Tietokannat 6.2.2023 9 / 26

Arvio kurssin työmäärän jakautumisesta 5 op tarkoittaa noin 133 tuntia työtä: luennot 13 x 2 h = 26 h harjoitustehtävät kierrokset 1 5: 5 x 8 h = 40 h harjoitustyö 45 h / henkilö omatoiminen opiskelu (muu kuin edellä mainittu) 19 h tenttiin osallistuminen 3 h CS-A1150 Tietokannat 6.2.2023 10 / 26

Aikaisempien kurssikertojen palautteesta Harjoitustyötä on yleensä pidetty hyvin hyödyllisenä, vaikkakin työläänä. Tänä vuonna: harjoitustyön aihe on vaihdettu, mutta muuten harjoitustyö viimevuotiseen tapaan. Kritiikki: harjoitustyön neuvonta-ajat ovat liian lyhyitä / neuvontaa on tarjolla liian vähän. Tänä vuonna: neuvonta-aikoja on pidennetty 15 minuutista / ryhmä kummassakin osassa 20 minuuttiin / ryhmä. Toivottu mahdollisuuksia palauttaa harjoitustehtäviä vielä palautusajan jälkeen ilman pisteitä. Tänä vuonna: Kokeillaan tätä. Mahdollisuus voidaan kuitenkin poistaa, jos siitä aiheutuu väärinkäsityksiä. CS-A1150 Tietokannat 6.2.2023 11 / 26

Aikaisempien kurssikertojen palautteesta (jatkuu) Kritiikki: Tentin painoarvo arvosanassa on liian suuri. Harjoitustehtävistä ja -työstä ei saa tarpeeksi lisäpisteitä tenttiin. Kritiikki: kurssilla on liikaa teoriaa, olisi pitänyt opettaa vain SQL:ää. Kritiikki: kurssilla käytetty SQLite ei toteuta kaikki SQL-käskyjä. Kritiikki: luennot olivat suomeksi, mutta harjoitustehtävät englanniksi. Kritiikki: käsin arvosteltavat harjoitustehtävät arvosteltiin liian tiukasti. CS-A1150 Tietokannat 6.2.2023 12 / 26

Tietokanta ja tietokannan hallintajärjestelmä Tietokanta (database) on kokoelma jollain tavalla yhteen kuuluvaa tietoa. Miksi tarvitaan tietokantoja ja tietokannan hallintajärjestelmiä? Miksi ei riitä tallentaa tietoa esim. tekstitiedostoihin tai Excel-tiedostoihin? Mitä sellaista tietokannanhallintajärjestelmät tarjoavat, jota tekstitiedostot tai Excel eivät suoraan tarjoa? Mieti ja kirjoita ajatuksia sivulle http://presemo.aalto.fi/tietokannat2023/ CS-A1150 Tietokannat 6.2.2023 13 / 26

Tietokantojen historiasta Ensimmäiset kaupalliset tietokannan hallintajärjestelmät 1960-luvulla Rakennettu tiedostojärjestelmien pohjalle. Datamalli ja tiedon varastointi tiivisti yhteydessä toisiinsa. Esimerkkejä: pankkijärjestelmät, lentoyhtiöitten paikanvarausjärjestelmät, yhtiöitten kirjanpito-, varasto- ja henkilöstöjärjestelmät. Kyselyt hankalia kirjoittaa ja usein hitaita suorittaa Relaatiotietokannat: E.F. Codd: A relational model for large shared data banks, Communications of the ACM, 1970. Datamalli ja tiedon varastointi erotettu toisistaan. Korkean tason kyselykieli, SQL (esitelty 1976). Edelleen hyvin tärkeä. CS-A1150 Tietokannat 6.2.2023 16 / 26

Nykyisiä suuntauksia Olio-ohjelmoinnin yhdistäminen relaatiotietokantoihin Pienemmät järjestelmät, jotka pyörivät PC:ssä Suuret järjestelmät, joissa relaatiotietokannan ja SQL:n ominaisuuksia on karsittu, jotta saadaan tehokas tietokanta määrättyyn tarkoitukseen. Keskusmuistitietokannat. Rakenteisten dokumenttien (JSON, XML) käsittely. Heterogeenisen tiedon kerääminen ja yhdistely monesta eri lähteestä, tietovarastot (data warehouses). CS-A1150 Tietokannat 6.2.2023 17 / 26

Tietokannan hallintajärjestelmän osat Tietokanta Varsinaisen tieto (data) sekä kuvaus tiedon rakenteesta (metadata). Muistinhallitsija (storage manager) Huolehtii tiedonsiirrosta keskusmuistin ja esim. kovalevyllä olevan tietokannan välillä. Kyselynkäsittelijä (query processor) Etsii mahdollisimman tehokkaan tavan kyselyiden ja päivitysten suorittamiseksi. Tapahtumankäsittelijä (transaction manager) Kontrolloi samanaikaisten käyttäjien operaatioiden lomittumista (samanaikaisuuden hallinta, concurrency control) ja varmistaa päivitysten atomisuuden. CS-A1150 Tietokannat 6.2.2023 18 / 26

Relaatiomalli Käytössä suurimmassa osassa kaupallisista tietokannan hallintajärjestelmistä. Yksinkertainen korkean tason kyselykieli, monipuoliset mahdollisuudet. Mahdollista implementoida tehokkaasti. CS-A1150 Tietokannat 6.2.2023 19 / 26

Relaatiomalli, jatkoa Tietokanta koostuu kaksiulotteisista tauluista (table), joita kutsutaan relaatioiksi (relation). Jokaisella relaatiolla on joukko nimettyjä attribuutteja (attribute). Kullakin taulun rivillä eli monikolla (tuple) on arvot eri attribuuteille. Attribuuttien arvojen tulee olla atomisia Arvoilla on tyyppi. Relation Customers custno name born bonus address email 112233 Teemu Teekkari 1995 55 Servinkuja 3 tteekkari@gmail.com 554422 Riina Raksalainen 1993 43 Otaranta 8 riinar@yahoo.com 37856 Antti Virta 1970 12 Aaltokatu 4 antti@hotmail.com CS-A1150 Tietokannat 6.2.2023 20 / 26

Huomautuksia ja käsitteitä Relaatiot ovat monikoiden joukkoja, ei listoja. Myös attribuutit voidaan esittää mielivaltaisessa järjestyksessä. Relaatiokaavio (relation schema) määrittää, mitä attribuutteja relaatioon kuuluu ja mikä on attribuuttien tyyppi. Esimerkiksi Customers(custNo, name, born, bonus, address, email) tai tyyppien kanssa Customers(custNo:string, name:string, born:integer, bonus:integer address:string, email:string) Relaation instanssi tarkoittaa relaation sisältämiä monikoita tietyllä hetkellä. CS-A1150 Tietokannat 6.2.2023 21 / 26

Avain Joukko relaation attribuutteja muodostaa relaation avaimen, jos millään kahdella relaation monikolla ei saa olla samoja arvoja kaikilla avaimen attribuuteilla. Relaatiossa Customers attribuutti custno sopii relaation avaimeksi. Joskus mikään attribuutti ei riitä yksistään relaation avaimeksi, vaan useampi attribuutti yhdessä muodostaa avaimen. Avainattribuuttien arvojen pitää olla yksikäsitteisiä kaikilla mahdollisilla relaation instansseilla. Relaatiokaaviossa avaimeen kuuluvat attribuutit merkitään usein alleviivaamalla, esimerkiksi Customers(custNo, name, born, bonus, address, email) CS-A1150 Tietokannat 6.2.2023 22 / 26

Erikoisarvo NULL NULL kuvaa sitä, että jonkin attribuutin arvoa ei jollain monikolla tiedetä tai ole määritelty. Esimerkki: lisätään Customers-relaatioon uusi asiakas, jonka syntymävuosi ei ole lisääjän tiedossa: Relation Customers custno name born bonus address email 112233 Teemu Teekkari 1995 55 Servinkuja 3 tteekkari@gmail.com 554422 Riina Raksalainen 1993 43 Otaranta 8 riinar@yahoo.com 37856 Antti Virta 1970 12 Aaltokatu 4 antti@hotmail.com 41678 Anne Asiakas NULL 0 Narutie 7 anne@iki.fi CS-A1150 Tietokannat 6.2.2023 23 / 26

NULL-arvojen vaikutuksia Halutaan hakea edellisen kalvon relaatiosta kaikki ne asiakkaat, jotka ovat syntyneet vuoden 1990 jälkeen eli joille ehto born > 1990 on tosi. Anne Asiakas ei tule mukaan. Entä, jos ehto onkin born > 1990 OR born <= 1990? Tulevatko kaikki monikot mukaan? CS-A1150 Tietokannat 6.2.2023 24 / 26

Toinen esimerkki relaatioista Oletetaan, että halutaan tallentaa tiedot yliopiston opiskelijoista, kursseista ja siitä, kuka opiskelija on suorittanut minkin kurssin. Kursseista tarvitaan vain perustiedot (ei esim. lukujärjestys- tai opettajatietoja). Oletetaan, että opiskelija voi suorittaa saman kurssin vain yhteen kertaan. Mitä relaatioita määrittelisit? Mitä avaimia näille relaatioille tarvitaan? CS-A1150 Tietokannat 6.2.2023 25 / 26