HELIA TIKO-05 1 (19) ICT03D Tieto ja tiedon varastointi Tietokannan suunnittelu Tietokannan suunnitteluprosessi... 2 Tavoitteet...2 Tietojärjestelmän suunnitteluprosessi...3 Abstraktiotasot tietokannan suunnittelussa...4 3-taso -malli...4 TIHA-standardi...5 Käsitteellinen mallintaminen... 6 Käsitekaavio...8 Luokkakaavion keskeiset käsitteet...8 Luokka...9 Ominaisuus...9 Yhteys...9 Tietohakemistokuvaus...11 Looginen mallintaminen... 13 Muunnos luokkakaaviosta relaatiokaavioksi 1.vaihe...14 Relaatiokaaviosta relaatiokaavoiksi 2.vaihe...16 Käsitekaavion ja relaatiokaavion eroja... 18 Käsitteitä... 19
HELIA TIKO-05 2 (19) ICT03D Tieto ja tiedon varastointi Tietokannan suunnitteluprosessi Tavoitteet 1. Tyydyttää käyttäjien tietotarpeet 2. Tiedon luotettavuus 3. Hyvä suorituskyky 4. Yhteensopivuus 5. Jatkokehitettävyys Vastaa todellisuuden rakennetta Eheä Yksinkertainen Ilmaisuvoimainen Ei toistoa Suunnittelumenetelmä on työkalu tavoitteiden saavuttamiseksi 1. Vaihejako 2. Työskentelymenetelmät 3. Kuvaustavat
HELIA TIKO-05 3 (19) ICT03D Tieto ja tiedon varastointi Tietojärjestelmän suunnitteluprosessi Tietokannan suunnittelu osana tietojärjestelmän suunnittelua 1. Esitutkimus 2. Vaatimusmäärittely 3. Rakenteen ja toiminnan suunnittelu 4. Toteutus 5. Käyttöönotto 6. Ylläpito
HELIA TIKO-05 ICT03D Tieto ja tiedon varastointi 4 (19) Abstraktiotasot tietokannan suunnittelussa 3-taso -malli Käsitetaso Looginen taso Fyysinen taso Tiedon nimi, merkitys ja arvot Tiedon esitys valitulla tietomallilla Tiedon esitys fyysisellä tallennusvälineellä Riippumaton toteutusratkaisuista Sidottu käytettävään tietomalliin Sidottu käytettävään toteutusympäristöön Eri tasojen kuvaukset yhdessä kuvaavat tiedot kokonaisuudessaan Samaa asiaa ei kuvata monella tasolla. Kullakin tasolla on oma peruskäsitteistönsä ja esitystekniikkansa Piirrokset / piirroskielet (Formaalit) tekstimuotoiset kuvauskielet; Tietohakemistot ict03d_tks.doc 10.1.2007 12:22:00
HELIA TIKO-05 ICT03D Tieto ja tiedon varastointi 5 (19) TIHA-standardi Taso Keskeinen sisältö Suunnittelun tulos Käsitetaso Looginen taso Tekninen taso Fyysinen taso (SFS-106) 198 Kohdealueen käyttämien käsitteiden rakenne Tietomallin mukainen (looginen) tietorakenne Tietyn DBMS:n mukainen (tekninen) tietorakenne Tietyn tiedostonhallintaohjelmiston mukainen (fyysinen) talletusrakenne Käsitekaavio / Luokkakaavio Tietohakemistokuvaukset Normalisoidut relaatiokaavat Eheysmäärittelyt Tietokannan luontilauseet SQL:llä Tietokannan talletusmääritykset ict03d_tks.doc 10.1.2007 12:22:00
HELIA TIKO-05 6 (19) Käsitteellinen mallintaminen Conceptual modeling Tietokannan suunnitteluprosessi alkaa käsitteellisestä mallintamisesta Kohdealueen rajaus Tietotarpeet / vaatimukset 1. Kohdealueen käsitteet (terminologia) 2. Käsitteiden merkitys 3. Käsitteiden väliset yhteydet 4. Käsitteiden ominaisuudet 5. Yksilöiden identifiointi Käsite ~Luokka ~ Yksilötyyppi Lopputuloksina Luokkakaavio Tietohakemistokuvaukset Riippumaton toteutusratkaisusta! Tiedonhallintajärjestelmä / DBMS Ohjelmointikieli Laitealusta... Käsitteellinen mallintaminen on kriittisin vaihe tietokannan suunnitteluprosessissa! Tarkista lopputulos asiakkaan edustajan kanssa!
HELIA TIKO-05 7 (19) Esim. Kurssihallinto... Kohteen olioluokat Substantiivit, jotka ovat itsenäisesti olemassa 1. Opettajat 2. Kurssit 3. Oppilaat 4. Kurssisuoritukset 5.... Luokkien määrittely Rajaus: Mikä kuuluu ko. käsitteen piiriin Opettaja Oppilaitoksessa palkkatyötä tekevä henkilö, jonka pääasiallinen työtehtävä on opettaminen Kurssi Oppilaitoksessa järjestettävä opintokokonaisuus, jolle on määritelty nimi, laajuus, oppimistavoitteet ja sisältö Oppilas Oppilaitokseen hyväksytty ja oppilaspaikan vastaanottanut henkilö, jonka opiskeluoikeus on voimassa
HELIA TIKO-05 8 (19) Käsitekaavio Yleisin tapa kuvata tietokantaa käsitetasolla käsitekaavion esittämisessä käytetään yleensä luokkakaaviota (UML:n Class Diagram) Ennen oliobuumia käytettiin ER-kaaviota (Entity Relationship Model / ER-model) Luokkakaavion keskeiset käsitteet UML ER 1. Luokka Class Entity 2. Ominaisuus Attribute Attribute (attribuutti) 3. Yhteys Association Relationship Luokkamallissa on lisäksi muitakin elementtejä, jotka eivät ole niin tärkeitä tietokannan mallintamisessa: 4. Periytyvyysyhteys (Inheritance) 5. Koostumusyhteys (Aggregation) Näitä voi käyttää käsitteellisessä suunnitteluvaiheessa, mutta ei enää loogisessa suunnitteluvaiheessa
HELIA TIKO-05 9 (19) Luokka käsite, joka on itsenäisesti olemassa ja jonka esiintymät voidaan identifioida Esiintyy kohdealueella Opiskelija opi_id opi_sukunimi opi_etunimi opi_katuosoite opi_postino opi_puhno Ominaisuus Kaikilla luokan oliolla on tietyt samantyyppiset ominaisuudet Kullakin ominaisuudella on sitä vastaava arvojoukko / arvoalue (domain) Yhteys Luokkien välinen kiinnostava yhteys Yhteysrajoitteet: 1. Modaalisuus eli osallistumisrajoite ('minimi') Mahdollinen (0) / Välttämätön (1) 2. Määrärajoite ('maksimi') Yksi (1) vai useampi (*) 4 eri kombinaatiomahdollisuutta!
HELIA TIKO-05 10 (19) yhteysrajoitteet määräävät eri luokkien olioiden väliset yhteydet Esim.Luokkakaavio osallistumis -rajoite määrärajoite Opettaja ope_id ope_sukunimi ope_etunimi ope_huone ope_puh 1 0..* Kurssi kurssi_id krs_nimi krs_laajuus krs_alku_pvm krs_loppu_pvm 0..* 0..* Opiskelija opi_id opi_sukunimi opi_etunimi opi_katuosoite opi_postino opi_puhno yhden suhde moneen (1:* ) -yhteys monen suhde moneen (*:* ) - yhteys Opettaja-luokan olio voi olla yhteydessä nollasta moneen Kurssi-luokan olioon. (Jokainen opettaja voi opettaa 0 n kurssia.) Kurssi-luokan olio voi olla yhteydessä vähintään ja enintään yhteen Opettaja-luokan olioon (Jokaisella kurssilla on täsmälleen yksi opettaja.) Kurssi-luokan olio voi olla yhteydessä nollasta moneen Opiskelija-luokan olioon (Jokaisella kurssilla voi olla 0..n opiskelijaan). Opiskelija-luokan olio voi olla yhteydessä nollasta moneen Kurssi-luokan olioon. (Jokainen opiskelija voi olla ilmoittautunut 0 n kurssille.) Yhteystyypit (*:*) monen suhde moneen -yhteydet (1:*) yhden suhde moneen -yhteydet (1:1) yhden suhde yhteen yhteydet yläluokan ja alaluokan periytyvyysyhteys jne.
HELIA TIKO-05 11 (19) Tietohakemistokuvaus Tietohakemistoon kootaan yksilötyyppeihin liittyvä kiinnostava tieto, jota ei mahduteta käsite/luokkakaavioon 1. Luokkien (Yksilötyyppien) määrittelyt 2. Attribuuttien (Ominaisuustyyppien) määrittelyt Huom. Tiedonhallintajärjestelmä ylläpitää omaa tietohakemistoa toteutetuista tietokantaobjekteista Käsitteellisen tason tietohakemistoa nimitetään nykyään myös kuvauskannaksi (repository) CASE-tuotteet (Computer Aided System Engineering) tukevat määrittelytiedon tallentamista repositorytietokantaan sekä tietokanta- (ja ohjelmisto-) ratkaisun tuottamista määrittelyjen pohjalta.
HELIA TIKO-05 12 (19) Esim. Tietohakemisto Luokan / käsitteen nimi: Nimilyhenne: Synonyymit: Määritelmä: Pääavain: Ominaisuudet: Esimerkki: Opettaja OPE Opettaja, lehtori Oppilaitoksessa ammatikseen opetustyötä tekevä henkilö, jonka työsuhde on voimassa tai päättynyt Opettajanumero Sukunimi, Etunimi, Tutkinto, Puhelinnumero, Huone, Lyhenne Olion / esiintymän / yksilön kuvaus Opettajanumero 1234 Sukunimi Valo Etunimi Into Tutkinto FM Puhelinnumero (09) 1498 01 Huone 3012 Lyhenne ValIn
HELIA TIKO-05 13 (19) Looginen mallintaminen Tietokannan käsitteellinen malli sovitetaan käytettävän tietomallin mukaiseksi (esim. relaatiotietokannan malliksi) Looginen suunnittelu on riippumaton käytettävästä tietokantatuotteesta ja laitealustasta 1. Laadi luokkakaavion pohjalta relaatiokaavio 2. Lisää viiteavaimet 3. Johda relaatiokaavat 4. Normalisoi tarvittaessa (normalisointi käsitellään seuraavalla viikolla). 5. Tarkista relaatiot suhteessa tietotarpeisiin 6. Korjaa relaatiokaaviota tarvittaessa 7. Määrittele eheyssäännöt (vaiheet 1 & 2 voi kokemuksen karttuessa yhdistää)
HELIA TIKO-05 14 (19) Muunnos luokkakaaviosta relaatiokaavioksi 1.vaihe Luokkakaavio vaatii tiettyjä muutoksia, jotta siitä saadaan relaatiotietomallin mukainen relaatiokaavio 1. Jokaista luokkakaavion luokkaa kohden relaatiokaaviossa on yksi relaatio. Muunnoksen alussa relaatiolla on samat attribuutit kuin luokalla. 2. Jokainen monen suhde moneen (*:*) yhteys kuvataan omana relaationaan (luo uusi ns. apurelaatio / välittävä relaatio) 3. Mahdollinen ylemmän asteen yhteys (Yhteys jossa on useampi kuin 2 osapuolta) muutetaan binääriyhteyksiksi, jonka toiseksi osanottajaksi luodaan välittävä relaatio 4. Yhteys, johon liittyy attribuutteja, kuvataan omana relaationaan 5. Jokainen moniarvoinen ominaisuus kuvataan omana relaationaan 6. Pääluokan ja aliluokan välinen periytyvyyssuhde muutetaan yhden suhde yhteen (1:1) yhteydeksi. Mahdollisia koostumus- eli aggregaattiyhteyksiä käsitellään kuten tavallisia assosiaatioyhteyksiä Jos kirjoitat kaavioon myös attribuutit, lisää viiteavaimet vaihe2:n ohjeen mukaisesti
HELIA TIKO-05 15 (19) Esim. Kurssihallinto Luokkakaavio Opettaja ope_id ope_sukunimi ope_etunimi ope_huone ope_puh 1 0..* Kurssi kurssi_id krs_nimi krs_laajuus krs_alku_pvm krs_loppu_pvm 0..* 0..* Opiskelija opi_id opi_sukunimi opi_etunimi opi_katuosoite opi_postino opi_puhno 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 Opettaja ope_id ope_sukunimi ope_etunimi ope_huone ope_puh 1 0..* Kurssi krs_id krs_nimi krs_laajuus krs_alku_pvm krs_loppu_pvm krs_ope_id Opiskelija opi_id opi_sukunimi opi_etunimi opi_katuosoite opi_postino opi_puhno 1 1 0..* 0..* Osallistuminen krs_id opi_id opi_krs_arvosana
HELIA TIKO-05 16 (19) Relaatiokaaviosta relaatiokaavoiksi 2.vaihe Relaation attribuutteihin lisätään viiteavaimet kuvamaan relaatioiden välisiä yhteyksiä: 1. Jokainen (1:*) yhteys kuvataan lisäämällä viiteavain yhteyden *-päässä olevaan relaatioon 2. Jokainen (1:1) yhteys kuvataan lisäämällä viiteavain toiseen osallistuvaan osapuoleen sen mukaan kumpi osapuoli on 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! 4. Valmis relaatiokaavio esitetään tekstimuotoisena relaatiokaavana. ict03d_tks.doc 10.1.2007 12:22:00
HELIA TIKO-05 17 (19) Esim. Kurssihallinto relaatiokaava OPETTAJA(ope_id, ope_sukunimi, ope_etunimi, ope_huone, ope_puh) KURSSI(krs_id, krs_ope_id (FK), 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 (FK), opi_id (FK), opi_krs_arvosana) pääavaimet alleviivattu viiteavaimet merkitty FK:lla
HELIA TIKO-05 18 (19) 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ä käsitteiden / luokkien väliset yhteydet pääavain jokaiselle käsitteelle / 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 ict03d_tks.doc 10.1.2007 12:22:00
HELIA TIKO-05 19 (19) Käsitteitä Formaali Muodollinen, tiettyjen sääntöjen mukainen Kuvauskieli Tiettyjen sääntöjen mukainen tapa kuvata kohteen rakennetta, merkitystä ja sisältöä Käsitekaavio (Conceptual Schema) Tietokannan tietosisällön graafinen kuvaus, jossa kohdetta kuvataan käsitteinä ja niiden välisinä suhteina. Kuvaus on riippumaton toteutusratkaisuista. (esim. luokkakaavio/erkaavio) Relaatiokaavio Tietokannan tietosisällön graafinen kuvaus, jossa kohdetta kuvataan relaatioina ja niiden välisinä yhteyksinä relaatiotietomallin mukaisesti. Kuvaus on riippumaton toteutusratkaisusta. Relaatiokaava (Relation schema) Formaali tekstimuotoien 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ä