You are on page 1of 66

TIETOKANTOJEN SUUNNITTELU

- SUUNNITTELUPUTKI KÄSITEANALYYSISTÄ TOTEUTUKSEEN


© JOUNI HUOTARI & ARI HOVI
2000 - 2009
TIETOKANTOJEN PERUSTEISSA OSATTAVA
• Käsiteanalyysin ja käsitemallinnuksen perusidea:
– Käsitteiden tunnistaminen
– Yhteyksien muodostaminen
– Tietojen eli ominaisuuksien lisääminen
– Moni-moneen-yhteyksien purkaminen
– Käsitemallin ”piirtäminen”
• Tietokannan määrittely:
– Käsitteistä tulee tauluja
– Tiedoista sarakenimet tauluun
– Yhteyksien luominen perus- ja viiteavaimien avulla

© Jouni Huotari & Ari Hovi


SUUNNITTELUPUTKI
Määrittely & suunnittelu
Käsitemalli
Käyttäjien Käsite-
näkemykset
analyysi
Käsitemalli, täydennetty
Tarve-
Näytöt, raportit
analyysi Perusavain Perusavain
Tieto1 Tieto1
Tieto2 Tieto2

Normalisointi- 3. normaalimuodossa
tarkistus olevat käsitteet

Toteutus Tietokannan Relaatiotietokanta


fyysinen suunnittelu
Suorituskyvyn
viritys

© Jouni Huotari & Ari Hovi


TIETOKANTAPROJEKTIN VAIHEET: INKREMENTAALINEN
JA ITERATIIVINEN LÄHESTYMISTAPA

Määrittely

Suunnittelu

Toteutus (ml. prototyypit/inkrementit)


Käyttöliittymä
Sovellus
v
a
i Tietokanta
h
e Testaus
e
t Käyttöönotto Ylläpito
© Jouni Huotari & Ari Hovi t
TIETOKANNAN ELINKAARI
Tietokantojen (TK) perusteet

Ohjelmisto- SQL TK-ohjelmointi


suunnittelu

TK-käsittely Mittaus,
säädöt,
muutokset
Käsite-ja tarveanalyysi Normali- Fyysinen suunn Kannan
(Conceptual and logical design) sointi (Physical) toteutus
Kuormitustesti
TK-suunnittelu
Tuotantotesti
DBMS- Tietoturva
Tietojenkeruu
ympäristön Varmistukset Tietoturva
Suunn+testaus
suunn -suunn. Varmistukset

Tuotanto
- OLTP
Arkkitehtuurit Infra-suunn Kehitys
- DW
DBA

© Jouni Huotari & Ari Hovi Helia / Martti Laiho; täydentänyt JAMK / Jouni Huotari
KÄSITEMALLI ON KUVAUS TIETOKANNAN TOTEUTUSTA VARTEN

Käsitemalli

Tietokannan taulut
© Jouni Huotari & Ari Hovi
Käsitemalli
Reaalimaailma

Kohdealue

Tieto-
kanta
KOHDEALUEEN VALINNASTA
KÄSITEMALLIN KAUTTA
TOTEUTETTAVAAN TIETOKANTAAN

© Jouni Huotari & Ari Hovi


SYSTEEMIMETODOLOGIAN MALLI

© Jouni Huotari & Ari Hovi


TERMEJÄ
• Käsite = kohde (Entity) = yksilö- tai oliotyyppi ~ luokka
– johdetaan yksittäisistä olioista (esiintymät, ilmentymät, instanssit)
• Käsiteanalyysi = kohdeanalyysi
Ks. Tietoanalyysi (Soini)
• Käsitemalli (ER-malli, tietomalli)
• ER-kaavio ~ luokkakaavio: graafinen esitys
• Yhteys = riippuvuus = assosiaatio = suhde (Relationship)
• Ominaisuus = tieto = attribuutti (Attribute)
• Lukumääräsuhde = kardinaliteetti
• Notaatio = kuvaustekniikka

© Jouni Huotari & Ari Hovi


KÄSITEANALYYSI
• Käsiteanalyysi on tietokantoihin johtavan
suunnitteluprosessin ensimmäisiä vaiheita
• Selvitetään, mitä tietoja tietokantaan talletetaan
• Aloitetaan karkealla tasolla; toisaalta yksittäisten
olioiden tunnistaminen auttaa käsitteiden löytymistä
• Tuloksena on käsitemalli

“Mitkä ovat tietokantaan talletettavat tiedot ja niiden väliset


riippuvuudet tietyllä karkeustasolla”
“Tietokannan piirustukset”
“Yhteinen näkemys (tai sopimus) kohdealueesta”
© Jouni Huotari & Ari Hovi
KÄSITEANALYYSISTÄ
• Selventää kohdealueen käsitteistöä
– yhteinen kieli
– kohdealueen sanakirja
• On täysin riippumaton tulevasta teknisestä toteutuksesta ja
tietokannan hallintajärjestelmistä
• Kuvittele, että käsitemalli toimii äärettömän tehokkaassa koneessa
– ei suorituskykypohdintoja vielä
– kaikki tiedot esiintyvät vain kertaalleen - ei toistoa
• Käsiteanalyysiä ei kannata jatkaa liian pitkään
– tee välillä muita systeemityön alueita
– toteuta prototyyppi ja paranna käsitemallia

© Jouni Huotari & Ari Hovi


KÄSITTEEN TUNNISTAMINEN
• Osoitettavissa oleva reaalimaailman objekti, kuten
työntekijä, tuote, asiakas tai organisaatioyksikkö
• Abstrakti tai kuvitteellinen asia, kuten tulosyksikkö,
vakuutuskorvaus tai budjettikuukausi
• Pysyvän luontoinen, kuten asiakas, tuote tai
tapahtumatyyppinen, kuten tilausrivi, tilitapahtuma
• Käsite ilmaisee jotain asiaa, josta haluamme tallettaa
tietoa tulevaa käyttöä varten
• Käsite on lauseessa substantiivi
– Asiakas tekee tilauksia

© Jouni Huotari & Ari Hovi


TEHTÄVÄ 1: KÄSITTEIDEN TUNNISTAMINEN
• Tee lista toimeksiantoon liittyvistä käsitteistä (nk. käsite-
ehdokkaiden kirjaus)
– Voit käyttää joko kynää ja paperia tai listata käsitteet tietokoneella
– Tee lista nopeasti miettimättä aluksi kovin tarkkaan mikä olisi paras
nimitys eri käsitteille
– Lopuksi voit hieman ryhmitellä käsitteitä (esim. mind-map) ja miettiä
oliko kirjaamasi käsite paras mahdollinen vaihtoehto
• Ratkaisuehdotus toisessa moduulissa (yhtä ainutta oikeata
vastausta ei ole olemassa)
• Näistä käsite-ehdokkaista mietitään, mitkä käsitteet ovat
yläkäsitteitä ja mitkä kuuluvat yläkäsitteen alle
© Jouni Huotari & Ari Hovi
KÄSITEMALLINNUS
ESIMERKKEJÄ KUVAUSTEKNIIKOISTA ELI NOTAATIOISTA

ASIAKAS
Käsite ASIAKAS

ASIAKAS
ASIAKAS ASIAKAS
1:1

Yhteys eli tekee


riippuvuus tekee
0:N *
TILAUS TILAUS
TILAUS

© Jouni Huotari & Ari Hovi


YHTEYS ELI RIIPPUVUUS
• Riippuvuus ilmaisee yhteyttä tai suhdetta käsitteiden
välillä
• Yhteyttä voi kuvata verbillä Mieti, mihin tarkoitukseen
– Isällä on monta lasta tietokanta tulee

– Asiakas tekee monta tilausta Tee myös päätös: halutaanko


historiatietoa tallentaa (esim.
– Myyjä myy monta tuotetta tuotteen myyntihistoria)

• Muista lukea lause molempiin suuntiin ja kysyä


(toimeksiantajalta) esim.:
– Voiko lapsella olla monta isää?
– Voiko yhdessä tilauksessa olla monta asiakasta
– Voiko samaa tuotetta myydä moni myyjä?

© Jouni Huotari & Ari Hovi


YHTEYKSIEN MERKINTÄTAPOJA
• Yhden suhde moneen -yhteys, 1:M, voidaan ilmaista
lukuisilla eri tavoilla riippuen käytettävästä notaatiosta,
esim.

© Jouni Huotari & Ari Hovi


2 VAIHTOEHTOISTA SUOSITUSTA YHTEYKSIEN KUVAAMISEKSI

”harakanvarvasnotaatio” UML-notaatio

yksi-yhteen
*
yksi-moneen
moni-moneen * *

”crow’s feet”

© Jouni Huotari & Ari Hovi


KÄSITEMALLI VOIDAAN JOHTAA ESIINTYMISTÄ, ESIM. PANKKITILIT

Esiintymiä:
Pekka 203040-
Joki 43567

Pirkko 203050-
Joki 77564

Käsitemalli:
HENKILÖ TILI

© Jouni Huotari & Ari Hovi


MALLINNUSTEHTÄVÄ 2
a) Mallinna toimeksiantoon liittyvien käsitteiden väliset
yhteydet

© Jouni Huotari & Ari Hovi


KÄSITEMALLI, VERSIO 0.1 (KÄSITTEET JA NIIDEN VÄLISET YHTEYDET)

© Jouni Huotari & Ari Hovi


TIEDOT ELI OMINAISUUDET
• Käsitteisiin liittyy tietoja eli ominaisuuksia (attribute)
• Käsitteellä on oltava yksilöivä tunniste eli perusavain (primary key, PK)
– pakollinen, yksilöivä tieto
– voi koostua useasta tiedosta
– voi olla luonnollinen tai ns. surrogaatti (johdettu)
– ei saa olla tyhjä; moniosaisen perusavaimen kohdalla edes osittain
– Voidaan merkitä esim. alleviivaamalla tai lihavoimalla
• Joukko “tavallisia” tietoja (non-key attributes)
• Viiteavaimet (foreign key, FK)
– voi olla osa perusavainta
– voidaan merkitä esim. laittamalla kirjaimet FK tai kursivoimalla
• Tiedot kuvaavat käsitettä, johon ne liittyvät

© Jouni Huotari & Ari Hovi


ESIMERKKEJÄ

ASIAKAS
asiakastunnus
asiakas_nimi
puhelinnumero
asiakasluokka
perustamispvm

ASIAKASRYHMA

ryhmatunnus
ASIAKAS asryhmanNimi

Perusavain asiakastunnus
Muut tiedot asiakas_nimi

Viiteavain ryhmatunnus
© Jouni Huotari &(FK)
Ari Hovi
MALLINNUSTEHTÄVÄ 2 (JATKUU)
b) Mitä ominaisuuksia liittyy mallinnustehtävässä 2 a
tunnistettuihin käsitteisiin? Kirjaa ne käsitteiden viereen.

© Jouni Huotari & Ari Hovi


KÄSITEMALLI, VERSIO 0.2 (LISÄTTY KÄSITTEISIIN LIITTYVÄT TIEDOT)

© Jouni Huotari & Ari Hovi


TARKEMPAA KÄSITEMALLINNUSTA
• Ehdollisuus; riippumattomat ja riippuvat käsitteet
• Moni-moneen-yhteys ja sen purkaminen
• Yksi-yhteen-yhteys
• Esimerkkejä
• Yhteys itseensä; hierarkkiset rakenteet
• Käsitteiden yhdistäminen

© Jouni Huotari & Ari Hovi


YHTEYKSIEN PAKOLLISUUS / EHDOLLISUUS
OSASTO OSASTO
osasto_id osasto_id
osastonimi osastonimi

”voi ”on
kuulua” kuuluttava”
HENKILO HENKILO
henkilotunnus henkilotunnus
etunimi etunimi
sukunimi sukunimi
osasto_id osasto_id

Henkilö voi kuulua osastoon


Henkilö kuuluu osastoon
(ei siis ole pakko kuulua)
(ei voi tallettaa henkilöä
0..1 0..* antamatta samalla osastoa)
1..1 0..*

0:1 0:M

© Jouni Huotari & Ari Hovi


KÄSITETYYPIT
1) Moni-moneen-yhteydet => assosiatiiviset käsitteet

• Esimerkiksi projektin ja henkilön välillä on moni-moneen-yhteys


• Tämän yhteyden nimi on esim. ”osallistuu”
• Tästä voidaan johtaa assosiatiivinen käsite osallistuminen
HENKILO
henktun
PROJEKTI HENKILO PROJEKTI etunimi
projtun sukunimi
projtun henktun projnimi osoite
projnimi etunimi
osallistuu
sukunimi
osoite OSALLISTUMINEN
osallistumisID
projtun
henktun
Tunnit
kirjausPvm
© Jouni Huotari & Ari Hovi
KÄSITETYYPIT (JATKOA)

2) Riippumattomat käsitteet eli ydinkäsitteet (Independent entities)


• Käsitteen perusavaimessa ei tarvita muiden käsitteiden tietoja
• Käsite ei ole riippuvainen muista käsitteistä
HENKILO
(voi tallettaa tietoja muista välittämättä) henktun
PROJEKTI
etunimi
projtun sukunimi
3) Riippuvat eli karakteristiset käsitteet projnimi osoite

• Käsitteen moniosaisessa perusavaimessa on


mukana isä-käsitteen perusavain OSALLISTUMINEN
• Käsite ei voi olla olemassa, jos ei isää ole projtun
henktun
(ei voida tallettaa projektitunteja jollei Tunnit
projektia ole olemassa) kirjausPvm

© Jouni Huotari & Ari Hovi


SUHTEISTA
Monta riippuvuutta samojen käsitteiden välillä:
omistaa
Asiakas Tili
käyttää

=> Jos on monta riippuvuutta, nimeä riippuvuudet

Moni-moneen-yhteys: muista purkaa, jos ollaan tekemässä relaatiotietokantaa!

Asiakas Tili

ASIAKAS TILI

Lapsen nimivaihtoehtoja:
TILITAPAHTUMA ASIAKAS_TILI
Asiakkaan tilit
© Jouni Huotari & Ari Hovi
MALLINNUSTEHTÄVÄ 2
c) Miten purat M:N-yhteydet

• Kun M:N-yhteydet puretaan ja ominaisuudet lisätään,


syntyy nk. kohdemalli

• Tee omasta harjoitustyöaiheestasi vaatimusmäärittely ja


1. käsitemalli

© Jouni Huotari & Ari Hovi


ESIMERKKI YKSI-YHTEEN-YHTEYDESTÄ

PÄÄ-
MAA
KAUPUNKI

© Jouni Huotari & Ari Hovi


ESIMERKKI: OSA TILAUSTENKÄSITTELYSTÄ UML:N LUOKKAKAAVIONA

Luokan nimi

Omainaisuudet

Minkälaisiin tilanteisiin oliopohjainen suunnittelu soveltuu? Metodit (toiminnot)


Onko olemassa hybridiratkaisuja?

© Jouni Huotari & Ari Hovi


ESIMERKKI 4: MARTININ ERD NOTAATIO (KOPIO
VISION HELPISTÄ)

© Jouni Huotari & Ari Hovi


4 MAHDOLLISTA VAIHTOEHTOA

OSASTO OSASTO OSASTO OSASTO


osasto_id osasto_id osasto_id osasto_id
osastonimi osastonimi osastonimi osastonimi

HENKILO HENKILO HENKILO HENKILO


henkilotunnus henkilotunnus henkilotunnus henkilotunnus
etunimi etunimi etunimi etunimi
sukunimi sukunimi sukunimi sukunimi

© Jouni Huotari & Ari Hovi


HIERARKIAT JA BOM-RAKENNE kuuluu yhtiöön

omistaa yhtiöitä

YRITYS

YRITYS •Yritystunnus yritystun


•Emon_yritystunnus (FK) kauprekno
nimi
osoite
puhelin
Esimerkki hierarkiasta: yritys voi omistaa monta tase
muuta yritystä; yksi yritys voi kuulua liikevaihto

yhteen “emoyhtiöön”. Esimerkki BOM-rakenteesta (bill-of.material):


Yritys voi omistaa monta muuta yritystä;
yksi yritys voi kuulua moneen “emoyhtiöön”.

YRITYS
kuuluu yhtiöön
YRITYSSUHDE
yritystun
yritystun1
kauprekno
omistaa yhtiöitä yritystun2
nimi
omistuspros
osoite
puhelin
tase
liikevaihto

© Jouni Huotari & Ari Hovi


TIETOJEN TOISTAMISTA?
Saaako asiakkaan osoitteen
kopioida tilaukseen? Eikö ole
•astun
ASIAKAS ”kiellettyä” toistamista?
•osoite

TILAUS •tilnro
•toimitusosoite

TILAUSRIVI TUOTE
•tilnro •tkoodi
•rivinro •hinta Entä hinta?
•hinta

© Jouni Huotari & Ari Hovi


KÄSITTEIDEN YHDISTÄMINEN
E nnen:

A S IA KA S YH T E IS T YO K U M P P AN I T O IM IT T A JA

N yt: O S A P U O LI
E nnen:
1 _ n e lja n n e s 2 _ n e lja n n e s 3 _ n e lja n n e s 4 _ n e lja n n e s
tu lo s tu lo s tu lo s tu lo s
ta s e ta s e ta s e ta s e

N yt: N e lja n n e s

n e lja n n e s_ tu n n u s
tu lo s
ta se

© Jouni Huotari & Ari Hovi


MÄÄRITTELYISTÄ

Yrityksemme kanssa liikesuhteessa


oleva luonnollinen henkilö, yhteisö
tai yritys.
ESIM. Oy Kala Ab, Joutsenon kunta,
Pekka Jokinen, Shakkipojat ry

Anna käsitteille määritelmät + kirjoita esimerkkejä

© Jouni Huotari & Ari Hovi


TÄHÄN PÄÄTTYY TIETOKANTOJEN PERUSTEET (TIETOKANNAT)
-OPINTOJAKSON SUUNNITTELUOSA

• Loput kalvot on tarkoitettu


– Tietokantojen suunnittelu –opintojakson opiskelijoille ja
– niille, jotka haluavat tietää enemmän tietokantojen
suunnittelusta ja siitä, kuinka käsitemallista luodaan varsinainen
tietokanta (käsitteistä tulee tauluja …)

© Jouni Huotari & Ari Hovi


SUUNNITTELUPUTKI
Käsitemalli
Käyttäjien
näkemykset Käsite-
analyysi

Käsitemalli, täydennetty
Tarve-
Näytöt, ikkunat analyysi Perusavain Perusavain
Tieto1 Tieto1
Tieto2 Tieto2

Raportit
Normali- 3. normaalimuodossa
sointitark. olevat käsitteet

Relaatiokanta
Tietokannan
fyysinen suunnittelu

Suorituskyvyn
viritys

© Jouni Huotari & Ari Hovi


TARVEANALYYSIN TAVOITTEET
• Tarkistaa, että kaikki tietotarpeet toteutuvat käsitemallin
pohjalta: mitä tietoja mistäkin käsitteistä
• Täydentää käsitemallia lisäämällä
– uusia tietoalkioita ja
– mahdollisesti myös uusia käsitteitä ja yhteyksiä
• Selvittää
– mitä hakuja ja missä järjestyksessä
– tieto-, käyttäjä- ja tapahtumamäärät
– (kuinka usein) tietoja haetaan ja päivitetään

© Jouni Huotari & Ari Hovi


TIETOTARVEANALYYSI
Tietotarpeet
Näytöt
Käsitemalli
Ikkunat

Listat
Raportit

Eräajot

• Tietotarpeita ovat suunnitellut sovelluksen ikkunat tai näytöt,


raportit, eräajot ja kaikki muutkin ohjelmat, jotka tulevat
käsittelemään tietokantaa.

Pyydä toimeksiantajalta raportit ym.


tiedostoina (esim. Word-asiakirjoina)

© Jouni Huotari & Ari Hovi


ANALYSOI TIETOTARPEET JA TEE TARVITTAESSA MUUTOKSET
KÄSITEMALLIIN

N ä ytö t
L om ak k e e t
K ä yttö liittym ä

E räa jo t

L is ta t
R a p o rtit K o rtis to t

© Jouni Huotari & Ari Hovi


TARVEANALYYSI KÄYTÄNNÖSSÄ
1. Ota käsittelyyn tietotarve, esimerkiksi jokin sovelluksen
ikkuna.
2. Ota myös tämän hetkinen käsitemalli esille.
3. Tarkista, löytyvätkö kaikki ko. ikkunassa tarvittavat
yksittäiset tiedot käsitemallista (useimmiten käsitemallin käsitteistä
puuttuu vielä runsaasti tietoja – käsitemallihan oli vielä karkealla tasolla).
4. Lisää puuttuvat tiedot käsitteiden yhteyteen. Joskus myös
kokonainen käsite tai yhteys puuttuu ja ne on myös lisättävä käsitemalliin.
5. Ota seuraava tietotarve ja tee samat asiat (kohdat 2-4).
6. Näin jatketaan, kunnes kaikki tietotarpeet on läpikäyty

© Jouni Huotari & Ari Hovi


ESIMERKKIRAPORTTI JA TEHTÄVÄ
• Täydennä Demox Oy:n käsitemallia kuvan raportista
löytämilläsi uusilla tiedoilla

© Jouni Huotari & Ari Hovi


SUUNNITTELUPUTKI
Käsitemalli
Käyttäjien Käsite-
näkemykset
analyysi

Käsitemalli, täydennetty
Tarve-
Näytöt, ikkunat analyysi Perusavain Perusavain
Tieto1 Tieto1
Tieto2 Tieto2

Raportit
Normali- 3. normaalimuodossa
sointitark. olevat käsitteet

Relaatiokanta
Tietokannan
määrittely

Suorituskyvyn
viritys

© Jouni Huotari & Ari Hovi


NORMALISOINNIN TARKOITUS
• Normalisointi (normalisation) on menetelmä, jonka avulla
tietorakenteita voidaan jalostaa ”parempaan”
tallennusmuotoon
• Parempi tarkoittaa tässä yhteydessä rakennetta,
– jossa on tietojen toistaminen (redundanssi) minimoitu
– joka on tehokas päivitysten kannalta
– joka on helpompi pitää yhdenmukaisena, sillä tiedot tarvitsee
päivittää vain yhteen paikkaan
– joka on muutosjoustava

© Jouni Huotari & Ari Hovi


NORMALISOINTIVAIHEET

1. Normaalimuoto
Erota toistuvat ryhmät ja moniarvoiset sarakkeet
omaksi käsitteekseen
2. Normaalimuoto
Jokaisen ei-avaintiedon tulee olla riippuvainen
koko perusavaimesta
3. Normaalimuoto
Poista sisäiset (ei-avaimeen kohdistuvat)
riippuvuudet

© Jouni Huotari & Ari Hovi


1. NORMAALIMUOTO
HENKILÖ
Htun Nimi Palkka Pvm_1 Palkka_1 Pvm_2 Palkka_2

1. Normaalimuoto :

Poista toistuvat ryhmät ja moniarvoiset sarakkeet

HENKILÖ PALKKAHISTORIA
Htun Nimi Palkka Htun Pvm Palkka

© Jouni Huotari & Ari Hovi


FUNKTIONAALINEN RIIPPUVUUS

A B

Sarake B on funktionaalisesti riippuvainen A:sta, jos A:ta


kohti on korkeintaan yksi B:n arvo kunakin ajanhetkenä.

HENKILÖ ( Htun, Nimi, Osoite )

HENKILÖ ( Htun, Nimi, Osoite )

© Jouni Huotari & Ari Hovi


2. NORMAALIMUOTO
Mitä mieltä olet kenttien nimistä?
TILAUS Ymmärrätkö mitä ne
ToimNro Osanro Nimi Osoite Tilattu_kpl tarkoittavat?

2. Normaalimuoto:
Jos avain koostuu useasta sarakkeesta, on jokaisen
muun sarakkeen oltava riippuvainen koko avaimesta.

TOIMITTAJA TILAUS
ToimNro Nimi Osoite ToimNro Osanro Tilattu_kpl

• Mitä jos näin ei tehdä?


– Ei voida tallettaa toimittajatietoja etukäteen
– Vanhoja tilauksia poistettaessa tietyn toimittajan tiedot voivat häipyä
– Toimittajan osoitteen muutos tulee moneen paikkaan
© Jouni Huotari & Ari Hovi
3. NORMAALIMUOTO
TOIMITTAJA
ToimNro Nimi Katuosoite Postinro Posti
122 Oy Fi Koekatu 3B 00530 Hki

3. Normaalimuoto:
Kaikkien sarakkeiden tulee olla riippuvia
vain perusavaimesta.
TOIMITTAJA POSTI
ToimNro Nimi Katuosoite Postinro Postinro Postitoimip
122 Oy Fi Koekatu 3B 00530 00530 Hki

• Mitä jos näin ei tehdä?


– Postitoimipaikkoja ei voida tallettaa ennen toimittajan talletusta
– Postitoimipaikan nimen muutos tulee moneen paikkaan

© Jouni Huotari & Ari Hovi


3NM JA KÄSITTEET

• Suunnitteluputkessa normalisoidaan käsitteitä


– Normalisointi voi tarvittaessa myöhemmin kohdistua tauluihin,
tietueisiin jne.
– Käsitemallin normalisointi tarkistetaan käsite käsitteeltä
– Melko työlas operaatio, mutta vaivannäkö yleensä kannattaa
• Yhteenvetona (NM = normaalimuoto): kaikkien ei-
avaintietojen tulee olla funktionaalisesti riippuvia
– perusavaimesta (1. NM),
– koko perusavaimesta (2. NM) ja
– vain perusavaimesta (3. NM)

© Jouni Huotari & Ari Hovi


TEHTÄVÄ: NORMALISOINTI
• Tarkista tekemäsi käsitemalli
– missä normaalimuodossa malli on?
– olisiko järkevää normalisoida mallia pitemmälle?
– mitä etuja tai haittoja pitkälle normalisoidusta ratkaisusta
on?
• Vinkki: usein tehdään nk. ideaalimalli, jossa
normalisointi on ulotettu ”kaikkiin” tilanteisiin ja sen
jälkeen tehdään perustellut rajaukset siitä, mikä tulee
olemaan toteutettava ratkaisu (ts. palataan lähelle
toista normaalimuotoa)
• Lisätehtävä: Tee kirjan (Hovi et. al. 2003) harjoitukset 9 ja 10
© Jouni Huotari & Ari Hovi
SUUNNITTELUPUTKI

Käsitemalli
Käyttäjien Käsite-
näkemykset
analyysi

Käsitemalli, täydennetty
Tarve-
Näytöt, ikkunat analyysi Perusavain Perusavain
Tieto1 Tieto1
Tieto2 Tieto2

Raportit
Normali- 3. normaalimuodossa
sointitark. olevat käsitteet

Relaatiokanta
Tietokannan
määrittely

Suorituskyvyn
viritys
© Jouni Huotari & Ari Hovi
KÄSITTEISTÄ TAULUIKSI
• Käsitteistä tulee taulu!

OSASTO •Osastotunnus
•Osaston_nimi

Osastot Osaston_nimi
Osastotunnus

 Käsitteen tiedot (ominaisuudet) sarakkeiksi (kentiksi, field)


 Käsitteen yksilöivä tieto taulun perusavaimeksi (primary key)

© Jouni Huotari & Ari Hovi


RIIPPUVUUDET
• Isä-lapsisuhteesta (1:M) tulee viiteavain lapsitauluun
OSASTO
O S AS TO
o sa sto tun os as totun os as tonim i jne
o sa ston im i
jne .
K ä s ite m a llin yh de n -su h de -m on e e n yh te ys m u un n e ta a n
la ps i-tau lun viite a va im e ks i (isäta u lu n pe rus a va in )

H E N K IL O H E N K IL O
h tu n s uk u n im i e tu n im i o s a s to tu n
h tun
su ku nim i
e tun im i

HUOM. jos viiteavain on jo lapsitaulussa perusavaimen osana, ei viiteavainta


tietenkään enää tarvitse lisätä.
© Jouni Huotari & Ari Hovi
SARAKKEIDEN ROOLIT

• Taulun sarake voi olla


– Perusavain
– Viiteavain
– Toissijainen hakuavain
• tarvitaan nopea haku
• edellyttää usein indeksin
– “Tavallinen tieto”
• Sarake voi kuulua moniosaiseen perusavaimeen ja olla
samalla viiteavain (ks. seuraava kuva)

© Jouni Huotari & Ari Hovi


HENKILO
henktun
PROJEKTI
etunimi
projtun sukunimi
projnimi osoite

OSALLISTUMINEN
projtun Viiteavain Projektiin
Perusavain
henktun Viiteavain Henkilöön
tunnit

PERUSAVAIN VOI MUODOSTUA VIITEAVAIMISTA


© Jouni Huotari & Ari Hovi
USEITA YHTEYKSIÄ: USEITA VIITEAVAIMIA

tila a
v a s ta a n o tta a K U LJE TU S -
A S IA K A S
m aksaa
T IL A U S

k o lm e viite a va in ta

ti la us n ro p vm ... as tu n_t i la aja as tu n_m a k s aj a as t un _vas t _ ot ta ja

© Jouni Huotari & Ari Hovi


PERUSAVAIN-RESEPTI
• Määrittele perusavain pakolliseksi
– CREATE TABLE lasku
– (laskunro integer NOT NULL, ….
• Määrittele perusavain SQL:lla
– …, PRIMARY KEY (htun, ptun), ….
• Joissakin tuotteissa on vielä perustettava UNIQUE- indeksi
– esim. DB2, SQLBase
– Oracle ja SQL Server perustavat automaattisesti
perusavainindeksin
– CREATE UNIQUE INDEX prhe_ind ON PRHE(ptun, htun)

© Jouni Huotari & Ari Hovi


VIITEAVAIN-RESEPTI
• Määrittele viiteavaimet pakollisiksi (NOT
NULL) vain, jos viiteavain ei saa puuttua
• Kuvan mukaan ei-pakollinen yhteys, Osasto • ostun

Henkilö-taulussa: ”voi
kuulua”
– ostun CHAR (4), -- ei siis NOT NULL
CONSTRAINT henkilo_os_fk Henkilö • htun
• ostun (FK)
FOREIGN KEY (ostun)
REFERENCES Osasto(ostun) ...
• Perusta viiteavaimille indeksi; yleensä ei
UNIQUE
– parantaa liitosten tehokkuutta huomattavasti
© Jouni Huotari & Ari Hovi
SUUNNITTELUPUTKI
Käsitemalli
Käyttäjien
näkemykset Käsite-
analyysi

Käsitemalli, täydennetty
Tarve-
Näytöt, ikkunat analyysi Perusavain Perusavain
Tieto1 Tieto1
Tieto2 Tieto2

Raportit
Normali- 3. normaalimuodossa
sointitark. olevat käsitteet

Relaatiokanta
Tietokannan
määrittely

Suorituskyvyn
viritys

© Jouni Huotari & Ari Hovi


SUORITUSKYVYN VIRITYS
• Ennen kuin tietokanta otetaan tuotantokäyttöön, pitäisi
sen suorituskyky testata todellisilla volyymeillä
(mielellään jo protoiluvaiheessa)
• Useissa tietokantatuotteissa on erillinen “performance
analyzer”, joka antaa suosituksia mm. indeksien
perustamiseksi

© Jouni Huotari & Ari Hovi


LISÄTIETOJA
• Hovi, Huotari, Lahdenmäki: Tietokantojen suunnittelu &
indeksointi, Docendo (2003, 2005)
• Hovi, Ari. SQL-opas, Docendo (2004)
• Connolly & Begg: Database Systems, Addison Wesley
(2003)
• Soini, Tapani. Tietoanalyysi, Weilin&Göös (1984)

© Jouni Huotari & Ari Hovi

You might also like