27
HAAGA-HELIA – TIKO / Digi-15 1 (27) Tietokannat ja Tiedonhallinta O.Virkki swd03_S3_norm 17.8.2018 16:10:00 Normalisointi Normalisointi ................................................................ 2 Tavoitteet ................................................................. 2 Attribuuttien väliset riippuvuudet ................................. 4 1) Funktionaalinen vai Moniarvoinen riippuvuus? ........ 4 2) Täydellinen vai Osittainen riippuvuus ? .................. 6 3) Suora vai Epäsuora riippuvuus ? ........................... 7 1. Normaalimuoto ...................................................... 9 Miksi 1NF ? ........................................................... 12 2. Normaalimuoto .................................................... 13 Miksi 2NF ? ........................................................... 16 3. Normaalimuoto .................................................... 17 Miksi 3NF ? ........................................................... 20 Normalisointiprosessi ................................................ 21 3NF = Normalisoinnin tavoitetaso ! ............................. 22 Normalisointiesimerkki: Kurssihallinto ......................... 23

Normalisointi - Myy servermyy.haaga-helia.fi/~ict1tn005/materiaalit/ict05_S3_norm.pdf · Tietokannat ja Tiedonhallinta O.Virkki . swd03_S3_norm 17.8.2018 16:10:00 . Miksi 1NF ? Minkälaisen

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Normalisointi - Myy servermyy.haaga-helia.fi/~ict1tn005/materiaalit/ict05_S3_norm.pdf · Tietokannat ja Tiedonhallinta O.Virkki . swd03_S3_norm 17.8.2018 16:10:00 . Miksi 1NF ? Minkälaisen

HAAGA-HELIA – TIKO / Digi-15 1 (27) Tietokannat ja Tiedonhallinta O.Virkki

swd03_S3_norm 17.8.2018 16:10:00

Normalisointi Normalisointi ................................................................ 2

Tavoitteet ................................................................. 2

Attribuuttien väliset riippuvuudet ................................. 4

1) Funktionaalinen vai Moniarvoinen riippuvuus? ........ 4

2) Täydellinen vai Osittainen riippuvuus ? .................. 6

3) Suora vai Epäsuora riippuvuus ? ........................... 7

1. Normaalimuoto ...................................................... 9

Miksi 1NF ? ........................................................... 12

2. Normaalimuoto .................................................... 13

Miksi 2NF ? ........................................................... 16

3. Normaalimuoto .................................................... 17

Miksi 3NF ? ........................................................... 20

Normalisointiprosessi ................................................ 21

3NF = Normalisoinnin tavoitetaso ! ............................. 22

Normalisointiesimerkki: Kurssihallinto ......................... 23

Page 2: Normalisointi - Myy servermyy.haaga-helia.fi/~ict1tn005/materiaalit/ict05_S3_norm.pdf · Tietokannat ja Tiedonhallinta O.Virkki . swd03_S3_norm 17.8.2018 16:10:00 . Miksi 1NF ? Minkälaisen

HAAGA-HELIA – TIKO / Digi-15 2 (27) Tietokannat ja Tiedonhallinta O.Virkki

swd03_S3_norm 17.8.2018 16:10:00

Normalisointi (Normalization)

Tavoitteet Relaatiotietokannasta saadaan relaatiomallin

mukainen Relaatioiden ja kohdealueen objektien välille

pyritään saamaan läheinen rakenteellinen vastaavuus

Minimoidaan tietokantaan sisältyvää toistoa Tietokannan päivitysten (lisäys, muutos, poisto)

yhteydessä mahdollisten ristiriitaisuuksien välttäminen

Relaatioiden riveistä pyritään saamaan lisäysten, poistojen ja muutosten kannalta mahdollisimman itsenäisiä kokonaisuuksia

Tietokannan mahdollisimman suuri rakenteellinen joustavuus tulevien muutosten mahdollistamiseksi

Page 3: Normalisointi - Myy servermyy.haaga-helia.fi/~ict1tn005/materiaalit/ict05_S3_norm.pdf · Tietokannat ja Tiedonhallinta O.Virkki . swd03_S3_norm 17.8.2018 16:10:00 . Miksi 1NF ? Minkälaisen

HAAGA-HELIA – TIKO / Digi-15 3 (27) Tietokannat ja Tiedonhallinta O.Virkki

swd03_S3_norm 17.8.2018 16:10:00

Normalisointi perustuu normaalimuotoihin (normal form)

Normaalimuodot ovat asteittain tiukkenevia ehtoja, jotka relaatioiden on täytettävä

Relaatio on tietyssä normaalimuodossa, mikäli se täyttää tietyt rajoitusehdot

5NF 4NF BCNF 3NF 2NF 1NF

Kaikki relaatiot

3.normaalimuoto on normalisoinnin 'minimitaso' / tavoitetaso Ylempiä normaalimuotoja käsitellään syventävillä kursseilla

Page 4: Normalisointi - Myy servermyy.haaga-helia.fi/~ict1tn005/materiaalit/ict05_S3_norm.pdf · Tietokannat ja Tiedonhallinta O.Virkki . swd03_S3_norm 17.8.2018 16:10:00 . Miksi 1NF ? Minkälaisen

HAAGA-HELIA – TIKO / Digi-15 4 (27) Tietokannat ja Tiedonhallinta O.Virkki

swd03_S3_norm 17.8.2018 16:10:00

Attribuuttien väliset riippuvuudet

1) Funktionaalinen vai Moniarvoinen riippuvuus?

Vastaako tiettyä attribuuttin a arvoa yksi vai useampi attribuutin b arvo

Esim. vastaako attribuutin opiskelijanumero arvoa ’1234’ yksi vai useampi attribuutin sukunimi arvo?

Funktionaalinen riippuvuus

Jos attribuutin A arvo määrää yksikäsitteisesti attribuutin B arvon niin voidaan sanoa että …

B on funktionaalisesti riippuva A:sta A määrää B:n funktionaalisesti

A -> B

Vrt. Funktion käsite: funktio palauttaa aina yhden arvon

Esim: Henkilötunnus -> hlo_nimi Rekisterinumero -> auton merkki

Yleistys:

A, B -> C

Esim: Tilausno, tuoteno -> tilausmäärä Projektino, henkilono, kk, vuosi -> työajankäyttö

Page 5: Normalisointi - Myy servermyy.haaga-helia.fi/~ict1tn005/materiaalit/ict05_S3_norm.pdf · Tietokannat ja Tiedonhallinta O.Virkki . swd03_S3_norm 17.8.2018 16:10:00 . Miksi 1NF ? Minkälaisen

HAAGA-HELIA – TIKO / Digi-15 5 (27) Tietokannat ja Tiedonhallinta O.Virkki

swd03_S3_norm 17.8.2018 16:10:00

Moniarvoinen riippuvuus Jos attribuutin A arvoon voi liittyä useita attribuutin B arvoja

A ->> B

Esim. projektino ->> henkilono osastono ->> projektino

Yhteenveto: funktionaalinen / moniarvoinen riippuvuus

Funktionaalinen riippuvuuden X -> Y voimassaolo ei merkitse funktionaalisen riippuvuuden Y -> X voimassaoloa Riippuvuus voi olla (ja yleensä on) Toisesta suunnasta funktionaalinen Toisesta suunnasta moniarvoinen

Esim: Henkilötunnus <<--> hlön nimi Rekisterinumero <<--> auton merkki

Page 6: Normalisointi - Myy servermyy.haaga-helia.fi/~ict1tn005/materiaalit/ict05_S3_norm.pdf · Tietokannat ja Tiedonhallinta O.Virkki . swd03_S3_norm 17.8.2018 16:10:00 . Miksi 1NF ? Minkälaisen

HAAGA-HELIA – TIKO / Digi-15 6 (27) Tietokannat ja Tiedonhallinta O.Virkki

swd03_S3_norm 17.8.2018 16:10:00

2) Täydellinen vai Osittainen riippuvuus ? Onko jokainen pääavaimen attribuutti mukana riippuvuudessa ?

Osittainen riippuvuus Pääavaimen osa riittää identifioiman osan relaation avaimeen kuulumattomista attribuuteista

Esim. Tilausno, tuoteno --> tuotenimi, tilaus_maara

Täydellinen riippuvuus Kaikki relaation avaimeen kuulumattomat attribuutit määräytyvät koko pääavaimen perusteella

Esim. Tuoteno --> tuotenimi Tilausno, tuoteno --> tilaus_maara

Huom! Osittaista riippuuvuutta on tarpeen tutkia vain, kun pääavain koostuu useammasta kuin yhdestä attribuutista!

Page 7: Normalisointi - Myy servermyy.haaga-helia.fi/~ict1tn005/materiaalit/ict05_S3_norm.pdf · Tietokannat ja Tiedonhallinta O.Virkki . swd03_S3_norm 17.8.2018 16:10:00 . Miksi 1NF ? Minkälaisen

HAAGA-HELIA – TIKO / Digi-15 7 (27) Tietokannat ja Tiedonhallinta O.Virkki

swd03_S3_norm 17.8.2018 16:10:00

3) Suora vai Epäsuora riippuvuus ? Määrääkö attribuutti A attribuutin C suoraan vai välillisesti attribuutin B kautta

Epäsuora eli Transitiivinen riippuvuus attribuutti C on transitiivisesti riippuva attribuutista A, jos ja vain jos A -> B ja B -> C

Esim. Henkilötunnus -> hlo_nimi, os_tunnus, os_nimi

Suora riippuvuus Attribuutti A määrää attribuutin C suoraan, (ilman välittäviä attribuutteja)

Esim. Henkilötunnus -> hlo_nimi, os_tunnus Os_tunnus -> os_nimi

Page 8: Normalisointi - Myy servermyy.haaga-helia.fi/~ict1tn005/materiaalit/ict05_S3_norm.pdf · Tietokannat ja Tiedonhallinta O.Virkki . swd03_S3_norm 17.8.2018 16:10:00 . Miksi 1NF ? Minkälaisen

HAAGA-HELIA – TIKO / Digi-15 8 (27) Tietokannat ja Tiedonhallinta O.Virkki

swd03_S3_norm 17.8.2018 16:10:00

Normalisoinnissa tavoitellaan riippuvuuksia,

jotka ovat

Funktionaalisia Täydellisiä Suoria

Page 9: Normalisointi - Myy servermyy.haaga-helia.fi/~ict1tn005/materiaalit/ict05_S3_norm.pdf · Tietokannat ja Tiedonhallinta O.Virkki . swd03_S3_norm 17.8.2018 16:10:00 . Miksi 1NF ? Minkälaisen

HAAGA-HELIA – TIKO / Digi-15 9 (27) Tietokannat ja Tiedonhallinta O.Virkki

swd03_S3_norm 17.8.2018 16:10:00

1. Normaalimuoto 1NM (1 Normal Form, 1NF)

Relaatio on 1. normaalimuodossa jos (ja vain jos) sen jokainen arvoalue sisältää ainoastaan atomaarisia arvoja

ts. attribuuttia ei voi jakaa mielekkäisiin osiin Relaation on oltava kaksiulotteinen:

1. Relaatiossa ei saa olla toistuvia attribuutteja

Moniarvoiset attribuutit on purettava omiksi relaatioikseen

2. Relaation jokainen attribuutti on jakamaton kokonaisuus

Page 10: Normalisointi - Myy servermyy.haaga-helia.fi/~ict1tn005/materiaalit/ict05_S3_norm.pdf · Tietokannat ja Tiedonhallinta O.Virkki . swd03_S3_norm 17.8.2018 16:10:00 . Miksi 1NF ? Minkälaisen

HAAGA-HELIA – TIKO / Digi-15 10 (27) Tietokannat ja Tiedonhallinta O.Virkki

swd03_S3_norm 17.8.2018 16:10:00

Esim. TUTTAVA (tuttava_id, tut_nimi, tut_vuosi) TAPAAMINEN1 (tapaamis_id, paikan_nimi, pvm, al_aika, osoite, tuttava_id1, tuttava_id2, tuttava_id3, …, tuttava_id10) TAPAAMINEN2 (tapaamis_id, paikan_nimi, pvm, al_aika, osoite, tuttava_lista)

TUTTAVA TUTTAVA_ID TUT_NIMI TUT_VUOSI ake Akseli Mäkelä 2001 make Kerälä Martti 2002 pera PERTTI Järvinen 2006

TAPAAMINEN1 TAPAAMIS_ID PAIKAN_NIMI PVM AL_AIKA OSOITE TUTTAVA_ID1 TUTTAVA_ID2 … TUTTAVA_ID10 001 Vanha 1.2.2010 18:00 Mansku 3,

Helsinki ake make

002 Uusi 1.9.2010 19:00 Mansku 5 HKI

ake

TAPAAMINEN2 TAPAAMIS_ID PAIKAN_NIMI PVM AL_AIKA OSOITE TUTTAVA_LISTA 001 Vanha 1.2.2010 18:00 Mansku 3,

Helsinki ake, make PERA

002 Uusi 1.9.2010 19:00 Mansku 5 HKI

ake

Millaisia ongelmia datassa näyttäisi olevan ?

ei 1NF !

Page 11: Normalisointi - Myy servermyy.haaga-helia.fi/~ict1tn005/materiaalit/ict05_S3_norm.pdf · Tietokannat ja Tiedonhallinta O.Virkki . swd03_S3_norm 17.8.2018 16:10:00 . Miksi 1NF ? Minkälaisen

HAAGA-HELIA – TIKO / Digi-15 11 (27) Tietokannat ja Tiedonhallinta O.Virkki

swd03_S3_norm 17.8.2018 16:10:00

1NF:

TUTTAVA (tuttava_id, etunimi, sukunimi, tut_vuosi, …) TAPAAMINEN (tapaamis_id, paikan_nimi, pvm, al_aika, katuosoite, postitmp) TAVATTU(tapaamis_id, tuttava_id)

TUTTAVA TUTTAVA_ID ETUNIMI SUKUNIMI TUT_VUOSI ake Akseli Mäkelä 2001 make Martti Kerälä 2002 pera Pertti Järvinen 2006

TAPAAMINEN TAPAAMIS_ID PAIKAN_NIMI PVM AL_AIKA OSOITE POSTITMP 001 Vanha 1.2.2010 18:00 Mansku 3 Helsinki 002 Uusi 1.9.2010 19:00 Mansku 5 Helsinki

TAVATTU TAPAAMIS_ID TUTTAVA_ID 001 ake 001 make 001 pera 002 ake

Page 12: Normalisointi - Myy servermyy.haaga-helia.fi/~ict1tn005/materiaalit/ict05_S3_norm.pdf · Tietokannat ja Tiedonhallinta O.Virkki . swd03_S3_norm 17.8.2018 16:10:00 . Miksi 1NF ? Minkälaisen

HAAGA-HELIA – TIKO / Digi-15 12 (27) Tietokannat ja Tiedonhallinta O.Virkki

swd03_S3_norm 17.8.2018 16:10:00

Miksi 1NF ?

Minkälaisen kyselyn joutuisit tekemään etsiäksesi tapaamiset tuttavan ’ake’ kanssa ? (normalisoimattomissa vaihtoehdoissa)

Mitä jos useasti tapaamasi tuttava vaatii, että hänen

tuttava_id:nsä on muutettava. Miten tiedon muuttaminen onnistuisi ? (normalisoimattomissa vaihtoehdoissa)

Mitä, jos tapaamiseen osallistuu useampi tuttava,

kuin mihin on varauduttu ? (TAPAAMINEN1:ssä)

~ Normalisoimattomaan relaatioon liittyviä hankaluuksia

Page 13: Normalisointi - Myy servermyy.haaga-helia.fi/~ict1tn005/materiaalit/ict05_S3_norm.pdf · Tietokannat ja Tiedonhallinta O.Virkki . swd03_S3_norm 17.8.2018 16:10:00 . Miksi 1NF ? Minkälaisen

HAAGA-HELIA – TIKO / Digi-15 13 (27) Tietokannat ja Tiedonhallinta O.Virkki

swd03_S3_norm 17.8.2018 16:10:00

2. Normaalimuoto 2NM (2 Normal Form, 2NF)

Relaatio on 2. normaalimuodossa jos (ja vain jos) se on 1NF:ssa ja jokainen avaimeen kuulumaton attribuutti on täydellisesti riippuvainen avaimesta Ts. avaimen osa ei saa riittää identifioimaan jotakin relaation attribuuteista

Avaimen osasta riippuvat attribuutit esitetään omana relaationaan Huom! 2. normaalimuotoa on tarpeen tutkia vain, kun pääavain koostuu useammasta kuin yhdestä attribuutista!

Page 14: Normalisointi - Myy servermyy.haaga-helia.fi/~ict1tn005/materiaalit/ict05_S3_norm.pdf · Tietokannat ja Tiedonhallinta O.Virkki . swd03_S3_norm 17.8.2018 16:10:00 . Miksi 1NF ? Minkälaisen

HAAGA-HELIA – TIKO / Digi-15 14 (27) Tietokannat ja Tiedonhallinta O.Virkki

swd03_S3_norm 17.8.2018 16:10:00

Esim: tuttavalla voi olla monta eri harrastusta, harrastuksella voi olla tyyppi, esim. urheilu, taide, …

TUTTAVAN_HARRASTUS(tuttava_id, harrastus, harrastustyyppi)

TUTTAVA TUTTAVA_ID HARRASTUS HARRASTUSTYYPPI ake kitaransoitto musiikki make ilmakitaransoitto leikki ake juokseminen urheilu make juokseminen urheilu pera juokseminen URHEILU ake laulu musiikki pera pingis urheilu

Millaisia ongelmia datassa näyttäisi olevan ?

ei 2NF !

Page 15: Normalisointi - Myy servermyy.haaga-helia.fi/~ict1tn005/materiaalit/ict05_S3_norm.pdf · Tietokannat ja Tiedonhallinta O.Virkki . swd03_S3_norm 17.8.2018 16:10:00 . Miksi 1NF ? Minkälaisen

HAAGA-HELIA – TIKO / Digi-15 15 (27) Tietokannat ja Tiedonhallinta O.Virkki

swd03_S3_norm 17.8.2018 16:10:00

2NF:

TUTTAVAN_HARRASTUS(tuttava_id, harrastus)

HARRASTUS( harrastus, harrastustyyppi)

TUTTAVAN_HARRASTUS TUTTAVA_ID HARRASTUS ake kitaransoitto make ilmakitaransoitto pera juokseminen make juokseminen ake laulu pera sarjakuvat

HARRASTUS HARRASTUS HARRASTUSTYYPPI kitaransoitto musiikki ilmakitaransoitto leikki juokseminen urheilu laulu musiikki sarjakuvat keräily

Page 16: Normalisointi - Myy servermyy.haaga-helia.fi/~ict1tn005/materiaalit/ict05_S3_norm.pdf · Tietokannat ja Tiedonhallinta O.Virkki . swd03_S3_norm 17.8.2018 16:10:00 . Miksi 1NF ? Minkälaisen

HAAGA-HELIA – TIKO / Digi-15 16 (27) Tietokannat ja Tiedonhallinta O.Virkki

swd03_S3_norm 17.8.2018 16:10:00

Miksi 2NF ?

Kuinka moneen kertaan harrastuksen tyyppi pitää tallentaa tietokantaan ?

Jos harrastuksen tyyppi tulikin kirjattua väärin,

moneenko relaatioon korjaus on tallennettava ?

tietylle harrastukselle saattaa kirjautua eri harrastustyyppejä tietokantaan ?

~ Normalisoimattomaan relaatioon liittyviä hankaluuksia

Page 17: Normalisointi - Myy servermyy.haaga-helia.fi/~ict1tn005/materiaalit/ict05_S3_norm.pdf · Tietokannat ja Tiedonhallinta O.Virkki . swd03_S3_norm 17.8.2018 16:10:00 . Miksi 1NF ? Minkälaisen

HAAGA-HELIA – TIKO / Digi-15 17 (27) Tietokannat ja Tiedonhallinta O.Virkki

swd03_S3_norm 17.8.2018 16:10:00

3. Normaalimuoto 3NM (3 Normal Form, 3NF)

Relaatio on 3. normaalimuodossa jos (ja vain jos) se on 2NF:ssa ja mikään sen avaimeen kuulumattomista attribuuteista ei ole avaimesta epäsuorasti riippuvainen Ts. ei-avaimena oleva attribuutti ei saa riippua avaimen lisäksi jostakin muusta, ei-avaimena olevasta attribuutista Siirrä attribuutit, jotka riippuvat avaimen lisäksi jostakin ei-avaimena olevasta attribuutista omaksi relaatiokseen

Page 18: Normalisointi - Myy servermyy.haaga-helia.fi/~ict1tn005/materiaalit/ict05_S3_norm.pdf · Tietokannat ja Tiedonhallinta O.Virkki . swd03_S3_norm 17.8.2018 16:10:00 . Miksi 1NF ? Minkälaisen

HAAGA-HELIA – TIKO / Digi-15 18 (27) Tietokannat ja Tiedonhallinta O.Virkki

swd03_S3_norm 17.8.2018 16:10:00

Esim: TAPAAMINEN (tapaamis_id, paikan_nimi, pvm, al_aika, katuosoite, kunta)

TAPAAMINEN TAPAAMIS_ID PAIKAN_NIMI PVM AL_AIKA OSOITE POSTITMP 001 Vanha 1.2.2010 18:00 Mansku 3 Helsinki 002 Uusi 1.9.2010 19:00 Mansku 5 Helsinki 003 Vanha 1.10.2010 19:00 Mansku 3 Helsinki 004 Vanha 1.12.2010 10:00 Mansku 3 Helsinki

ei 3NF !

Page 19: Normalisointi - Myy servermyy.haaga-helia.fi/~ict1tn005/materiaalit/ict05_S3_norm.pdf · Tietokannat ja Tiedonhallinta O.Virkki . swd03_S3_norm 17.8.2018 16:10:00 . Miksi 1NF ? Minkälaisen

HAAGA-HELIA – TIKO / Digi-15 19 (27) Tietokannat ja Tiedonhallinta O.Virkki

swd03_S3_norm 17.8.2018 16:10:00

3NF:

TAPAAMINEN (tapaamis_id, paikan_nimi, pvm, al_aika) PAIKKA (paikan_nimi, katuosoite, kunta) huomaa että viiteavaimen on säilyttävä

TAPAAMINEN TAPAAMIS_ID PAIKAN_NIMI PVM AL_AIKA 001 Vanha 1.2.2010 18:00 002 Uusi 1.9.2010 19:00 003 Vanha 1.10.2010 19:00 004 Vanha 1.12.2010 10:00

PAIKKA PAIKAN_NIMI OSOITE POSTITMP Vanha Mansku 3 Helsinki Uusi Mansku 5 Helsinki

Page 20: Normalisointi - Myy servermyy.haaga-helia.fi/~ict1tn005/materiaalit/ict05_S3_norm.pdf · Tietokannat ja Tiedonhallinta O.Virkki . swd03_S3_norm 17.8.2018 16:10:00 . Miksi 1NF ? Minkälaisen

HAAGA-HELIA – TIKO / Digi-15 20 (27) Tietokannat ja Tiedonhallinta O.Virkki

swd03_S3_norm 17.8.2018 16:10:00

Miksi 3NF ? Kuinka moneen kertaan osoitetiedot joudutaan

kirjoittamaan ? Kun lisätään uusi tapaaminen tuttuun paikaan,

joudutaan osoite kirjoittamaan yhä uudelleen Jos vanhoja tapaamisia poistetaan tietokannasta,

miten voi käydä tiedon jonkin paikan osoitteesta ?

~ Normalisoimattomaan relaatioon liittyviä hankaluuksia

Page 21: Normalisointi - Myy servermyy.haaga-helia.fi/~ict1tn005/materiaalit/ict05_S3_norm.pdf · Tietokannat ja Tiedonhallinta O.Virkki . swd03_S3_norm 17.8.2018 16:10:00 . Miksi 1NF ? Minkälaisen

HAAGA-HELIA – TIKO / Digi-15 21 (27) Tietokannat ja Tiedonhallinta O.Virkki

swd03_S3_norm 17.8.2018 16:10:00

Normalisointiprosessi

Normalisoimaton muoto

Pura rakenteiset attribuutit & Siirrä toistuvat / moniarvoiset attribuutit omaksi relaatiokseen

1NF (atomaariset attribuutit)

Poista epätäydellinen riippuvuus ts. Siirrä attribuutit jotka riippuvat pääavaimen osasta omaksi relaatiokseen

2NF (täydellinen riippuvuus koko avaimesta)

Poista transitiivinen riippuvuus ts. Siirrä attribuutit, jotka riippuvat pääavaimen lisäksi jostakin pääavaimeen kuulumattomasta attribuutista omaksi relaatiokseen

3NF (attribuutit keskenään riippumattomia)

Page 22: Normalisointi - Myy servermyy.haaga-helia.fi/~ict1tn005/materiaalit/ict05_S3_norm.pdf · Tietokannat ja Tiedonhallinta O.Virkki . swd03_S3_norm 17.8.2018 16:10:00 . Miksi 1NF ? Minkälaisen

HAAGA-HELIA – TIKO / Digi-15 22 (27) Tietokannat ja Tiedonhallinta O.Virkki

swd03_S3_norm 17.8.2018 16:10:00

3NF = Normalisoinnin tavoitetaso ! 1. Yksilöivä avain 2. Ei toistuvia tai rakenteellisia attribuutteja 3. Ei riippuvuutta pääavaimen osasta 4. Attribuutit keskenään riippumattomia "The rules leading to and including the 3. normal form can be summed up in a single statement:

Each attribute must be a fact about the key, the whole key,

and nothing but the key."

[Wiorkowski, Kull. DB2 Design and Development Guide] Coddin alkuperäisessä määrittelyssä mukana vain 1NF, 2NF, 3NF

Lisäksi myös • Boyce-Codd normaalimuoto (BCNF) • 4. Normaalimuoto (4NF) • 5 normaalimuoto (5 NF)

Näitä käsitellään syventävillä kursseilla

Page 23: Normalisointi - Myy servermyy.haaga-helia.fi/~ict1tn005/materiaalit/ict05_S3_norm.pdf · Tietokannat ja Tiedonhallinta O.Virkki . swd03_S3_norm 17.8.2018 16:10:00 . Miksi 1NF ? Minkälaisen

HAAGA-HELIA – TIKO / Digi-15 23 (27) Tietokannat ja Tiedonhallinta O.Virkki

swd03_S3_norm 17.8.2018 16:10:00

Normalisointiesimerkki: Kurssihallinto

OPETTAJA(openo, ope_nimi, ope_tutkinto, ope_puh1, ope_puh2) OPISKELIJA(opino, opi_nimi, aloitus_vuosi, osoite(katuos, postino, kunta)) KURSSI(kurssino, toteutusno, kurssin_nimi, vastuu_openo, opettava_openo, laajuus, aloitus_pvm) OSALLISTUMINEN(kurssino, toteutusno, opino, arvosana)

Page 24: Normalisointi - Myy servermyy.haaga-helia.fi/~ict1tn005/materiaalit/ict05_S3_norm.pdf · Tietokannat ja Tiedonhallinta O.Virkki . swd03_S3_norm 17.8.2018 16:10:00 . Miksi 1NF ? Minkälaisen

HAAGA-HELIA – TIKO / Digi-15 24 (27) Tietokannat ja Tiedonhallinta O.Virkki

swd03_S3_norm 17.8.2018 16:10:00

OPETTAJA OPENO OPE_NIMI OPE_TUTKINTO OPE_PUH1 OPE_PUH2 111 Taina Torikas FM 09 123 040 123 222 Lainelin Lasse FM 040 234 333 Olga Osuva FL 09 345 040 567 666 Kurkela Kalle DI 09 456, 09 678 040 987

OPISKELIJA OPINO OPI_NIMI OSOITE AL_VUOSI 123 Heikki Herala Jokitie 3, 03100 Vantaa 2010 234 Isotalo Isa Jokitie 1 03100 VANTAA 2009 345 Jukka Jutila Jokitie 3; 03100 VANDA 2010 456 Kurkela Katja Meritie 2, 02100 ESPoo 2010

KURSSI KURSSINO TOTEUTUSNO KURSSI_NIMI VASTUU_OPENO OPETTAVA_OPENO LAAJUUS AL_PVM ICT05 1 Tiedonhallinta ja Tietokannat 333 111 6 10.1.2010 ICT05 2 Tiedonhallinta ja Tietokannat 333 333 6 20.1.2010 ICT03 50 Tieto ja tiedon varastointi 222 666 12 20.9.2009

OSALLISTUMINEN KURSSINO TOTEUTUSNO OPINO ALRVOSANA ICT05 1 123 3 ICT05 1 234 4 ICT03 50 123 5 Millaisia ongelmia datassa näyttäisi olevan ?

Page 25: Normalisointi - Myy servermyy.haaga-helia.fi/~ict1tn005/materiaalit/ict05_S3_norm.pdf · Tietokannat ja Tiedonhallinta O.Virkki . swd03_S3_norm 17.8.2018 16:10:00 . Miksi 1NF ? Minkälaisen

HAAGA-HELIA – TIKO / Digi-15 25 (27) Tietokannat ja Tiedonhallinta O.Virkki

swd03_S3_norm 17.8.2018 16:10:00

1NF: 1. Pääavain määrää funktionaalisesti muut attribuutit 2. Ei rakenteellisia attribuutteja OPETTAJA(openo, ope_snimi, ope_enimi, ope_tutkinto) OPE_PUH(openo, ope_puh) OPISKELIJA(opino, opi_snimi, opi_enimi, aloitus_vuosi, katuos, postino, kunta) KURSSI(kurssino, toteutusno, kurssin_nimi, vastuu_openo, opettava_openo, laajuus, aloitus_pvm) OSALLISTUMINEN(kurssino, toteutusno, opino, arvosana)

Page 26: Normalisointi - Myy servermyy.haaga-helia.fi/~ict1tn005/materiaalit/ict05_S3_norm.pdf · Tietokannat ja Tiedonhallinta O.Virkki . swd03_S3_norm 17.8.2018 16:10:00 . Miksi 1NF ? Minkälaisen

HAAGA-HELIA – TIKO / Digi-15 26 (27) Tietokannat ja Tiedonhallinta O.Virkki

swd03_S3_norm 17.8.2018 16:10:00

2NF: ~ Jokainen attribuutti riippuu koko pääavaimesta

(ei sen osasta) OPETTAJA(openo, ope_snimi, ope_enimi, ope_tutkinto) OPE_PUH(openo, ope_puh) OPISKELIJA(opino, opi_snimi, opi_enimi, aloitus_vuosi, katuos, postino, kunta) KURSSITOTEUTUS(kurssino, toteutusno, opettava_openo, aloitus_pvm) KURSSI(kurssino, kurssin_nimi, vastuu_openo, laajuus) OSALLISTUMINEN(kurssino, toteutusno, opino, arvosana)

Page 27: Normalisointi - Myy servermyy.haaga-helia.fi/~ict1tn005/materiaalit/ict05_S3_norm.pdf · Tietokannat ja Tiedonhallinta O.Virkki . swd03_S3_norm 17.8.2018 16:10:00 . Miksi 1NF ? Minkälaisen

HAAGA-HELIA – TIKO / Digi-15 27 (27) Tietokannat ja Tiedonhallinta O.Virkki

swd03_S3_norm 17.8.2018 16:10:00

3NF: ~ Jokainen attribuutti riippuu vain pääavaimesta

(ei muista attribuuteista) OPETTAJA(openo, ope_snimi, ope_enimi, ope_tutkinto) OPE_PUH(openo, ope_puh) OPISKELIJA(opino, opi_snimi, opi_enimi, aloitus_vuosi, katuos, postino) POSTITMPK(postino, kunta) KURSSITOTEUTUS(kurssino, toteutusno, opettava_openo, aloitus_pvm) KURSSI(kurssino, kurssin_nimi, vastuu_openo, laajuus,) OSALLISTUMINEN(kurssino, toteutusno, opino, arvosana) Huolehdi että viiteavaimet (=yhteydet) säilyvät normalisoinnissa !