2.1 Sovellusarkkitehtuuri 2.2 Käsitteellinen mallintaminen Luku 2 Arkkitehtuuri ja analyysi ITKA204 kevät 2016 1
2.1 Sovellusarkkitehtuuri Tietokannanhallintajärjestelmien luokittelua DBMS:iä voidaan luokitella mm. seuraavien kriteerien perusteella: Tietomallin mukaan esim. Relaationaalisiin (esim. SQL Server, Oracle, PostgreSQL) Oliokeskeisiin (esim. ObjectDB, Gemstone) Dokumenttikeskeisiin (MongoDB, CouchDB) Samanaikaisten käyttäjien lukumäärän mukaan: Monen käyttäjän (esim. yllä mainitut) vs. yhden käyttäjän (esim. Access, Base) Maantieteellisen sijainnin mukaan: Keskitetty vs. hajautettu. Käyttötarkoituksen mukaan: Yleiskäyttöiset vs. spesifiset käyttötarkoitukset. ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 2
2.1 Sovellusarkkitehtuuri Tietokannanhallintajärjestelmän ominaispiirteitä Keskeisimpiä ominaispiirteitä, joita edellytetään tietokannanhallintajärjestelmiltä: 1. Suorittavat perusoperaatioita (luominen, etsiminen, muokkaaminen, poistaminen eli CRUD). 2. Mahdollistavat tietoriippumattomuuden (data independence) Fyysinen tietoriippumattomuus: sovellusohjelmaa ei tarvitse muokata, vaikka tietokannan fyysistä rakennetta (esim. tiedon sijaintia, esitysmuotoa, apurakenteita) muokattaisiin. Looginen tietoriippumattomuus: sovellusohjelmaa ei tarvitse välttämättä muuttaa loogisen rakenteen muuttuessa. 3. Mahdollistavat samanaikaiset käyttäjät 4. Mahdollistavat tiedon eheyden eli ristiriidattomuuden sekä toisteisuuden minimoinnin. 5. Mahdollistavat tiedon turvaamisen: käyttöoikeuksien määrittämisen ja valvonnan. 6. Ovat suorituskykyisiä. 7. Pyrkivät yhteensopivuuteen muiden järjestelmien, tekniikoiden ja DBMS:ien kanssa. 8. Pyrkivät vaivattomaan skaalautuvuuteen käyttäjien ja datan määrän sekä laitteiston suorituskyvyn suhteen. ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 3
2.1 Sovellusarkkitehtuuri Tietokannanhallintajärjestelmän osat Edellä mainittujen toimintojen lisäksi DBMS voi sisältää komponentteja esim.: Samanaikaisten tapahtumien käsittelyyn (erityisesti RDBMS:t) Varmuuskopiointiin ja palautukseen Suorituskyvyn ja kuormituksen monitorointiin Virhetilanteista toipumiseen Raportointiin, analysointiin ja tiedonlouhintaan Eräajoon eli suuren datamäärien tuomiseen kantaan ja viemiseen kannasta. Lisäksi voi olla väliohjelmistoja DBMS:n liittämiseksi muihin järjestelmiin tai DBMS:iin sekä jaetut komponentit käyttöjärjestelmän tai kernelin kanssa. Erityisesti kaupallisten tuotteiden kalliimmissa versioissa graafinen käyttöliittymä. ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 4
2.1 Sovellusarkkitehtuuri Sovellusohjelman tietokantakyselyt Tietokantajärjestelmän sovellusohjelman tietokantakyselyt tehdään tavallisesti: upottamalla kyselykieltä (esim. SQL) isäntäkieleen (esim. Java), kutsumalla isäntäkielessä tietokantaan tallennettua rutiinia (esim. PL/SQL tai T/SQL), kokonaan isäntäkielellä (ns. natiivikyselynä) tai ORM (object-relational mapper) työkaluja käyttäen. Käyttöliittymä HAE-painike Sovellusohjelma tuotteet.objects.raw( SELECT hinta FROM tuote; ) DBMS SELECT hinta FROM tuote; π hinta (tuote) 0 init 0 8 9 00 1 openread 0 3 0 1 00 2 rewind 0 6 0 00 3 column 0 0 1 00 ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 5
2.1 Sovellusarkkitehtuuri Tietokantakäskyn kulku Sovellusohjelma Kysely loogisiin tietorakenteisiin korkean tason kyselykielellä Käskykomponentti Kysely loogisiin tietorakenteisiin matalan tason kysely- tai ohjelmointikielellä Varastointikomponentti Kyselty data Muisti Levy DBMS Kysely fyysisiin tietorakenteisiin matalan tason ohjelmointikielellä ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 6
2.1 Sovellusarkkitehtuuri Tietokantakäskyn kulku Sovellusohjelma Kysely Saantipolun hallinta Metadata Tietokanta-ajuri tai DBMS Yhteyden myöntäminen Lokinhallinta Tapahtumaloki Parseri Uudelleenkirjoitus Rinnakkaisuudenhallinta Lukkotaulu Optimointi Ajo Muistinhallinta Tietokanta Käskykomponentti Varastointikomponentti ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 7
Tietokantajärjestelmän suunnittelun vaiheet Vaatimusmäärittely ytun nimi ostun budjetti Yritys 1 N Osasto DBMS-riippumaton DBMS-spesifinen Toimintoanalyysi Sovellusohjelman suunnittelu Käsitteellinen mallintaminen Looginen suunnittelu Fyysinen suunnittelu Yritys ytun CHAR(10) nimi VARCHAR(20) Osasto ostun CHAR(5) budjetti INT ytun CHAR(10) Sovellusohjelman toteutus y y y y y y o o o o ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 8
ER-malli Chenin (1976) ER-malli (Entity-Relationship model) on käsitteellisen tason tietomalli. Tunnetuin ja perusosiltaan sovelletuin. Myöhemmin muunneltu ja laajennettu: EER-malli, ERT-malli, ER+-malli jne. Mallintaa nimensä mukaisesti kohteita ja suhteita (vrt. UML-luokkakaavion luokat ja assosiaatiot). Käsitteellinen taso Looginen taso Suunnittelu Toteutus Fyysinen taso Data ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 9
Kohde ja kohdetyyppi Kohde (entity) on reaalimaailmaa kuvaava konkreettinen tai käsitteellinen asia tai tapahtuma. Kohde on kohdealueen kannalta mielenkiintoinen, ts. siitä halutaan tallentaa tietoa. Kohde voi olla esim. Matti, ABC-123 tai tilitapahtuma #222001 Kohdetyyppi (entity set) on kohteiden abstrahoitu joukko. Kohteiden samanlaisuus ilmenee niiden attribuuttien ja suhteiden samanlaisuutena. Kohdetyyppi voi olla esim. ihminen, auto tai tilitapahtuma. Kohdetyyppi Opiskelija ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 10
Attribuutti Attribuutti on ominaispiirre, joka on kohteen tai suhteen kannalta mielenkiintoinen. Esim. etunimi, sukunimi, rekisterinumero, saldo, nostomäärä. Attribuutilla on arvo, joka kuvastaa kohteen tai suhteen yksittäistä ominaispiirrettä. Esim. Matti, Meikäläinen, ABC-123, 150, 20. Kullakin attribuutilla on arvojoukko (domain), josta arvot tulee valita. Esim. nostomäärä = (20-100), rekisterinumero = ^[A-Z]{3}-[0-9]{3}$ Attribuutti sukunimi ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 11
Avainattribuutti ja koottu attribuutti Avainattribuutti (key) tunnistaa yksikäsitteisesti kohteen. Joskus tarvitaan useampia avainattribuutteja yksikäsitteiseen tunnistamiseen. Avainattribuutin arvo ei voi olla tyhjäarvo. Avainattribuuttien todellinen osajoukko ei saa tunnistaa kohteita yksiselitteisesti toisistaan. Jos attribuutti ei ole avainattribuutti, se on kuvaileva. Koottu attribuutti (composite) voidaan jakaa pienempiin osiin. Jos attribuutti ei ole koottu, se on yksinkertainen. katu Avainattribuutti htun Koottu attribuutti postinro osoite kaup ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 12
Johdettu ja moniarvoinen attribuutti Johdetun (derived) attribuutin arvo on johdettu joko toisen attribuutin tai attribuuttien arvosta tai johdettuun attribuuttiin liittyvän kohdetyypin mukaisten kohteiden lukumäärästä. Jos attribuutti ei ole johdettu, se on tallennettu. Moniarvoisella attribuutilla (multivalued) voi olla usea arvo kohdetta kohden. Jos attribuutti ei ole moniarvoinen, se on atominen. Johdettu attribuutti ikä Moniarvoinen attribuutti puh ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 13
Attribuuttien luokittelu Tyyppi Atominen attribuutti Yksinkertainen attribuutti Tallennettu attribuutti Avainattribuutti Tyhjäarvoinen attribuutti Vastakohta Moniarvoinen attribuutti Koottu attribuutti Johdettu attribuutti Kuvaileva attribuutti Arvon sisältävä attribuutti synt_aika optun katu ikä Opiskelija osoite postinro email kaup ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 14
Suhdetyyppi Suhde (relationship) on mikä tahansa 1..n kohteen välillä vallitseva riippuvuus tai muu kiinnostava asiayhteys. Esim. Aatami omistaa Toyotan tai Bertalla on arvosana 4 kurssista ITKP101. Suhteiden joukot muodostavat suhdetyyppejä. Esim. henkilöt omistavat autoja tai opiskelijoilla on kurssisuorituksia. Suhdetyyppiä kuvataan tavallisesti verbillä. Myös suhdetyypeillä voi olla attribuutteja. Attribuutit kuvaavat suhteen ominaisuuksia. Suhdetyypin asteluvun määrittää suhdetyyppiin liittyvien kohdetyyppien lukumäärä. suorituspvm Opiskelija Kurssi Työntekijä suorittaa on esimies ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 15
Kardinaliteetti Kardinaalisuus ilmaisee, kuinka moneen tietyn tyyppiseen suhteeseen kohde osallistuu tai voi osallistua. Kardinaalisuusmerkintöjen tulee vastata mallinnettavan kohdealueen liiketoimintalogiikkaa. Minimikardinaalisuus (ts. pakollisuus) ilmaistaan viivoilla: Yksi viiva: suhteeseen osallistuminen on vapaaehtoista (minimikardinaalisuus 0). Kaksi viivaa: suhteeseen osallistuminen on pakollista (minimikardinaalisuus 1). Maksimikardinaalisuus ilmaistaan merkinnällä 1 tai muuttuja. htun osoite rektun merkki Tälle kohdealueelle pätee: Autolla on vain yksi omistaja. Sellaiset autot, joilla ei ole omistajaa, eivät ole kiinnostavia. Henkilö 1 N Auto Henkilö omistaa 0..n autoa. Auton omistaa 1..1 henkilöä. omistaa ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 16
Kardinaliteetti Maksimi 1: auton omistaa korkeintaan yksi henkilö. Maksimi N: henkilö omistaa korkeintaan N autoa. Opettaja M Henkilö 1 N Auto Opiskelija N P Kurssi omistaa Minimi 0: henkilö ei välttämättä omista autoa. Minimi 1: auton omistaa välttämättä joku henkilö. suorituksen arvostelu suorituspvm N Työntekijä 1 Vastapäivään: työntekijä on esimies 0..n työntekijälle. Myötäpäivään: työntekijällä on esimiehenä 1..1 työntekijää. on esimies ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 17
Muita kardinaalisuusnotaatioita Chen Martin harakanvarvas ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 18
Heikko kohdetyyppi ja tunnistava suhdetyyppi Jos kohdetyypin mukaisia kohteita ei voida tunnistaa sen omien attribuuttien avulla, sitä sanotaan heikoksi kohdetyypiksi (weak entity set). Heikko kohde tunnistetaan sen avainattribuuttien lisäksi tunnistavan kohdetyypin avainattribuuttien perusteella. Tunnistava kohdetyyppi on jokin heikkoon kohdetyyppiin liittyvä vahva kohdetyyppi. Tunnistavaa kohdetyyppiä merkitään tunnistavalla suhdetyypillä. Esim. tietokantaan tallennetuista lapsista ei voida tallentaa henkilötunnusta, vaan lapset tunnistetaan heidän huoltajiensa kautta tai yritysten osastot tunnistetaan yritysten, johon osastot kuuluvat, kautta. ytun nimi ostun budjetti Yritys 1 N Osasto ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 19
Luentotehtävä 1 Tee alla olevan kuvauksen mukainen ER-kaavio, josta ilmenevät kohdetyypit, suhdetyypit, olennaisimmat attribuutit, avainattribuutit sekä minimi- ja maksimikardinaalisuudet. Tietokannan tulee sisältää tietoja asiakkaista (astun, asnimi, asosoite), jotka tilaavat tiettyinä päivinä tuotteita (tuoteno, tuotenimi, hinta). Tilaus tunnistetaan tilausnumerolla (tilausno). Tilaus voi koskea useampia tuotteita (tiettyjä määriä). ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 20
Luentotehtävä 1: ratkaisu astun Ratkaisu 1: asnimi asosoite tilausno tilpvm kpl tuoteto tuotenimi hinta Asiakas 1 N Tilaus M N Tuote tekee koskee Ratkaisu 2: astun asnimi asosoite tilausno tilpvm tuoteto kpl tuoteto tuotenimi hinta Asiakas 1 N 1 N N 1 Tilaus Til_rivi Osasto Tuote tekee kuuluu koskee ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 21
Abstraktiorakenteet Abstraktiorakenteilla voidaan mallintaa yleistämistä (generalization) ja erilaistamista (specialization). Yleistämisen mukaan tarkastelu siirretään alikohdetyypeistä ylikohdetyyppeihin, esim. opiskelija ja henkilökunta ovat henkilöitä. Erilaistaminen on käänteinen muoto yleistämiselle: ylikohdetyypistä muodostetaan alikohdetyyppejä. puh htun Henkilö nimi Alikohdetyyppijoukon kattavuus kuvataan viivoilla: Kattava (kaksi viivaa): alijoukkojen yhdiste on sama kuin ylijoukko. Osittainen (yksi viiva): osa ylijoukon kohteista ei kuulu mihinkään alijoukkoon. huone o pääaine Abstraktiorakenteet muistuttavat perusperiaatteeltaan UML-luokkakaaviostakin tuttua perintää. Henkilökunta Opiskelija Alikohdetyypit perivät ylikohdetyyppinsä attribuutit. ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 22
Erillinen abstraktiorakenne Abstraktiorakenne on erillinen (disjoint), jos alikohteet voivat kuulua korkeintaan yhteen alikohdetyyppiin. A A d B C d B C A B C B C Esim. ajoneuvot (A) ovat joko autoja (B) tai veneitä (C). Esim. ajoneuvot (A) ovat joko autoja (B) tai veneitä (C) tai joitakin muita. ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 23
Leikkaava abstraktiorakenne Abstraktiorakenne on leikkaava (overlapping), jos alikohteet voivat kuulua useampaan kuin yhteen alikohdetyyppiin. A A o B C o B A C B C B C Esim. ajoneuvot (A) ovat joko autoja (B) tai veneitä (C) tai molempia. Esim. ajoneuvot (A) ovat joko autoja (B) tai veneitä (C) tai molempia tai joitakin muita. ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 24
Koostaminen ja osittaminen Koostamisella (aggregation) voidaan muodostaa kokonaisuuksia alemman tason kohteista. Osittaminen on koostamisen käänteinen muoto: kokonaisuuksia voidaan jakaa osiksi. Erityistä merkintätapaa ei ER-notaatiossa ole. Auto Ovi Akku Moottori Pyörä Kaasutin Sylinteri ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 25
ER-notaation yhteenveto (vahva) kohdetyyppi moniarvoinen attribuutti Osasto heikko kohdetyyppi johdettu attribuutti suhdetyyppi tunnistava suhdetyyppi koottu attribuutti attribuutti avainattribuutti o abstraktiorakenne o = overlapping d = disjoint heikon kohdetyypin avainattribuutti vastaavan saat tenttiin ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 26
Mallintamisprosessi 1. Peruskohdetyyppien tunnistaminen Etsi toistuvia käsitteitä puheesta tai kirjallisesta kuvauksesta. Mallinna ne käsitteet, joista halutaan tallentaa tietoa tietokantaan. Helpoimmat kohteet tunnistaa ovat reaalimaailman konkreettiset asiat: tuote, asiakas jne. Vaikeampia kohteita ovat käsitteelliset asiat: tilaus, tilausrivi, sopimus jne. Valitse kohdetyypeille mahdollisimman täsmälliset nimet ja tarvittaessa kuvaile niiden merkitys. Huomaa, että erilaiset raportit ja tulosteet eivät ole kohdetyyppejä, vaan tietokannasta johdettua tulostietoa. 2. Attribuuttien tunnistaminen Pohdi, mitä kohdetyyppien ominaisuuksia halutaan tallentaa tietokantaan. Kaikki tieto ei välttämättä ole relevanttia, vaikka se toistuvasti mainittaisiinkin. Valitse erityiset attribuutit (avain-, moniarvoiset, johdetut, kootut). ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 27
Mallintamisprosessi 3. Suhdetyyppien tunnistaminen Etsi suhteet, jotka ovat tietokannan kannalta relevantteja. Suhteet voivat koskea esim. olemassaoloa, toimintaa tai tapahtumaa. 4. Iterointi Lisää mallintamisprosessin aikana löytyneitä uusia attribuutteja, kohdetyyppejä ja suhdetyyppejä. Nimeä kohdetyypit ja attribuutit tarkemmin ja kuvaavammin. Nimeä suhdetyypit kuvaavilla verbeillä tai muuten. Merkitse suhdetyyppien attribuutit. Merkitse kardinaalisuusmerkinnät. Käytä tarvittaessa abstraktiorakenteita selventämään rakennetta (useilla kohteilla on samoja attribuutteja). ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 28
Suuret kohdealueet Jos mallinnettava kohdealue on erityisen suuri, voi olla syytä mallintaa tietokanta osissa käsitteellisellä tasolla, ja integroida näkemykset (view) myöhemmin. Vähittäinen näkemysten integrointi: Big bang integrointi: A B C D A B C D Koko tietokannan kattava ER-kaava Koko tietokannan kattava ER-kaava ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 29
TOP 5 -virheet 1. Kardinaalisuudet on merkitty väärin. 2. Suhdetyyppejä on liikaa: ylimääräiset suhdetyypit kuvaavat tietokannan kannalta merkityksettömiä suhteita. Tavallisesti väärin: esim. asiakas katsoo autoa tai johtaja luo raportin. 3. Järjestelmän tulosteita on valittu kohdetyypeiksi. Tavallisesti väärin: esim. raportti, yhteenveto, kalenteri. 4. Kohdetyyppi on mallinnettu attribuuttina. Tavallisesti väärin: esim. attribuutit asiakas tai tuote. 5. Samat kohdetyypit toistuvat eri nimillä. Tavallisesti väärin: esim. tilavaraus, varaus, varauksen_tiedot mallintamassa samaa kohdetyyppiä. ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 30
Osaamistavoitteet Osaa kuvailla tietokannanhallintajärjestelmän komponentit. Osaa kuvailla tietoriippumattomuuden merkityksen sovelluskehitykselle. Osaa soveltaa ER-mallia käsitteellisessä mallintamisessa, esim.: Annetaan ER-kaavio ja pyydetään muokkaamaan, tarkentamaan tai laajentamaan sitä. Annetaan ER-kaavio ja pyydetään selittämään tai korjaamaan sitä. Annetaan kuvaus kohdealueesta ja pyydetään esittämään sen mukainen ER-kaavio. Ei: Martinin kardinaalisuusnotaatiota eikä harakanvarvasnotaatiota. Huom. ER-notaation saat tentissä liitteenä! ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 31