17.01.2015 Views

Käsiteanalyysi (suunnitteluputki)

Käsiteanalyysi (suunnitteluputki)

Käsiteanalyysi (suunnitteluputki)

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

© JOUNI HUOTARI & ARI HOVI<br />

2000 - 2009


TIETOKANTOJEN PERUSTEISSA OSATTAVA<br />

• <strong>Käsiteanalyysi</strong>n ja käsitemallinnuksen perusidea:<br />

– Käsitteiden tunnistaminen<br />

– Yhteyksien muodostaminen<br />

– Tietojen eli ominaisuuksien lisääminen<br />

– Moni-moneen-yhteyksien purkaminen<br />

– Käsitemallin ”piirtäminen”<br />

• Tietokannan määrittely:<br />

– Käsitteistä tulee tauluja<br />

– Tiedoista sarakenimet tauluun<br />

– Yhteyksien luominen perus- ja viiteavaimien avulla<br />

© Jouni Huotari & Ari Hovi


SUUNNITTELUPUTKI<br />

Määrittely & suunnittelu<br />

Käyttäjien<br />

näkemykset<br />

Näytöt, raportit<br />

<strong>Käsiteanalyysi</strong><br />

Tarveanalyysi<br />

Normalisointitarkistus<br />

Käsitemalli<br />

Käsitemalli, täydennetty<br />

Perusavain<br />

Tieto1<br />

Tieto2<br />

Perusavain<br />

Tieto1<br />

Tieto2<br />

3. normaalimuodossa<br />

olevat käsitteet<br />

Toteutus<br />

Tietokannan<br />

fyysinen suunnittelu<br />

Suorituskyvyn<br />

viritys<br />

Relaatiotietokanta<br />

© Jouni Huotari & Ari Hovi


TIETOKANTAPROJEKTIN VAIHEET: INKREMENTAALINEN<br />

JA ITERATIIVINEN LÄHESTYMISTAPA<br />

Määrittely<br />

Suunnittelu<br />

Toteutus (ml. prototyypit/inkrementit)<br />

Käyttöliittymä<br />

v<br />

a<br />

i<br />

h<br />

e<br />

e<br />

t<br />

Sovellus<br />

Tietokanta<br />

Testaus<br />

© Jouni Huotari & Ari Hovi<br />

Käyttöönotto<br />

Ylläpito<br />

t


TIETOKANNAN ELINKAARI<br />

Tietokantojen (TK) perusteet<br />

SQL<br />

TK-ohjelmointi<br />

TK-suunnittelu<br />

TK-käsittely<br />

Käsite-ja tarveanalyysi<br />

(Conceptual and logical design)<br />

Ohjelmistosuunnittelu<br />

DBMSympäristön<br />

suunn<br />

Normalisointi<br />

Tietoturva<br />

Varmistukset<br />

-suunn.<br />

Fyysinen suunn<br />

(Physical)<br />

Kannan<br />

toteutus<br />

Tietojenkeruu<br />

Suunn+testaus<br />

Mittaus,<br />

säädöt,<br />

muutokset<br />

Kuormitustesti<br />

Tuotantotesti<br />

Tietoturva<br />

Varmistukset<br />

Arkkitehtuurit<br />

Infra-suunn<br />

DBA<br />

Kehitys<br />

Tuotanto<br />

- OLTP<br />

- DW<br />

© Jouni Huotari & Ari Hovi<br />

Helia / Martti Laiho; täydentänyt JAMK / Jouni Huotari


KÄSITEMALLI ON KUVAUS TIETOKANNAN TOTEUTUSTA VARTEN<br />

Käsitemalli<br />

Tietokannan taulut<br />

© Jouni Huotari & Ari Hovi


Käsitemalli<br />

Reaalimaailma<br />

Kohdealue<br />

Tietokanta<br />

KOHDEALUEEN VALINNASTA<br />

KÄSITEMALLIN KAUTTA<br />

TOTEUTETTAVAAN TIETOKANTAAN<br />

© Jouni Huotari & Ari Hovi


SYSTEEMIMETODOLOGIAN MALLI<br />

© Jouni Huotari & Ari Hovi


TERMEJÄ<br />

• Käsite = kohde (Entity) = yksilö- tai oliotyyppi ~ luokka<br />

– johdetaan yksittäisistä olioista (esiintymät, ilmentymät, instanssit)<br />

• <strong>Käsiteanalyysi</strong> = kohdeanalyysi<br />

• Käsitemalli (ER-malli, tietomalli)<br />

• ER-kaavio ~ luokkakaavio: graafinen esitys<br />

• Yhteys = riippuvuus = assosiaatio = suhde (Relationship)<br />

• Ominaisuus = tieto = attribuutti (Attribute)<br />

• Lukumääräsuhde = kardinaliteetti<br />

• Notaatio = kuvaustekniikka<br />

Ks. Tietoanalyysi (Soini)<br />

© Jouni Huotari & Ari Hovi


KÄSITEANALYYSI<br />

• <strong>Käsiteanalyysi</strong> on tietokantoihin johtavan<br />

suunnitteluprosessin ensimmäisiä vaiheita<br />

• Selvitetään, mitä tietoja tietokantaan talletetaan<br />

• Aloitetaan karkealla tasolla; toisaalta yksittäisten<br />

olioiden tunnistaminen auttaa käsitteiden löytymistä<br />

• Tuloksena on käsitemalli<br />

“Mitkä ovat tietokantaan talletettavat tiedot ja niiden väliset<br />

riippuvuudet tietyllä karkeustasolla”<br />

“Tietokannan piirustukset”<br />

“Yhteinen näkemys (tai sopimus) kohdealueesta”<br />

© Jouni Huotari & Ari Hovi


KÄSITEANALYYSISTÄ<br />

• Selventää kohdealueen käsitteistöä<br />

– yhteinen kieli<br />

– kohdealueen sanakirja<br />

• On täysin riippumaton tulevasta teknisestä toteutuksesta ja<br />

tietokannan hallintajärjestelmistä<br />

• Kuvittele, että käsitemalli toimii äärettömän tehokkaassa koneessa<br />

– ei suorituskykypohdintoja vielä<br />

– kaikki tiedot esiintyvät vain kertaalleen - ei toistoa<br />

• <strong>Käsiteanalyysi</strong>ä ei kannata jatkaa liian pitkään<br />

– tee välillä muita systeemityön alueita<br />

– toteuta prototyyppi ja paranna käsitemallia<br />

© Jouni Huotari & Ari Hovi


KÄSITTEEN TUNNISTAMINEN<br />

• Osoitettavissa oleva reaalimaailman objekti, kuten<br />

työntekijä, tuote, asiakas tai organisaatioyksikkö<br />

• Abstrakti tai kuvitteellinen asia, kuten tulosyksikkö,<br />

vakuutuskorvaus tai budjettikuukausi<br />

• Pysyvän luontoinen, kuten asiakas, tuote tai<br />

tapahtumatyyppinen, kuten tilausrivi, tilitapahtuma<br />

• Käsite ilmaisee jotain asiaa, josta haluamme tallettaa<br />

tietoa tulevaa käyttöä varten<br />

• Käsite on lauseessa substantiivi<br />

– Asiakas tekee tilauksia<br />

© Jouni Huotari & Ari Hovi


TEHTÄVÄ 1: KÄSITTEIDEN TUNNISTAMINEN<br />

• Tee lista toimeksiantoon liittyvistä käsitteistä (nk. käsiteehdokkaiden<br />

kirjaus)<br />

– Voit käyttää joko kynää ja paperia tai listata käsitteet tietokoneella<br />

– Tee lista nopeasti miettimättä aluksi kovin tarkkaan mikä olisi paras<br />

nimitys eri käsitteille<br />

– Lopuksi voit hieman ryhmitellä käsitteitä (esim. mind-map) ja miettiä<br />

oliko kirjaamasi käsite paras mahdollinen vaihtoehto<br />

• Ratkaisuehdotus toisessa moduulissa (yhtä ainutta oikeata<br />

vastausta ei ole olemassa)<br />

• Näistä käsite-ehdokkaista mietitään, mitkä käsitteet ovat<br />

yläkäsitteitä ja mitkä kuuluvat yläkäsitteen alle<br />

© Jouni Huotari & Ari Hovi


KÄSITEMALLINNUS


ESIMERKKEJÄ KUVAUSTEKNIIKOISTA ELI NOTAATIOISTA<br />

Käsite<br />

ASIAKAS<br />

ASIAKAS<br />

Yhteys eli<br />

riippuvuus<br />

ASIAKAS<br />

1:1<br />

tekee<br />

0:N<br />

TILAUS<br />

ASIAKAS<br />

TILAUS<br />

ASIAKAS<br />

tekee<br />

*<br />

TILAUS<br />

© Jouni Huotari & Ari Hovi


YHTEYS ELI RIIPPUVUUS<br />

• Riippuvuus ilmaisee yhteyttä tai suhdetta käsitteiden<br />

välillä<br />

• Yhteyttä voi kuvata verbillä<br />

– Isällä on monta lasta<br />

– Asiakas tekee monta tilausta<br />

– Myyjä myy monta tuotetta<br />

– Tilin avaa yksi henkilö<br />

• Muista lukea lause molempiin suuntiin ja kysyä<br />

(toimeksiantajalta) esim.:<br />

– Voiko lapsella olla monta isää<br />

– Voiko yhdessä tilauksessa olla monta asiakasta<br />

– Voiko samaa tuotetta myydä moni myyjä<br />

– Voiko yksi henkilö avata monta tiliä<br />

© Jouni Huotari & Ari Hovi<br />

Mieti, mihin tarkoitukseen<br />

tietokanta tulee<br />

Tee myös päätös: halutaanko<br />

historiatietoa tallentaa (esim.<br />

tuotteen myyntihistoria)


YHTEYKSIEN MERKINTÄTAPOJA<br />

• Yhden suhde moneen -yhteys, 1:M, voidaan ilmaista<br />

lukuisilla eri tavoilla riippuen käytettävästä notaatiosta,<br />

esim.<br />

© Jouni Huotari & Ari Hovi


2 VAIHTOEHTOISTA SUOSITUSTA YHTEYKSIEN KUVAAMISEKSI<br />

”harakanvarvasnotaatio”<br />

UML-notaatio<br />

yksi-yhteen<br />

yksi-moneen<br />

moni-moneen<br />

*<br />

*<br />

*<br />

”crow’s feet”<br />

© Jouni Huotari & Ari Hovi


KÄSITEMALLI VOIDAAN JOHTAA ESIINTYMISTÄ, ESIM. PANKKITILIT<br />

Esiintymiä:<br />

Pekka<br />

Joki<br />

203040-<br />

43567<br />

Pirkko<br />

Joki<br />

203050-<br />

77564<br />

Käsitemalli:<br />

HENKILÖ<br />

TILI<br />

© Jouni Huotari & Ari Hovi


MALLINNUSTEHTÄVÄ 2<br />

a) Mallinna toimeksiantoon liittyvien käsitteiden väliset<br />

yhteydet<br />

© Jouni Huotari & Ari Hovi


KÄSITEMALLI, VERSIO 0.1 (KÄSITTEET JA NIIDEN VÄLISET YHTEYDET)<br />

© Jouni Huotari & Ari Hovi


TIEDOT ELI OMINAISUUDET<br />

• Käsitteisiin liittyy tietoja eli ominaisuuksia (attribute)<br />

• Käsitteellä on oltava yksilöivä tunniste eli perusavain (primary key, PK)<br />

– pakollinen, yksilöivä tieto<br />

– voi koostua useasta tiedosta<br />

– voi olla luonnollinen tai ns. surrogaatti (johdettu)<br />

– ei saa olla tyhjä; moniosaisen perusavaimen kohdalla edes osittain<br />

– Voidaan merkitä esim. alleviivaamalla tai lihavoimalla<br />

• Joukko “tavallisia” tietoja (non-key attributes)<br />

• Viiteavaimet (foreign key, FK)<br />

– voi olla osa perusavainta<br />

– voidaan merkitä esim. laittamalla kirjaimet FK tai kursivoimalla<br />

• Tiedot kuvaavat käsitettä, johon ne liittyvät<br />

© Jouni Huotari & Ari Hovi


ESIMERKKEJÄ<br />

ASIAKAS<br />

asiakastunnus<br />

asiakas_nimi<br />

puhelinnumero<br />

asiakasluokka<br />

perustamispvm<br />

ASIAKAS<br />

asiakastunnus<br />

asiakas_nimi<br />

puhelinnumero<br />

asiakasluokka<br />

perustamispvm<br />

ASIAKASRYHMA<br />

Perusavain<br />

Muut tiedot<br />

Viiteavain<br />

ASIAKAS<br />

as_tunnus<br />

as_nimi<br />

as_osoite<br />

ryhmatunnus (FK)<br />

© Jouni Huotari & Ari Hovi<br />

ryhmatunnus<br />

asryhmanNimi


MALLINNUSTEHTÄVÄ 2 (JATKUU)<br />

b) Mitä ominaisuuksia liittyy mallinnustehtävässä 2 a<br />

tunnistettuihin käsitteisiin Kirjaa ne käsitteiden viereen.<br />

© Jouni Huotari & Ari Hovi


KÄSITEMALLI, VERSIO 0.2 (LISÄTTY KÄSITTEISIIN LIITTYVÄT TIEDOT)<br />

© Jouni Huotari & Ari Hovi


TARKEMPAA KÄSITEMALLINNUSTA<br />

• Ehdollisuus; riippumattomat ja riippuvat käsitteet<br />

• Moni-moneen-yhteys ja sen purkaminen<br />

• Yksi-yhteen-yhteys<br />

• Esimerkkejä<br />

• Yhteys itseensä; hierarkkiset rakenteet<br />

• Käsitteiden yhdistäminen<br />

© Jouni Huotari & Ari Hovi


YHTEYKSIEN PAKOLLISUUS / EHDOLLISUUS<br />

OSASTO<br />

osasto_id<br />

osastonimi<br />

OSASTO<br />

osasto_id<br />

osastonimi<br />

”voi<br />

kuulua”<br />

HENKILO<br />

henkilotunnus<br />

etunimi<br />

Sukunimi<br />

osasto_id<br />

Henkilö voi kuulua osastoon<br />

(ei siis ole pakko kuulua)<br />

0..1 0..*<br />

”on<br />

kuuluttava”<br />

HENKILO<br />

henkilotunnus<br />

etunimi<br />

Sukunimi<br />

osasto_id<br />

Henkilö kuuluu osastoon<br />

(ei voi tallettaa henkilöä<br />

antamatta samalla osastoa)<br />

1..1 0..*<br />

0:1 0:M<br />

© Jouni Huotari & Ari Hovi


KÄSITETYYPIT<br />

1) Moni-moneen-yhteydet => assosiatiiviset käsitteet<br />

• Esimerkiksi projektin ja henkilön välillä on moni-moneen-yhteys<br />

• Tämän yhteyden nimi on esim. ”osallistuu”<br />

• Tästä voidaan johtaa assosiatiivinen käsite osallistuminen<br />

HENKILO<br />

PROJEKTI<br />

ptun<br />

pnimi<br />

osallistuu<br />

HENKILO<br />

htun<br />

etunimi<br />

sukunimi<br />

osoite<br />

PROJEKTI<br />

ptun<br />

pnimi<br />

htun<br />

etunimi<br />

sukunimi<br />

osoite<br />

OSALLISTUMINEN<br />

OsallistumisID<br />

ptun<br />

htun<br />

Tunnit<br />

KirjausPvm<br />

© Jouni Huotari & Ari Hovi


KÄSITETYYPIT (JATKOA)<br />

2) Riippumattomat käsitteet eli ydinkäsitteet (Independent entities)<br />

• Käsitteen perusavaimessa ei tarvita muiden käsitteiden tietoja<br />

• Käsite ei ole riippuvainen muista käsitteistä<br />

(voi tallettaa tietoja muista välittämättä)<br />

3) Riippuvat eli karakteristiset käsitteet<br />

• Käsitteen moniosaisessa perusavaimessa on<br />

mukana isä-käsitteen perusavain<br />

• Käsite ei voi olla olemassa, jos ei isää ole<br />

(ei voida tallettaa projektitunteja jollei<br />

projektia ole olemassa)<br />

PROJEKTI<br />

ptun<br />

pnimi<br />

OSALLISTUMINEN<br />

ptun<br />

htun<br />

Tunnit<br />

KirjausPvm<br />

HENKILO<br />

htun<br />

etunimi<br />

sukunimi<br />

osoite<br />

© Jouni Huotari & Ari Hovi


SUHTEISTA<br />

Monta riippuvuutta samojen käsitteiden välillä:<br />

Asiakas<br />

omistaa<br />

käyttää<br />

=> Jos on monta riippuvuutta, nimeä riippuvuudet<br />

Tili<br />

Moni-moneen-yhteys: muista purkaa, jos ollaan tekemässä relaatiotietokantaa!<br />

Asiakas<br />

Tili<br />

ASIAKAS<br />

TILI<br />

TILITAPAHTUMA<br />

© Jouni Huotari & Ari Hovi<br />

Lapsen nimivaihtoehtoja:<br />

ASIAKAS_TILI<br />

Asiakkaan tilit


c) Miten purat M:N-yhteydet<br />

MALLINNUSTEHTÄVÄ 2<br />

• Kun M:N-yhteydet puretaan ja ominaisuudet lisätään,<br />

syntyy nk. kohdemalli<br />

• Tee omasta harjoitustyöaiheestasi vaatimusmäärittely ja<br />

1. käsitemalli<br />

© Jouni Huotari & Ari Hovi


ESIMERKKI YKSI-YHTEEN-YHTEYDESTÄ<br />

MAA<br />

PÄÄ-<br />

KAUPUNKI<br />

© Jouni Huotari & Ari Hovi


ESIMERKKI: OSA TILAUSTENKÄSITTELYSTÄ UML:N LUOKKAKAAVIONA<br />

Luokan nimi<br />

Omainaisuudet<br />

Minkälaisiin tilanteisiin oliopohjainen suunnittelu soveltuu<br />

Metodit (toiminnot)<br />

Onko olemassa hybridiratkaisuja<br />

© Jouni Huotari & Ari Hovi


ESIMERKKI 4: MARTININ ERD NOTAATIO (KOPIO<br />

VISION HELPISTÄ)<br />

© Jouni Huotari & Ari Hovi


4 MAHDOLLISTA VAIHTOEHTOA<br />

OSASTO<br />

osasto_id<br />

osastonimi<br />

OSASTO<br />

osasto_id<br />

osastonimi<br />

OSASTO<br />

osasto_id<br />

osastonimi<br />

OSASTO<br />

osasto_id<br />

osastonimi<br />

HENKILO<br />

henkilotunnus<br />

etunimi<br />

sukunimi<br />

HENKILO<br />

henkilotunnus<br />

etunimi<br />

sukunimi<br />

HENKILO<br />

henkilotunnus<br />

etunimi<br />

sukunimi<br />

HENKILO<br />

henkilotunnus<br />

etunimi<br />

sukunimi<br />

© Jouni Huotari & Ari Hovi


HIERARKIAT JA BOM-RAKENNE<br />

kuuluu yhtiöön<br />

omistaa yhtiöitä<br />

YRITYS<br />

•Yritystunnus<br />

•Emon_yritystunnus (FK)<br />

Esimerkki hierarkiasta: yritys voi omistaa monta<br />

muuta yritystä; yksi yritys voi kuulua<br />

yhteen “emoyhtiöön”.<br />

YRITYS<br />

yritystun<br />

kauprekno<br />

nimi<br />

osoite<br />

puhelin<br />

tase<br />

liikevaihto<br />

Esimerkki BOM-rakenteesta (bill-of.material):<br />

Yritys voi omistaa monta muuta yritystä;<br />

yksi yritys voi kuulua moneen “emoyhtiöön”.<br />

YRITYS<br />

yritystun<br />

kauprekno<br />

nimi<br />

osoite<br />

puhelin<br />

tase<br />

liikevaihto<br />

kuuluu yhtiöön<br />

omistaa yhtiöitä<br />

YRITYSSUHDE<br />

yritystun1<br />

yritystun2<br />

omistuspros<br />

© Jouni Huotari & Ari Hovi


ASIAKAS<br />

TIETOJEN TOISTAMISTA<br />

•astun<br />

•osoite<br />

Saaako asiakkaan osoitteen<br />

kopioida tilaukseen Eikö ole<br />

”kiellettyä” toistamista<br />

TILAUS<br />

•tilnro<br />

•toimitusosoite<br />

TILAUSRIVI<br />

•tilnro<br />

•rivinro<br />

•hinta<br />

TUOTE<br />

•tkoodi<br />

•hinta<br />

Entä hinta<br />

© Jouni Huotari & Ari Hovi


KÄSITTEIDEN YHDISTÄMINEN<br />

Ennen:<br />

ASIAKAS YHTEISTYOKUMPPANI TOIMITTAJA<br />

Nyt:<br />

OSAPUOLI<br />

Ennen:<br />

1_neljannes<br />

2_neljannes<br />

3_neljannes<br />

4_neljannes<br />

tulos<br />

tase<br />

tulos<br />

tase<br />

tulos<br />

tase<br />

tulos<br />

tase<br />

Nyt:<br />

Neljannes<br />

neljannes_tunnus<br />

tulos<br />

tase<br />

© Jouni Huotari & Ari Hovi


MÄÄRITTELYISTÄ<br />

Yrityksemme kanssa liikesuhteessa<br />

oleva luonnollinen henkilö, yhteisö<br />

tai yritys.<br />

ESIM. Oy Kala Ab, Joutsenon kunta,<br />

Pekka Jokinen, Shakkipojat ry<br />

Anna käsitteille määritelmät + kirjoita esimerkkejä<br />

© Jouni Huotari & Ari Hovi


TÄHÄN PÄÄTTYY TIETOKANTOJEN PERUSTEET (TIETOKANNAT)<br />

-OPINTOJAKSON SUUNNITTELUOSA<br />

• Loput kalvot on tarkoitettu<br />

– Tietokantojen suunnittelu –opintojakson opiskelijoille ja<br />

– niille, jotka haluavat tietää enemmän tietokantojen<br />

suunnittelusta ja siitä, kuinka käsitemallista luodaan varsinainen<br />

tietokanta (käsitteistä tulee tauluja …)<br />

© Jouni Huotari & Ari Hovi


SUUNNITTELUPUTKI<br />

Käyttäjien<br />

näkemykset<br />

Näytöt, ikkunat<br />

Raportit<br />

<strong>Käsiteanalyysi</strong><br />

Tarveanalyysi<br />

Normalisointitark.<br />

Tietokannan<br />

fyysinen suunnittelu<br />

Suorituskyvyn<br />

viritys<br />

Käsitemalli<br />

Käsitemalli, täydennetty<br />

Perusavain<br />

Tieto1<br />

Tieto2<br />

Perusavain<br />

Tieto1<br />

Tieto2<br />

3. normaalimuodossa<br />

olevat käsitteet<br />

Relaatiokanta<br />

© Jouni Huotari & Ari Hovi


TARVEANALYYSIN TAVOITTEET<br />

• Tarkistaa, että kaikki tietotarpeet toteutuvat käsitemallin<br />

pohjalta: mitä tietoja mistäkin käsitteistä<br />

• Täydentää käsitemallia lisäämällä<br />

– uusia tietoalkioita ja<br />

– mahdollisesti myös uusia käsitteitä ja yhteyksiä<br />

• Selvittää<br />

– mitä hakuja ja missä järjestyksessä<br />

– tieto-, käyttäjä- ja tapahtumamäärät<br />

– (kuinka usein) tietoja haetaan ja päivitetään<br />

© Jouni Huotari & Ari Hovi


Käsitemalli<br />

TIETOTARVEANALYYSI<br />

Tietotarpeet<br />

Näytöt<br />

Ikkunat<br />

Eräajot<br />

Listat<br />

Raportit<br />

• Tietotarpeita ovat suunnitellut sovelluksen ikkunat tai näytöt,<br />

raportit, eräajot ja kaikki muutkin ohjelmat, jotka tulevat<br />

käsittelemään tietokantaa.<br />

Pyydä toimeksiantajalta raportit ym.<br />

tiedostoina (esim. Word-asiakirjoina)<br />

© Jouni Huotari & Ari Hovi


ANALYSOI TIETOTARPEET JA TEE TARVITTAESSA MUUTOKSET<br />

KÄSITEMALLIIN<br />

Näytöt<br />

Lomakkeet<br />

Käyttöliittymä<br />

Eräajot<br />

Listat<br />

Raportit<br />

Kortistot<br />

© Jouni Huotari & Ari Hovi


TARVEANALYYSI KÄYTÄNNÖSSÄ<br />

1. Ota käsittelyyn tietotarve, esimerkiksi jokin sovelluksen<br />

ikkuna.<br />

2. Ota myös tämän hetkinen käsitemalli esille.<br />

3. Tarkista, löytyvätkö kaikki ko. ikkunassa tarvittavat<br />

yksittäiset tiedot käsitemallista (useimmiten käsitemallin käsitteistä<br />

puuttuu vielä runsaasti tietoja – käsitemallihan oli vielä karkealla tasolla).<br />

4. Lisää puuttuvat tiedot käsitteiden yhteyteen. Joskus myös<br />

kokonainen käsite tai yhteys puuttuu ja ne on myös lisättävä käsitemalliin.<br />

5. Ota seuraava tietotarve ja tee samat asiat (kohdat 2-4).<br />

6. Näin jatketaan, kunnes kaikki tietotarpeet on läpikäyty<br />

© Jouni Huotari & Ari Hovi


ESIMERKKIRAPORTTI JA TEHTÄVÄ<br />

• Täydennä Demox Oy:n käsitemallia kuvan raportista<br />

löytämilläsi uusilla tiedoilla<br />

© Jouni Huotari & Ari Hovi


SUUNNITTELUPUTKI<br />

Käyttäjien<br />

näkemykset<br />

Näytöt, ikkunat<br />

Raportit<br />

<strong>Käsiteanalyysi</strong><br />

Tarveanalyysi<br />

Normalisointitark.<br />

Tietokannan<br />

määrittely<br />

Suorituskyvyn<br />

viritys<br />

Käsitemalli<br />

Käsitemalli, täydennetty<br />

Perusavain<br />

Tieto1<br />

Tieto2<br />

Perusavain<br />

Tieto1<br />

Tieto2<br />

3. normaalimuodossa<br />

olevat käsitteet<br />

Relaatiokanta<br />

© Jouni Huotari & Ari Hovi


NORMALISOINNIN TARKOITUS<br />

• Normalisointi (normalisation) on menetelmä, jonka avulla<br />

tietorakenteita voidaan jalostaa ”parempaan”<br />

tallennusmuotoon<br />

• Parempi tarkoittaa tässä yhteydessä rakennetta,<br />

– jossa on tietojen toistaminen (redundanssi) minimoitu<br />

– joka on tehokas päivitysten kannalta<br />

– joka on helpompi pitää yhdenmukaisena, sillä tiedot tarvitsee<br />

päivittää vain yhteen paikkaan<br />

– joka on muutosjoustava<br />

© Jouni Huotari & Ari Hovi


NORMALISOINTIVAIHEET<br />

1. Normaalimuoto<br />

Erota toistuvat ryhmät ja moniarvoiset sarakkeet<br />

omaksi käsitteekseen<br />

2. Normaalimuoto<br />

Jokaisen ei-avaintiedon tulee olla riippuvainen<br />

koko perusavaimesta<br />

3. Normaalimuoto<br />

Poista sisäiset (ei-avaimeen kohdistuvat)<br />

riippuvuudet<br />

© Jouni Huotari & Ari Hovi


1. NORMAALIMUOTO<br />

HENKILÖ<br />

Htun Nimi Palkka Pvm_1 Palkka_1 Pvm_2 Palkka_2<br />

1. Normaalimuoto :<br />

Poista toistuvat ryhmät ja moniarvoiset sarakkeet<br />

HENKILÖ<br />

PALKKAHISTORIA<br />

Htun Nimi Palkka Htun Pvm Palkka<br />

© Jouni Huotari & Ari Hovi


FUNKTIONAALINEN RIIPPUVUUS<br />

A<br />

B<br />

Sarake B on funktionaalisesti riippuvainen A:sta, jos A:ta<br />

kohti on korkeintaan yksi B:n arvo kunakin ajanhetkenä.<br />

HENKILÖ ( Htun, Nimi, Osoite )<br />

HENKILÖ ( Htun, Nimi, Osoite )<br />

<br />

© Jouni Huotari & Ari Hovi


2. NORMAALIMUOTO<br />

TILAUS<br />

ToimNro Osanro Nimi Osoite Tilattu_kpl<br />

Mitä mieltä olet kenttien nimistä<br />

Ymmärrätkö mitä ne<br />

tarkoittavat<br />

2. Normaalimuoto:<br />

Jos avain koostuu useasta sarakkeesta, on jokaisen<br />

muun sarakkeen oltava riippuvainen koko avaimesta.<br />

TOIMITTAJA<br />

ToimNro Nimi<br />

Osoite<br />

TILAUS<br />

ToimNro Osanro<br />

Tilattu_kpl<br />

• Mitä jos näin ei tehdä<br />

– Ei voida tallettaa toimittajatietoja etukäteen<br />

– Vanhoja tilauksia poistettaessa tietyn toimittajan tiedot voivat häipyä<br />

– Toimittajan osoitteen muutos tulee moneen paikkaan<br />

© Jouni Huotari & Ari Hovi


3. NORMAALIMUOTO<br />

TOIMITTAJA<br />

ToimNro Nimi Katuosoite Postinro Posti<br />

122 Oy Fi Koekatu 3B 00530 Hki<br />

3. Normaalimuoto:<br />

TOIMITTAJA<br />

Kaikkien sarakkeiden tulee olla riippuvia<br />

vain perusavaimesta.<br />

ToimNro Nimi Katuosoite Postinro<br />

122 Oy Fi Koekatu 3B 00530<br />

• Mitä jos näin ei tehdä<br />

POSTI<br />

Postinro<br />

00530 Hki<br />

– Postitoimipaikkoja ei voida tallettaa ennen toimittajan<br />

talletusta<br />

Postitoimip<br />

– Postitoimipaikan nimen muutos tulee moneen paikkaan<br />

© Jouni Huotari & Ari Hovi


3NM JA KÄSITTEET<br />

• Suunnitteluputkessa normalisoidaan käsitteitä<br />

– Normalisointi voi tarvittaessa myöhemmin kohdistua tauluihin,<br />

tietueisiin jne.<br />

– Käsitemallin normalisointi tarkistetaan käsite käsitteeltä<br />

– Melko työlas operaatio, mutta vaivannäkö yleensä kannattaa<br />

• Yhteenvetona (NM = normaalimuoto): kaikkien eiavaintietojen<br />

tulee olla funktionaalisesti riippuvia<br />

– perusavaimesta (1. NM),<br />

– koko perusavaimesta (2. NM) ja<br />

– vain perusavaimesta (3. NM)<br />

© Jouni Huotari & Ari Hovi


TEHTÄVÄ: NORMALISOINTI<br />

• Tarkista tekemäsi käsitemalli<br />

– missä normaalimuodossa malli on<br />

– olisiko järkevää normalisoida mallia pitemmälle<br />

– mitä etuja tai haittoja pitkälle normalisoidusta ratkaisusta<br />

on<br />

• Vinkki: usein tehdään nk. ideaalimalli, jossa<br />

normalisointi on ulotettu ”kaikkiin” tilanteisiin ja sen<br />

jälkeen tehdään perustellut rajaukset siitä, mikä tulee<br />

olemaan toteutettava ratkaisu (ts. palataan lähelle<br />

toista normaalimuotoa)<br />

• Lisätehtävä: Tee kirjan (Hovi et. al. 2003) harjoitukset 9 ja 10<br />

© Jouni Huotari & Ari Hovi


SUUNNITTELUPUTKI<br />

Käyttäjien<br />

näkemykset<br />

Näytöt, ikkunat<br />

Raportit<br />

<strong>Käsiteanalyysi</strong><br />

Tarveanalyysi<br />

Normalisointitark.<br />

Tietokannan<br />

määrittely<br />

Käsitemalli<br />

Käsitemalli, täydennetty<br />

Perusavain<br />

Tieto1<br />

Tieto2<br />

Perusavain<br />

Tieto1<br />

Tieto2<br />

3. normaalimuodossa<br />

olevat käsitteet<br />

Relaatiokanta<br />

Suorituskyvyn<br />

viritys<br />

© Jouni Huotari & Ari Hovi


• Käsitteistä tulee taulu!<br />

KÄSITTEISTÄ TAULUIKSI<br />

OSASTO<br />

•Osastotunnus<br />

•Osaston_nimi<br />

Osastot<br />

Osastotunnus<br />

Osaston_nimi<br />

Käsitteen tiedot (ominaisuudet) sarakkeiksi (kentiksi, field)<br />

Käsitteen yksilöivä tieto taulun perusavaimeksi (primary key)<br />

© Jouni Huotari & Ari Hovi


RIIPPUVUUDET<br />

• Isä-lapsisuhteesta (1:M) tulee viiteavain lapsitauluun<br />

OSASTO<br />

osastotun<br />

osastonimi<br />

jne.<br />

OSASTO<br />

osastotun osastonimi jne<br />

Käsitemallin yhden-suhde-moneen yhteys muunnetaan<br />

lapsi-taulun viiteavaimeksi (isätaulun perusavain)<br />

HENKILO<br />

htun<br />

sukunimi<br />

etunimi<br />

HENKILO<br />

htun sukunimi etunimi osastotun<br />

HUOM. jos viiteavain on jo lapsitaulussa perusavaimen osana, ei viiteavainta<br />

tietenkään enää tarvitse lisätä.<br />

© Jouni Huotari & Ari Hovi


• Taulun sarake voi olla<br />

– Perusavain<br />

– Viiteavain<br />

– Toissijainen hakuavain<br />

• tarvitaan nopea haku<br />

SARAKKEIDEN ROOLIT<br />

• edellyttää usein indeksin<br />

– “Tavallinen tieto”<br />

• Sarake voi kuulua moniosaiseen perusavaimeen ja olla<br />

samalla viiteavain (ks. seuraava kuva)<br />

© Jouni Huotari & Ari Hovi


PROJEKTI<br />

ptun<br />

pnimi<br />

HENKILO<br />

htun<br />

etunimi<br />

sukunimi<br />

osoite<br />

Perusavain<br />

OSALLISTUMINEN<br />

ptun<br />

htun<br />

tunnit<br />

Viiteavain Projektiin<br />

Viiteavain Henkilöön<br />

PERUSAVAIN VOI MUODOSTUA VIITEAVAIMISTA<br />

© Jouni Huotari & Ari Hovi


USEITA YHTEYKSIÄ: USEITA VIITEAVAIMIA<br />

ASIAKAS<br />

tilaa<br />

vastaanottaa<br />

maksaa<br />

KULJETUS-<br />

TILAUS<br />

kolme viiteavainta<br />

tilausnro pvm ... astun_tilaaja astun_maksaja astun_vast_ottaja<br />

© Jouni Huotari & Ari Hovi


PERUSAVAIN-RESEPTI<br />

• Määrittele perusavain pakolliseksi<br />

– CREATE TABLE lasku<br />

– (laskunro integer NOT NULL, ….<br />

• Määrittele perusavain SQL:lla<br />

– …, PRIMARY KEY (htun, ptun), ….<br />

• Joissakin tuotteissa on vielä perustettava UNIQUE- indeksi<br />

– esim. DB2, SQLBase<br />

– Oracle ja SQL Server perustavat automaattisesti<br />

perusavainindeksin<br />

– CREATE UNIQUE INDEX prhe_ind ON PRHE(ptun, htun)<br />

© Jouni Huotari & Ari Hovi


VIITEAVAIN-RESEPTI<br />

• Määrittele viiteavaimet pakollisiksi (NOT<br />

NULL) vain, jos viiteavain ei saa puuttua<br />

• Kuvan mukaan ei-pakollinen yhteys,<br />

Henkilö-taulussa:<br />

– ostun CHAR (4), -- ei siis NOT NULL<br />

CONSTRAINT henkilo_os_fk<br />

FOREIGN KEY (ostun)<br />

REFERENCES Osasto(ostun) ...<br />

• Perusta viiteavaimille indeksi; yleensä ei<br />

UNIQUE<br />

– parantaa liitosten tehokkuutta<br />

huomattavasti<br />

© Jouni Huotari & Ari Hovi<br />

”voi<br />

kuulua”<br />

Osasto<br />

Henkilö<br />

• ostun<br />

• htun<br />

• ostun (FK)


SUUNNITTELUPUTKI<br />

Käyttäjien<br />

näkemykset<br />

Näytöt, ikkunat<br />

Raportit<br />

<strong>Käsiteanalyysi</strong><br />

Tarveanalyysi<br />

Normalisointitark.<br />

Tietokannan<br />

määrittely<br />

Käsitemalli<br />

Käsitemalli, täydennetty<br />

Perusavain<br />

Tieto1<br />

Tieto2<br />

Perusavain<br />

Tieto1<br />

Tieto2<br />

3. normaalimuodossa<br />

olevat käsitteet<br />

Relaatiokanta<br />

Suorituskyvyn<br />

viritys<br />

© Jouni Huotari & Ari Hovi


SUORITUSKYVYN VIRITYS<br />

• Ennen kuin tietokanta otetaan tuotantokäyttöön, pitäisi<br />

sen suorituskyky testata todellisilla volyymeillä<br />

(mielellään jo protoiluvaiheessa)<br />

• Useissa tietokantatuotteissa on erillinen “performance<br />

analyzer”, joka antaa suosituksia mm. indeksien<br />

perustamiseksi<br />

© Jouni Huotari & Ari Hovi


LISÄTIETOJA<br />

• Hovi, Huotari, Lahdenmäki: Tietokantojen suunnittelu &<br />

indeksointi, Docendo (2003, 2005)<br />

• Hovi, Ari. SQL-opas, Docendo (2004)<br />

• Connolly & Begg: Database Systems, Addison Wesley<br />

(2003)<br />

• Soini, Tapani. Tietoanalyysi, Weilin&Göös (1984)<br />

© Jouni Huotari & Ari Hovi

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!