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 aloitetaan rajaamalla kohdealue (se osa reaalitodellisuutta, josta on kiinnostuttu) kohdealueelta pyritään tunnistamaan ja määrittelemään käsitteitä (entity) ja niiden ominaisuuksia (attribuutteja) Asiakas nimi, osoite Tilaus tilausnumero, päivämäärä, tilausrivi Tuote nimi, tuotenumero, kuvaus, hinta selvitetään käsitteiden välisiä suhteita ja riippuvuuksia (erityisesti lukumääräsuhteita) sivu 3
Käsiteanalyysi (jatkoa) Työskentely on luonteeltaan iteratiivista ja tehdään tavallisesti toimeksiantajan (asiakkaan) ja toteuttajan yhteistyönä Useita graafisia kuvausjärjestelmiä Käsiteanalyysi on hyvän tietokantasuunnitelman kannalta oleellista Relaatiomalli mahdollistaa monia tiedonhallinnan kannalta toivottavia asioita Ilman hyvää suunnittelua syntyy yleensä erittäin huono tietokantaratkaisu sivu 4
Käsiteanalyysi (jatkoa) Yhtä ainoaa oikeaa vastausta analyysin tuloksena ei ole olemassa: All models are wrong, but some are useful... Do not fall in love with one model! Better is worse than good enough. Käsiteanalyysiin syvennytään tarkemmin myöhemmin tällä opintojaksolla sivu 5
Esimerkki 1. ER-malli Chenin alkuperäinen notaatio (1976) COUNTRY CODE NAME COUNTRY PRODUCT 1 N IS_ORIGIN_OF IS_INVOICED N M CUSTOMER 1 HAS N INVOICE sivu 6
Esimerkki 2. ER-malli Harakanvarvasnotaatio Asiakas Lasku Maa Tuote sivu 7
Esimerkki 3. ER-malli UML-notaatio (UML:n luokkakaavio) sivu 8
Esimerkki 4. ER-malli Microsoft Access sivu 9
Relaatiomallin peruskäsitteet 1 tietokanta sisältää useita tauluja (relaatioita) yksittäinen tieto esiintyy tietokannassa vain ja ainoastaan yhden kerran jos tätä rikotaan niin seurauksena on tiedon ylläpidon vaikeutuminen tieto esiintyä vain yhdessä taulussa ja vain yhdessä attribuutissa poikkeuksena ovat relaatioiden yhteyksien kuvaamiseen käytetyt viiteavainattribuutit sivu 10
Relaatiomallin peruskäsitteet 1 (jatkoa) tiedot talletetaan tauluihin, joille annetaan tietokannan sisällä yksikäsitteinen nimi sivu 11
Relaatiomallin peruskäsitteet 1 (jatkoa) jokainen taulun sarake vastaa yksilötyypin ominaisuutta (attribuuttia) sarakkeella on taulun sisällä yksikäsitteinen nimi sarake voi sisältää arvoja ainoastaan yhdestä arvoalueesta (esim. kokonaisluku) sarakkeiden järjestyksellä ei ole merkitystä yhdelle riville tallennetaan yhden erillisen yksilön (olion) attribuuttien arvot yksittäinen rivi koostuu kentistä (soluista) kenttä sisältää yksittäisen tiedon, joka on attribuutin arvoalueen mukainen rivien järjestyksellä ei ole merkitystä taulussa ei saa olla kahta täysin samanlaista riviä sivu 12
Attribuutin arvojoukko relaatiomalli edellyttää tiedon määrämuotoisuutta ja arvojen atomisuutta (jakamattomuutta) attribuutti voi sisältää arvoja vain yhdestä arvoalueesta (esim. kokonaisluku) tyhjä arvo (NULL) kuuluu kaikkiin arvojoukkoihin relaatiomallissa attribuuttien arvoalueet voidaan määritellä täysin vapaasti TuoteNimi sisältää kaikkien yrityksen valmistamien tuotteiden nimet TKHJ ei yleensä tue arvoalueita, vaan sarakkeille määritellään tietotyyppi (char, varchar, int, ) ja niille rajoitteita (esim. merkkijonon pituus) TuoteNimi varchar(80) sivu 13
Arvo NULL tyhjä arvo ei siis olen sama kuin esimerkiksi 0 tai välilyönti mihin arvoa NULL tarvitaan? arvoa ei tiedetä arvoa ei ole mikä Työntekijä-relaation Tyontekija(TyontekijaID, Nimi, ToimipaikkaID, PuhNumero, Kotiosoite) attribuutti voisi saada arvon NULL? arvoa NULL ei voi käyttää laskennassa eikä siihen voi verrata toista arvoa TKHJ tarjoaa mekanismeja NULL-arvojen hallintaan sivu 14
Relaatiomallin peruskäsitteet 2 relaatiotietokanta koostuu aina useammasta kuin yhdestä relaatiosta relaatiomalli johtaa usein tietokantaan, jossa on lukuisia pieniä tauluja tauluilla on vastinkenttiin (avainattribuutteihin) perustuvia suhteita (relationship) sivu 15
Pääavain eli perusavain (primary key) relaatiotietokanta koostuu aina useammasta kuin yhdestä relaatiosta taululla pitää olla pääavain, joka yksilöi rivit tietokanta käsittelee taulun tietueet pääavaimen perusteella pääavain on pienin mahdollinen joukko taulun attribuutteja, jotka riittävät yksilöimään rivit pääavain voi muodostua yhdestä tai useammasta attribuutista pääavaimen arvo ei voi olla tyhjä sivu 16
Pääavain eli perusavain (jatkoa) käytännössä pääavaimeksi määritellään usein erityinen tunnistenumero esim. henkilötunnus, opiskelijanumero, auton rekisterinumero, tilausnumero jne pääavain voi muodostua kahdesta tai useammasta attribuutista yhtä aikaa arvo on attribuuttien arvojen yhdiste yleinen relaatioiden monesta-moneen suhteiden purkamiseen käytetyissä tauluissa (esimerkiksi Viopen 2. oppitunti, Tyoskentelee-taulu) sivu 17
Viiteavain eli vierasvain (foreign key) taulujen yhteydet toteutetaan viiteavaimilla viiteavain viittaa toisen taulun pääavaimeen viiteavaimella oltava sama arvoalue kuin toisen taulun pääavaimella viiteavaimen arvo voi olla tyhjä jos yhteys taulujen välillä ei ole pakollinen sama attribuutti voi olla yhtä aikaa sekä viiteettä pääavain yleistä monesta-moneen suhteiden purkamiseen käytetyissä relaatioissa sivu 18
Microsoft Access relaatiotietokantaohjelmisto, jossa lisäksi mukana sovellus- ja raporttikehitin tarkoitettu pääasiassa tavallisille käyttäjille ei niinkään tietotekniikka-ammattilaisille käytetään henkilökohtaisten sovellusten lisäksi myös laajoissa yritysratkaisuissa liitettävissä oikeisiin relaatiotietokantoihin sivu 19
Microsoft Access (jatkoa) Webissä monia hyviä tutoriaaleja englanniksi, esim. GCFLearnFree.org http://www.gcflearnfree.org/access2010/3 yo. oppintuntien videot suoraan YouTubessa: http://www.youtube.com/watch?v=ntj8bfhnmq8&f eature=related Microsoftin Suomen sivuilla Accessin perustoimintojen esittely: http://office.microsoft.com/fi-fi/access-help/access- 2010-n-perustoiminnot- HA101829991.aspx?CTT=5&origin=HA010341722 sivu 20
Lähteitä Relaatiotietokantasanasto: http://www.cs.helsinki.fi/relaatiosanasto/ sivu 21