KURSSIMONISTE KEVÄT 2015

Koko: px
Aloita esitys sivulta:

Download "KURSSIMONISTE KEVÄT 2015"

Transkriptio

1 1 CT60A4301 Tietokannat 5 op KURSSIMONISTE KEVÄT 2015 Koonnut: Erja Mustonen-Ollila Lisäykset vuodelle 2015: /Erja Mustonen-Ollila

2 CT60A4301 Tietokannat -kurssin sisältö ja suorittaminen Kevään 2015 luentoaikataulu, harjoitusaikataulu, Viope-verkkokurssin suoritusaikataulu, tentit, kurssin loppuarvosana ja kurssipalaute: Luennot pidetään maanantaisin klo salissa Harjoitukset pidetään keskiviikkoisin klo mikroluokassa Harjoitukset alkavat ensimmäisellä luentoviikolla. Harjoitustyön palautuspäivä on perjantai kello sähköpostin liitteenä. Katso tarkemmat ohjeet harjoitusohjeen kohdasta Nopasta. Harjoitustyö on pakollinen kurssin suorittamiseksi. Harjoitustyötä ohjaa kurssin luennoija. Harjoitustyön kiitettävästi suorittaminen korottaa kurssin loppuarvosanaa yhdellä (1) arvosanalla. 2 ViopeSQL-verkkokurssi on pakollinen, mutta tentissä saa korvata SQL-kysymyksen kurssin suorittamisella (yhteensä 8 pistettä). Ohjeet SQL-verkkokurssista ovat Nopassa kohdassa Muu materiaali. ViopeSQL- verkkokurssin suoritusaika päättyy kello SQLViope verkkokurssia ohjaa kurssin luennoija Erja Mustonen-Ollila. Tentit Kurssiin kuuluu tentti. Opiskelijan on itsensä huolehdittava tentti-ilmoittautumisesta. Kurssin tentissä on 4 kysymystä, jotka kukin vastaavat 8 täyttä pistettä. SQLViope verkkokurssin suorittamisella saa 8 p tenttiin. Kurssin loppuarvosana Kurssin loppuarvosanan saamiseksi on opiskelijan suoritettava: tentti hyväksytyllä arvosanalla (minimissään arvosana 1), SQL-verkkokurssi ja harjoitustyö (hyväksytty tai kiittäen hyväksytty). Kurssipalaute: Kurssin loppupuolella luennoija lähettää palautekyselyn opiskelijoille vastattavaksi. Kurssipalaute näkyy Nopassa kohdassa tulokset. Kurssin vastapalaute: Opiskelijoilta saamaansa palautteeseen luennoija vastaa vastapalautteella. Vastapalaute löytyy Nopasta. Kaikissa kurssiin liittyvissä asioissa voi ottaa yhteyttä kurssin luennoijaan, erja.mustonen-ollila@lut.fi Vaihtoehtoinen tapa suorittaa kevään 2015 Tietokannat- kurssi: Koko Tietokannat kurssin voi suorittaa myös täysin etänä Stanford- yliopiston Databasekurssin avulla: Tässä Stanford- kurssin tapauksessa opiskelija kirjautuu itse etäkurssille ja suorittaa sen klo mennessä ja saa siitä todennetun/todennetut sertifikaatit. Kopion sertifikaateista opiskelija toimittaa luennoijalle sähköpostin liitteenä. Suorittaminen korvaa luennot, harjoitukset, harjoitustyön, tentin ja SQL-Viopen verkkokurssin. Onnea kurssille!

3 3 Relaatiotietokannat... 4 Tiedonhallintajärjestelmän perusteita... 5 Relaatiotietokantojen tasot ja kuvausmallit... 7 Relaatiotietokannan perusteet ja termistöä... 7 Relaatiomalli Käsitenalyysi Käsiteanalyysin pohja: ER-malli (entity-relationships model) Relaatioalgebran perusoperaatiot Tietokannan suunnittelu- ja toteutusprosessi Tietokannan suunnittelun vaiheet ER-mallintamisen peruskäsitteet ER-kaaviosta relaatiomalliksi: esimerkkejä ER-mallista relaatioiksi -säännöt Tietokannan normalisointi SQL-kieli Oliotietokannat Olio-relaatiomalli Open Database Connectivity (ODBC) ja OLE DB Oliotietokannat ja OQL Oliosuuntautuneet tietokannat Olion identiteetti, olion rakenne ja tyypin rakentajat OQL SQL-3 (SQL:99) TIETOKANTASUUNNITTELUN PERUSTEET Seuraavat materiaalit ovat uutta vuoden 2015 luentomateriaalia: Tietokannan turvallisuus Tietoturvallisuus Sovellusten turvallisuus Saatavuus Eheys Luottamuksellisuus Tietokantojen uhat Tietokannat ja tietoverkot Tietoverkkojen ja tietokantojen rajapinnat PHP Ja MySQL Hajautetut tietokannat & tietovarastointi HAJAUTETUT TIETOKANNAT (Distributed database) Komplikaatiot Hajautettujen tietokantojen suunnittelu Hajautettu hakemistojen hallinta Hajautettu kyselyn prosessointi Hajautettu samanaikaisuuden hallinta Hajautettu umpikujan hallinta Hajautetun tietokannan luotettavuus Toistuvuus TIETOVARASTOINTI (Data warehousing) Yleinen arkkitehtuuri Tietovaraston ominaisuudet Tietovarastoinnin uudet trendit... 63

4 4 Relaatiotietokannat Kurssin relaatiotietokantojen osuus jäsentyy alla olevan kuvan 1 mukaisesti. Kuva 1. reaalimaailma Käyttäjä ja Käyttäjän toiveet mallinnus ERkaavio Tk:n määrit tely Lomake- Raportti yms. määr Tk:n käyttämi nen Muunto relaatioiksi relaatiomalli Tiedonhallinta- Järjestelmän ydin Thj:n käyttöliittymät Thj:n fyysiset liittymät Tietohakemisto Tietokanta

5 Tiedonhallintajärjestelmän perusteita 5 Tiedonhallintajärjestelmän rakennetta voi parhaiten selittää alla olevan kuvan 2 avulla. Määritykset ja määrityksien muutokset Tietokantakyselyt Tietojen lisäykset, poistot ja muutokset Kuva 2. "Kyselyjen" prosessointi Transaktioiden hallinta Tietohakemisto ja tietokanta (metadata ja data) Tiedostojen hallinta Tiedonhallintajärjestelmä prosessoi (tulkitsee, optimoi, suorittaa) käyttäjiltä ja ohjelmista tulevia sanomia, jotka voivat olla: - kyselyjä tietokannasta - tietokannan tietojen lisäyksiä, poistoja ja muutoksia - tietokannan tietojen määritysten muutoksia Tiedonhallintajärjestelmän pitää em. "käyttäjäpalveluiden" lisäksi huolta tietokannan eheydestä. Tätä varten tiedonhallintajärjestelmä valvoo transaktioita (sanomia) mm. niiden alkamista, päättymistä, peruutuksia, varmistuksia ja uudelleensuorituksia esim. lukkojen, loki-tiedostojen ja aikaleimojen avulla. Tiedonhallintajärjestelmä hoitaa tietokannan ja tietohakemiston tiedostonhallinnan joko käyttöjärjestelmän avulla (pienehköissä tiedonhallintajärjestelmissä) tai pääosin omatoimisesti (suuremmissa tiedonhallintajärjestelmissä). Tiedonhallintajärjestelmä hakee tietokannasta tietoja (ja vie tietoja) ja muuntaa ne tietohakemistossa olevien määrittelyjen mukaisina käyttäjille (tai sovellusohjelmille). Em. tehtävien lisäksi tiedonhallintajärjestelmään kuuluviksi luetaan mm, tietokannan konvertointityökaluja (versiosta toiseen tai toiseen tietokantajärjestelmään), varmistuksiin ja palautuksiin liittyviä ohjelmia, eheyden tarkistuksiin ja korjaamiseen liittyviä ohjelmia ja tietokannan dokumentointityökaluja. Tietokannassa ovat varsinaiset käyttäjien tarvitsemat ja tallentamat tiedot. Tietokannan tiedostorakenne ei näy käyttäjälle eikä myöskään sovellusohjelmalle, vaan tiedonhallintajärjestelmä hoitaa tietojen talletukset ja haut tietokantaan ja tietokannasta. Tietokannassa saattaa olla lisäksi

6 6 indeksi- tai puurakenteita nopeuttamassa hakua. Tietokannan suunnittelija tai vastuuhenkilö voi määritellä tietyt tiedot indeksoitaviksi, mutta jotkut tiedonhallintajärjestelmät osaavat optimoida tietokannan rakennetta ja tarvittaessa luoda uusia indeksitauluja. Tietohakemistossa ovat tietokannan tietojen kuvaukset, mm. tietojen nimet, tyypit, ulkoasu, tiedon pituus, tarkistussäännöt, triggerit, mahdollisia ilmoituksia, syöttömaskit, pakollisuus, oletusarvo ja avainkenttien määrittelyt. Tietokannan tietojen määrittelyistä osa on sellaisia, että niitä voi vaihtaa myös tietokannan perustamisen jälkeen ja osa määrittelyistä vaatii tietokannan konversiota tullakseen voimaan. Tietokantoja käytettäessä ohjelmiin ei siis tarvitse kirjoittaa mitään tietuekuvauksia, koska tiedonhallintajärjestelmä löytää tiedon nimen perusteella tietohakemistosta tiedon ominaisuudet. Tietokannan ja tietohakemistojen lisäksi tiedonhallintajärjestelmä luo ja pitää yllä lokitiedostoja, joihin kerätään tietokannan muutostapahtumia, joita voidaan käyttää tietokannan uudelleen organisointiin esim laitehäiriön jälkeen. Tietokannan hallintajärjestelmiä ovat esim. Oracle, DB2, Ingres ja SQL Server. Tietyin rajoituksin tietokannan hallintajärjestelmäksi voi kutsua myös Accessia ja Paradoxia. Hallintajärjestelmän muita perusvaatimuksia ovat seuraavat: perusoperaatiot (tallennus, haku, päivitys), tietoriippumattomuus, yhteiskäyttö, ylimäärättömyys, turvaaminen, tehokkuus ja suorituskyky, yhteensopivuus ja skaalautuvuus. Tietokannan hallintajärjestelmien huonoja puolia ovat mm. monimutkaisuus, koko, hinta, laitteistokustannukset, muutoskustannukset, suorituskyky ja vahinkojen suuri vaikutus. Tietoturvaa hoidetaan mm. seuraavilla oikeuksissa asioiden takia: taulukon omistajan (owner) määrittely (authorization), tietokantakäsittelyn valtuuksien myöntäminen (grant), oikeuksin delegoida valtuus edelleen (with grant option), valtuuksien epääminen (revoke) ja myös näkymien käsittelyyn voidaan myöntää oikeudet. Kustannuksia aiheuttava elvytys koostuu seuraavista osioista: varmuuskopio (backup copy), kopio koko tietokannasta tiettynä ajanhetkenä, pystytään palauttamaan (restore) tietty aikaisempi tietokannan tilanne, lokitiedosto (log file), voidaan siirtyä tietokannan tilasta toiseen, ajallisesti eteen tai taaksepäin. Jokaisen tietokantaan tehtävän muutoksen yhteydessä kirjoitetaan lokitiedostoon tietueen esi- ja jälkivedokset, jossa esivedos on kopio tietueesta ennen päivitystä ja jälkivedos on kopio tietueesta päivityksen jälkeen. Lisäyksen yhteydessä syntyy vain jälkivedos ja poiston yhteydessä syntyy vain esivedos. Tapahtumien (transaktio) lokitiedostoa käytetään mahdollistamaan palautuminen keskeytyneestä transaktiosta. Transaktio toteutetaan kokonaisuudessaan tai ei ollenkaan (atomicity). Tietokanta on ennen ja jälkeen transaktion ristiriidattomassa (consistent) tilassa. Eristyvyys (isolation) tarkoittaa, että transaktion aiheuttamat muutokset eivät saa näkyä muille ennen kuin koko transaktio on hyväksytty (commit) ja pysyvyys (durability) saavutettu. Kun tapahtuma on vahvistettu (commit), tapahtuman tulokset eivät häviä missään olosuhteissa. Keskeytyneen (aborted) transaktion tietokantaan tekemät muutokset pitää peruuttaa (rollback). Lisäksi tulee huomioida samanaikaisuuden käsittely (concurrency control) eli samanaikaiset transaktiot eivät saa sekoittua keskenään. Yhteiskäytössä useampi ihminen käyttää tietokantaa samanaikaisesti josta voi seurata ongelmia jos yhteiskäyttöön ei ole varauduttu. Keinona on on rajoittaa muiden käyttäjien mahdollisuuksia jonkin resurssin käytössä. Pessimistinen tapa (lukitukset) on toinen vaihtoehto. Tällöin

7 7 tietue lukitaan koko toimintoketjun ajaksi muilta käyttäjiltä. Optimistisempi tapa eli aikaleimat päivityksessä tarkoittaa sitä, että tietuetta päivitettäessä tutkitaan onko tietueessa "käyty" sen jälkeen kun se otettiin muutettavaksi (aikaleimat). Pessimistisessä lukituksessa käytetään eritasoisia lukituksia. 1)S-lukitus eli jaettu lukitus (shared): lukon omistaja ja muut voivat lukea sivun tietoja, mutta eivät päivittää niitä. Muut saavat S- ja U- lukituksia tälle sivulle. 2) U-lukitus eli päivityslukitus (update): lukituksen omistaja voi lukea tietoa ja aikoo päivittää sitä. Kukaan muu ei voi saada U- eikä X-lukitusta. Ennen päivitystä lukon omistaja odottaa, ettei muilla ole sivulle S-lukitusta. Sitten hän pyytää X-lukituksen ja suorittaa päivityksen. 3) X-lukitus eli poissulkeva (exclusive): lukituksen omistaja voi lukea tai päivittää lukittua dataa. Kukaan muu ei voi saada lukitusta. Lukkiumien (deadlocks) ennaltaehkäisy on oleellista. Tästä tietoa enemmän käyttöjärjestelmien kurssilla. Relaatiotietokantojen tasot ja kuvausmallit Relaatiotietokanta käsittää kolme tasoa: ulkoisen, käsitteellisen ja sisäisen tason. Sisäinen taso kuvaa tietokannan fyysistä rakennetta, todellisia talletettuja tietoja. Tiedon esitystapa, saantipolut yms. määritellään tällä tasolla. Käsitteellinen taso esittää koko tietokannan loogisen sisällön. Kuvaukset voidaan esittää joko käytetystä tietokantamallista riippumattomalla loogisella tasolla tai jonkin semanttisen (merkitystä kuvaavan) mallin mukaan tai tietokantamallin (kuten relaatiomallin) mukaan. Ulkoinen taso kuvaa tietokantaa tietyn käyttäjäryhmän tai sovelluksen kannalta. Käsitteellisellä tasolla yhtyvät kaikki ulkoisen tason näkymät. Ts. kolmentasoinen tietokantarakenne mahdollistaa sen, että käsitteellisen tason kuvaukset voivat muodostaa kohdealueesta suhteellisen pysyvän mallin. Tietokantariippumattomuus: looginen tietokantariippumattomuus kuvaa ulkoisen tason ja käsitteellisen tason keskinäistä riippumattomuutta ja fyysinen tietokantariippumattomuus kuvaa käsitteellisen tason ja sisäisen tason keskinäistä riippumattomuutta. Tietokannan rakenteen kuvaamiseen käytetään tietomalleja, jotka jaetaan semanttisiin malleihin, tietokantamalleihin ja fyysisiin malleihin. Semanttiset mallit: ER-malli: maailma kuvataan olioina ja niiden välisinä suhteina. ER-mallin pohjana on joukkoteoria ja relaatioteoria. Tietokantamallit: hierarkkinen malli, verkkomalli ja relaatiomalli. Hierarkkinen malli ja verkkomalli antavat käyttäjälle keinot navigoida tietokannassa tietuetasolla. Relaatiomalli sisältää lisäksi tietorakennetason, eikä tietuetaso välttämättä näy sen tietojenkäsittelyssä. Fyysiset mallit esittävät, miten tietokanta on talletettu muistiin. Ne käsittelevät tietuemuotoja, tietuejärjestystä ja hakupolkuja. Relaatiotietokannan perusteet ja termistöä E.F.Codd esitti vuonna 1970 relaatiotietokannan keskeiset ideat julkaisussa "A relational model for large shared data banks". Perusideoita ovat:

8 8 - Tietokanta näkyy käyttäjille tauluina eli relaatioina (vrt. excel-taulut). Siitä, millä tavalla tiedot on talletettu levylle, pitää huolta tiedonhallintajärjestelmä eikä käyttäjä tai sovellusohjelma "näe" tietokannan fyysistä talletusrakennetta (looginen ja fyysinen tietoriippumattomuus) - Tietokannan taulujen välillä voi olla yhteyksiä eli riippuvuuksia (relationship). - Tietokannan yksi taulu sisältää rivejä (vrt. tietueet) ja sarakkeita (vrt. tietueessa yksittäinen tieto). - Taulussa jokin tieto (tai tietojen yhdistelmä) on avain-kenttä, jonka avulla voidaan identifioida taulun rivi yksikäsitteisesti. - Vierasavain tarkoittaa taulussa sellaista tietoa, jonka avulla löydetään jostain toisesta taulusta haluttu rivi (tai halutut rivit) esim. tilitaulussa vierasavain on tilinomistaja, joka viittaa henkilotaulun henkilotunnus-tietoon (katso alla kuva 3). - Matemaattisesti perusteltu eli perustuu relaatioalgebraan. Tämä takaa sen, että relaatiotietokanta saadaan ohjelmallisesti toteutettua, kun on olemassa matemaattinen perusta algoritmiseen ohjelmointiin. - SQL- kieli (Structured Query Language), joka perustuu edellä mainittuun relaatioalgebraan. Kuva 3. Tilitaulu Tilinnro* Tilin saldo Tilin omistaja Tilin tyyppi , Luotollinen , Karttuva Henktaulu hetu* nimi lähiosoite Postitmp Matti Mattila Kaivokatu 12 A Hki Aino Kallas Alkutie Hki Relaatiotietokantojen "hyvyys" perustuu siihen, että relaatiotietokannat ja niissä tapahtuvat operaatiot voidaan kuvata matemaattisesti selkeästi relaatio-algebran avulla, mikä mahdollistaa käyttäjäystävälliset kyselykielet (esim. SQL) ja tehokkaat käsittelyalgoritmit. Relaatiotietokantojen "puutteena" voitaneen pitää sitä, että ne edellyttävät tietojen olevan unaarisia eli yksittäisiä ts. tietokannan tietyssä sarakkessa on yksi tieto. Sarake ei voi olla esim. lista tai uusi taulukko, niinkuin esim. C-kielen tietue-määrittelyssä tai oliotietokannoissa. Relaatiotietokanta muodostuu tauluista (tables), jotka sisältävät kenttiä (fields). Taulun nimeksi kannattaa valita jokin selkeä ja kuvaava nimi. Nimessä kannattaa kuitenkin välttää välilyöntejä, erikoismerkkejä ja skandinaavisia merkkejä (å,ä,ö). Jokainen taulu sisältää yhden tai useamman kentän Kenttiä (fields)luotaessa niille määritellään seuraavanlaisia ominaisuuksia: Kentän nimi Kentän nimeksi kannattaa valita jokin selkeä ja kuvaava nimi. Nimessä kannattaa kuitenkin välttää välilyöntejä, erikoismerkkejä ja skandinaavisia merkkejä (å,ä,ö). Tietotyyppi Numeerinen Merkkijono Aika Kiinteä vai vaihtuvamittainen kenttä? Maksimipituus ja mahdollinen tarkkuus

9 Onko tieto pakollinen: mahdollisimman moni kenttä pitää määritellä pakolliseksi, jolloin vältetään NULL-arvojen tuomat ongelmat. Tarkistukset syötettävän tiedon oikeellisuudelle tai sallittujen arvojoukkojen joukko. Oletusarvo AVAIMET (keys): - perusavain (primary key) - yksikäsitteinen muodostuen yhdestä tai useammasta sarakkeesta - taulusta ei saa löytyä identtisiä perusavaimen arvoja - ei saa puuttua yhdeltäkään riviltä - perusavaimen eheys (entity integrity) - toissijaiset avaimet (secondary key, secondary index) nopeuttavat taulun järjestämistä - viite-avaimet (foreign keys) - määritysalue on sama kuin jonkin perusavaimen Viite-eheys (Referential Integrity): Jokaista taulussa esiintyvää (NULL:sta poikkeavaa) viiteavaimen arvoa pitää vastata sama perusavaimen arvo taulussa, johon viiteavain viittaa. Yritettäessä rikkoa viite-eheyttä perusavaimen päivityksellä on kolme vaihtoehtoa: - NULLIFIES eli viiteavaimen nollaus: kaikki poistuvaan perusavaimeen viittaavat viiteavaimet muutetaan NULLeiksi soveltuu vain sarakkeisiin, joilta ei ole kielletty puuttuvaa arvoa (NOT NULL) - CASCADES eli johdannaispoisto: kaikki poistuvaan perusavaimeen viittaavat viiteavaimet ja vastaavat rivit poistetaan - RESTRICTED eli rajoitettu poisto: voidaan poistaa vain perusavaimet, joihin ei ole viittauksia eli kyseistä päivitystä ei tehdä. Viite-eheysmäärittelyt: Many-to-Many -suhteisiin DELETE RESTRICTED, UPDATE CASCADES Many-to-One -suhteet DELETE RESTRICTED, UPDATE CASCADES heikoille kohdetyypeille DELETE CASCADES, UPDATE CASCADES 9 Tietokanta on kokoelma yhteen liittyvää tietoa (data). Tietokanta on loogisesti yhtenäinen kokoelma tietoa jolla on jokin merkitys. Tietokanta on suunniteltu, rakennettu ja täytetty tiedolla jotain tiettyä tarkoitusta varten. Sillä on jokin tarkoitettu käyttäjäryhmä ja joitain ennalta laadittuja ohjelmia joita käyttäjät käyttävät. Kukin tieto talletetaan kannassa vain yhteen paikkaan eli ei esiinny turhaa toistuvuutta (redundanssia). Tietoja pystytään hakemaan joustavasti erilaisin perustein, myös sellaisin, joita ei tietokantaa suunnitellessa ole pystytty ennakoimaan. Tietokannan rakenteellinen muuttaminen on joustavaa Hyväksikäyttö ja sovellusohjelmat ovat riippumattomia tietojen fyysisestä talletusrakenteesta: tietoriippumattomuus. Muita relaatiotietokantoihin liittyviä termejä ja ominaisuuksia ovat seuraavat: ristiriidattomuus (Consistency), normalisointi (Normalization), tietokantaskeemat (Database schemas), tapahtumien hallinta (Transaction management), Jakamattomuus (Atomicity), pysyvyys (Durability), samanaikaisuuden hallinta (Concurrency Control), transaction isolation, transaction serializability.

10 Relaatiomalli 10 Relaatiomalli (Codd, 1970) koostuu kolmesta komponentista: 1. Tietorakenne - käyttäjä näkee tiedot kokoelmana taulukkoja ja ainoastaan taulukkoja - taulukoihin eli tauluihin liittyy myös indeksejä - tauluille on asetettu tarkat vaatimukset mm. rakenteen ja yksikäsitteisyyden suhteen. Näistä taulukoista käytetään myös nimitystä relaatio. Relaatiotaulut sisältävät attributteja eli sarakkeita, joille on määriteltävä arvoalueet. Muut käsitteet ovat: monikko eli taulun rivi, avainehdokas, perusavain, toisioavain, viiteavain. 2. Tiedonkäsittely Relaatiomalliin kuuluvat relaatio-operaatiot muodostavat mallin olennaisen osan. Tietokantakäsittely tapahtuu relaatiomallissa pääasiassa taulukoiden, ei yksittäisten rivien käsittelynä. Relaatioalgebrassa määritellään operaatiot (yhdiste, leikkaus, erotus, tulo, valinta, projektio, jako, liitos, jotka käsitellään myöhemmin tarkemmin tässä kurssimonisteessa. 3. Tiedon eheys: - relaatiomalliin kuuluu joukko eheyssääntöjä - eheydellä tarkoitetaan tietojen ristiriidattomuutta ja oikeellisuutta - mallissa määritellään taulun sisäisten eheyssääntöjen lisäksi taulujen välistä viite-eheyttä koskevia sääntöjä - relaatiomalli keskittyy käyttäjän tietonäkemykseen ja siis tietokannan ulkoiseen ja käsitteelliseen tasoon - relaatiotietokanta on ainakin pääpiirteissään edellä esitetyn relaatiomallin mukainen tietokanta. Käsitenalyysi Tietokannan suunnittelu aloitetaan käsiteanalyysillä. Analyysin kohteena on koko toimintayksikkö tai sen osa (rajattu alue). Käsitenalyysin tuloksena syntyy kohdealuetta kuvaava looginen malli, käsitemalli. Käsitemalli esitetään graafisesti käsitekaaviona ja täydennetään tietokuvauksin. Kohdealue kuvataan pelkistetysti tietokantaa varten. Käsitemalli sisältää kohdealueen tietojen rakenteen lisäksi eheyssääntöjä. Käsitenalyysin käyttö johtaa tietokantaratkaisuihin, jotka ovat tietoja toteutusriippumattomia. Tietoja tarkastellaan loogisella tasolla ja ne heijastelevat toiminnan tavoitteita, eivät tietokannan toteutustekniikkaa. Tavoitteena on rakentaa malli, joka on maksimaalisen pysyvä. Käsiteanalyysin pohja: ER-malli (entity-relationships model) ER-mallin mukaan reaalimaailma jäsennetään a) yksilöiksi (Entity), b) niiden välisiksi suhteiksi (relationship) sekä c) ominaisuuksiksi (Attribute). Jokaiselle yksilölle etsitään lisäksi yksilöivä avain. Käsiteanalyysissä käytetään termejä yksilötyyppi, yhteystyyppi ja ominaisuustyyppi, joilla tarkoitetaan kokonaisia luokkia, jotka sisältävät yksittäisiä yksilöitä, yhteyksiä ja ominaisuuksia.

11 Käsiteanalyysin eteneminen vaiheittain: 11 1) Yksilötyyppien määritys: etsitään kohdealueeseen liittyvät yksilötyypit. Etsitään synonyymit ja homonyymit. 2) Yhteystyyppien määritys: nimetään yhteystyypit ja määritellään ne alustavasti, yhteystyypin aste ja mahdollinen ehdollisuus ja laji selvitetään. Aletaan muodostaa käsitemallikaaviota. 3) Avainten etsiminen: jokaiselle yksilötyypille yksilöivä perusavain sekä toisio- ja viiteavaimet. Muokataan käsitemalli. 4) Avaimia koskevien eheyssääntöjen määritys: perusavaimia ja toisioavaimia koskevat eheysäännöt ja yhteystyyppien eheyssäännöt 5) Ominaisuustyyppien määritys: etsitään ja määritellään ei-avain ominaisuustyypit kullekin yksilötyypille. Muutokset käsitemalliin. 6) Muiden eheyssääntöjen määritys: määritellään ominaisuustyyppejä koskevat arvoaluesäännöt. Muut ominaisuustyyppien eheyssäännöt. 7) Käsitemallin tarkistus: kriittisyys, virheiden ja puutteiden korjaus. Useita tarkistuskierroksia. 8) Määrittelyjen tarkastus ja viimeistely: tarkistetaan ja tarvittaessa täydennetään tehdyt kuvaukset. Yksilötyypit: Esim. opettaja, oppilas synonyymit= samasta asiasta kaksi eri nimitystä homonyymit= kahdella tai useammalla eri asialla oleva sama nimi Yhteystyypin suunta ja aste: suunnalla tarkoitetaan sitä, että kummasta yksilötyypistä lähtien yhteyttä tarkastellaan (vanhempilapsi). Aste vanhemman ja lapsen välillä voi olla: yhden suhde yhteen (1:1), yhden suhde moneen (1:N) tai monen suhde moneen (M:N). Monen suhde moneen- yhteys tulee AINA purkaa kahdeksi 1:N-yhteydeksi. Avaimet: perus- ja toisioavaimet ja viiteavaimet Jokaiselle yksilötyypille on määriteltävä sen yksilöiden identifioimiseen käytettävät avaimet: perusavaimet ja toisioavaimet ominaisuustyyppiä tai pienintä ominaisuustyyppiyhdistelmää, joka yksikäsitteisesti määrittelee yksilön, kutsutaan avainehdokkaaksi HUOM! Jos kahdella yksilöllä on sama avainehdokkaan arvo, ne ovat SAMA YKSILÖ! Yksilötyypillä voi olla useita avainehdokkaita. Perusavaimeksi valitaan jokin näistä avainehdokkaista, sellainen, jolle jokaisella yksilöllä on varmasti arvo.muut avainehdokkaat nimetään toisioavaimiksi. Löydettyjen avainten tiedot liitetään käsitemalliin Viiteavaimet: Viiteavain on ominaisuustyyppi tai ominaisuustyyppijoukko, joka osoittaa yhteyden yksilötyypin vanhempaan (vanhemman perusavain). Viiteavain on lapsiyksilötyypissä ja on SAMA kuin yllämainittu vanhemman perusavain. Kaikkien yksilötyyppien viiteavaimet on määriteltävä. Viiteavaimet esittävät yksilötyyppien välisiä eheyssääntöjä. Avaimia koskevat eheyssäännöt: Perusavaimen valinta sisältää kaksi eheystarkistusta: -- jokaisella yksilöllä täytyy olla perusavaimelle arvo ja -- tämän arvon on oltava yksikäsitteinen jokaisella yksilöllä. Toisioavaimien valintasäännöt sisältävät myös eheystarkistuksia: -- jokaisella yksilöllä, jolla on toisioavaimella jokin arvo, arvo on yksikäsitteinen ja ehkä jokaisella yksilöllä täytyy olla toisioavainarvo eheyssäännöt tutkivat lisäysten, muutosten ja poistojen vaikutusta yhteystyyppeihin

12 12 olemassaolosäännöt: olosuhteet, joiden aikana perus- ja viiteavain voidaan lisätä, poistaa tai päivittää. Jokaista yhteystyyppiä varten selvitetään lisäys- ja poistosäännöt. Lisäyssäännöt: Lisäyssäännöt määrittävät milloin ja miten uuden lapsiyksilön voi lisätä tietokantaan. Lisäyssääntöjä on kuutta tyyppiä: - lapsiyksilön saa lisätä vain, jos vastaava vanhempiyksilö on olemassa - lapsiyksilön saa lisätä vain, jos vanhempiyksilö luodaan automaattisesti, ellei ole jo olemassa - lapsiyksilön saa lisätä aina; jos vastaavaa vanhempiyksilöä ei ole, viedään lapsen viiteavaimeen NULL-arvo - lapsiyksilön saa lisätä aina; jos vastaavaa vanhempiyksilö ei ole, viedään lapsen viiteavaimeen ennalta määrätty alkuarvo - lapsiyksilön saa lisätä vain, jos tietyt laatuehdot täytetään - lapsiyksilön lisääminen on aina sallittua; ei mitään tarkistuksia vanhempiyksilön suhteen. Poistosäännöt: Poistosäännöt määrittelevät olosuhteet, joiden aikana vanhempiyksilön voi poistaa tietokannasta tai päivittää sen perusavaimen. Kuusi eri poistosääntöä: - vanhempiyksilön saa poistaa vain, jos ei ole olemassa yhtään siihen liittyvää lapsiyksilöä; - vanhempiyksilön saa poistaa aina; vastaavat lapsiyksilöt poistetaan automaattisesti; - vanhempiyksilön saa poistaa aina; vastaavien lapsiyksilöiden viiteavaimiin viedään NULLarvo - vanhempiyksilön saa poistaa aina; vastaavien lapsiyksilöiden viiteavaimiin viedään ennalta määrätty alkuarvo; - vanhempiyksilön saa poistaa vain, jos tietyt ehdot ovat voimassa - vanhempiyksilön saa poistaa aina; ei mitään tarkistuksia lapsiyksilöiden suhteen; NULLarvo merkitsee puuttuvaa, ei tiedossa olevaa arvoa. Se EI ole sama kuin tyhjä tai nolla. Ominaisuustyypit: Avaimiin sisältyvät ominaisuustyypit on tässä vaiheessa jo löydetty ja uusien yksilötyyppien luominen voi olla tarpeen. Johdetut ominaisuustyypit: arvot saadaan johtamalla ne tavalla tai toisella muiden ominaisuustyyppien arvoista. Kysymys kuuluu, että onko mahdollista yhdistää yksilötyyppejä toisiinsa->käsitemallin tarkistus? Muut eheyssäännöt ja arvoaluemäärittelyt: Arvoaluemäärittelyt (domains) ja muut ominaisuustyppien eheyssäännöt (triggering operations): Ominaisuustyyppien kelvollisten arvojen joukkoa kutsutaan sen arvoalueeksi: pituus, muoto, vaihteluväli, yksikäsitteisyys, NULL-arvon salliminen ja mahdollinen alkuarvo. Arvoaluemäärittelyt on tehtävä myös avaimille. Perusavain eikä sen osaa saa saada NULL-arvoa, toisioavaimet voivat saada NULL-arvon. Käsiteanalyysin tulokset ja tietohakemisto: Käsiteanalyysiä tehdessä syntyy sekä käsitekaavioita että sanallisia tietokuvauksia. Tietokuvaukset kootaan tietohakemistoon. Tietohakemisto sisältää siis metadataa, tietoa datasta. Täydellisimmillään tietohakemistoon sisällytetään kaikki toimintayksikön tiedot sovelluksista,

13 13 tietokannoista, loogisista malleista, käyttäjistä ja hakukriteereistä: se sisältää tietokannan sisäisen, käsitteellisen ja ulkoisen tason kaaviot sekä näiden väliset kuvaukset. Käsiteanalyysin aikana tietohakemistoon liitetään määrittelyt yksilötyypeistä, yhteystyypeistä, ominaisuustyypeistä ja eheyssäännöistä. Automaattinen tietohakemisto voi olla joko sisäänrakennettu osa tietokannan hallintajärjestelmää ja siihen liittyvää kehitintä tai tietokannan hallintajärjestelmän tukema sovellus. Relaatiotietokannoissa on yleinen tapa tallettaa tkhj:ään sisältyvä tietohakemisto tauluina, joita voi käyttää samalla tavalla kuin tietokannan muita tauluja. Relaatioalgebran perusoperaatiot Relaatiotietokantojen matemaattinen perusta on relaatioalgebra. Relaatioalgebran muutamaa perusoperaatiota tarvitaan mm tietokannan normalisoinnissa. Relaatioalgebraan perustuu myös. esim. SQL-kyselyjen optimointi. Liitos eli Join Liitoksessa yhdistetään kaksi taulua uudeksi tauluksi jonkin avaimen perusteella tässä esimerkissä piirin tunnuksen perusteella. Uudessa taulussa on sarakkeita yhteensä sama määrä kuin alkuperäisissä yhteensä - 1 ja rivien määrä on sama kuin siinä taulussa, jossa rivejä oli enemmän. Myyjätaulu Piiritaulu Myyjänro Mynimi MPnro Pnro Pnimi M1 Pirkko P1 P1 Länsi M2 Maija P2 P2 Itä M3 Kalle P2 M4 Saku P1 Myyjätaulu join Piiritaulu Myyjänro Mynimi MPnro Pnimi M1 Pirkko P1 Länsi M2 Maija P2 Itä M3 Kalle P2 Itä M4 Saku P1 Länsi Edellä oleva liitos on "inner join". Siinä uudessa taulussa on vain sellaisia rivejä, joiden tiedot löytyvät molemmista tauluista. Jos piiritaulussa olisi rivi, jossa pnro=3 ja Pnimi=Etelä, ei tämän rivin tietoja näkyisi ollenkaan liitostaulussa. "Outer join" on liitos, jossa jommasta kummasta taulusta tuodaan uuteen liitostauluun myös sellaisia rivejä, joille ei löydy vastinparia toisesta taulusta.

14 14 Yhdiste eli union Yhdiste tarkoittaa sitä, että kaksi samanlaista taulua (samanlaiset sarakkeet) yhdistetään uudeksi tauluksi, jolloin rivien määrä on sama kuin kahdessa alkuperäisessä yhteensä - ne rivit, jotka olivat identtisiä. Piiri1 Piiri2 Mnro Mnimi MPnro Mnro Mnimi MPnro M1 Pirkko P1 M2 Maija P2 M4 Saku P1 M3 Kalle P3 Piiri1 union Piiri2 Mnro Mnimi MPnro M1 Pirkko P1 M2 Maija P2 M3 Kalle P3 M4 Saku P1 Valinta (selection) Jostain taulusta valitaan uuteen tauluun vain tietyt rivit esim Sql:n avulla ilmaistuna: Select * from myyja where nimi like "M*" valinta myyjätaulusta Mnro Mnimi MPnro M2 Maija P2 Projektio Jostain taulusta valitaan uuteen tauluun vain tietyt sarakkeet. Tätä operaatiota käytetään varsin usein tietokannan normalisoinnissa. Projektio(Mnro,MPnro) myyjätaulusta Mnro MPnro M1 P1 M2 P2 M3 P2 M4 P1

15 15 Tietokannan suunnittelu- ja toteutusprosessi Ohjelmistotuotantoprojekteissa käytetään yleisesti erilaisia vaihejakomalleja, jotka jäsentävät kehitystyön määrittely-, suunnittelu-, toteutus- ja käyttöönottovaiheisiin. Näitä malleja ovat mm EVO-malli ja vesiputousmalli. Näissä vaihejakomalleissa useimmiten näkökulmana ovat käyttäjän toiminnot tai prosessit. Jos sovellusalue on voimakkaasti rekisteri- tai kortistotyyppinen, saattaa vaiheistus olla toisenlainen tai ainakin määrittelyvaiheen jälkeen eriytetään tietokannan suunnittelu-, toteutus- ja käyttöönotto omaksi (osa)projektikseen.tietokantaprojektin vaihejakomalli voisi olla seuraavanlainen (kuva 4 alla). Reaalimaailman mallinnus Relaatiomallin määrittely Tietokannan määrittely Käyttöliittymän suunnittelu Tietokannan tekninen toteutus Käyttöliittymän toteutus Sovelluksen testaus Tietokannan suunnittelun vaiheet Vaatimusten määrittely ja analyysi Haastatteluin, kirjalliseen materiaaliin tutustumalla ja keskusteluin selvitetään järjestelmältä vaadittavat ominaisuudet. Käsitteellinen mallintaminen Tietokantasuunnittelun alussa on tehtävä päätös siitä, minkä mallin mukaan (relaatiomalli, verkkomalli, hierarkkinen malli) edetään.on myös päätettävä, mikä tiedonhallintajärjestelmä valitaan käyttöön. Laaditaan käsitekaava, joka kuvaa tietokannan sisällön ja rakenteen. Tehdään joko käsiteanalyysina tai oliomallinnuksena. Ensimmäisenä vaiheena on reaalimaailman mallinnus, jossa suunnittelija yhdessä käyttäjien kanssa kuvaa sovellusalueen kannalta keskeiset objektit, niiden ominaisuudet ja objektien väliset suhteet. Tätä vaihetta kuvataan ER-mallinnuskohdassa. Mallinnus tehdään usein graafisilla menetelmillä (kuten ER-mallinnus), jotta käyttäjä voisi osallistua suunnitteluprosessiin. Mallinnuksen jälkeen malli muutetaan relaatiomalliksi (tai oliomalliksi, jos tullaan käyttämään oliotietokantaa). Tässä vaiheessa mietitään relaatiomallin loogista rakenneta (eikä vielä fyysistä

16 16 toteutusta). Relaatiomallin pohjalta määritellään tietokannan taulut, taulujen väliset suhteet ja taulujen tiedot (tietojen ominaisuudet). Tämän vaiheen jälkeen tietokantaan jo voi syöttää tietoja joillakin tietokannan omilla työvälineillä, vaikka tietokannan käyttöliittymiä varsinaisesti ei olisi olemassa. Lyhyesti vaihe sisältää sen, että ensin muutetaan semanttinen käsitemalli tietokantamallin mukaiseksi rakenteeksi. Tehtävä- ja transaktiosuunnittelu Mallinnetaan tehtävät ja transaktiot, joilla tietokannan tietoja käytetään. Tietokannan suunnittelun ja toteutuksen kanssa rinnan etenee käyttöliittymän suunnittelu ja toteutus. Siinä projektissa suunnitellaan ja toteutetaan mm. tietojen ylläpitoon (lisäykset, muutokset, poistot), tietojen kyselyihin ja tietojen raportointiin liittyvät ohjelmat. Monissa tietokantaohjelmissa ja myös sovelluskehittimissä on välineitä, joiden avulla saadaan "ilman ohjelmointia" aikaan valikoita, syöttölomakkeita, kyselylomakkeita ja raportteja. Näiden avulla voidaan käyttäjille "demota" tietokantaa jo suunnitteluvaiheessa, jotta voidaan mahdollisimman aikaisin korjata mallinnuksen tai suunnittelun aikana tehdyt virheet tai väärinymmärrykset. Suunnitellaan sovelluksen rakenne ja sovellukseen kuuluvien näyttöjen sisältö ja rakenne. Lopuksi toteutetaan tietokannan looginen suunnittelu Käsitekaavan pohjalta laaditaan sisällöstä ja rakenteesta relaatiokaava käytettävissä olevalla DDL:llä (Data Definition Language). Kiinnitetään käytettävä arkkitehtuuri, muodostetaan komponentteja ja määritellään ne. Fyysinen suunnittelu: päätetään tietokannan tallennusrakenteista ja saantimenetelmistä. Tarkoituksena on tuottaa suorituskyvyn ja muistitilan käytön suhteen optimaalinen fyysinen rakenne tietokannalle. Toteutetaan edellisten osien suunnitelmat ohjelmointikielillä ja testataan toteutuksen toimivuus. Tietokannan tekniseen toteutukseen ei yleensä juuri mikrotietokoneissa tarvitse kiinnittää huomiota, mutta suuremmissa tietokannoissa on tietokannan suorituskyvyn kannalta runsaasti "virittelemistä" vaativia asioita, jotka liittyvät mm indeksitauluihin, loki-tiedostoihin, lukitsemiskäytäntöihin ja tietokannan sijoittamiseen levyille. Viritetään tietokantamäärittelyt ottasen siis huomioon oman tietokannan hallintajärjestelmän ominaisuudet. Käsitemallin muuttaminen relaatiorakenteeksi Jokainen käsitemallin osa vuorollaan muutetaan relaatiomallin mukaiseksi. Relaatiomalli käsittää osat tietorakenne ja tietoeheys. Loogisessa tietomallissa puhutaan yksilötyypeistä, yhteystyypeistä ja ominaisuustyypeistä; relaatiomallissa nämä rakenteet kuvataan määrittelemällä relaatiotauluja ja niiden sarakkeita eli attribuutteja. Loogisen tietomallin eheysominaisuudet muutetaan relaatiomallin mukaisiksi mm. lisäämällä sääntöparametrejä taulujen määrittelyihin tai luomalla yksikäsitteisiä indeksejä, makroja, ohjelmia jne. Tietokantasuunnittelun tuloksena saadaan tietokantakaava, joka noudattelee loogisen käsitemallin kaikkia osasia. Relaatiotietokantajärjestelmät eivät kuitenkaan ole täydellisiä ja eivät siten toteuta kaikkia niitä vaatimuksia, mitä tietosuuntautunut suunnittelu niiltä edellyttää, joten viritykset on tehtävä. Käsitemallin muuttaminen relaatiorakenteeksi: Askel 1: Taulujen määrittely Askel 2: sarakkeiden määrittely Askel 3: Tietorakenteen sopeuttaminen tuotantoympäristöön Askel 4: Yksilötyyppien eheyssääntöjen käsittely Askel 5: Yhteystyyppien eheyssääntöjen käsittely Askel 6: Muiden eheyssääntöjen käsittely

17 17 Askel 1: Taulujen määrittely Jokaista käsitemallin yksilötyyppiä kohden määritellään relaatiotaulu. Taulut nimetään ja kirjataan yhteys yksilötyypin ja taulun välillä. Määrittelyt kuvataan yleensä tietokannan hallintajärjestelmän tiedonmäärittelykielellä (esim. Oraclessa SQL-kieli): CREATE TABLE asiakas... Askel 2: Sarakkeiden määrittely Jokaiseen tauluun määritellään sarakkeet: jokaista yksilötyypin ominaisuustyyppiä kohti määritellään vastaavaan relaatiotauluun sarake. Yksilötyyppien väliset yhteydet siirtyvät tässä vaiheessa automaattisesti relaatiorakenteeseen, koska käsitemalli rakennettiin niin, että se sisältää viiteavaimissaan yhteystyypin sisältämän yhteyden. Relaatiomalli kuvaa yhteyksiä viiteavaimia vastaavilla sarakkeilla. Ominaisuustyyppejä EI PIDÄ YHDISTÄÄ yhdeksi sarakkeeksi. CREATE TABLE asiakas (haaraosasto numero nimi osoite tilikoodi ) Askel 3: Tietorakenteen sopeuttaminen tuotantoympäristöön Rakenne mukautetaan nyt tietyn TKHJ:n mukaiseksi: Valitaan sarakkeiden talletusjärjestys taulut tallennetaan muistiin (perusalueen varaus ja varatila) taulujen sijoittaminen tietokantoihin (1-n kpl) tietokannan lukitusparametrien asettaminen: lukitus on mekanismi, jolla TKHJ kontrolloi tietoeheyttä saman tiedon yhtäaikaisten hakujen aikana. Lukittavan tiedon määrä on määriteltävä; lukitaanko useita taulujam yksi taulu vai tietty taulun osa. Lukon laatu ja lukituksen kestoaika. Askel 4: Yksilötyyppien eheyssääntöjen käsittely Yksilötyyppejä koskevat eheyssäännöt ovat perusavaimen ja toisioavaimen eheyssäännöt. Perusavaimen eheysominaisuudet (yksikäsitteisyys, minimaalisuus (eli mikään perusavaimen osa ei saa olla yksikäsitteinen), pakollisuusvaatimus) liitetään tietokantakaavaan. CREATE TABLE asiakas (haaraosasto numero nimi osoite tilikoodi PRIMARY KEY (haaraosasto, numero)) arvoaluetekniikka vastaavasti toisioavaimen eheyssäännöt

18 18 Askel 5: Yhteystyyppien eheyssääntöjen käsittely Lisäys ja poistosäännöt koskevat perusavaimien ja viiteavaimien välisiä suhteita ja tukevat näin ollen tietokannan viiteeheyttä. CREATE TABLE lasku (numero as * haaraosasto as * numero maara... PRIMARY KEY (numero) FOREIGN KEY (as *haaraosasto, as *numero) References asiakas) viiteavain (as * haaraosasto, as *numero) viittaa asiakas-vanhempitaulun perusavaimeen Askel 6: Muiden eheyssääntöjen käsittely Arvoaluemäärittelyt säännöt, jotka koskevat lisäysten, poistojen ja muutosten vaikutusta muihin yksilötyyppeihin tai saman yksilötyypin muihin ominaisuustyyppeihin. Viritys Tietokannan viritysvaiheessa tarkastellaan tietyn TKHJ:n mahdollisuuksia toteuttaa suunniteltu tietokanta mahdollisimman tehokkaasti, sekä tutkitaan millaista räätälöintiä kyseisen TKHJ:n käyttö aiheuttaa käsitemalliin ja tietokantakaavaan. Virityskeinoista suosituimpia ovat erilaisten hakumekanismien luonti, koska ne ovat käyttäjälle näkymättömiä: selaus: tutkitaan peräkkäisesti rivejä, jotta haluttu tieto löytyy ryvästys (clustering): rivit talletaan lajiteltuina joidenkin kenttien mukaan hajautus: käytetään algoritmia tiedon osoitteen laskemiseen indeksointi: luodaan tietokantaan erillisiä indeksirakenteita, joita käytetään hyväksi tietohaussa. Indeksit on mahdollista myös luoda jälkeenpäin. Viritystä voidaan kohdistaa myös tietorakenteeseen. Viritys tietorakenteeseen: Taulujen ja sarakkeiden uudelleen määrittely eli denormalisointi tiedon toistaminen sarakkeen uudelleen määrittely taulujen uudelleen määrittely suositus: normalisoidaan tietokanta kolmanteen normaalimuotoon ja vasta viritysvaiheessa tehdään mahdolliset muutokset.

19 19 Alla on esitetty esimerkki tietohakemistosta Henkilö Ominaisuus Tietotyyppi Sisältörajoitteet ja -tarkistukset VARCHAR(64) Pitää sotu CHAR(11) Sallitaan myös pelkkä syntymäaika etunimi VARCHAR(32) sukunimi VARCHAR(64) kotisivu VARCHAR(128) pitää alkaa puh VARCHAR(32) fax VARCHAR(32) katuosoite VARCHAR(64) postitoimipaikka VARCHAR(64) postinro CHAR(5) Aina viisi merkkiä Paikkakunta Ominaisuus Tietotyyppi Sisältörajoitteet ja -tarkistukset PID AUTOINCREMENT Oppilaitos VARCHAR(128) VARCHAR(64) pitää kotisivu VARCHAR(128) pitää alkaa puh VARCHAR(32) fax VARCHAR(32) katuosoite VARCHAR(64) postitoimipaikka VARCHAR(64) postinro CHAR(5) Aina viisi merkkiä Postituslista VARCHAR(64) Pitää Tyyppi Ominaisuus Tietotyyppi Sisältörajoitteet ja -tarkistukset TyyppiID AUTOINCREMENT Tyyppinimi VARCHAR(64) Harjoitustyö Ominaisuus Tietotyyppi Sisältörajoitteet ja -tarkistukset INTEGER koodi INTEGER TyoNro SMALLINT Arvot alkavat ykkösestä jokaisella kurssilla URL VARCHAR(128) Pitää alkaa Aihe VARCHAR(128) Pvm DATE Bonus DOUBLE Ei sallita negatiivisia arvoja. Oletusarvo on nolla. Formaatti

20 Ominaisuus Tietotyyppi Sisältörajoitteet ja -tarkistukset FID AUTOINCREMENT Tiedostopaate VARCHAR(3) Tiedostomuoto VARCHAR(64) Kurssi Ominaisuus Tietotyyppi Sisältörajoitteet ja -tarkistukset Koodi CHAR(6) Aina kuusi merkkiä Nimi VARCHAR(64) OV DOUBLE Sallitaan kokonaisluvut ja puolikkaat Kotisivu VARCHAR(128) Pitää alkaa htlkm SMALLINT Arvosanat Ominaisuus Tietotyyppi Sisältörajoitteet ja -tarkistukset SarjaID INTEGER Pistemaara DOUBLE Arvosana VARCHAR(50) Arvosana voi olla sanallinen esim. Hylätty Tentti Ominaisuus Tietotyyppi Sisältörajoitteet ja -tarkistukset TenttiID AUTOINCREMENT Pvm DATE Suoritus Ominaisuus Tietotyyppi Sisältörajoitteet ja -tarkistukset INTEGER TID INTEGER Nro SMALLINT Pisteet DOUBLE Tilaa Ominaisuus Tietotyyppi Sisältörajoitteet ja -tarkistukset Toimituspvm DATE Tilauspvm DATE Toim.os VARCHAR(50) 20

21 Alla on esitetty esimerkkejä ER-mallinnuksesta 21 ER-mallinnus on graafinen kuvaustapa. Se on helposti ymmärrettävää ja sopii hyvin tietokannan suunnittelijan ja käyttäjän yhteistyössä suorittamaan reaalimaailman mallintamiseen ja käsitteiden analysoimiseen. Lisäksi ER-mallinnuksella tuotetut kaaviot tuottavat 'automaattisesti' hyvin relaatiotietokantoihin sopivat määrittelyt. Sinällään ER-kaavioita voitaisiin käyttää myös oliotietokantojen määrittelyjen pohjana, mutta jos tiedossa on, että toteutus tapahtuu oliotietokantaan, niin kannattanee käyttää mieluimmin OMT mallinnusta (object modelling technique). Kuva 4 alkupvm loppupvm hetu nimi autot omista minen henkilöt osoite Esimerkki 1 On autoja ja henkilöitä, joita kuvataan suorakaiteella. Suorakaide kuvaa yksilötyyppiä (entity). Oliomallinnuksessa käytetään termiä olio (objekti). Suomen kielessä ei yleensä tehdä eroa yksilötyypin ja yksilön välillä. Periaatteessa kuitenkin ero on olemassa eli yksilö tarkoittaa esimerkiksi tiettyä henkilöä, mutta yksilötyyppi ei tarkoita ketään tiettyä henkilöä, vaan henkilöä käsitteenä. Vinoneliö tai timantti on yhteystyyppi (riippuvuus, relationship) kahden yksilötyypin välillä. Sekä yksilötyyppeihin että yhteystyyppeihin voi liittyä ominaisuuksia (attribuutit) tai oikeastaan ominaisuustyyppejä. Ominaisuuksia kuvataan ellipseillä. Esimerkissä henkilöillä on ominaisuudet: hetu, nimi ja osoite sekä omistamisella on ominaisuudet: alkupvm ja loppupvm. Ominaisuus nimeltä hetu on alleviivattu, koska se on henkilön identifiointitieto (perusavain). Samankin reaalimaailman tilanteen voi nähdä monella tavalla. Esimerkiksi avioliitto voisi olla kahden henkilön välinen yhteys taikka avioliitto voi olla oma yksilötyyppinsä. ER-kaaviossa voidaan esittää myöskin lukumääräsuhteet. Vaihtoehtoja on yksi liittyy yhteen yksi liittyy moneen moni liittyy moneen Edellä olleessa esimerkissä voisi olla esim. niin, että yksi ihminen voi omistaa monta autoa, mutta yhdellä autolla voi olla vain yksi omistaja. Lukumääräsuhteiden kuvaamiseen on useampia eri tapoja, joista käytetyimpiä ovat seuraavat:

22 22 nuolet: - yhden suhde moneen Jos on yksilöt E ja F ja kutakin E:ssä oleva yksilöä vastaa täsmälleen yksi F, niin nuoli osoittaa F:ää eli ylläolevassa esimerkissä nuolen kärki osoittaisi henkilöä. - yhden suhde yhteen (nuolet kärjet molempiin) monen suhde moneen (ei ollenkaan nuolen kärkiä), joskus käytetään kaksoiskärkeä osoittamaan suhdetta moneen suhdeluvut: - nuolien tai viivojen päällä luvut 1:1 tai 1:n tai n:1 ER-mallinnuksessa merkitään yksilön perusavain alleviivaamalla ko ominaisuus. Avaimen pitää olla yksikäsitteinen (sitten oikeassa tietokannassa). Kun esim "Tuntemattomasta Sotilaasta" on kaksi eri elokuvaa, niin avaimeksi ei riitä pelkästään elokuvan nimi (koska se ei vielä kerro, kummasta elokuvasta on kysymys), vaan avain voi olla useamman ominaisuuden yhdistelmä esim nimi ja vuosiluku (elokuvaesimerkissä) Jokin yhteys voi olla useamman kuin kahden yksilön välinen. Esim jossain sopimuksissa voisi olla useampia sopijapuolia eli sopimus on yhteys, joka on kytketty moneen yksilöön. Tämä voidaan purkaa binääririippuvuuksiksi (siis kahden välisiksi) niin, että tehdään sopimuksesta yksilö, johon kytketään yhteydet ostaja, myyjä, todistaja ja takaaja. Yleensä tietokannoissa ei myöskään yhteyksillä olla ominaisuuksia vaikka ER-mallinnuksessa voi olla. Itse asiassa kun ER-kaavio muutetaan relaatiomalliksi, niin sekä yksilötyypeistä että yhteystyypeistä tulee tietokannan tauluja, joissa sarakkeet vastaavat ER-mallin ominaisuuksia. ERmallinnusvaiheessa ei ole mitään syytä pyrkiä siihen, että Toisinaan voi käydä niin, että on vain yksi yksilötyyppi (esim ihmiset) ja yhteystyyppi (esim avioliitto), joka kytkeytyy kahteen kertaan yksilötyyppiin (eli mies ja vaimo). Silloin näihin nuoliin voi laittaa nimiksi esim vaimo_ihminen ja mies_ihminen, mikä ihmisen "roolia" ko avioliitossa.

23 23 Saman reaalimaailman ilmiön voi kuvata monella tavalla. Edellä olleen esimerkin henkilöt-autot voi kuvata myös hienojakoisemmin. Tarkkuus ja kuvaustapa riippuvat kulloisestakin sovellusalueesta ja käyttäjien tarpeista. Kuva 5 autot kohde myynti ostaja myyjä henkilöt ostaja kohde osto myyjä Etenkin oliomallinnuksessa puhutaan usein luokista ja aliluokista. Myös ER-mallinnuksessa voidaan muodostaa luokkia ja aliluokkia. Asiaa voinee parhaiten selittää esimerkin avulla. Otetaanpa yksilötyyppi auto. Autoon voi liittyä monia ominaisuuksia esim moottorin tilavuus, käyttöönottovuosi, merkki ja malli. On kuitenkin olemassa henkilöautoja, kuorma-autoja ja linjaautoja. Näistä kaikista on tarpeen tallettaa tietoja, henkilöautoista istumapaikat etupenkillä ja takapenkillä, kuorma-autoista lastitilan koko kuutioina ja linja-autoista istumapaikkojen ja seisomapaikkojen määrä. Tämä tilanne voidaan ER-mallinnuksessa hoitaa seuraavan esimerkin mukaisesti:

24 merkki 24 rekno Kuva 6 auto isa isa isa hauto kauto bussi Henk edessä Pyörien lkm istumapaik seisomapaikk Henk takana Autojen "yhteiset" ominaisuudet liitetään yksilöön auto ja kuhunkin aliluokkaan liitetään ko aliluokan ominaisuudet. Avaimena voi toimia kaikissa yksilötyypeissä kuitenkin rekisterinumero. ER-mallintamisen peruskäsitteet Kohdetyypit (entity types): tunnistettavissa oleva asia tai tapahtuma Helposti havaittavia kohdetyyppejä ovat käyttäjien puheissa esiintyvät henkilöt, esineet, tilat ja tuotteet. Hankalampia ovat käsitteelliset kohdetyypit kuten tilaus tai sopimus. Kohdetyypit ovat sellaisia, joista halutaan tallettaa tietoja pysyvästi tietokantaan. Raportit ja tulosteet eivät ole kohdetyyppejä vaan tietokannan tiedoista johdettuja tulostietoja heikko tyyppi (weak entity type). Olemassaolo riippuu toisesta kohteesta eli ei voi olla olemassa jos tätä toista kohdetta ei ole myös olemassa. Esim. tenttitulosta ei voi olla olemassa ilman tenttijää. Suhdetyypit (relationship types): vähintään kahden kohteen välillä vallitseva riippuvuus. Suhde voi merkitä olemassaoloa, toiminnallista suhdetta tai tapahtumaa. Suhteen aste määräytyy suhteeseen liittyvien kohteiden lukumäärän mukaan. Jos jokaista suhteeseen liittyvää kohdetta A vastaa vähintään yksi kohde B on kyseessä täysi suhde (pakollinen suhde) muussa tapauksessa osittainen suhde suhdeen kardinaalisuus (cardinality): yhden suhde yhteen (one-to-one, 1-to-1) yhden suhde moneen (one-to-many, 1-to-M) (monen suhde yhteen (many-to-one, M-to-1)) monen suhden moneen (many-to-many, M-to-M) ominaisuudet (properties, attributes) jokaisella samantyyppisellä kohteella on tiettyjä yhteisiä ominaisuuksia opiskelijoilla on kaikilla nimi, sotu, osoite yms

25 25 Ominaisuuksien joukosta valitaan avaimeksi sopivat Avaimen pitää olla yksilöivä, uniikki Jokainen ominaisuus saa arvonsa (value) tietystä arvojoukosta (domain) ominaisuudet voivat olla koottuja useasta osasta tai yksittäisiä. Nimi voi koostua etu- ja sukunimestä. Ominaisuus voi olla yksi- tai moniarvoinen Sallitaanko ominaisuuksille tyhjät arvot Sallitaaanko tuntemattot arvot (NULL) Ominaisuudet voivat olla johdettuja esim. tilausten kokonaislukumäärä lasketaan yksittäistilausten kappalemääristä. Alityypit perintä Jokainen kohde on vähintään yhtä kohdetyyppiä mutta voi olla samaan aikaan useampaakin ohjelmoija on on työntekijä eli ohjelmoija on alityyppi työntekijän ollessä ylityyppi ohjelmoijalla on kaikki työntekijän ominaisuudet mutta ei päinvastoin tyyppihierarkia ER-diagrammit - Kohteet: Jokainen kohde esitetään suorakulmiona jonka sisällä lukee kyseisen kohteen kohdetyyppi. Heikoilla kohdetyypeillä suorakulmion kehä kaksinkertaistetaan. - Ominaisuudet esitetään ellipseillä jotka on liitetty jatkuvalla viivalla kohteeseen tai suhteeseen. Ellipsin sisällä lukee ominaisuuden nimi. - Perityt ominaisuudet liitetään katkoviivalla - Moniarvoiset ominaisuudet liitetään kaksinkertaisella viivalla -Koottujen ominaisuuksien osaset esitetään kukin omana ellipsinään jotka liitetään jatkuvilla viivoilla koostettuun ominaisuuteen. - Avaimina toimivat ominaisuudet alleviivataan. Suhteet: Jokainen suhde esitetään timanttikuviona jonka sisällä lukee suhteen nimi. Jos suhde on heikon kohteen ja "vahvan" kohteen välillä niin timanttikuvion kehä kaksinkertaistetaan. Suhteeseen liittyvät kohteet liitetään siihen jatkuvalla viivalla joista jokaisen kohdalla lukee 1 tai M riippuen siitä onko kyseessä yhden suhde yhteen, yhden suhde moneen vai monen suhde moneen. Suhteen ja kohteen välinen viiva kaksinkertaistetaan jos kyseessä täysi suhde alityypit: alityyppi yhdistetään ylityyppiin yhtenäisellä viivalla jonka toisessa päässä on nuoli (ylityypin päässä).

26 26 ER-kaaviosta relaatiomalliksi: esimerkkejä Edellä esitetystä ER-esimerkistä 1 (autot-henkilöt) on tehty seuraavat neljä erilaista relaatioratkaisua. Mikä tai mitkä niistä ovat mielestänne hyviä ja mitkä huonoja ja miksi? autot omistami nen henkilöt vaihtoehto 1 henkilot autot hetu nimi osoite rekno merkki hetu Ojala Kaivokatu SYR-456 Volvo Ville Mattila Ojakuja 3 ABC-345 Saab Kai Simola Ojatie 15 VCX-765 Saab Olli UIO-665 Ford IOP-876 BMW vaihtoehto 2 henkilot autot hetu nimi osoite rekno rekno merkki Ojala Kaivokatu SYR-456 SYR-456 Volvo Ville Mattila Ojakuja 3 UIO-665 ABC-345 Saab Kai Simola Ojatie 15 IOP-876 VCX-765 Saab Olli Ojala Kaivokatu ABC-345 UIO-665 Ford Ville Mattila Kai Ojakuja 3 UIO-665 IOP-876 BMW vaihtoehto 3 henkilot omistaminen hetu nimi osoite hetu rekno autot Ojala Kaivokatu SYR-456 rekno merkki Ville Mattila Ojakuja ABC-345 SYR-456 Volvo Kai Simola Ojatie VCX-765 ABC-345 Saab Olli UIO-665 VCX-765 Saab IOP-876 UIO-665 Ford IOP-876 BMW

27 vaihtoehto 4 rekno merkki rekpvm hetu nimi osoite SYR-456 Volvo Ojala Ville Kaivokatu 6 ABC-345 Saab Ojala Ville Kaivokatu 6 VCX-765 Saab Mattila Ojakuja 3 Kai UIO-665 Ford Mattila Ojakuja 3 Kai IOP-876 BMW Simola Olli Ojatie ER-mallista relaatioiksi -säännöt - yksilötyypistä tulee relaatio eli taulu ja kaikista yksilötyypin ominaisuuksista tulee relaation sarakkeita - yhteystyypistä tulee myös relaatio, jonka tietoja yhteystyypin omat ominaisuudet ja lisäksi vielä yhteysviivojen päissä olevien yksilöiden avaimet - isa-yhteystyypeistä ei tehdä relaatioita Tämä säännöstö tuottaa hyviä relaatioratkaisuja, joskin 1:n tai n:1 yhteystyypeistä ei välttämättä aina tarvitsi tehdä tauluja (ellei haluta varautua siihen, että yhteystyyppi joskus saattaakin olla tyyppiä n:n esim yksi ihminen voi omistaa monta autoa ja yhdellä autolla voi olla monta omistajaa). Relaatiotietokannan mallia (Schema) ei useinkaan tekstissä kuvata taulukoina, vaan lyhyemmin seuraavasti: HENK(hetu, sukunimi, etunimi, lähiosoite, postinro, postitoimipaikka) AUTO(rekno, merkki,malli, kottovuosi) OMISTAJA(hetu,rekno) Jokaisesta taulusta on yksi rivi, jossa on taulun nimi ja taulussa olevat tiedot avainkenttä alleviivattuna. Sama voidaan kuvata myös yksityiskohtaisemmin seuraavasti: HENK ( hetu, string sukunimi, string etunimi, string lähiosoite, string postinro, integer postitoimipaikka, integer)

28 28 Tietokannan normalisointi Tietokannan mallin pitäisi vastata todellisuutta ja käyttäjän tarpeita. Tietokannassa ei saa olla redundanssia (päällekkäisyyttä) tiedoissa, muuta kuin tietysti välttämättömien linkkitietojen verran. Redundanssi aiheuttaa mm ylimääräistä tietojen tallentamistyötä ja myös helposti virheitä, kun muutokset tehdään johonkin paikkaan, mutta unohdetaan tehdä samaan tietoon jossain muussa kohden tietokantaa. Tietokannan pitäisi olla sellainen, että kun tietoja muutetaan, poistetaan tai lisätään, niin kaikki tehdään vain yhteen kertaan ja yhteen paikkaan eikä muutos saa aiheuttaa ristiriitatilanteita eikä tuhota tarpeellisia tietoja. Hakeminen vaatii enemmän tehoa kuin normalisoimattomassa ratkaisussa koska tiedot joudutaan hakemaan useammasta relaatiosta Normaalimuodot syntyvät suhteellisen automaattisesti jos noudatetaan seuraavia sääntöjä: Kohteen yhteyteen talletetaan vain kohteeseen välittömästi liittyviä tietoja ja kunkin tiedon päivitys tapahtuu vain yhteen paikkaan. ER-mallin perusteella tehty relaatiomalli on yleensä automaattisesti hyvä. Jos tietokanta tehdään "korvakuulolta" esim. vanhan excel-taulukon pohjalta, siinä on varsin todennäköisesti hyvin paljon redundanssia (samoja tietoja moneen kertaan). Tietokantaa lähdetään nyt muodostamaan analyysivaiheen tulosten pohjalta tietyn tietokantamallinrelaatiomallin, verkkomallin tai hierarkkisen mallin- mukaiseksi. Tässä vaiheessa otetaan huomioon myös sen tietokannan hallintajärjestelmän ominaisuudet, jolla tietokanta aiotaan toteuttaa. Relaatiotietokantaa käytettäessä johdetaan taulujen määrittelyt käsitemallista sen jälkeen mukautetaan tietorakenne valittuun tietokannan hallintajärjestelmään ja kuvataan sen sisältämällä tietomäärittelykielellä. Myös tietokannan eheysominaisuudet liitetään tietokantamäärittelyyn. Tietokannan virityksellä tarkoitetaan tietokannan suunnitteluvaiheen lopussa tapahtuvaa rakenteen hienosäätöä, jonka tarkoituksena on tehdä tietokanta mahdollisimman suorituskykyiseksi (erilaisten talletusrakenteiden edut ja hakumenetelmien suomat edut tai denormalisointi). Viritystoimien jälkeen tehdään joukko muita tietokantaa koskevia suunnittelutehtäviä, ennen kuin tietokanta voidaan ottaa käyttöön: tietokannan fyysisen ulkoisen tason näkymien määrittelyt ja käyttöoikeuksien määrittelyt sekä fyysisen tason suunnittelun loppuunsaattaminen ohjelmien suunnittelu ja toteutus. Normalisoitu käsitemalli Normalisointitarkistuksessa tietorakennetta kehitetään niin, että se täyttää tietyt kriteerit. Normalisointitarkistus käsittää useita askeleita, joiden mukaan looginen tietomalli johdetaan toivotun mukaiseksi rakenteeksi. Normalisointiaskelelten tuloksia kutsutaan normaalimuodoiksi. Yleensä normalisoidaan kolmanteen normaalimuotoon asti. Analysointivaiheen tuloksena syntyy looginen tietokannan kuvaus- täydennetty, normalisoitu käsitemalli, joka toimii lähtökohtana seuraavalle vaiheelle, tietokannan suunnittelulle. Mallissa tiedot on loogisesti integroitu siten, että tarpeetonta tietojen päällekkäisyyttä ei esiinny. Kun käsitemalli on tarkistettu ja todettu tai muutettu halutun normaalimuodon mukaiseksi, on analyysivaihe saatettu päätökseen. Tämän jälkeen alkaa suunnitteluvaihe, joka käsittää sekä tietokantasuunnittelun että ohjelmistosuunnittelun. Normalisoinnilla muutetaan siis tietokannan rakennetta asteittain. Se aloitetaan attribuuttimäärittelyistä (vastaa ominaisuustyyppiä) tai mielivaltaisista relaatio (taulukko-) määrittelyistä (vastaa yksilötyyppiä) ja siinä käytetään hyväksi semanttista tietoa (tietojen funktionaalisia riippuvuuksia), jotta lopputulokseksi saataisiin tietyt laatukriteerit täyttävät relaatiot. Relaatioiden muokkaus tapahtuu askel askeleelta. Askeleita kutsutaan normaalimuodoiksi.

29 29 Normaalimuotoja on kolme: 1NM, 2NM ja 3NM. Myöhemmin niitä on kehitetty lisää: BCNM, 4NM ja 5NM. Normaalimuodot on määritelty niin, että aina yleisemmässä normaalimuodossa oleva relaatio on myös kaikissa sitä alemmissa normaalimuodoissa. Normalisointitarkastus perustuu ominaisuustyyppien välisille riippuvuuksille, jonka lähdemateriaalina on käsitemalli. Uusia yksilötyyppejä saattaa syntyä ja entiset voivat pilkkoontua pienemmiksi. Yksilötyyppiin jätetään vain olennaisesti yhteen kuuluvat ominaisuustyypit. Funktionaalinen riippuvuus: Funktionaalinen riippuvuus voidaan määritellä seuraavasti: Jos A ja B ovat ominaisuustyyppejä tai ominaisuustyyppiyhdistelmiä ja jokaista A:n arvoa vastaa YKSI ja VAIN YKSI B:n arvo, sanotaan, että B on funktionaalisesti riippuva A:sta. Tätä merkitään usein A->B Jos A on usean ominaisuustyypin yhdistelmä ja B on funktionaalisesti riippuva koko A:sta eikä mistään sen osajoukosta, sanotaan, että B on täydellisesti funktionaalisesti riippuva A:sta. Ensimmäinen normaalimuoto: Normalisointitarkastus alkaa siten, että kaikki yksilötyypit johdetaan ensimmäiseen normaalimuotoon, mikäli ne eivät jo siinä ole. Siksi on tarkasteltava, että millaisia ominaisuuksia yksilö voi saada. 1. Normaalimuoto (1NM) määritellään: yksilötyypin katsotaan olevan 1. Normaalimuodossa, jos sen kaikki ominaisuutyypit ovat perusominaisuustyyppejä, so. eivät ole koottuja. Jokainen ominaisuustyyppi siis voi sisältää vain yhden arvon. Toinen normaalimuoto: Toisessa normaalimuodossa tarkastellaan yksilötyypin sisäisiä riippuvuussuhteita. 2. Normaalimuoto (2NM) määritellään: Yksilötyyppi on toisessa normaalimuodossa, jos 1. Se on 1. Normaalimuodossa JA 2. Kaikki sen ei-avain -ominaisuustyypit ovat täydellisesti funktionaalisesti riippuvia perusavaimesta. Kolmas normaalimuoto: Kolmas normaalimuoto merkitsee sitä, että yksilötyypissä saa olla vain perusavaimesta täydellisesti funktionaalisesti riippuvia ei-avain -ominaisuustyyppejä (siis mihinkään avainehdokkaaseen kuulumattomia ominaisuustyyppejä), joilla puolestaan ei saa olla muuta keskinäistä riippuvuutta. 3. Normaalimuoto määritellään: Yksilötyyppi on kolmannessa normaalimuodossa, jos 1. Se on toisessa normaalimuodossa JA 2. Ei-avain- ominaisuustyypit eivät ole funktionaalisesti riippuvia toisesta ei-avainominaisuustyypistä (tarkemmin ominaisuustyyppijoukosta, joka ei sisällä avainta). 3.NORMAALIMUOTOA kuvataan usein puhumalla transitiivisesta riippuvuudesta, joka määritellään seuraavasti: Tarkastellaan yksilötyyppiä R(A,B,C). Ominaisuustyyppi C on transitiivisesti riippuva ominaisuustyypistä A, jos pitää paikkansa, että A->B JA B->C, mutta ei B->A (SIIS B ei ole avainehdokas)

30 30 Muut normaalimuodot ja normalisoitu käsitemalli: Boyce-Codd (BCNM): yksilötyypillä on useita koottuja, limittäisiä avainehdokkaita. BCNM:ssä yksilötyypin täytyy olla 3NM:ssä valittiinpa perusavaimeksi mikä tahansa avainehdokas. 4NM: tilanteet, joissa esiintyy nk. moniarvoista riippuvuutta 5NM: sykliset riippuvuudet (vaatii hajottamaan yksilötyypin kerralla kolmeen tai useampaan pienempään yksilötyyppiin). Alla on esitetty esimerkkejä eri normaalimuodoista: Ensimmäinen normaalimuoto taulukossa ei saa olla tietotoistoja taulukossa ei saa olla tietokoosteita piirinro pinimi mnro mnimi mosoit tuote1 määrä1 tuote2 määr2 p1 länsi m1 pirkko hki t1 120 t9 75 p1 länsi m2 heikki hki t2 99 t4 111 p1 länsi m2 heikki hki t5 234 p2 itä m3 simo kuo t p2 itä m4 kaija ima t t4 221 Tässä taulussa on redundanssia eli samoja tietoja on moneen kertaan. Mm mnimi heikki on kahteen kertaan ja pinimi länsi jopa kolmeen kertaan. Lisäksi taulussa on tietotoistoja, mm otsikot 'tuote' ja 'määrä' on samassa taulukossa useassa sarakkeessa. Taulukossa on myös tietokooste eli mosoite sisältää kaksi tietoa (postinumero ja postitoimipaikka). Tällainen taulukko voidaan muuttaa ensimmäiseen normaalimuotoon seuraavasti: Tietokooste puretaan jakamalla tiedot kahteen eri sarakkeeseen. Tietotoistot puretaan jakamalla em taulukko kahdeksi eri taulukoksi seuraavasti: myyjätaulukko piirinro piirinnimi mnro mnimi mpostinro mptmp p1 länsi m1 pirkko hki p1 länsi m2 heikki hki p2 itä m3 simo kuopio p2 itä m4 kaija imatra myyjä/tuotetaulukko mnro mnimi tuotenro määrä m1 pirkko t1 120 m1 pirkko t9 75 m2 heikki t2 99 m2 heikki t4 111 m2 heikki t5 234 m3 simo t m4 kaija t m4 kaija t4 221

31 Toinen normaalimuoto 31 Taulukko on toisessa normaalimuodossa, jos taulukon kaikki tiedot (ominaisuudet) ovat täysin riippuvat taulun koko avaimesta. Olennaista on siis selvittää ensin, mikä on taulukon avain. Myyjätaulukossa avain on mnro, joka yksikäsitteisesti määrittelee jokaisen rivin. Kaikki muut tiedot riippuvat mnro:sta, joten siinä ei tehdä muutoksia. Myyjätuotetaulukon avaimena on yhdistelmäavain (mnro, tuotenro). Siinä taulukossa myyjän nimi ei riipu koko avaimesta, vaan ainoastaan mnro:sta, joten mnimi voidaan ottaa siitä taulukosta pois. Toisessa normaalimuodossa taulukot olisivat seuraavat: myyjä/tuotetaulukko mnro tuotenro määrä m1 t1 120 m1 t9 75 m2 t2 99 m2 t4 111 m2 t5 234 m3 t m4 t m4 t4 221 myyjätaulukko piirinro piirinnimi mnro mnimi mpostinro mptmp p1 länsi m1 pirkko hki p1 länsi m2 heikki hki p2 itä m3 simo kuopio p2 itä m4 kaija imatra Kolmas normaalimuoto Säännön mukaan kolmannessa normaalimuodossa ei taulussa saa olla transitiivisia riippuvuuksia. Myyjätaulukossa yllä mro on myyjätaulukon avain ja siitä riippuvat taulukon kaikki tiedot. Kuitenkin mnro määrää yksikäsitteisesti postinron ja kun postinumero tiedetään, tiedetään myöskin postitoimipaikka eli siinä on transitiivinen riippuvuus. Se voidaan poistaa ottamalla myyjätaulukosta pois postitmp ja perustamalla uusi taulukko, jossa postitoimipaikat ovat. Samalla tavalla mro:sta seuraa piirinro, josta seuraa piirinnimi. Näin myyjätaulukosta tehdään kolme uutta taulua. postinumerotaulu postinumero postitoimipaikka Helsinki Helsinki Kuopio Imattra myyjätaulukko piiritaulukko piirinro mnro mnimi mpostinro piirinro piirinnimi p1 m1 pirkko p1 länsi p1 m2 heikki p1 länsi p2 m3 simo p2 itä p2 m4 kaija p2 itä

32 Neljäs normaalimuoto 32 Joillakin ominaisuuksilla saattaa olla monia arvoja samanaikaisesti. Tällaisia ominaisuuksia ovat esim kielitaito, tutkinto ja harrastukset. Seuraavassa esimerkki tällaisesta tilanteesta ja sen ratkaisusta normalisoimalla. henktaulu hetu nimi kielitaito 11 jussi engl 11 jussi saksa 11 jussi ruotsi 12 maija saksa 12 maija engl henk kielitaito hetu nimi hetu kieli 11 jussi 11 engl 12 maija 11 saksa 11 ruotsi 12 saksa 12 engl Yleistä SQL-kieli SQL (structured Query Language) kehitettiin IBM:n San Josen tutkimuslaboratioissa, alunperin nimi oli SEQUEL. Ensimmäinen toteutus oli System R. Kokemukset olivat hyviä ja niinpä kehitystä on jatkettu ja nyttemin SQL on käytössä lukuisien toimittajien sadoissa eri järjestelmissä. Tunnetuimpia varmaan ovat IBM:n db2 ja Oracle. Kuitenkaan kaikki relaatiotietokannat (esim Ingress) eivät tukeudu SQL-kieleen. Sittemmin SQL-kieltä on kehitetty edelleen ja siitä on tehty useita standardeja. ODBC (=open database connection tai connectivity): tarkoituksena on, että sovellusohjelma, joka käyttää sql-kieltä voi käyttää mitä tahansa tietokantaa, johon on odbc-ajuri. Sovellusohjelman ja tietokantamoottorin (=tiedonhallintaohjelmiston) välissä on ajuri, joka muuttaa sovelluksesta tulevat sql-käskyt sellaisiksi, että ne käyvät ko tiedonhallintajärjestelmälle ja vastaavasti tiedonhallintajärjestelmästä tulevat viestit muutetaan standardi-sql-muotoisiksi, jotka sovellus kykenee ottamaan vastaan. Osapuilleen samalla idealla toimivat esimerkiksi kirjoitinajurit, jotka muuttavat tekstinkäsittelyohjelman tuottamat kirjoittimen ohjausmerkit sellaisiksi, joita ko koneeseen kytketty kirjoitin ymmärtää ja "tottelee". Nimi (SQL) on itse asiassa turhan vaatimaton. SQL se ei ole pelkästään kyselykieli, vaan sen on: kyselykieli, kannan määrittely- tai kuvauskieli (DDL), kannan käsittelykieli (DML), jolla voi tehdä tietokantaan tietojen muutoksia, poistoja ja lisäyksiä. SQL:ää voi käyttää itsenäisesti eli erikseen (käsikäskyillä), myös MsAccess-ohjelmassa sql-kieltä voi käyttää upotettuna jollakin ohjelmointikielellä esim. C:llä staattisesti (eli sql-käskyt on kiinteä osa ohjelmaa) tai dynaamisesti (ohjelman suoritusvaiheessa annetaan sql-käskyjä).

33 33 Eri sql-murteet eroavat tässä suhteessa aika lailla. Kuitenkin samat asiat voidaan kaikissa tehdä. Näkymä (view) Määritellään 'illuusio' taulusta, jota ei ole (se voi olla osa sarakkeita jostain olemassa olevasta taulusta tai yhdistelmä useamman taulun tiedoista). Tätä illuusiota (eli taulua) ei siis ole sellaisenaan tietokannassa, vaan tiedonhallintajärjestelmä hakee aina tiedot "oikeista" tauluista tai vie "oikeisiin" tauluihin tiedot. Näkymän avulla voidaan rajoittaa käyttäjien pääsyä joihinkin tietoihin (voidaan taulukohtaisesti ja näkymäkohtaisesti antaa oikeuksia) tai se voi olla vain helpottamassa ohjelmointia. Näkymän määrittelyesimerkki CREATE VIEW tov2 AS SELECT sukunimi, etunimi,ika FROM toverit käyttöoikeuksien määrittely GRANT ALL PRIVILEGES ON tov2 TO K12345 GRANT SELECT ON tov2 TO K23456 SQL-kyselyt Yhdestä taulusta SELECT tieto1, tieto2, tieto3 tai * (kaikki) FROM taulun nimi WHERE joku ehto tai joitain ehtoja ORDER BY tieto1, tieto2 ASC tai DESC SELECT ihmiset.nimi, ihmiset.huone, ihmiset.osasto FROM ihmiset; SELECT ihmiset.nimi, ihmiset.huone, ihmiset.osasto FROM ihmiset ORDER BY ihmiset.nimi DESC; SELECT * FROM ihmiset WHERE (((ihmiset.osasto)="y")) ORDER BY ihmiset.nimi DESC, ihmiset.huone DESC; funktioita SELECT count (*) FROM tilaus rivien lukumäärä Tässä on tilaustaulusta tulostettu asiakkaittain asiakasnumero, tilausten kplmäärä ja tilausten mkyhteensä: SELECT tilasnro, Count(*) AS lukum, Sum(tilaus.tilhintayht) AS mkyht

34 FROM tilaus GROUP BY tilasnro; 34 SELECT Count(*), Avg(tilhinta), Min(tilhinta), Max(tilhinta), Sum(tilhinta) FROM tilaus SELECT * FROM tilaus WHERE tilasnro = [anna asiakkaan numero] (asiakkaan numero kysytään) SELECT * FROM tilaus WHERE tilasnro = Forms![lomake1]![kentta2] tietystä kentästä) (asiakkaan numero otetaan lomakkeelta Useasta taulusta SELECT ihmiset.nimi, ihmiset.osasto, huoneet.iskpl, huoneet.hunro FROM huoneet INNER JOIN ihmiset ON huoneet.hunro = ihmiset.huone; SELECT ihmiset.nimi, ihmiset.osasto, huoneet.iskpl, huoneet.hunro FROM huoneet, ihmiset WHERE huoneet.hunro = ihmiset.huone; SELECT ihmiset.nimi, ihmiset.osasto, huoneet.iskpl, huoneet.hunro FROM huoneet, ihmiset WHERE huoneet.hunro = ihmiset.huone and ihmiset.nimi like 'A*'; Sql ja alikyselyt SQL:n avulla voi myöskin "ketjuttaa" kyselyjä seuraavasti (alikyselyjen idea). Tehdään ensin yksi kysely ja sitten sen tulosta käytetään seuraavassa kyselyssä jne select nimi from henkilot where huone IN (select huone from henkilot where nimi = 'jussi rajamäki') sql ja määritysmuutokset alter table toverit add sp int; alter table toverit drop sp; SQL ja tietokannan muutokset insert into auto values ('ABT-271', 'Toyota', 1975) vrt 'tekstikenttä' ja 1975 insert into auto (rekno, merkki) values ('ABT-271','Toyota') vain osa kentistä

35 insert into auto(rekno, merkki) values (Forms![lomake2]![kentta3], Forms![paalom3]![alilomake4]![mkentta] tiedot haetaan lomakkeelta update toverit set etunimi = 'Maija' where sukunimi = 'Rajamäki'; delete from toverit where etunimi = 'Maija': 35 sql-triggerit Triggerit (laukaisimet, liipaisimet) ovat tietokannassa olevia sääntöjä, joiden perusteella suoritetaan "automaattisesti" jotain operaatioita, jos ehto on voimassa. create trigger ennatys after update of tulos on tulokset when (tulokset.tulos > ennatykset.mtulos) set ennatykset.mtulos = tulokset.mtulos; Sulautettu SQL SQL-käskyt upotetaan ohjelmointikieleen tai sovellus/raporttikehittimeen. Vastaukset suoraan ohjelmointikielen muuttujiin. Dynaaminen SQL: SQL-käskyjä luodaan dynaamisesti ohjelmakoodissa ja lähetetään generoitu SQL-käsky tietokantajärjestelmälle käännettäväksi ja suoritettavaksi. Oliotietokannat Oliotietokannat mahdollistavat monimutkaisia sisäkkäisiä ja dynaamisesti muuttuvia rakenteita Tarjoavat kyselyjen tueksi mielivaltaisia ja monimutkaisia operaatioita, joita käyttäjät voivat itse määritellä (vrt. select SQL:ssä) Mahdollistavat erityyppisten, usein yhdessä käsiteltävien olioiden tallentamisen fyysisesti lähelle toisiaan. Milloin kannattaa käyttää oliotietokantaa? Jos relaatiotietokannassa taulujen määrä kasvaa räjähdysmäisesti. Jos ilmenee monimutkaisten liitosten tarvetta. Jos sovelluksessa käytetään oliotekniikkaa. Jos talletettava tieto on monimutkaista, kuvia, ääntä, videokuvaa, muuttuvan kokoisia rakenteita. Jos kyseessä hajautettu ympäristö. Jos käyttö edellyttää pitkiä tapahtumia. Oliokäsitteitä Jokaisella tietokantaan talletetulla oliolla on oma yksilöllinen tunniste (object identifier, OID). OID on muuttumaton ja ainutkertainen Olion ominaisuuksia Oliotunnisteen lisäksi oliot eroavat toisistaan ominaisuuksiensa perusteella. Ominaisuudet voivat olla rakenne- tai käyttäytymisperusteisia. Olion rakenne määrittyy tyyppimäärittelyn mukaan.

36 Olioluokka 36 Määrittää joukon, joka muodostuu rakenteeltaa ja ominaisuuksiltaan samanlaisista olioista. Kapselointi (encapsulation) Periaate, jonka mukaan kootaan yhteen toisiinsa liittyvät asiat eli tietokannan tapauksessa tiedon rakenne ja sallitut metodit. Osa tiedoista voi olla sisäisiä (private) ja osa julkisia (public). Sisäisiä tietoja voidaan käsitellä vain metodien avulla. Kompleksit oliot Kompleksi olio voi olla rakenteeton tai rakenteellinen tai rakenteeton (unstructured). Kompleksi olio on esimerkiksi bittikarttana esitettävä kuva. Rakenteinen (structured) kompleksi olio muodostetaan yksinkertaisemmmista olioista. Laajennettavuus Oliomallia voidaan laajentaa uusilla tietotyypeillä ja operaatioilla jo olemassaolevien (built-in) tyyppien lisäksi. Periytyminen (inheritance) Luokat muodostavat hierarkian, jossa aliluokat perivät yliluokkiensa ominaisuudet. Aliluokille voidaan määritellä lisäominaisuuksia. Moniperinnässä (multiple inheritance) Aliluokalla on useampia yliluokkia, joilta se voi periä ominaisuuksia. Syrjäyttäminen (override), kuormittaminen (overloading) ja myöhäinen (dynaaminen) sidonta (late binding) Määritellään jokin operaatio luokkahierarkian ylimmällä tasolla. Aliluokassa määritellään sama operaatio uudelleen eli syrjäytetään yliluokan määrittely. Yksi operaatio voi siis osoittaa useampaan eri ohjelmaan (kuormittaminen). Vasta ajonaikana ratkeaa, minkä aliluokan määrityksen mukaan operaatio suoritetaan (myöhäinen sidonta). Olio-relaatiomalli Sybasen Adaptive server on ns. olio-relaatiotietokanta, joka tukee suoraan Java-kielen olioiden sijoittamista tietokantaan. Lisätään tyontekijat tauluun uusi työntekija, jonka osoitteena on Java-luokan Osoite esiintymä. INSERT INTO tyontekijat(id, nimi, Osoite) VALUES (1235, 'Kalle Kehveli', new Osoite ('piilokuja 13', '11111 mörskäkylä', 'Suomi') Lisätään tyontekijat-tauluun uusi työntekijä, jonka osoitteena on Java-luokasta Osoite perityn SuomOsoite-luokan esiintymä. INSERT INTO tyontekijat (ID, nimi, osoite) VALUES (1235, 'Ville Kehveli', new SuomOsoite('Piilokuja 14', '11111 Mörskäkylä') Etsitään työntekijät, joiden katuosoite on Piilokuja 14. SELECT name FROM tyontekijat WHERE Osoite.katu = 'Piilokuja 14'

37 37 Open Database Connectivity (ODBC) ja OLE DB ODBC on rajapinta SQL-sovellusten ohjelmointiin Windows-ympäristöissä. OLE DB on rajapinta mihin tahansa tietoon. Sovellus käyttää ODBC:n standardoituja funktioita, jotka tulkitsevat SQLkomennot tietokannan ymmärtämään muotoon. Sovelluksen ei tarvitse tukea erikseen mitään tiettyä tietokantasovellusta. Java Database Connectivity (JDBC): Java-ohjelmien käyttöön tarkoitettu standardoitu tietokantaliittymärajapinta. JDBC on puhtaasti oliopohjainen. ActiveX Data Objects -mallin yleiskäyttöiset luokat: Connection - luo yhteyden tietokantaan Command - käytetään kyselyjen suorittamiseen Recordset - tallettaa kyselyjen tulokset Oliotietokannat ja OQL OQL on SQL- tyylinen kieli tukien olioiden helppoa hakua. - vuorovaikutteiset ennakoimattomat (ad hoc) kyselyt ja tulkin käyttö kyselyihin -upotettujen kyselyiden yksinkertainen ohjelmointi ja C++ - määrittelyt käyvät suoraan OQLkielelle. - optimoinnin käyttö kyselyihin: voidaan käyttää relaatiotietokannoissa käytettyä optimointitekniikkaa. - looginen/fyysinen riippumattomuus - OQL-kyselyä voidaan tehostaa fyysisen tason parannuksilla, esim. indeksit. - Korkeamman tason rakenteet: OQL kuten SQL tukee lajittelua, ryhmittelyä, koostamista. - SQL kaltaisuus: helpottaa oppimista. - uusien piirteiden tuki: oliotietokantojen palveluun ominaisuuksia, kuten näkymät, liipaisimet, eheysrajoitukset. - Myös SQL- kyselykieltä on kehitetty olioperiaatteita paremmin vastaavaiksi. - SQL3- versiosta on kehitetty uutta standardia 2000-luvun aikana. SQL3:n osajoukko tunnetaan myös nimellä SQL:99. 1

38 Oliosuuntautuneet tietokannat 2 Mahdollistavat monimutkaisia, sisäkkäisiä ja dynaamisesti muuttuvia rakenteita. 38 Tarjoavat kyselyn tueksi vapaavalintaisia (monimutkaisiakin) operaatioita, joita käyttäjät voivat itse määritellä (vrt. select, project, join SQLssä). Oliokannat mahdollistavat erityyppisten, usein yhdessä käsiteltävien olioiden tallentamisen fyysisesti lähelle toisiaan. Fyysinen läheisyys ja välimuistin käyttö vähentää levyn I/O:ta ja nopeuttaa tiedon saantia. Kaikkiin kantoihin luodaan sovelluksen tarvitsemista luokista malli (schema), jonka perusteella kanta osaa tallettaa oliot. Malli esittelee myös luokkien väliset suhteet eli periytymiset, koosteet ja assosiaatiot. Milloin kannattaa käyttää oliotietokantaa? Jos relaatiokannassa taulujen määrä kasvaa räjähdysmäisesti, niin se viittaa siihen, että rakenne on liian monimutkainen tauluilla hallittavaksi.jos ilmenee monimutkaisten liitosten tarvetta. Jos liitoksissa on tauluja 3 tai enemmän, niiden suorittaminen hidastuu. Jos sovelluksessa käytetään olioteknologiaa. Oliokannan käyttö muiden oliomenetelmien (kuvausmenetelmien & koodin) kanssa vähentää yhteensovittamistarvetta (impedance mismatch). Jos talletettava tieto on monimutkaista, kuvia, ääntä, videokuvaa, muuttuvan kokoisia rakenteita. Tieto on lähellä tarvitsijaansa. Oliokantoja mainostetaan hyvänä ratkaisuna hajautetuille ratkaisuille Tietokanta-arkkitehtuuri: Palvelin: - hoitaa I/O:n levylle, jossa kanta sijaitsee - hoitaa transaktioiden hallinnan - kommunikoi toisten palvelimien kanssa lukituksesta - tutkii lisensoinnin - hoitaa on-line varmistustoiminnot - huolehtii automaattisesta toipumisesta - korkeintaan yksi palvelin-prosessi yhdessä koneessa (voi olla useita kantoja) - tietohakemiston valvoja - hoitaa nimipalvelut Asiakas (client): - kirjasto, joka on linkattu sovellukseen hoitaa muistiosoitteet ObjectStoren varaamassa välimuistissa - varaa ja vapauttaa tilaa pysyville olioille - ylläpitää välimuistia äskettäin käytetyistä olioista - kommunikoi välimuistin valvojan kanssa lukituksista - lähettää vahvistettujen transaktioiden muuttamat tiedot palvelimelle - voi olla useita samassa koneessa Välimuistin valvoja: - hoitaa asynkroniset lukituspyynnät palvelimelle (asiakas huolehtii synkronisista) - vain yksi prosessi yhdessä koneessa - vähentää verkkoliikennettä asiakkaan ja palvelimen välillä Olion identiteetti, olion rakenne ja tyypin rakentajat Jokaisella tietokantaan talletetulla oliolla on järjestelmän generoima yksilöllinen tunniste (object identifier, OID). OID:n perusominaisuuksia ovat muuttumattomuus (immutable) ja ainutkertaisuus

39 39 (jokainen OID on käytössä vain kerran). Olisi myös suositeltavaa, että OID ei olisi fyysisen muistipaikan osoite, mutta tästä on jouduttu luopumaan joissakin toteutuksissa (tehokkuussyistä). 14 Mutkikkaan olion rakenne voidaan määritellä tyypin rakentajien (type constructors) avulla, joita ovat esim. joukko, monikko, lista, taulukko, säkki (bag). Olio esitetään kolmikon (i,c,v) avulla, missä i vastaa OIDtä, c on rakentaja ja v esittää olion arvon (tilan). Tähän perustuen voidaan päätellä esim. että jos c on jakamaton alkio, niin arvo v on atominen, jos c on joukko, niin v on joukko olioiden tunnisteita {i1,... in}, OIDtä. Samanlaisuus määritellään joko tiukan identtisillä arvoilla (samat OIDt eri tasoilla) tai pelkästään samanlaisina arvoina. Kapselointi Kapseloinnin juuret löytyvät abstrakteista tietotyypeistä ja informaation kätkemisperiaatteesta. PKapselointia on aiemmin käytetty esim. oliokeskeisissä ohjelmointikielissä. Erotetaan olion ulkopuolelle (käyttäjille) näkyvät ja sallitut toiminnot (interface) ja muille näkymätön toteutus (implementation) eli sisäinen tietorakenne ja tämän rakenteen käsittely (methods). Tietokantasovelluksissa ei noudateta täydellistä kapselointia vaan esitellään sekä näkyviä (niihin voidaan kohdistaa kyselyjä) että piilotettuja attribuutteja. Ulottuvuus Oliot voivat olla pysyviä (persistent) tai tilapäisiä (transient). Pysyvät oliot talletetaan tietokantaan, josta ne voidaan hakea nimen avulla tai siihen ulotutaan jonkin toisen pysyvän olion kautta. Olion A sanotaan ulottuvan (reachable) olioon B, jos oliograafissa esitetään viite oliosta A olioon B. Oliotietokantojen eräs eroavuus esim. relaatiotietokantoihin tulee luokkamäärittelyjen ja pysyvien olioiden kokoelmien erottamisesta toisistaan. Oliotietokannoissa esitellään luokat ja erikseen esim. joukko- tai listarakenteen avulla määritellään pysyvät kokoelmat (extents), joihin oliot sitten talletetaan. Tyyppi- ja luokkahierarkiat Oliotietokannat perustuvat tyyppi- tai luokkahierarkioiden käyttöön ja perintään. Vaikka ne ovat käsitteellisesti erilaisia, ne johtavat samanlaiseen lopputulokseen. Uusia tyyppejä voidaan määritellä olemassaolevien perusteella, tämä johtaa tyyppihierarkioiden käyttöön. PTyyppi määritellään nimen, attribuuttien ja toimintojen avulla. Attribuutit ja operaatiot voidaan myös käsitellä yhtenä kokonaisuutena, funktiona. Alityyppi/supertyyppi määrittelyillä saadaan rakennettua tyyppihierarkioita ja voidaan toteuttaa periytyminen. Useimmissa oliotietokannoissa luokkahierarkia vastaa tyyppihierarkiaa, jolloin kaikki saman luokan oliot ovat samaa tyyppiä. Tilanvaraus luokan olioiden talletukselle tehdään extent määreen avulla.pysyvät (persistent) luokat talletetaan tietokantaan (persistent collection) ja väliaikaisia (transient) luokkia käytetään esim. kyselyjen yhteydessä (transient collection). Mutkikkaat oliot Mutkikkaat oliot voivat olla rakenteellisia tai rakenteettomia. PRakenteelliset muodostetaan tyyppien rakentajien avulla. Rakenteettomia käytetään esim. kuvien ja suurten tekstimuotoisten olioiden esitykseen. Rakenteettomat mutkikkaat oliot Rakenteettomat mutkikkaat oliot tunnetaan myös termeillä BLOB (binary large objects) ja CLOB (character large object). Tietokannan hallintajärjestelmä ei tunne niiden rakennetta, ainoastaan sovellusohjelma voi tulkita olion tarkoituksen. Suuruudesta johtuen olio joudutaan hakemaan tietokannasta paloittain käsiteltäväksi.

40 Rakenteelliset mutkikkaat oliot 40 Rakenteelliset mutkikkaat oliot ovat tietokannan hallinnassa ja siten myös monien sovellusten käytettävissä. Mutkikkaan olion komponenttien välillä tunnetaan omistajuus ja viiteyhteyksiä. Omistajuus vastaa is-part-of/is-component-of yhteyttä ja viiteyhteys is-associated-with yhteyttä. ODMG:n määrittelemä JDO (Java Data Objects) rajapinta tukee myös läpinäkyvää pysyvyyttä (transparent persistence): etsitään sovelluksessa käsiteltävään olioon liitoksissa olevat oliot ilman erityistä kyselyä välimuistiin hävittää rajan pysyvien ja tilapäisten olioiden välillä POODBMS käyttää ryvästystä tehostamaan rakenteellisen mutkikkaan olion hakuun levyltä Muita oliokäsitteitä Polymorfismi (monimuotoisuus) tarkoittaa operaatioiden kuormitusta. Tällöin saman operaation toiminta on räätälöity eri tyyppisille olioille. Monimuotoisuuteen liittyy myös aikainen tai myöhäinen sidonta, eli metodin toiminta sidotaan käännös- tai ajoaikana. Moniperintä johtaa verkko tai ristikko (lattice) rakenteisiin. Valikoivalla perinnällä alityyppi ottaa käyttöön vain osan supertyypin ominaisuuksista. Versioita ja konfiguraatioita tarvitaan esim. ohjelmistotuotantoa palvelevissa oliototeutuksissa. Samasta vaihetuotteesta/ moduulista on olemassa useita versioita ja ohjelmistokonfiguraatio on koottu sopivista vaihetuote-/moduuliversioista. Oliotietokantastandardit Standardien kehittely alkoi vuonna 1990 manifestien esittämisellä. Atkinson et al. esittivät "The Object-Oriented Database System Manifesto" ehdotuksen ja jatkoa seurasi ODMG-93 standardin muodossa, jossa määriteltiin esim. 1-N ja N-M yhteyksien toteutus inverse määrittelyllä ja oliokyselykieli OQL. ODMG standardin versio 2.0 julkaistiin vuonna1997 ja versio 3.0 vuonna The Object-Oriented Database System Manifesto (Atkinson, Banchilon, DeWitt, Dittrich, Maier, Zdonik) Säännöt: (1-13 oliosuuntautuneisuuden painotus) 1. Kompleksisten olioiden tuki (sets, bags, lists, arrays) 2. Olion ainutkertaisuuden tuki (identical/ equal) 3. Olioiden kapselointi (specification/implementation) 4. Tyyppi- tai luokkatuki (set of types/classes) 5. Luokkien tai tyyppien periytyvyys 6. Korvaus, kuormitus ja myöhäinen sitoutuvuus 7. Laskennallinen täydellisyys (computable function must be expressible) 8. Laajennettavuus (system-defined/ user defined types) 9. Tiedon pysyvyys (persistence) 10. Suurten tietokantojen hallinta (indexing, acccess path selection, query optimization) 11. Samanaikaisten käyttäjien salliminen (serializable access) 12. Elpyminen laitteisto- ja ohjelmistovirheistä 13. Ennakoimattomat kyselyt (ad hoc queries) The Object-Oriented Database System Manifesto Lisäpiirteet 1.Moniperiytyvyys 2. Tyyppien tarkistus ja tyyppien päättely 3. Hajautus 4. Suunnittelutransaktiot 5. Versiot

41 41 ODMG oliomallin komponentit Oliot ja literaalit Oliolla on yksilöiva tunnista (oid) ja tila (tai nykyinen arvo), se määritellään neljän ominaisuuden perusteella: Yksilöivä tunniste Nimi; olioon voidaan viitata pysyvän nimen avulla Elinaika; pysyvä tai tilapäinen Rakenne; atominen (voi olla myös rakenteinen) tai kokoelma Literaali esittää vakioarvoa; sillä ei ole tunnistetta ja se voi olla Atominen (Long, Short, Unsigned Long, Unsigned Short, Float, Double, Boolean, Char, Enum, ) Rakenteinen (Date, Interval, Time, Timestamp, Struct, ) Kokoelma (SET, BAG, LIST, ARRAY, DICTIONARY, ) ODMG oliomalli käyttää interface määrittelyä class ja type määrittelyjen sijaan kokoelmaolion esittelyyn. Vastaa abstraktin luokan käsitettä. OQL OQL on SQL tyylinen kieli tukien olioiden helppoa hakua, vuorovaikutteiset, ennakoimattomat (ad hoc) kyselyt. tulkin käyttö kyselyihin Upotettujen kyselyiden yksinkertainen ohjelmointi C++ määrittelyt käyvät suoraan OQL kielelle, optimoinnin käyttö kyselyihin. voidaan käyttää relaatiotietokannoissa käytettyä optimointitekniikkaa. - looginen/fyysinen riippumattomuus OQL kyselyä voidaan tehostaa fyysisen tason parannuksilla, esim indeksit korkeamman tason rakenteet OQL kuten SQL tukee lajittelua, ryhmittelyä, koostamista SQL kaltaisuus helpottaa oppimista uusien piirteiden tuki oliotietokantojen palveluun ominaisuuksia, kuten näkymät, liipasimet, eheysrajoitukset Myös SQL kyselykieltä on kehitetty olioperiaatteita paremmin vastaavaksi. PSQL-3 versiosta on kehitetty uutta standardia 2000 luvun aikana. SQL-3:n osajoukko tunnetaan myös nimellä SQL:99. SQL-3 (SQL:99) Jo SQL-2 tarjosi seuraavat laajennukset: liipasin/herätinkäsitteen (trigger) eheyden tarkistuksen tueksi, Grant ja Revoke komennot käyttöoikeuksien määrittelyyn, kehittyneemmät kyselymahdollisuudet, kuten rekursion käyttö, "for all" ja "for some" predikaatit, lisäyksiä liitoksen käyttöön Row-tyypin monimutkaisille rakenteille. Uudet itsemääritellyt tietotyypit, Boolean arvot ja Large Objects (LOB) suurten muistiolioiden talletukseen. SQL-3 määrittely jatkaa tästä ja uusina piirteinä ovat: SQL/PSM (Persistent Stored Modules) ominaisuudet kielen laajennukset, esim. lausekielten yleiset ohjausrakenteet ulkoisten proseduurien käyttö

42 talletetut proseduurit Uudet tietotyypit (Row & ADT) Liipasimet/herättimet 42 TIETOKANTASUUNNITTELUN PERUSTEET Alla olevat ohjeet soveltuvat tietokannan suunnittelulle millä tahansa välineellä. Hyvä suunnittelu vie aikaa, mutta vähintäänkin sama aika säästyy tietokannan toteutusvaiheessa. Suunnittelussa huomioitavaa: 1. Minkälainen tietokanta -- minkälaisia tietoja halutaan tallentaa 2. Tietokannan sisäinen rakenne -- mitä tauluja tarvitaan? -- mitkä tiedot tallennetaan mihinkin tauluun? -- taulujen avainkentät? -- tieto on tallennettuna vain yhdessä paikassa. TIETOKANNAN SUUNNITTELU Hyvin suunniteltu on puoliksi tehty. Hyva suunnittelu vie aikaa, mutta vahintaan sama aika yleensa saastyy tietokannan toteutusvaiheessa. Suunnittelussa huomioitavaa 1. Minkalainen tietokanta. Mita tietoja halutaan tallentaa? 2. Tietokannan sisainen rakenne. Mita tauluja tarvitaan?. Mitka tiedot tallennetaan mihinkin tauluihin?. Taulujen avainkentat?. Tieto on tallennettuna vain yhdessa paikassa. 3. Taulujen valiset yhteydet eli suhteet. Mahdollisia: yhden suhde yhteen, yhden suhde moneen ja monen suhde moneen.. Kaytannössa taulut rakennetaan yhden suhde yhteen ja yhden suhde moneen -suhteilla. 4. Kyselyt. Mita tietoja tarvitaan. Mista tauluista tiedot saadaan? Missa jarjestyksessa tiedot halutaan? 5. Lomakkeet. Mitka tiedot muodostavat yhdessa katsottaviaja paivitettavia kokonaisuuksia? 6. Raportit. Mita tietoja tarvitaan ja mista tauluista? Miten tiedot muotoillaan? Mita summatietoja halutaan? Mita vakiotietoja raportille halutaan?

43 Tietokannan suunnittelussa ja toteutuksessa on seuraavat vaiheet: 43 a) tietokannan tarkoituksen miettiminen (ER-mallinnus) Tietokannan loogisen rakenteen lisäksi pitää määritellä, mitä lopputuloksia esim raportteja, kyselyjä, tilastoja tietokannasta halutaan tulostaa. Nämä asiat määräävät sen, mitä tietoja tietokannassa pitää olla b) tietokannan relaatiot eli taulut Tyypillisesti tietokanta muodostuu "aihekohtaisista" tauluista. Taulujako ei ole itsestään selvä asia. Tavoitteena on, että kukin tieto on tietokannassa vain kertaalleen. Tyypillisiä tauluja ovat yritysmaailmassa: asiakaskunta, henkilöstö, tuotteet, tilaukset, toimitukset. c) taulujen sarakkeiden eli tietojen määrittely Kunkin taulun sisältö suunnitellaan yksityiskohtaisesti kenttä kentältä. Tietenkin tietokantaan kannattaa kerätä vain tarpeellisia tietoja eli sellaisia, joita käytetään raporteissa tai tilastoissa. Kustakin kentästä on määriteltävä ainakin nimi, kentän pituus ja tiedon tyyppi. d) liitäntöjen eli yhteyksien määrittely Relaatiokannassa taulut voidaan liittää toisiinsa. Liittäminen tarkoittaa sitä, että jossain taulussa esiintyvä tieto esim hetu-tunnus on myös toisessa taulussa, jolloin tämän yhteisen tiedon avulla taulujen vastinrivit voidaan liittää toisiinsa. e) em. vaiheiden jälkeen kannattanee vielä kerran katsoa suunnittelun tulosta ja vasta sitten käydä tekemään muunnosta relaatiomalliin f) ennen lopullista käyttöönottoa tietokantaa on vielä testattava Tietokannan määrittely Tietotyypit ja ominaisuudet Tietotyyyppi teksti memo luku aika raha laskuri koko x x X muoto x x x x x X desim x X syöttöraj x x x X otsikko x x x x x X oletus x x x x X kelpois x x x x X Kelp kuv x x x x X Pakoll? x x x x X Tyhjät? x X Indeks? x x x x x Muoto: miltä tieto näyttää ruudulla; tämä liittyy lähinnä lukuihin ja päiväyksiin sekä kellonaikoihin luvut yleinen (general) esim 123,567 valuutta (currency) esim 123,55 vakio , prosentti 123,00% päiväys: esim ddmmyyyy ; esim. yleinen (general) 12/31/2014 keskipitkä (medium) 31-jou-14

44 Syöttörajoite (input mask): tällä ohjataan syötettävän tiedon pituutta ja muotoa. Jos ajatellaan esim postinumero-kenttää, niin siinä syöttörajoite voisi olla 00000, mikä tarkoittaa, että pitää syöttää 5 kpl numeromerkkejä (pakko); jos ajatellaan henkilötunnusta, niin siinä syöttörajoite voisi olla \-000A eli ensin 6 numeroa pakollisena, sitten tulee väliviiva, sitten kolme numeroa pakollisena ja sitten pakollisena kirjain tai numero. valikoimassa on mm. numeromerkki 0..9 pakollinen numero tai välilyönti, ei pakollinen # numero tai välilyönti, ei pakollinen, etumerkit + ja - sallittuja L kirjain, pakollinen? kirjain, ei pakollinen A kirjain tai numero, pakollinen a kirjain tai numero, ei pakollinen & mikä tahansa merkki tai väli, pakollinen C mikä tahansa merkki tai väli, ei pakollinen \ seuraava merkki tulee näkyviin vakiona < aiheuttaa merkin muuttumisen pieneksi > aiheuttaa merkin muuttumisen suureksi Tässä on esimerkki tilausraportin lopputuloksesta ja määrittelyistä: Raportti perustuu kyselyyn, jossa on yhdistettynä tiedot kolmesta taulusta: tilaus, asiakas ja tuote. Kysely on SQL-muodossa seuraava: SELECT asiakas.asnimi, tuote.tuotenimi, tilaus.tilmaara, [tuotehinta]*[tilmaara] AS veloitus FROM (asiakas INNER JOIN tilaus ON asiakas.ansro = tilaus.tilasnro) INNER JOIN tuote ON tilaus.tiltuotenro = tuote.tuotenro; 44

45 45 Uutta 2015 luentomateriaalia: Tietokannan turvallisuus Tietoturvallisuus Tietokannan turvallisuus liittyy yleiseen tietoturvallisuuteen, johon puolestaan liittyy paljon peruskäsitteitä. Yleisesti hyväksytty ja paljon käytetty tietoturvallisuuden määritelmä on seuraavanlainen: Tietoturvallisuus (tietoturva) on tietojen, järjestelmien ja palveluiden asianmukaista suojaamista sekä normaali- että poikkeusoloissa lainsäädännön ja muiden toimenpiteiden avulla. Tietojen luottamuksellisuutta, eheyttä ja käytettävyyttä suojataan laitteisto- ja ohjelmistovikojen, luonnontapahtumien tai tahallisten, tuottamuksellisten ja tapaturmaisten inhimillisten tekojen aiheuttamilta uhkilta ja vahingoilta. 1. Saatavuus: (käytettävyys): Järjestelmien tiedot ovat tarvittaessa niihin oikeutettujen käytettävissä. 2. Eheys: Tiedot ja järjestelmät ovat luotettavia, oikeellisia ja ajantasaisia, eivätkä ne ole laitteisto- ja ohjelmistovikojen, luonnontapahtumien tai oikeudettoman inhimillisen toiminnan seurauksena muuttuneet virheellisiksi. 3. Luottamuksellisuus: Tiedot ovat vain niiden käyttöön oikeutettujen saatavissa eikä niitä paljasteta tai muuten saateta sivullisten käyttöön. 4. Aitous: Ominaisuus, joka ilmentää tiedon eheyttä ja sitä, että tiedon alkuperäinen lähde on se, joka sen väitetään olevan. Alkuperäisyys-sanaa käytetään toisinaan samassa merkityksessä kuin aitous-termiä. (Sanastokeskus TSK 2004).

46 46 Sanastokeskus on koonnut tietoturvaan liittyvää sanastoa ja käsitteitä (kuva1) käsitekartan muodossa. Kuva 1. Tietoturvan käsitteitä (Sanastokeskus TSK 2004). Tietoturvan päämäärät ja periaatteet määritellään yrityksen tietoturvapolitiikassa. Tietokantoihin ja niiden suunnitteluun rakentamiseen ja käyttöön liittyy monia tiedon suojaukseen liittyviä aihealueita. Valtionhallinnon tietoturvallisuuden johtoryhmän VAHTI: n sivuilla kerrotaan heidän sivustojen olevansa yksi maailman kattavimmista yleisistä tietoturvaohjeistoista. Sivuston (Valtiovarainministeriö 2009) mukaan ohjeisto kattaa tietoturvallisuuden kaikki osa-alueet: Fyysinen turvallisuus Hallinnollinen tietoturvallisuus Henkilöstöturvallisuus Käyttöturvallisuus Laitteistoturvallisuus Ohjelmistoturvallisuus Tietoaineistoturvallisuus Tietoliikenneturvallisuus Tietokannat tietoineen ovat tietoaineistoa joka on kaiken tietoturvallisuuden keskellä (kuva 2).

47 47 Kuva 2. Tietoaineistojen turvallisuus on kaikkien tietoturvan kerrosten ytimenä. (Suomen Automaatioseura 2010). Tiedon turvaamiseen liittyy monia eri tasoja joiden pitää tietokannan turvallisuuden lisäksi olla kunnossa. Tietokantoja lähinnä ovat tietokantoja käyttävät ohjelmistot. Sovellusten turvallisuus Tietokannan varsinaiseen käyttöön tarvitaan siis yleensä erillinen ohjelmisto (kuva 3), ennen kuin käyttäjät pääsevät tietokantaan käsiksi (Viope 2014). Ohjelmistoa kutsutaan tietokannan hallintajärjestelmäksi (TKHJ). Kuva 3. Tietokannan käyttö (Laine 2010) (alla).

48 48 Tietokantaa käytetään tietokannan hallintajärjestelmän avulla. Käyttäjät voivat suorittaa operaatioita, kuten kyselyjä, suoraan tietokantaan tai sitä käyttävien sovellusohjelmien välityksellä. (Laine 2010) Tietokantojen huolellisen suunnittelun lisäksi myös tietokantoja käyttävien sovellusten suunnittelun eri vaiheissa on kartoitettava mahdolliset tietoturvariskit ja keinot joilla riskejä ehkäistään. Hyvä ohje on että huomioidaan kehitettävän sovelluksen kriittisyys liiketoiminnalle.(valtiovarainministeriö 2013.) Kansainvälinen OWASP (Open Web Application Security Project) -yhteisö julkaisee listaa kymmenestä yleisimmästä sovellushaavoittuvuustyypistä Yleisin ohjelmistojen uhka on injektio, jossa käytetään sovellusten tietoturva-aukkoja hyväksi järjestelmiin tunkeutumisessa. Saatavuus Hyvin tavallista on että esimerkiksi verkkopankit ilmoittavat silloin tällöin että toiminnoissa on huolto- tai käyttökatkos jolloin pankkipalvelut ovat pois käytöstä tai korkeintaan käytettävissä varayhteyden kautta. Pankkitietojen saatavuus on tällöin kärsinyt. Yleisesti huolto ja käyttökatkokset, jos mahdollista, olisi hyvä ajoittaa sellaiseen ajankohtaan kun liikenne on hiljaisinta. Tietokantojen suorituskyky takaa omalta osaltaan sen että tietokantojen tiedot ovat nopeasti ja tehokkaasti niiden käyttäjien saatavilla, joilla on oikeus tietoja käyttää. Suorituskykyyn vaikuttaa tietokannan suunnittelun lisäksi tietokantaa käyttävän sovelluksen optimointi niin että se käyttää tietokantaa tehokkaasti. Käytettävällä levyjärjestelmällä voidaan myös vaikuttaa nopeuteen ja vikasietoisuuteen. Tietokantojen yhteydessä on usein käytetty RAID-levyjärjestelmää (Redundant Array of Inexpensive Disks). Lisäksi suorituskykyyn vaikuttaa tietokantapalvelimen prosessoriteho sekä muistin määrä ja käytettävä yhteys. Saatavuuden kannalta on tärkeää varmistaa tiedot varmuuskopioinnilla.(nousiainen 2002; Kurtti 2010) Eheys Tietokantojen suunnittelussa pitää ottaa huomioon tietojen eheys. Tietokantojen eheyssäännöistä on kurssimonisteen kohdassa tietokantojen suunnittelu aiheesta lisää. Tietojen eheys saattaa vaarantua jos tietueita poistetaan tai lisätään ilman että tiedetään mitä ollaan tekemässä. Muutoksia

49 49 voidaan haluta tehdä myös vahingoittamistarkoituksella. Käyttöoikeuksilla voidaan osittain estää normikäyttäjien tekemät virheet tietokantojen rakenteiden muuttamisessa. Laitteisiin tai ohjelmiin voi tulla vikoja ja esimerkiksi sähkökatkokset voivat aiheuttaa sen että tiedot eivät ole enää eheitä tai ristiriidattomia. Varmuuskopioinnilla, lokitiedostoilla sekä mahdollisuudella tehtyjen muutosten peruuttamiseen voidaan tarvittaessa palauttaa tietokanta takaisin ehjään tilaan. Yleisesti käytetty eheysmekanismi on kaksivaiheinen päivitys: aikomus ja päätös ('intent & commitment'). Ensimmäisen vaiheen eli aikomuksen jälkeen tarvitaan vielä päätös ennen kuin muutokset vahvistuvat. (Helenius 2010) Luottamuksellisuus Tiedot ovat vain niiden käyttöön oikeutettujen saatavissa eikä niitä paljasteta tai muuten saateta sivullisten käyttöön. Autentikointi (todennus) varmistaa, että vain sallitut käyttäjät pääsevät järjestelmään. Perinteistä pelkän käyttäjätunnuksen ja siihen liittyvän salasana avulla tunnistautumista pidetään heikkona tunnistautumisena ja esimerkiksi pankeissa käytetään edellisten lisäksi kertakäyttöistä salasanaa, myös sirukortteja ja biometristä tunnistusta voidaan käyttää.(hämäläinen P 2005) Käyttöoikeudet ovat keskeinen osa tietokantojen turvallisuutta. Käyttöoikeuksia voidaan myöntää suoraan joillekin henkilöille tai oikeudet voivat liittyä rooliin (kuva 4). Rooliin sisältyy ne käyttöoikeudet joita käyttäjät tehtävässä tarvitsevat. Roolien hallinnassa käytetään termiä RBAC (Role-based Access Control). Etenkin suuria määriä käyttöoikeuksia myönnettäessä on helpompaa ja nopeampaa myöntää käyttöoikeuksia tietyille käyttäjäryhmille kuin yksittäisille käyttäjille. Käyttöoikeudet liittyvät tiedon luokitteluun johon voidaan käyttää erilaisia perusteita kuten tiedon tärkeys tai arkaluontoisuus. ( Ferraiolo &Kuhn1992)

50 50 Kuva 4. Käyttöoikeuksien jako roolien mukaan. (Oracle 2005). Tiedot voidaan myös halutessa salata mutta salauskaan ei ratkaise kaikkia tietoturvaongelmia vaan voi puolestaan synnyttää uusia ongelmia kuten suorituskyvyn aleneminen koska salaus vaatii yleensä paljon resursseja (Oracle 2012) Tietokantojen uhat Tietokantojen uhat voivat liittyä laitteisiin kuten kiintolevyjen kestävyyteen tai sähkökatkoksiin. Suurimmat uhkat liittyvät kuitenkin käyttöoikeuksiin (taulukko 1). Taulukko 1 Tietokantojen Top 10 uhat, 2010 ja 2013 (Imperva 2014)

51 51 Liiallisten (liian vahvojen) käyttöoikeuksien väärinkäyttö on yleisin tietokantojen uhka. Käyttäjille voidaan siis myöntää sellaiset käyttöoikeudet jotka oikeuttavat muuhunkin kuin mihin kenties tehtävät vaatisivat tai sallisivat. Näin voi käydä jos esimerkiksi tietokannan käyttöoikeuksien määrittämisessä halutaan päästä helpolla ja annetaan yleisiä oikeuksia kaikille. (Imperva 2014) Vaikka käyttöoikeudet olisivat oikein määriteltyjä, voidaan oikeuksia käyttää tarkoituksella tai vahingossa väärin. Tietoja voidaan esimerkiksi tallettaa omalle koneelle helpottamaan tiedon jatkokäyttöä, tai tietoa voidaan jopa myydä. (Ibid) SQL-injektiossa hyökkääjä antaa tietokantapalvelimelle muutettuja SQL-komentoja. Hyökkäys tapahtuu useimmiten puuttuvan tai väärin toteutetun syöttötiedon tarkistuksen kautta, ja joissain tapauksissa tietokantaan päästään käsiksi tietokantarajapinnassa tapahtuvan tiedon vääränlaisesta käsittelyn vuoksi. (Ibid) Riskikartoitus on osa tietokantojen tietoturvallisuutta, organisaatioiden on mietittävä riskien todennäköisyyttä sekä vakavuutta eri tietojen osalta. Taulukossa 2 on tietokantojen uhkiin liittyviä ohjeita ja parhaita käytäntöjä. Taulukkoa voidaan käyttää apuna tietoturvaratkaisujen suunnittelussa, todennäköisesti jokaisella organisaatiolla on lisäksi omia toimialaan tai johonkin muuhun seikkaan perustuvia uniikkeja ongelmia.

52 52 Taulukko 2. Tietokantojen uhat sekä malliratkaisut. (Imperva 2014). HUOM! Lisää tietokantojen tietoturvasta löytyy kirjasta: Handbook of Database, Security Applications and Trends (edited by Michael Gertz & Sushil Jajodia. 2008) urity%20-%20applications%20&%20trends%20(2008).pdf

53 53 Tietokannat ja tietoverkot Tietokoneet ovat nykyisin lähes poikkeuksetta yhteydessä jonkinlaiseen tietoverkkoon. Verkko voi olla organisaation lähiverkko jossa tietokoneet on yhdistetty toisiinsa ja ehkä lisäksi palvelimeen ja tulostimeen. Lähiverkon kautta voi yleensä olla yhteydessä myös Internetiin (kuva 1). Kuva 1. Lähiverkko (Tuikka 2014). Esimerkki sisäisen verkon kautta tapahtuvalle tietokantojen käytölle voisi olla että opiskelijat hakevat tietoa kirjastossa koulun koneiden ja tietoverkon avulla. Tietoa haetaan kirjaston omista elektronisista aineistoista tai erilaisista tietokannoista myös yliopiston verkon ulkopuolelta voidaan hakea ja etäkäyttää aineistoa. Puhuttaessa avoimen verkon tiedonhausta tarkoitetaan hakua Internetistä, esimerkiksi Googlen tai Google Scholarin avulla. (Tampereen yliopisto 2013) Tietoverkot mahdollistavat myös tietokantojen etäkäytön (kuva 2). Esimerkiksi Lappeenrannan teknillisellä yliopistolla on ssl-vpn palvelin, johon otetaan yhteys selaimella tai VPN asiakasohjelmalla. SSL-protokolla (Secure Sockets Layer) salaa tietokoneen ja internetsivun palvelimen välisen liikenteen sisällön (LUT 2007; Viestintävirasto 2014).

54 54 Kuva 2. VPN- etäkäyttöpalvelu (Oulun yliopisto 2013). Yliopiston verkon ja asiakkaan laitteen välille syntyy salattu VPN-tunneli, jota pitkin kaikki verkkoliikenne kulkee. Muualta katsottaessa näyttää siltä kuin asiakkaan laite olisi kytkettynä yliopiston verkkoon. (Oulun yliopisto 2013) Koska lähiverkojen kautta ollaan yhteydessä Internettiin, nousee yrityksen tai organisaation tietoihin kohdistuva tietoturvariski huomattavasti verrattuna vain pelkän oman sisäisen verkon riskiin. Tietoverkkoihin kytkettyjen laitteiden suojaaminen ulkopuolisista, kuin myös mahdollisesti omasta verkosta tulevilta hyökkäyksiltä, on tärkeä osa tietoverkkojen turvallisuutta.( WebOpas 2010).

55 55 Tietoverkkojen ja tietokantojen rajapinnat ODBC (Open Database Connectivity) on Microsoftin kehittämä ohjelmointirajapinta jonka avulla muodostetaan yhteys tietokantaan (kuva 3) (Virkki 2000). Kuva 3. Monen käyttäjän tietokantajärjestelmä (Words of Wisdom 2014). ODBC:tä käytettäessä ei tarvitse tietää onko se kytkeytynyt Access-tietokantaan vai esimerkiksi SQL Serveriin (kuva 4). Java kielelle on oma JDBC (Java Datbase Connectivity) joka on vastaavanlainen kuin ODBC, mutta toimi Java- ympäristössä. Muita tietokantayhteyden tarjoavia palveluja on mm. OLE DB (Object Linking and Embedding, Database), ADO (ActiveX Data Objects) (Virkki 2000).

56 56 Kuva 4. ODBC tarjoama rajapinta. (OpenLink Software 2014). PHP Ja MySQL MySQL on suosittu etenkin www-sivujen yhteydessä käytetty relaatiotietokantaohjelma. Tietokannassa voi olla esimerkiksi verkkokaupan tuotetiedot. Toisin sanoen asiakas etäkäyttää omalta koneeltaan käsin tietokantaa valitessaan tai katsellessaan tuotteita verkkokaupan kotisivuilla. MySQL:n kotisivuilla mainostetaan ohjelman olevan maailman suosituimman avoimen lähdekoodin tietokannan. Tosin MySQL:stä on olemassa myös kaupallinen versio (Laaksonen 2003). PHP on suosittu erityisesti dynaamisten web-sivujen toteutukseen tarkoitettu ohjelmointikieli. Dynaamisuus tarkoittaa sitä että nettisivut voivat muuttua sen mukaan miten esimerkiksi käyttäjä hakee sivulle tietoa (kuva 5). Moodle-oppimisalustassa on käytössä PHP ja usein juuri My SQL:n tietokannan kanssa (Laaksonen 2003).

57 57 Kuva 5. Tietokantapohjainen asiakas-palvelin (Tuikka 2007). Dynaaminen sivu luodaan vasta, kun selain sitä pyytää. Selaimen hakupyyntö käynnistää palvelinkoneella toimintoja, joiden tuloksena syntyy uusi verkkosivu. Tietokantapalvelin tietokantoineen voi sijaita myös omalla palvelinkoneella( Tuikka 2007 ). MySQL-tietokantaa käytetään usein PHP:llä. PDO-rajapinta (kuva 6) on PHP:ssä mukana uusimmissa versioissa. PDO:lla voi käyttää MySQL:n lisäksi muitakin tietokantoja. Kuva 6. PHP ja PDO- rajapinta (ZenTut 2014).

KURSSIMONISTE KEVÄT 2009

KURSSIMONISTE KEVÄT 2009 1 CT20A4301 Tietokannat 5 op KURSSIMONISTE KEVÄT 2009 Koonnut: Erja Mustonen-Ollila CT20A4301 Tietokannat -kurssin sisältö ja suorittaminen Kevään luento- ja harjoitusaikataulu 2 16.12.2008 - Mustonen-Ollila

Lisätiedot

Tietokantojen suunnittelu, relaatiokantojen perusteita

Tietokantojen suunnittelu, relaatiokantojen perusteita Tietokantojen suunnittelu, relaatiokantojen perusteita A277, Tietokannat Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: Leon Atkinson: core MySQL Ari Hovi: SQL-opas TTY:n tietokantojen perusteet-kurssin

Lisätiedot

HELIA 1 (17) Outi Virkki Tiedonhallinta

HELIA 1 (17) Outi Virkki Tiedonhallinta HELIA 1 (17) Luento 4.1 Looginen suunnittelu... 2 Relaatiomalli... 3 Peruskäsitteet... 4 Relaatio... 6 Relaatiokaava (Relation schema)... 6 Attribuutti ja arvojoukko... 7 Monikko... 8 Avaimet... 10 Avain

Lisätiedot

HELIA 1 (12) Outi Virkki Tiedonhallinta 4.11.2000

HELIA 1 (12) Outi Virkki Tiedonhallinta 4.11.2000 HELIA 1 (12) Luento 4.3 Eheyssäännöt (Integrity Constraints)... 2 Eheyden valvonta... 3 Yksilön eheyssääntö... 4 Viite-eheyssäännöt... 5 Arvojoukkoeheyssäännöt... 8 Null-arvoista... 10 Sovelluskohtaiset

Lisätiedot

2. Käsiteanalyysi ja relaatiomalli

2. Käsiteanalyysi ja relaatiomalli 2. Käsiteanalyysi ja relaatiomalli lehtori Pasi Ranne Metropolia ammattikorkeakoulu E-mail: pasi.ranne@metropolia.fi sivu 1 Tietokannan suunnitteluprosessin osat sivu 2 Käsiteanalyysi ER-mallinnus, tietomallinnus

Lisätiedot

HELIA 1 (20) Outi Virkki Tiedonhallinta 4.11.2000

HELIA 1 (20) Outi Virkki Tiedonhallinta 4.11.2000 HELIA 1 (20) Luento 3.1 7LHWRNDQWDSRKMDLVHQVRYHOOXNVHQVXXQQLWWHOXSURVHVVL Tietokannan suunnittelun tavoitteet... 3 Abstraktiotasot tietokannan suunnittelussa... 4 3-taso -malli... 4 TIHA-standardi... 5

Lisätiedot

Relaatiomalli ja -tietokanta

Relaatiomalli ja -tietokanta Relaatiomalli ja -tietokanta > Edgar. F. (Ted) Codd, IBM, 1969 < A Relational Model of Data for Large Shared Data Banks Communications of the ACM, Vol. 13, No. 6, June 1970, pp. 377-387. > 70-luvun lopulla

Lisätiedot

TIEDONHALLINNAN PERUSTEET - SYKSY 2013

TIEDONHALLINNAN PERUSTEET - SYKSY 2013 TIEDONHALLINNAN PERUSTEET - SYKSY 2013 Kurssikoodi: Saapumisryhmä: Luento 4 XX00AA79-3013 TU12S2 Pasi Ranne 11.9.2013 11/9/13 Helsinki Metropolia University of Applied Sciences 1 Relaatiotietokannan suunnitteluprosessin

Lisätiedot

Opettajana Mika Sorsa, mika.sorsa@koudata.fi, HAMK:n ammatillisen opettajakoulutuksen opetusharjoittelija

Opettajana Mika Sorsa, mika.sorsa@koudata.fi, HAMK:n ammatillisen opettajakoulutuksen opetusharjoittelija Opettajana Mika Sorsa, mika.sorsa@koudata.fi, HAMK:n ammatillisen opettajakoulutuksen opetusharjoittelija Opintojaksolla: keskitytään relaatiotietokantojen teoriaan ja toimintaan SQL-kieli kyselykielenä

Lisätiedot

HAAGA-HELIA TIKO-05 1 (19) ICT23a Tietokannan suunnittelu ja toteutus O.Virkki 4.9.2008

HAAGA-HELIA TIKO-05 1 (19) ICT23a Tietokannan suunnittelu ja toteutus O.Virkki 4.9.2008 HAAGA-HELIA TIKO-05 1 (19) Relaatiomalli Relaatiomalli... 2 Peruskäsitteet... 3 Relaatio... 5 Attribuutti ja arvojoukko... 6 Monikko... 7 Säännöt... 8 Yksilön eheyssääntö ja Pääavain... 9 Viite-eheyssääntö

Lisätiedot

Tietokannan hallintajärjestelmän (DBMS) palvelut ja rakenne

Tietokannan hallintajärjestelmän (DBMS) palvelut ja rakenne HAAGA-HELIA Heti-09 1 (6) Tietokannan hallintajärjestelmän (DBMS) palvelut ja rakenne Tietovarastotekniikan kehittyminen... 2 Tiedostopohjaiset ratkaisut... 2 Tiedoston palvelut... 3 Tiedostopohjaisten

Lisätiedot

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys Tällä kurssilla on tutustuttu ohjelmistojen mallintamiseen oliomenetelmiä ja UML:ää käyttäen Samaan aikaan järjestetyllä kurssilla on käsitelty

Lisätiedot

HAAGA-HELIA heti09 1 (27) ICT05 Tiedonhallinta ja tietokannat O.Virkki 19.1.2010. Relaatiomalli

HAAGA-HELIA heti09 1 (27) ICT05 Tiedonhallinta ja tietokannat O.Virkki 19.1.2010. Relaatiomalli HAAGA-HELIA heti09 1 (27) Relaatiomalli Relaatiomalli... 2 Peruskäsitteet... 3 Relaatio... 5 Attribuutti ja arvojoukko... 6 Monikko... 7 Säännöt... 8 Arvojoukkoeheyssääntö... 8 Pääavain ja yksilön eheyssääntö...

Lisätiedot

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

TIEDONHALLINTA - SYKSY Luento 7. Pasi Ranne /10/17 Helsinki Metropolia University of Applied Sciences TIEDONHALLINTA - SYKSY 2017 Kurssikoodi: Saapumisryhmä: Luento 7 TX00CN57-3001 TXQ16ICT, TXQ16S1 ja TXQ16PROS Pasi Ranne 02.10.2017 1/10/17 Helsinki Metropolia University of Applied Sciences 1 Tietokannan

Lisätiedot

3. Käsiteanalyysi ja käsitekaavio

3. Käsiteanalyysi ja käsitekaavio 3. Käsiteanalyysi ja käsitekaavio lehtori Pasi Ranne Metropolia ammattikorkeakoulu E-mail: pasi.ranne@metropolia.fi sivu 1 Käsiteanalyysi Selvitetään mitä tietokantaan pitää tallentaa Lähtökohtana käyttäjien

Lisätiedot

Helsingin yliopisto/tktl DO Tietokantojen perusteet, s 2000 Johdanto & yleistä Harri Laine 1. Tietokanta. Tiedosto

Helsingin yliopisto/tktl DO Tietokantojen perusteet, s 2000 Johdanto & yleistä Harri Laine 1. Tietokanta. Tiedosto Tietokanta Tiedosto Tietokanta (database) jotakin käyttötarkoitusta varten laadittu kokoelma toisiinsa liittyviä säilytettäviä tietoja Ohjelmointikielissä apumuistiin tallennettuja tietoja käsitellään

Lisätiedot

HELIA 1 (19) Outi Virkki Tietokantasuunnittelu 9.3.2001

HELIA 1 (19) Outi Virkki Tietokantasuunnittelu 9.3.2001 HELIA 1 (19) Luento 11 Eheyssäännöt (Integrity Constraints)... 2 Eheyden valvonta... 3 Yksilön eheyssääntö... 4 Arvojoukkoeheyssäännöt... 5 Null-arvoista... 6 Viite-eheyssäännöt... 7 Emorelaation päivitys...

Lisätiedot

TIEDONHALLINTA - SYKSY Luento 2. Pasi Ranne /8/17 Helsinki Metropolia University of Applied Sciences

TIEDONHALLINTA - SYKSY Luento 2. Pasi Ranne /8/17 Helsinki Metropolia University of Applied Sciences TIEDONHALLINTA - SYKSY 2017 Kurssikoodi: Saapumisryhmä: Luento 2 TX00CN57-3001 TXQ16ICT, TXQ16S1 ja TXQ16PROS Pasi Ranne 28.8.2017 27/8/17 Helsinki Metropolia University of Applied Sciences 1 Oppitunnin

Lisätiedot

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

HAAGA-HELIA Heti-09 1 (14) ICT05: Tiedonhallinta ja Tietokannnat O.Virkki Transaktionkäsittely HAAGA-HELIA Heti-09 1 (14) Transaktionkäsittely Transaktion / Tapahtuman hallinta... 2 Taustaa... 3 Tapahtuman käsite... 5 ACID-ominaisuudet... 7 Samanaikaisuuden hallinta... 8 Lukitukset... 9 Toipuminen...

Lisätiedot

NORMALISOINTI TIETOJEN MALLINNUS JOUNI HUOTARI & ARI HOVI

NORMALISOINTI TIETOJEN MALLINNUS JOUNI HUOTARI & ARI HOVI TIETOJEN MALLINNUS NORMALISOINTI HOVI, HUOTARI, LAHDENMÄKI: TIETOKANTOJEN SUUNNITTELU & INDEKSOINTI DOCENDO (2003, 2005) LUKU 5 JOUNI HUOTARI & ARI HOVI SUUNNITTELUPUTKI Käyttäjien näkemykset Näytöt, ikkunat

Lisätiedot

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

Tietokannan hallinta. Kevät 2004 Jan Lindström R&G Chapter 1 Tietokannan hallinta Kevät 2004 Jan Lindström R&G Chapter 1 Tietokannan hallinta 1. Johdanto (käsitteitä) 2. Tietokannan talletusrakenteet 3. Tietokannan hakemistorakenteet 4. Kyselyiden käsittely ja optimointi

Lisätiedot

Tietokanta (database)

Tietokanta (database) Tietokanta Tietokanta (database) jotakin käyttötarkoitusta varten laadittu kokoelma toisiinsa liittyviä säilytettäviä tietoja 1 Tiedosto Ohjelmointikielissä apumuistiin tallennettuja tietoja käsitellään

Lisätiedot

HELIA 1 (14) Outi Virkki Tiedonhallinta

HELIA 1 (14) Outi Virkki Tiedonhallinta HELIA 1 (14) Luento Transaktion / Tapahtuman hallinta... 2 Taustaa... 3 Tapahtuman käsite... 5 ACID-ominaisuudet... 7 Samanaikaisuuden hallinta... 8 Lukitukset... 9 Toipuminen... 10 Loki-tiedosto... 11

Lisätiedot

Tietokantakurssit / TKTL

Tietokantakurssit / TKTL Tietokantakurssit / TKTL Tietokantojen perusteet - tietokannan käyttö: SQL, sovellukset Tietokannan hallinta - tietokannanhallintajärjestelmän ominaisuuksia: tallennusrakenteet kyselyjen toteutus tapahtumien

Lisätiedot

jotakin käyttötarkoitusta varten laadittu kokoelma toisiinsa liittyviä säilytettäviä tietoja

jotakin käyttötarkoitusta varten laadittu kokoelma toisiinsa liittyviä säilytettäviä tietoja Tietokanta Tietokanta (database) jotakin käyttötarkoitusta varten laadittu kokoelma toisiinsa liittyviä säilytettäviä tietoja mikä tahansa tietokokoelma? --> erityispiirteitä Tietokanta vs. tiedosto 1

Lisätiedot

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas Tiedonhallinnan perusteet Viikko 1 Jukka Lähetkangas Kurssilla käytävät asiat Tietokantojen toimintafilosofian ja -tekniikan perusteet Tiedonsäilönnän vaihtoehdot Tietokantojen suunnitteleminen internetiä

Lisätiedot

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

Tiedonhallinnan perusteet. H11 Ovien ja kulun valvontajärjestelmän tietokanta Tiedonhallinnan perusteet H11 Ovien ja kulun valvontajärjestelmän tietokanta Nimi: Mikko Haapanen Opiskelijanumero: 0900568 Ryhmä: T09L Työ tehty: 15.3.2010 Mikko Haapanen 15.3.2010 1(7) 1. Asiakasvaatimukset

Lisätiedot

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

TIEDONHALLINTA - SYKSY Luento 11. Hannu Markkanen /10/12 Helsinki Metropolia University of Applied Sciences TIEDONHALLINTA - SYKSY 2011 Kurssikoodi: Saapumisryhmä: Luento 11 TU00AA48-2002 TU10S1E Hannu Markkanen 22.11.2011 9/10/12 Helsinki Metropolia University of Applied Sciences 1 Indeksit Indeksit Taulun

Lisätiedot

Relaatiotietokantojen perusteista. Harri Laine Helsingin yliopisto

Relaatiotietokantojen perusteista. Harri Laine Helsingin yliopisto Harri Laine Helsingin yliopisto Suosion syy? Yksinkertaisuus vähän käsitteitä helppo hahmottaa Selkeä matemaattinen perusta ei tulkintaongelmia kuten esim. UML:ssä teoria käytäntö kaavio: R(A 1 :D 1, A

Lisätiedot

TIETOKANNAT JOHDANTO

TIETOKANNAT JOHDANTO TIETOKANNAT JOHDANTO JOUNI HUOTARI & ARI HOVI 2000-2011 Tieto TAUSTAA Yritykselle tiedot ovat tärkeä resurssi päätöksenteon tukena (JIT) varastointi ja käyttö vaativat investointeja vrt. energia (lähde,

Lisätiedot

HARJOITUS 2. Kasvattamot ja mittaukset

HARJOITUS 2. Kasvattamot ja mittaukset HARJOITUS 2. Tehtävä 1 Alla on esitetty relaatiotietokannan taulujen rakenne. Mitä ongelmia tähän tietokantaan liittyy jos se yritettäisiin ottaa käyttöön sellaisenaan? Korjaa puutteet ja esitä toimiva

Lisätiedot

Tietojärjestelmä tuotantoympäristössä. Sovellusohjelmat Helsingin ammattikorkeakoulu Stadia / Tekniikka ja liikenne Vesa Ollikainen

Tietojärjestelmä tuotantoympäristössä. Sovellusohjelmat Helsingin ammattikorkeakoulu Stadia / Tekniikka ja liikenne Vesa Ollikainen Tietojärjestelmä tuotantoympäristössä Tausta ja tavoitteet Tausta Kurssilla on opiskeltu suunnittelemaan ja toteuttamaan tietokanta, joka on pieni perustuu selkeisiin vaatimuksiin on (yleensä) yhden samanaikaisen

Lisätiedot

HELIA 1 (8) Outi Virkki Tietokantasuunnittelu

HELIA 1 (8) Outi Virkki Tietokantasuunnittelu HELIA 1 (8) Luento 1 Johdatusta tietokannan suunnitteluun... 2 Tietokantasuunnittelu?... 2 Tietokanta?... 2 Tieto?... 2 Tietokantasuunnittelun tavoite, v.1... 2 Luotettavuus?... 3 Tietokantasuunnittelun

Lisätiedot

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

Insert lauseella on kaksi muotoa: insert into taulu [(sarakenimet)] values (arvot) SQL sisältää operaatiot tietokannan sisällön muodostamiseen ja ylläpitoon: insert - uusien rivien vienti tauluun delete - rivien poisto update - rivien muutos 1 Insert lauseella on kaksi muotoa: insert

Lisätiedot

TIETOKANTOJEN PERUSTEET OSIO 11 MARKKU SUNI

TIETOKANTOJEN PERUSTEET OSIO 11 MARKKU SUNI TIETOKANTOJEN PERUSTEET OSIO 11 MARKKU SUNI Tarkastellaan Tietokannan fyysistä suunnittelua Menetelmän vaihetta 4 Looginen suunoitelma muutetaan toimiviksi tauluiksi Id enimi snimi muuta 1 Aki Joki xxx

Lisätiedot

TIEDONHALLINNAN PERUSTEET - SYKSY 2013

TIEDONHALLINNAN PERUSTEET - SYKSY 2013 TIEDONHALLINNAN PERUSTEET - SYKSY 2013 Kurssikoodi: Saapumisryhmä: Luento 5 XX00AA79-3013 TU12S2 Pasi Ranne 11.9.2013 11/9/13 Helsinki Metropolia University of Applied Sciences 1 Tietokannan normalisoinnin

Lisätiedot

Luento 3 Tietokannan tietosisällön suunnittelu

Luento 3 Tietokannan tietosisällön suunnittelu HAAGA-HELIA / Heti-09 1 (17) Luento 3 Tietokannan tietosisällön suunnittelu Tietojärjestelmän suunnitteluprosessi... 2 Tietokannan suunnittelun tavoitteet... 3 Tietokannan suunnitteluprosessi... 4 Käsitteellinen

Lisätiedot

Tietomallit. Näkökulmat tietoon. Näkökulmat tietoon. Mitä malleja olisi tarjolla? Abstraktiotasot tiedon käsittelyssä

Tietomallit. Näkökulmat tietoon. Näkökulmat tietoon. Mitä malleja olisi tarjolla? Abstraktiotasot tiedon käsittelyssä Tietomallit Tietomallilla (data model) tarkoitetaan tiedon rakenteen ja tiedolle suoritettavan käsittelyn määrittelevää kehikkoa - käsitteistöä Tietoa voidaan tarkastella eri näkökulmista - eri abstraktiotasoilla

Lisätiedot

HELIA 1 (14) Outi Virkki Tiedonhallinta

HELIA 1 (14) Outi Virkki Tiedonhallinta HELIA 1 (14) Luento SQL... 2 Historiaa... 2 Standardit... 3 Käyttö... 4 DDL... 5 Tietokantaobjektien määrittely... 5 SQL:n tietotyypit... 6 Eheyssääntöjen määrittely... 9 Indeksin määrittely... 11 Syntaksikuvaukset...

Lisätiedot

HELIA 1 (21) Outi Virkki Tietokantasuunnittelu 20.9.2005

HELIA 1 (21) Outi Virkki Tietokantasuunnittelu 20.9.2005 HELIA 1 (21) Luento 7 Relaatiomallin kertausta... 2 Peruskäsitteet... 2 Relaatio... 4 Määritelmä... 4 Relaatiokaava (Relation schema)... 4 Relaatioinstanssi (Relation instance)... 4 Attribuutti ja arvojoukko...

Lisätiedot

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

SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet A271117, Tietokannat Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: Leon Atkinson: core MySQL Ari Hovi: SQL-opas TTY:n tietokantojen perusteet-kurssin

Lisätiedot

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu 13.11.2000

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu 13.11.2000 HELIA 1 (15) Luento 2.7 Toiminnallisuutta tietokantaan... 2 Deklaratiivinen eheysvalvonta... 2 Proseduraalinen eheysvalvonta... 3 Eheysvalvonnan suunnittelusta... 4 Sääntöjen määrittely... 4 Toteutusvaihtoehdot...

Lisätiedot

SQL - STRUCTURED QUERY LANGUAGE

SQL - STRUCTURED QUERY LANGUAGE SQL Peruskomentoja SQL - STRUCTURED QUERY LANGUAGE SQL on tietokantojen käsittelyyn kehitetty kieli Esimerkkejä kielellä hoidettavistaa toiminnoista: Tietokannan rakenteen määrittely ja muuttaminen Kyselyt

Lisätiedot

On autoja, henkilöitä, Henkilöllä on nimi Autolla on omistaja, joka on henkilö. Taulu AUTO(rekno, malli) Taulu HENKILO(nimi, )

On autoja, henkilöitä, Henkilöllä on nimi Autolla on omistaja, joka on henkilö. Taulu AUTO(rekno, malli) Taulu HENKILO(nimi, ) Tietomallit Tietomallilla (data model) tarkoitetaan tiedon rakenteen ja tiedolle suoritettavan käsittelyn määrittelevää kehikkoa - käsitteistöä Tietoa voidaan tarkastella eri näkökulmista - eri abstraktiotasoilla

Lisätiedot

TIETOKANTOJEN PERUSTEET OSIO 14 MARKKU SUNI

TIETOKANTOJEN PERUSTEET OSIO 14 MARKKU SUNI TIETOKANTOJEN PERUSTEET OSIO 14 MARKKU SUNI Tavoite: Suunnitella käyttäjien tarvitsemat turvallisuusmekanismit ja säännöt. Toisin sanoen: tehdä tietokannasta turvallinen ja luotettava. Muistutus: Tietokanta

Lisätiedot

HELIA 1 (11) Outi Virkki Tiedonhallinta 4.11.2000

HELIA 1 (11) Outi Virkki Tiedonhallinta 4.11.2000 HELIA 1 (11) Access 1 ACCESS...2 Yleistä...2 Access-tietokanta...3 Perusobjektit...3 Taulu...5 Kysely...7 Lomake...9 Raportti...10 Makro...11 Moduli...11 HELIA 2 (11) ACCESS Yleistä Relaatiotietokantatyyppinen

Lisätiedot

TIETOKANNAT JOHDANTO JOUNI HUOTARI & ARI HOVI

TIETOKANNAT JOHDANTO JOUNI HUOTARI & ARI HOVI TIETOKANNAT JOHDANTO JOUNI HUOTARI & ARI HOVI 2000-2017 Tieto TAUSTAA Yritykselle tiedot ovat tärkeä resurssi päätöksenteon tukena (JIT) varastointi ja käyttö vaativat investointeja vrt. energia (lähde,

Lisätiedot

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

HAAGA-HELIA Heti-09 1 (12) ICT05 Tiedonhallinta ja Tietokannat O.Virkki Näkymät HAAGA-HELIA Heti-09 1 (12) Näkymät Näkymät... 2 Eri tyyppisiä relaatioita... 2 Taulu - Tallennettu relaatio... 2 Tulosrelaatio - Kyselyn tulos... 2 Näkymä - Virtuaalirelaatio... 2 Näkymien määrittely...

Lisätiedot

Tietokantojen perusteet

Tietokantojen perusteet Tietokantojen perusteet Johdanto Jouni Huotari & Ari Hovi 2008 TAUSTAA Yritykselle tiedot ovat tärkeä resurssi päätöksenteon tukena (JIT) varastointi ja käyttö vaativat investointeja vrt. energia (lähde,

Lisätiedot

Helsingin yliopisto/tktl Tietokantojen perusteet, s 2006 Tiedon mallinnus ja tietokannat. Harri Laine 1. Tietokanta.

Helsingin yliopisto/tktl Tietokantojen perusteet, s 2006 Tiedon mallinnus ja tietokannat. Harri Laine 1. Tietokanta. Tieto - data Digitaalisesti tallennettua informaatiota jostakin kohteesta Vapaamuotoinen tieto (unformatted) Esim. teksti, puhe, kuvat, Sisältö jäsentämätöntä Koneellinen käsittely vaikeaa paitsi kokonaisuutena

Lisätiedot

TIETOKANNAN SUUNNITTELU

TIETOKANNAN SUUNNITTELU TIETOKANNAN SUUNNITTELU HOVI, HUOTARI, LAHDENMÄKI: TIETOKANTOJEN SUUNNITTELU & INDEKSOINTI DOCENDO (2003, 2005) LUKU 2 JOUNI HUOTARI & ARI HOVI TIETOJEN MALLINNUS TIETOJEN MALLINNUKSESTA TIETOKANTAAN Käsiteanalyysin

Lisätiedot

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

HELIA TIKO-05 1 (28) ICT03D Tieto ja tiedon varastointi O.Virkki HELIA TIKO-05 1 (28) Relaatiomalli Relaatiomalli...2 Peruskäsitteet...3 Relaatio...5 Attribuutti ja arvojoukko...6 Monikko...7 Säännöt...8 Arvojoukkoeheyssääntö...8 Pääavain ja yksilön eheyssääntö...9

Lisätiedot

Jouni Huotari & Ari Hovi. Käsitemallinnuksesta relaatiokantaan KÄSITEMALLI. LOOGINEN MALLI: tietomalli valittu. FYYSINEN MALLI: DBMS valittu

Jouni Huotari & Ari Hovi. Käsitemallinnuksesta relaatiokantaan KÄSITEMALLI. LOOGINEN MALLI: tietomalli valittu. FYYSINEN MALLI: DBMS valittu Informaatioteknologian instituutti IIO30100 Tietokantojen suunnittelu Polku luokkakaavioista taulujen toteutukseen kirjan Hovi, Huotari, Lahdenmäki: Tietokantojen suunnittelu & indeksointi, Docendo (2003,

Lisätiedot

POLKU LUOKKAKAAVIOISTA TAULUJEN TOTEUTUKSEEN

POLKU LUOKKAKAAVIOISTA TAULUJEN TOTEUTUKSEEN POLKU LUOKKAKAAVIOISTA TAULUJEN TOTEUTUKSEEN KIRJAN HOVI, HUOTARI, LAHDENMÄKI: TIETOKANTOJEN SUUNNITTELU & INDEKSOINTI DOCENDO (2003, 2005) LUKU 7 JOUNI HUOTARI & ARI HOVI IIO30100 TIETOKANTOJEN SUUNNITTELU

Lisätiedot

Tietokannan suunnittelu

Tietokannan suunnittelu HELIA TIKO-05 1 (12) ICT03D Tieto ja tiedon varastointi Tietokannan suunnittelu Tietokannan suunnitteluprosessi... 2 Tavoitteet...2 Tietojärjestelmän suunnitteluprosessi...3 Abstraktiotasot tietokannan

Lisätiedot

Tietokannat PERUSMATERIAALI Microsoft Access 2007 Kieliversio: suomi Materiaaliversio 1.0 päivitetty 8.6.2009 www.piuha.fi materiaalimyynti@piuha.

Tietokannat PERUSMATERIAALI Microsoft Access 2007 Kieliversio: suomi Materiaaliversio 1.0 päivitetty 8.6.2009 www.piuha.fi materiaalimyynti@piuha. Tietokannat PERUSMATERIAALI Microsoft Access 2007 Kieliversio: suomi Materiaaliversio 1.0 päivitetty 8.6.2009 materiaalimyynti@piuha.fi Tämän materiaalin kopioiminen ilman tekijän lupaa kielletään tekijänoikeuslain

Lisätiedot

Tietokannan eheysrajoitteet ja niiden määrittäminen SQL-kielellä

Tietokannan eheysrajoitteet ja niiden määrittäminen SQL-kielellä hyväksymispäivä arvosana arvostelija Tietokannan eheysrajoitteet ja niiden määrittäminen SQL-kielellä Tuomas Husu Helsinki 20.2.2010 HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Sisältö i 1 Johdanto

Lisätiedot

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

HOJ Haja-aiheita. Ville Leppänen. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.1/10 HOJ Haja-aiheita Ville Leppänen HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.1/10 Missä mennään... 1. Johdanto (1h) 2. Säikeet (2h) 3. Samanaikaisuudesta (2h) 4. Hajautetuista sovelluksista (1h)

Lisätiedot

Helsingin yliopisto/tktl DO Tietokantojen perusteet, s 2000 Relaatiomallin peruskäsitteet Harri Laine 1. Relaatiotietokannat DONOTP

Helsingin yliopisto/tktl DO Tietokantojen perusteet, s 2000 Relaatiomallin peruskäsitteet Harri Laine 1. Relaatiotietokannat DONOTP RINT THIS DOCUM ENT Relaatiotietokannat DONOTP Relaatiomalli Perustana rakennetason tietomalli relaatiomalli (the relational model of data) perusteoria: Codd 1970 ensimmäiset kaupalliset toteutukset 70-luvun

Lisätiedot

D B. Tietokannan hallinta - kurssin tavoite. Kurssilla opitaan periaatteet. Edellytyksenä osallistumiselle on Tietokantojen perusteiden hallinta

D B. Tietokannan hallinta - kurssin tavoite. Kurssilla opitaan periaatteet. Edellytyksenä osallistumiselle on Tietokantojen perusteiden hallinta Tietokannan hallinta - kurssin tavoite Kurssilla opitaan periaatteet fyysisen tietokannan tallennuksesta ja käsittelystä tietokantakyselyiden muuntamisesta fyysisen tietokannan käsittelyoperaatioiksi kyselyn

Lisätiedot

3. Taulujen määrittely ja muuttaminen

3. Taulujen määrittely ja muuttaminen 3. Taulujen määrittely ja muuttaminen DDL: Taulujen luonti, muutos ja poisto DML: taulujen tietojen ylläpito Tapahtumien (transaktioiden) hallinta Näkymät, synonyymit ja muut tietokantaobjektit Taulujen

Lisätiedot

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

Tietokantasuunnittelun pääperiaatteena on tiedon toiston välttäminen. Tiedon toistumiseen liittyy monenlaisia ongelmia. Tietokantasuunnittelusta Tietokantasuunnittelun pääperiaatteena on tiedon toiston välttäminen. Tiedon toistumiseen liittyy monenlaisia ongelmia toistuva tieto vie tilaa ylläpito muodostuu hankalaksi ylläpito-operaatioilla

Lisätiedot

Mikä on tietomalli? Relaatiomallin käsitteitä 1/2 (kuva 5.1) Relaatiomallin taustaa

Mikä on tietomalli? Relaatiomallin käsitteitä 1/2 (kuva 5.1) Relaatiomallin taustaa Relaatiomalli 5. Relaatiomalli Käsitteet Säännöt Käyttö 6. Relaatioalgebra (EI TENTTIIN!) Select, Project, Union, Difference, Join 7. (E)ER-mallin muuntaminen relaatioiksi Kaava Mikä on tietomalli? Malli,

Lisätiedot

IIO30220 Database Management / Tietokannan hallinta TAPAHTUMIEN HALLINTA JOUNI HUOTARI (7.3.2012)

IIO30220 Database Management / Tietokannan hallinta TAPAHTUMIEN HALLINTA JOUNI HUOTARI (7.3.2012) IIO30220 Database Management / Tietokannan hallinta TAPAHTUMIEN HALLINTA JOUNI HUOTARI (7.3.2012) TEHTÄVIÄ/KYSYMYKSIÄ Määrittele tapahtuma (transaction) tapahtumien hallinta Mitä ovat tapahtuman ACIDominaisuudet?

Lisätiedot

TIETOKANTOJEN PERUSTEET MARKKU SUNI

TIETOKANTOJEN PERUSTEET MARKKU SUNI TIETOKANTOJEN PERUSTEET MARKKU SUNI SQL - KIELI TIETOJEN MUOKKAUS MARKKU SUNI Tarkastellaan tauluissa olevien tietojen muokkausta muokkauskäskyjä: INSERT UPDATE DELETE Kysymys kuuluu: Voiko tietoja muokata

Lisätiedot

Tietohakemisto ja Transaktionkäsittely

Tietohakemisto ja Transaktionkäsittely HELIA TIKO-05 1 (18) Tietohakemisto ja Transaktionkäsittely Tietohakemisto...2 Oraclen tietohakemistonäkymät (osa)...3 Yleiset...3 Taulut...3 Säännöt...3 Näkymät...3 Synonyymit...4 Indeksit...4 Sekvenssit...4

Lisätiedot

HELIA 1 (17) Outi Virkki Tiedonhallinta 4.11.2000

HELIA 1 (17) Outi Virkki Tiedonhallinta 4.11.2000 HELIA 1 (17) Luento 4.5 Normalisointi... 2 Tavoitteet... 2 Attribuuttien väliset riippuvuudet... 4 Funktionaalinen / moniarvoinen riippuvuus... 4 Transitiivinen / suora riippuvuus... 6 Täydellinen / osittainen

Lisätiedot

Järjestelmäarkkitehtuuri (TK081702) Hajautettu tietokanta. Hajautuksen hyötyjä

Järjestelmäarkkitehtuuri (TK081702) Hajautettu tietokanta. Hajautuksen hyötyjä Järjestelmäarkkitehtuuri (TK081702) Hajautettu tietokanta Hajautettu tietokanta Jokainen hajautettu tietokanta muodostaa oman kokonaisuutensa Loogisesti yhtenäinen data on hajautettu tietokantoihin (eri

Lisätiedot

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

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

Lisätiedot

Relaatioista TIETOJENKÄSITTELYTIETEIDEN LAITOS, JUHA IISAKKA 11-14

Relaatioista TIETOJENKÄSITTELYTIETEIDEN LAITOS, JUHA IISAKKA 11-14 Relaatioista Sarakenimistä relaation kaava tulisi olla yksiselitteinen attribuutin roolinimen tulisi auttaa ymmärtämään attribuutin tarkoituksen OSASTO(NIMI,NRO, TNRO, SIJAINTI) mitä tarkoittaa TNRO? viiteavaimella

Lisätiedot

MUITA TIETOKANTAOBJEKTEJA NÄKYMÄT, SYNONYYMIT, INDEKSOINTI, VALTUUDET JA SYSTEEMIHAKEMISTO

MUITA TIETOKANTAOBJEKTEJA NÄKYMÄT, SYNONYYMIT, INDEKSOINTI, VALTUUDET JA SYSTEEMIHAKEMISTO MUITA TIETOKANTAOBJEKTEJA NÄKYMÄT, SYNONYYMIT, INDEKSOINTI, VALTUUDET JA SYSTEEMIHAKEMISTO NÄKYMÄT Näkymä (view) on looginen näyte tietokannan tauluista tai näkymistä Näkymä ei voi sisältää SELECT INTO,

Lisätiedot

3. TAULUJEN MÄÄRITTELY JA MUUTTAMINEN

3. TAULUJEN MÄÄRITTELY JA MUUTTAMINEN 3. TAULUJEN MÄÄRITTELY JA MUUTTAMINEN DDL: TAULUJEN LUONTI, MUUTOS JA POISTO DML: TAULUJEN TIETOJEN YLLÄPITO TAPAHTUMIEN (TRANSAKTIOIDEN) HALLINTA NÄKYMÄT, SYNONYYMIT JA MUUT TIETOKANTAOBJEKTIT TAULUJEN

Lisätiedot

Jokaisella tiedostolla on otsake (header), joka sisältää tiedostoon liittyvää hallintatietoa

Jokaisella tiedostolla on otsake (header), joka sisältää tiedostoon liittyvää hallintatietoa Tietojen tallennusrakenteet Jokaisella tiedostolla on otsake (header), joka sisältää tiedostoon liittyvää hallintatietoa tiedot tiedostoon kuuluvista lohkoista esim. taulukkona, joka voi muodostua ketjutetuista

Lisätiedot

HELIA 1 (21) Outi Virkki Tietokantasuunnittelu

HELIA 1 (21) Outi Virkki Tietokantasuunnittelu HELIA 1 (21) Luento 4.1 Oliot ja Relaatiot... 2 Relaatiomalli... 2 Oliomalli... 2 Termejä... 4 Yhteensovituksen 3 tapaa... 5 1) Oliot relaatioina / tauluina ja RDBMS... 6 Olioluokka... 7 Olion identiteetti...

Lisätiedot

HELIA 1 (14) Outi Virkki Tiedonhallinta

HELIA 1 (14) Outi Virkki Tiedonhallinta HELIA 1 (14) Luento Näkymät... 2 Relaatiotyypit... 2 Taulu - Tallennettu relaatio... 3 Näkymä - Virtuaalirelaatio... 3 Tulosrelaatio - Kyselyn tulos... 3 Otetaulut - Tauluun tallennettu kyselyn tulos...

Lisätiedot

Tietokannanhallintajärjestelmä (DBMS)

Tietokannanhallintajärjestelmä (DBMS) HELIA TIKO-05 1 (8) Tietokannanhallintajärjestelmä (DBMS) Tietovarastotekniikan kehittyminen... 2 Tiedostopohjaiset ratkaisut... 2 Peräkkäistiedostot... 3 Suorasaantitiedostot... 4 Tiedoston palvelut...

Lisätiedot

Tietokantojen perusteet k2004helsingin yliopisto/tktl Tietokantojen perusteet, s 2005 relaatiomalli Harri Laine 1.

Tietokantojen perusteet k2004helsingin yliopisto/tktl Tietokantojen perusteet, s 2005 relaatiomalli Harri Laine 1. Relaatiotietokannat Relaatiomalli Perustana rakennetason tietomalli (the relational model of data) perusteoria: E.F.Codd 1970 ensimmäiset kaupalliset toteutukset 70-luvun lopulla yleistynyt 80-luvun lopulla

Lisätiedot

HELIA 1 (15) Outi Virkki Tiedonhallinta

HELIA 1 (15) Outi Virkki Tiedonhallinta HELIA 1 (15) Luento Suorituskyvyn optimointi... 2 Tiedonhallintajärjestelmän rakenne... 3 Suunnittele... 4 SQL-komentojen viritys... 5 Tekninen ympäristö... 6 Fyysisen tason ratkaisut... 7 Indeksit...

Lisätiedot

Written by Administrator Monday, 05 September 2011 15:14 - Last Updated Thursday, 23 February 2012 13:36

Written by Administrator Monday, 05 September 2011 15:14 - Last Updated Thursday, 23 February 2012 13:36 !!!!! Relaatiotietokannat ovat vallanneet markkinat tietokantojen osalta. Flat file on jäänyt siinä kehityksessä jalkoihin. Mutta sillä on kuitenkin tiettyjä etuja, joten ei se ole täysin kuollut. Flat

Lisätiedot

Muita tietokantaobjekteja. Näkymät, synonyymit, indeksointi, valtuudet ja systeemihakemisto

Muita tietokantaobjekteja. Näkymät, synonyymit, indeksointi, valtuudet ja systeemihakemisto Muita tietokantaobjekteja Näkymät, synonyymit, indeksointi, valtuudet ja systeemihakemisto Näkymät Näkymä (view) on looginen näyte tietokannan tauluista tai näkymistä Näkymä ei voi sisältää SELECT INTO,

Lisätiedot

KÄSITEANALYYSI PROSESSINA JA TARVEANALYYSI

KÄSITEANALYYSI PROSESSINA JA TARVEANALYYSI TIETOJEN MALLINNUS KÄSITEANALYYSI PROSESSINA JA TARVEANALYYSI HOVI, HUOTARI, LAHDENMÄKI: TIETOKANTOJEN SUUNNITTELU & INDEKSOINTI DOCENDO (2003, 2005) LUKU 3 S. 68 73 JA LUKU 4 (S. 79 84) JOUNI HUOTARI

Lisätiedot

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu HELIA 1 (15) Luento 2.6 Käyttöoikeuksista ja suojauksesta... 2 Suojausten suunnittelu... 3 Käyttäjätunnukset... 4 Tunnuksen luominen... 5 Tunnuksen muuttaminen... 6 Tunnuksen poistaminen... 6 Oikeudet

Lisätiedot

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

Nimi: Henkilötunnus: {id} {+id} TEHTÄVÄ : Eräillä kursseilla on kertauskysymyksiä, joihin opiskelijat vastaavat webin kautta. Kurssilla voi olla useita kysymyssarjoja, joihin voi kuulua monta kysymystä. Kysymyssarjalla on kurssikohtainen

Lisätiedot

Luento 2: Tiedostot ja tiedon varastointi

Luento 2: Tiedostot ja tiedon varastointi HELIA 1 (19) Luento 2: Tiedostot ja tiedon varastointi Muistit... 2 Päämuisti (Primary storage)... 2 Apumuisti (Secondary storage)... 2 Tiedon tallennuksen yksiköitä... 3 Looginen taso... 3 Fyysinen taso...

Lisätiedot

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

Kirjoita kuhunkin erilliseen vastauspaperiin kurssin nimi, tentin päiväys, oma nimesi, syntymäaikasi ja nimikirjoituksesi. Helsingin yliopisto, Tietojenkäsittelytieteen laitos Tietokantojen perusteet, kurssikoe 4.3.2015, H. Laine Tehtävien mukana jaetaan sql-syntaksin tiivistelmä. Kirjoita kuhunkin erilliseen vastauspaperiin

Lisätiedot

CSE-A1200 Tietokannat

CSE-A1200 Tietokannat CSE-A1200 Tietokannat 29.3.2016 CSE-A1200 Tietokannat 29.3.2016 1 / 40 Oppimistavoitteet: tämän luennon jälkeen Tiedät, miten tietokannan relaatioiden (taulujen) määrittelyt kirjoitetaan SQL:llä. Osaat

Lisätiedot

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

Kirjasto Relaatiotietokannat Kevät 2001. Auvinen Annemari Niemi Anu Passoja Jonna Pulli Jari Tersa Tiina Kirjasto Kevät 2001 Auvinen Annemari Niemi Anu Harjoitustyö 7.4.2001 Sisällysluettelo 1. Yleiskuvaus... 3 2. Vaatimukset... 3 2.1. Toiminnalliset... 3 2.1.1. Sisäänkirjautuminen... 3 2.1.2. Nimikkeiden

Lisätiedot

HELIA 1 (11) Outi Virkki Tiedonhallinta

HELIA 1 (11) Outi Virkki Tiedonhallinta HELIA 1 (11) Luento Käyttöoikeuksista ja tiedon suojauksesta... 2 Käyttäjätunnukset... 3 Tunnuksen luominen... 4 Oikeudet / Valtuudet... 5 Oikeuksien hallinta SQL:ssa... 6 Suojaustarkkuus?... 7 Roolit...

Lisätiedot

Tieto/datamallit. Marttila-Kontio/Unicta Oy

Tieto/datamallit. Marttila-Kontio/Unicta Oy 4.4.2017 Tieto/datamallit 4.4.2017 Data Governance Data governance (DG) refers to the overall management of the availability, usability, integrity, and security of the data employed in an enterprise. 4.4.2017

Lisätiedot

HELIA TIKO-05 1 (22) ICT03D Tieto ja tiedon varastointi E.Räty, O.Virkki 9.3.2010

HELIA TIKO-05 1 (22) ICT03D Tieto ja tiedon varastointi E.Räty, O.Virkki 9.3.2010 HELIA TIKO-05 1 (22) SQL SQL... 2 Historiaa... 2 Standardit... 3 Käyttö... 4 Sql-komentojen kirjoittaminen... 5 DDL... 7 Tietokantaobjektien määrittely... 7 SQL:n tietotyypit... 8 Eheyssääntöjen määrittely...

Lisätiedot

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

Kirjoita jokaiseen erilliseen vastauspaperiin kurssin nimi, tenttipäivä, oma nimesi (selkeästi), opiskelijanumerosi ja nimikirjoituksesi Helsingin yliopisto, Tietojenkäsittelytieteen laitos Tietokantojen perusteet, kurssikoe 29.2.2012 (vastauksia) Liitteenä on tiivistelmä SQL-syntaksista Kirjoita jokaiseen erilliseen vastauspaperiin kurssin

Lisätiedot

Tietokannanhoitaja DBA (Database Administrator) ja tietokannan hallinta

Tietokannanhoitaja DBA (Database Administrator) ja tietokannan hallinta Tietokannanhoitaja DBA (Database Administrator) ja tietokannan hallinta Jouni Huotari Martti Laiho (materiaali on osa virtuaaliammattikorkeakoulun Tietokantaosaaja-opintokokonaisuutta) opintokokonaisuutta)

Lisätiedot

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

Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi); Tietokannat SQL-peruskomentojen pikaopas CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi); INSERT INTO table VALUES(val1,val2,... ); Lisää tauluun

Lisätiedot

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

Kyselyt: Lähtökohtana joukko lukuja Laskukaava kertoo miten luvuista lasketaan tulos soveltamalla laskentaoperaatioita Relaatioalgebra Relaatiomalliin liittyy malli tietokannan käsittelystä Tietokannasta pitää pystyä hakemaan tietoa ja toisaalta tietokantaa on ylläpidettävä Tietokannan käsittelyn malli relaatioalgebra

Lisätiedot

A271117 TIETOKANNAT, 4 op Kevät 2010 - TI09

A271117 TIETOKANNAT, 4 op Kevät 2010 - TI09 A271117 TIETOKANNAT, 4 op Kevät 2010 - TI09 Teemu Saarelainen, lehtori Tietotekniikka teemu.saarelainen@kyamk.fi A271117 TIETOKANNAT Tavoitteet Oppia tietokantojen suunnitteluperiaatteet Osata käyttää

Lisätiedot

Tietomallit. Näkökulmat tietoon. Näkökulmat tietoon. Näkökulmat tietoon. Abstraktiotasot tiedon käsittelyssä

Tietomallit. Näkökulmat tietoon. Näkökulmat tietoon. Näkökulmat tietoon. Abstraktiotasot tiedon käsittelyssä Tietomallit Tietomallilla (data model) tarkoitetaan tiedon rakenteen ja tiedolle suoritettavan käsittelyn määrittelevää käsitteistöä Tietoa voidaan tarkastella eri näkökulmista - eri abstraktiotasoilla

Lisätiedot

A271117 TIETOKANNAT, 3 op Syksy 2008 - TI07. Teemu Saarelainen, lehtori Tietotekniikka teemu.saarelainen@kyamk.fi

A271117 TIETOKANNAT, 3 op Syksy 2008 - TI07. Teemu Saarelainen, lehtori Tietotekniikka teemu.saarelainen@kyamk.fi A271117 TIETOKANNAT, 3 op Syksy 2008 - TI07 Teemu Saarelainen, lehtori Tietotekniikka teemu.saarelainen@kyamk.fi A271117 TIETOKANNAT Tavoitteet Oppia tietokantojen suunnitteluperiaatteet Osata käyttää

Lisätiedot

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

Helsingin yliopisto, Tietojenkäsittelytieteen laitos Tietokantojen perusteet, , H.Laine Helsingin yliopisto, Tietojenkäsittelytieteen laitos Tietokantojen perusteet, 3.5.2007, H.Laine Kirjoita kuhunkin erilliseen vastauspaperiin kurssin nimi, oma nimesi, syntymäaikasi ja nimikirjoituksesi

Lisätiedot

FYYSINEN SUUNNITTELU

FYYSINEN SUUNNITTELU IIO30120 DATABASE DESIGN / TIETOKANTOJEN SUUNNITTELU JA IIO30220 DATABASE MANAGEMENT / TIETOKANNAN HALLINTA FYYSINEN SUUNNITTELU KIRJAN HOVI, HUOTARI, LAHDENMÄKI: TIETOKANTOJEN SUUNNITTELU & INDEKSOINTI,

Lisätiedot

Relaatioalgebra. Kyselyt:

Relaatioalgebra. Kyselyt: Relaatioalgebra Relaatiomalliin liittyy malli tietokannan käsittelystä Tietokannasta pitää pystyä hakemaan tietoa ja toisaalta tietokantaa on ylläpidettävä Tietokannan käsittelyn malli relaatioalgebra

Lisätiedot