HAAGA-HELIA Heti-09 1 (12) ICT05 Tiedonhallinta ja tietokkanat Tietokannan rakenteen suunnittelu Tietokannan suunnitteluprosessi... 2 Lähtökohdat... 3 Looginen mallintaminen... 4 Muunnos luokkakaaviosta relaatiokaavioksi 1.vaihe... 5 Relaatiokaaviosta relaatiokaavoiksi 2.vaihe... 7 Käsitekaavion ja relaatiokaavion eroja... 9 Arvojoukkoeheys... 10 Tietotyyppi... 10 Null-arvot... 11 Tietohakemiston päivitys... 11 Käsitteitä... 12
HAAGA-HELIA Heti-09 2 (12) Tietokannan suunnitteluprosessi Vaihe Tavoite Päätehtävät Tuotokset Käsitteellinen mallintaminen (Conceptual Modeling) Ymmärtää kohdealueen toiminta ja terminologia Keskeiset käsitteet, niiden merkitys ja ominaisuudet sekä niiden väliset suhteet Luokkakaavion suunnittelu Tietohakemiston määrittely Luokkakaavio (class diagram) Tietohakemistokuvaukset Looginen mallintaminen (Logical Modeling) Esittää luokkakaavion tietosisältö relaatiotietomallin (relational model) mukaisesti Relaatiokaavion johtaminen Normalisointi Relaatiokaavio (Logical Schema) Eheysmäärittelyt (Integrity Constraints) Fyysinen mallintaminen (Physical Modeling) Fyysisen talletusratkaisun ja suojausten suunnittelu Suojausten suunnittelu Suorituskyvyn optimointi SQL-lauseet, joilla tietokannan objektit luodaan
HAAGA-HELIA Heti-09 3 (12) Lähtökohdat Tietokannan tietosisällön suunnittelu on valmistunut kun käsitteellinen suunnitteluaihe on päättynyt Lopputuloksina: 1. Luokkakaavio 2. Tietohakemistokuvaukset Käsitteen nimi: Nimilyhenne: Määritelmä: Ominaisuudet: Pääavain: Opettaja OPE Oppilaitoksessa ammatikseen opetustyötä tekevä henkilö, jonka työsuhde on voimassa tai päättynyt Opettajanumero, Sukunimi, Etunimi, Huone, Puhelinnumero Opettajanumero
HAAGA-HELIA Heti-09 4 (12) Looginen mallintaminen Tietokannan tietosisällön kuvaus sovitetaan käytettävän tietomallin mukaiseksi - tyypillisesti relaatiotietokannan mukaiseksi Looginen suunnittelu on riippumaton käytettävästä tietokantatuotteesta ja laitealustasta 1. Laadi luokkakaavion pohjalta relaatiokaavio 2. Lisää viiteavaimet 3. Normalisoi tarvittaessa (normalisointia opetellaan seuraavalla luennolla) 4. Tarkista relaatiot suhteessa tietotarpeisiin 5. Korjaa relaatiokaaviota tarvittaessa 6. Määrittele eheyssäännöt
HAAGA-HELIA Heti-09 5 (12) Muunnos luokkakaaviosta relaatiokaavioksi 1.vaihe Luokkakaavio vaatii tiettyjä muutoksia, jotta siitä saadaan relaatiotietomallin mukainen relaatiokaavio 1. Jokaista luokkaa vastaa yksi relaatio. Luokan attribuuteista tulee alustavasti relaation attribuutteja 2. Jokainen monen suhde moneen yhteys kuvataan omana relaationaan (ts. luodaan uusi ns. apurelaatio / välittävä relaatio) 3. Yhteys, johon liittyy attribuutteja, kuvataan omana relaationaan 4. Jokainen moniarvoinen ominaisuus kuvataan omana relaationaan 5. Mahdollinen ylemmän asteen yhteys (Yhteys jossa on useampi kuin 2 osapuolta) muutetaan binääriyhteyksiksi (kahden välisiksi yhteyksiksi), jonka toiseksi osanottajaksi luodaan välittävä relaatio 6. Pääluokan ja aliluokan välinen perintäsuhde muutetaan yhden suhde yhteen yhteydeksi. Mahdollisia koostumus- eli aggragaattiyhteyksiä käsitellään kuten tavallisia assosiaatioyhteyksiä Jos kirjoitat kaavioon myös attribuutit, lisää viiteavaimet vaihe2:n ohjeen mukaisesti
HAAGA-HELIA Heti-09 6 (12) Esim. Kurssihallinto Luokkakaavio Relaatiokaavio 1. Ei monen suhde moneen -yhteyksiä 2. Ei korkeamman asteen yhteyksiä (vain binääriyhteyksiä) 3. Ei yhteyksiä, joihin liittyy attribuutteja 4. Ei luokkia, joissa moniarvoisia attribuutteja 5. Ei aliluokkia
HAAGA-HELIA Heti-09 7 (12) Relaatiokaaviosta relaatiokaavoiksi 2.vaihe Luokkien attribuutteihin lisätään viiteavaimet kuvamaan relaatioiden välisiä yhteyksiä: 1. Jokainen 1:n yhteys kuvataan lisäämällä viiteavain yhteyden n-päässä olevaan relaatioon 2. Jokainen 1:1 yhteys kuvataan lisäämällä viiteavain toiseen osallistuvaan osapuoleen (siihen joka ei ole yhteydessä pakollinen). 3. Jokainen aliluokka kuvataan omana relaationaan se. pääavain on sama kuin pääluokan pääavain pääavain määritellään myös viiteavaimeksi viittaamaan pääluokkaa vastaavaan relaatioon. Ominaisuuksiksi määritellään vain sen omat emotyypistä poikkeavat ominaisuudet (ja mahd. viiteavaimet) Aliluokan relaatiototeutuksessa voidaan päätyä myös muunlaisiin ratkaisuihin
HAAGA-HELIA Heti-09 8 (12) Esim. Kurssihallinto viiteavainten lisääminen OPETTAJA(ope_id, ope_sukunimi, ope_etunimi, ope_huone, ope_puh) KURSSI(krs_id, krs_ope_id, krs_nimi, krs_laajuus, krs_alku_pvm, krs_loppu_pvm) OPISKELIJA(opi_id, opi_sukunimi, opi_etunimi, opi_katuosoite, opi_postino, opi_puh) OSALLISTUMINEN(krs_id, opi_id, opi_krs_arvosana)
HAAGA-HELIA Heti-09 9 (12) Käsitekaavion ja relaatiokaavion eroja Käsitekaavio tavoitteena ymmärtää ja kuvata kohdealueen käsitteistö ja rakenne kuvaa kohdealueen käsitteet = luokat (ja attribuutit) sekä luokkien väliset yhteydet pääavain jokaiselle luokalle viiteavainta ei tarvita (mutta saa olla) luokkahierarkia ja koostumussuhde OK monen suhde - moneen yhteydet sallittu tietotyyppejä ei tarvitse vielä määritellä Relaatiokaavio = looginen kaavio tavoitteena kuvata kohdealueen rakenne relaatiotietomallin mukaisesti kuvaa kohdealueen käsitteitä vastaavat relaatiot (ja attribuutit) sekä relaatioiden väliset yhteydet relaatiotietomallin mukaisesti pääavain jokaiselle relaatiolle viiteavain kuvaamaan yhteyttä relaatioiden välillä vain assosiaatiot sallittu monen suhde - moneen yhteydet ei sallittu tietotyypit mieluusti määritelty
HAAGA-HELIA Heti-09 10 (12) Arvojoukkoeheys Tietotyyppi Relaation attribuuteille määritellään tietotyyppi (ja pituus) Tietokoneessa kaikki tiedot esitetään bittijonoina ja koneen kannalta bittijono on vain bittijono. Ihmisen kannalta tietyt bittijonot esittävät kokonaislukuja / desimaalilukuja / merkkejä / päivämääriä; siis tiedoilla on jokin tyyppi (type). Tietotyyppi määrittää 1. millaisia arvoja tieto voi saada 2. millaisilla operaatioilla sitä voi käsitellä Eri tietokannan hallintajärjestelmät ja ohjelmointikielet tuntevat hieman erilaisia tietotyyppejä Järjestelmä pystyy tarjoamaan automaattisesti tiedon sisältöön ja siihen kohdistettuihin operaatioihin liittyviä tarkistuksia (esim. sukunimiä ei saa laskea yhteen) Tavallisimmat tietotyypit Teksti / merkkijono Luku Päivämäärä esim. char, varchar, text, esim. integer, decimal esim. date SQL:n tietotyyppejä käsitellään tarkemmin SQL-osassa Kunkin attribuutin tietotyyppi kirjataan joko relaatiokaavioon tai tietohakemistoon
HAAGA-HELIA Heti-09 11 (12) Null-arvot Kullekin attribuutille on määriteltävä, ovatko null-arvot sallittu vai ei esim. sukunimi varchar(30) not null Null ~ Arvo puuttuu, koska sitä ei tiedetä ~ Arvo puuttuu, koska sitä ei ole Tietohakemiston päivitys Käsitteen nimi: Opettaja Nimilyhenne: OPE Määritelmä: Oppilaitoksessa ammatikseen opetustyötä tekevä henkilö, jonka työsuhde on voimassa tai päättynyt Ominaisuudet: Opettajanumero integer not null, Sukunimi varchar(30) not null, Etunimi varchar(30) not null, Huone char(4), Puhelinnumero varchar(20) Yksikko_lyh varchar(10) Pääavain: Opettajanumero Viiteavain: Yksikko_lyh
HAAGA-HELIA Heti-09 12 (12) Käsitteitä Käsitekaavio (Conceptual Schema) Tietokannan tietosisällön kuvaus, jossa kohdetta kuvataan käsitteinä ja niiden välisinä suhteina. Kuvaus on riippumaton toteutusratkaisuista. Luokkakaavio (Class Diagramm) Kohdealueen kuvaus, jossa kohdetta kuvataan käsitteinä (=luokkina) ja niiden välisinä suhteina. Kuvaus on riippumaton toteutusratkaisuista mutta on keskeinen osa oliopohjaista suunnittelua. Relaatiokaavio Tietokannan tietosisällön kuvaus (piirros), jossa kohdetta kuvataan relaatioina ja niiden välisinä yhteyksinä relaatiotietomallin mukaisesti. Kuvaus on riippumaton toteutusratkaisusta. Relaatiokaava (Relation schema) Matemaattinen tapa kuvata relaation rakenne R(a1, a2, an) Tietohakemisto Tietokannan käsitteiden määrittely sanallisesti. Voi sisältää sekä käsitteellisen että loogisen vaiheen määrittelyjä Katso myös Sanasto-linkki kurssin sivuilta.