5.1 Normalisoinnin tarkoitus 5.2 Funktionaalinen riippuvuus 5.3 Normaalimuodot Luku 5 Normalisointi ITKA204 kevät 2016 1
5.1 Normalisoinnin tarkoitus Loogisen tason suunnittelu ja validointi Käsitekaava transformointi normalisointi Relaatiokaavat denormalisointi fyysinen suunnittelu Saantimenetelmät, tiedostorakenteet, indeksit, hajautus ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 2
5.1 Normalisoinnin tarkoitus Ratkaisu kahteen ongelmaan 1. Loogisen rakenteen ongelmat: Huonosti nimetyt relaatiot ja attribuutit kuvaavat reaalimaailman vastinettaan heikosti tai virheellisesti. Tyhjäarvoja runsaasti suosivat attribuutit. Relaatiorakenteet, joihin on tarpeettomasti mallinnettu tietoa useasta reaalimaailman kohteesta. Attribuutit, joiden arvot ovat tarpeettomasti koosteisia. Huonosti suunnitellut liitosattribuutit tuottavat sisällöltään harhaisia (spurious) monikoita. tt_kaup kaup=kaup tt_proj tt_kaup tt_proj htun ptun kaup nimi nimi kaup htun ptun kaup h1 p1 HKI Aatami Aatami HKI h1 p1 HKI h1 p1 HKI Bertta Aatami TRE h1 p2 TRE h1 p2 TRE Aatami Bertta HKI h2 p1 HKI h2 p1 HKI Aatami h2 p1 HKI Bertta ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 3
5.1 Normalisoinnin tarkoitus Ratkaisu kahteen ongelmaan 2. Datan toisteisuudesta (redundancy) eli tarpeettomasta toistosta johtuvat ongelmat: Kasvavat tallennustilavaatimukset. Erilaiset kirjoitusoperaatioista johtuvat poikkeamat (anomaly). ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 4
5.1 Normalisoinnin tarkoitus Poikkeamat Codd (1972b) jakaa toisteisuudesta johtuvat poikkeamat kolmeen luokkaan: Lisäysoperaatioista johtuvat poikkeamat (insertion anomaly) Poisto-operaatioista johtuvat poikkeamat (deletion anomaly) Muokkausoperaatioista johtuvat poikkeamat (modification anomaly) optun opnimi kurssitun kurssinimi arvosana o7111 Aatami Laippa itka204 Tietokannat 5 o7111 Aatami Laippa itkp113 Oliosuunnittelu 4 o7111 Aatami Laippa tjta114 Tietohallinto HYV o6800 Bertta Hukari itka204 Tietokannat 5 o6604 Cecilia Rastas tjta114 Tietohallinto HYV ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 5
5.2 Funktionaalinen riippuvuus Funktionaalinen riippuvuus yleisesti Normalisoinnin keskeisin käsite on funktionaalinen riippuvuus (functional dependency, FD). FD:llä tarkoitetaan jonkin attribuutin arvon määräytymistä saman relaation attribuuttijoukon (1..n attribuuttia) arvon perusteella. Ts. relaation R jokaisella monikolla m 1..m n, jolla attribuutin X arvo on a, on vastaavilla monikoilla m 1..m n attribuutin Y arvo aina b. Tällöin pätee funktionaalinen riippuvuus Y riippuu funktionaalisesti X:stä. Funktionaalinen riippuvuus merkitään seuraavalla notaatiolla, jossa attribuuttijoukko {X} on määräävä attribuuttijoukko, ja Y on {X}:stä riippuvainen attribuutti. { X } Y htun (X) etunimi (Y) h1 h2 h3 Aatami Bertta Cecilia ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 6
5.2 Funktionaalinen riippuvuus Funktionaalinen riippuvuus yleisesti Tarkastellaan funktionaalista riippuvuutta käytännön esimerkin kautta. htun 010160-ABCD 020270-EFGH 030380-IJKL 040490-MNOP nimi Aatami Laippa Bertta Hukari Aatami Laippa Cecilia Rastas jos tiedetään henkilötunnus, tiedetään yksiselitteisesti myös nimi jos tiedetään nimi, ei tiedetä yksiselitteisesti henkilötunnusta Relaatiossa pätee siis funktionaalinen riippuvuus {htun} nimi, koska aina kun henkilötunnus on arvoltaan a, on nimi vastaavilla riveillä aina arvoltaan b. Relaatiossa ei kuitenkaan päde funktionaalinen riippuvuus {nimi} htun, koska nimen ollessa Aatami Laippa, ei htun ole jokaisella vastaavalla rivillä samanarvoinen. Ts. htun on funktionaalisesti riippumaton nimestä. ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 7
5.2 Funktionaalinen riippuvuus Funktionaalinen riippuvuus Vaikka notaatio on matemaattinen, kyseessä ei ole matemaattinen ilmiö. Funktionaalisten riippuvuuksien löytäminen edellyttää relaation merkityksen ymmärtämistä. Funktionaaliset riippuvuudet pyritään tavallisesti löytämään rakennetta (ei sisältöä) tutkimalla. petun peetu pesuku pesynt_aika kilptun kilpnimi maalit erilaisia esitysmuotoja funktionaalisille riippuvuuksille {petun} peetu {petun} pesuku {petun} pesynt_aika {kilptun} kilpnimi {petun, kilptun} maalit Selitykset: - petun = pelaajatunnus - peetu = pelaajan etunimi - pesuku = pelaajan sukunimi - pesynt_aika = pelaajan syntymäaika - kilptun = kilpailun tunnus - kilpnimi = kilpailun nimi - maalit = pelaajan tekemien maalien lukumäärä kilpailussa ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 8
5.2 Funktionaalinen riippuvuus Päättelysäännöt Sellaisia funktionaalisia riippuvuuksia, joita ei voida edes teoriassa rikkoa, kutsutaan triviaaleiksi. Armstrong (1974) on esittänyt funktionaalisiin riippuvuuksiin liittyvien päättelysääntöjen joukon: 1. Refleksiivisyyssäännön mukaan aina, jos attribuutti Y on attribuuttijoukon {X} osajoukko, pätee triviaali funktionaalinen riippuvuus Y riippuu X:stä, ts. X riippuu itsestään : Y X niin { X } Y esim. {htun} htun tai {etunimi, sukunimi} etunimi 2. Transitiivisuussäännön mukaan aina jos pätevät funktionaaliset riippuvuudet "Y riippuu X:stä" ja "Z riippuu Y:stä" pätee myös funktionaalinen riippuvuus "Z riippuu X:stä". { X } Y ja { Y } Z niin { X } Z esim. jos {htun} osastonro ja {osastonro} osastonimi, niin {htun} osastonimi ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 9
5.2 Funktionaalinen riippuvuus Päättelysäännöt 3. Yhdistesäännön mukaan aina jos pätevät funktionaaliset riippuvuudet Y riippuu X:stä" ja "Z riippuu X:stä", pätee myös funktionaalinen riippuvuus "Y ja Z riippuvat X:stä". { X } Y ja { X } Z niin { X } { Y, Z } esim. jos {htun} etunimi ja {htun} sukunimi, niin {htun} {etunimi, sukunimi} 4. Jakosäännön mukaan aina, jos pätee funktionaalinen riippuvuus "Y ja Z riippuvat X:stä", pätevät myös funktionaaliset riippuvuudet "Y riippuu X:stä" ja "Z riippuu X:stä". { X } { Y, Z } niin { X } Y ja { X } Z esim. jos {htun} {etunimi, sukunimi}, niin {htun} etunimi ja {htun} sukunimi ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 10
5.2 Funktionaalinen riippuvuus Päättelysäännöt 5. Täydentämissäännön mukaan aina jos pätee funktionaalinen riippuvuus Y riippuu X:stä, pätee myös funktionaalinen riippuvuus Y riippuu X:n ja Z:n yhdistelmästä. { X } Y niin { X, Z } Y esim. jos {htun} etunimi, niin {htun, sukunimi} etunimi Huomattakoon, että seuraava päättelysääntö ei ole välttämättä voimassa: { X, Y } Z niin { X } Z ja { Y } Z Esim. aikaisemmin esitetyn esimerkin mukaan, jos {petun, kilptun} maalit ei päde {petun} maalit eikä myöskään {kilptun} maalit ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 11
5.2 Funktionaalinen riippuvuus Luentotehtävä 6 Tarkastella alla olevan relaation attribuutteja ja esitä funktionaaliset riippuvuudet kohdealueen tietämyksesi perusteella. Kohdealue koskee opiskelijoita, oppiaineita, opintojaksoja (oj) ja suorituksia. htun etunimi sukunimi pääaine sivuaine laitosnimi ojtunnus ojnimi arvolause suorituspvm ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 12
5.2 Funktionaalinen riippuvuus Luentotehtävä 6: ratkaisu Tarkastella alla olevan relaation attribuutteja ja esitä funktionaaliset riippuvuudet kohdealueen tietämyksesi perusteella. Kohdealue koskee opiskelijoita, oppiaineita, opintojaksoja (oj) ja suorituksia. 3) 1) 2) htun etunimi sukunimi pääaine sivuaine laitosnimi ojtunnus ojnimi arvolause 4) 5) suorituspvm 1) {htun} {etunimi, sukunimi, pääaine, laitosnimi} 2) {sivuaine} laitosnimi 3) {pääaine} laitosnimi 4) {ojtunnus} {ojnimi, laitosnimi} 5) {ojtunnus, htun} {arvolause, suorituspvm} Huom., ei päde: {htun} sivuaine ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 13
Yleistä normaalimuodoista Normalisoinnilla tarkoitetaan tietokannan loogiseen suunnitteluun kuuluvaa toimintaa, jossa relaatioiden rakennetta muokataan jonkin tietyn normaalimuodon (normal form, NF) vaatimukset täyttäväksi. Normalisoinnin tavoitteena on tietokannan rakenteen selkeyttäminen ja datan toisteisuuden vähentäminen. Normaalimuodot voidaan nähdä sisäkkäisinä, esim. toisessa normaalimuodossa oleva relaatio on myös ensimmäisessä normaalimuodossa. Normalisoimaton 1NF 2NF 3NF BCNF 4NF ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 14
Normalisointiprosessi Normalisointiprosessi on relaatiokohtainen. Jos relaatio ei täytä jonkin normaalimuodon vaatimuksia, se tulee jakaa osiin. Jako tapahtuu relaatioalgebran mukaisella projektiolla (eli taulukkona kuvattu relaatio jaetaan pystysuunnassa). Jaon täytyy tapahtua siten, että jakamisen tuloksena syntyvien relaatioiden liitos ei tuota erilaisia monikoita kuin alkuperäinen relaatio, jokainen jaettavassa relaatiossa esiintyvä funktionaalinen riippuvuus säilytetään jossakin jaon tuloksena muodostetussa relaatiossa tai näiden liitoksessa niin, että liitos ei tuota harhaisia (spurious) monikoita ja lopulta relaatioita ei ole määrällisesti enempää kuin mitä tavoitellun normaalimuodon saavuttaminen vaatii. Kaikkia (tai yhtäkään) relaatiota ei välttämättä tarvitse saattaa vahvimpaan normaalimuotoon. Normalisointiprosessi tehdään juuri niin pitkälle, kuin kohdealueen tarpeet vaativat. Vahvemmat normaalimuodot suosivat ympäristöjä, joissa päivitetään (INSERT, UPDATE, DELETE) usein. Vahvemmat normaalimuodot käytännössä tavallisesti hidastavat lukuoperaatioita. ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 15
Ensimmäinen normaalimuoto Relaatio, joka ei ole ensimmäisen normaalimuodon (first normal form, 1NF) mukainen, on normalisoimaton. Normalisoimaton (non-first normal form, NFNF) relaatio ei ole relaatiomallin mukainen. Relaatio on 1NF:ssä, jos sen kaikki attribuutit ovat atomisia ja sopivaa tyyppiä. Sopivalla tyypillä tarkoitetaan, että mikään attribuutti ei ole viittaus toiseen relaatioon (attribuutti voi kuitenkin olla viittaus toisen relaation attribuuttiin), eikä samaa tyyppiä kuin relaatio, johon attribuutti kuuluu. htun etunimi puhelin 010160-ABCD Matti 0401234567 020270-EFGH Maija [014123456, 040556123, 014567123] 030380-IJKL Teppo [05012345, 05098765] Relaatio ei ole 1NF:n mukainen, koska puhelin ei ole atominen. Normalisoidaan 1NF:ään jakamalla relaatio kahteen osaan: HENKILÖ(htun, etunimi) ja PUHELIN(htun, puh) ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 16
Toinen normaalimuoto Toiseen normaalimuotoon (second normal form, 2NF) liittyy käsite täydestä funktionaalisesta riippuvuudesta (full functional dependency). Täydellä funktionaalisella riippuvuudella tarkoitetaan sellaista funktionaalista riippuvuutta {X} Y, jossa attribuuttijoukkoa {X} ei voida jakaa osiin niin, että funktionaalinen riippuvuus säilytetään. Ts. {X}:n todellinen osajoukko ei ole Y:n suhteen määräävä attribuuttijoukko. Relaatio on 2NF:ssä, jos se on 1NF:ssä ja relaation kaikki perusavaimeen kuulumattomat attribuutit ovat täysin funktionaalisesti riippuvia relaation perusavaimesta. R ( A, B, C, D ) ei ole 2NF:n mukainen, koska {B} D S ( A, B, C, D ) on 2NF:n mukainen! ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 17
Toinen normaalimuoto 2NF:n täyttämättömien relaatioiden ongelma on tavallisesti se, että perusavaimeen kuulumaton attribuutti riippuu funktionaalisesti perusavaimen todellisesta osajoukosta. Näin ollen relaatiot, joiden perusavain koostuu useammasta kuin yhdestä attribuutista, vaativat erityistä huomiota. htun projnro tehtava projnimi 010170-ABCD p555 projektipäällikkö Louhinta 020280-EFGH p555 avustaja Louhinta 030390-IJKL p597 projektipäällikkö HR Relaatio ei ole 2NF:n mukainen, koska {projnro} projnimi 010170-ABCD p597 avustaja HR Normalisoidaan 2NF:ään jakamalla relaatio: PROJEKTI ( projnro, projnimi ), jossa pätee {projnro} projnimi TEHTAVA_PROJEKTISSA ( htun, projnro, tehtava ), jossa pätee {htun, projnro} tehtava ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 18
Toinen normaalimuoto Toisesta normaalimuodosta on olemassa myös vahvempi muoto: Relaatio on 2NF:ssä, jos se on 1NF:ssä, ja jokainen avainehdokkaisiin kuulumaton attribuutti on täysin funktionaalisesti riippuvainen kaikista avainehdokkaista. Yllä esitettyä, vahvempaa muotoa ei kurssilla käsitellä. ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 19
Esimerkki normalisointiprosessista Suomen talvessa järjestetään joka viikonloppu lukuisia kalastuskilpailuja. Oletetaan, että kukin kilpailu on yksipäiväinen. Paikkakunta voi vaihdella, mutta kukin kilpailu pidetään vain yhdellä paikalla. SAALIS ( kilp_tunnus kilp_paikka kilp_pvm kalastajatun kalastaja_nimi syntvuosi saaliin_paino_yht kalojen_lkm_saaliissa sijoitus_kisassa ) Relaation perusavaimeksi sopisi {kilp_tunnus, kalastajatun} tai {kilp_tunnus, sijoitus_kisassa}. Valitaan perusavaimeksi toinen. Relaatio on 1NF:ssä, koska kaikki attribuutit ovat atomisia ja ne oletetaan sopivan tyyppisiksi. Relaatio ei ole 2NF:ssä, koska kilp_paikka ja kilp_pvm eivät ole täysin funktionaalisesti riippuvaisia perusavaimesta (valittiin kumpi hyvänsä). relaatio täytyy siis jakaa ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 20
Esimerkki normalisointiprosessista Jakaminen johtaa seuraavaan relaatiorakenteeseen: SAALIS ( kilp_tunnus kilp_paikka kilp_pvm kalastajatun kalastaja_nimi syntvuosi saaliin_paino_yht kalojen_lkm_saaliissa sijoitus_kisassa ) KILPAILU ( kilp_tunnus, kilp_paikka, kilp_pvm ) KALASTAJA ( kalastajatun, kalastaja_nimi, synt_vuosi ) TULOS ( kilp_tunnus, kalastajatun, saaliin_paino_yht, kalojen_lkm_saaliissa, sijoitus_kisassa ) Nämä kolme relaatiota ovat 2NF:n mukaisia, koska kaikki perusavaimeen kuulumattomat attribuutit ovat täysin funktionaalisesti riippuvia relaatioidensa perusavaimista. ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 21
Kolmas normaalimuoto Kolmanteen normaalimuotoon (third normal form, 3NF) liittyy käsite transitiivisesta riippuvuudesta. Attribuutti Z on transitiivisesti riippuvainen attribuuttijoukosta {X}, jos {X} Y ja {Y} Z Relaatio on 3NF:ssä, jos se on 2NF:ssä ja mikään relaation perusavaimeen kuulumaton attribuutti ei ole transitiivisesti riippuvainen relaation perusavaimesta. Ts. mikään perusavaimeen sisältymätön attribuutti ei saa riippua perusavaimeen sisältymättömästä attribuuttijoukosta. R ( A, B, C, D ) ei ole 3NF:n mukainen, koska {A,B} C ja {C} D, joten {A,B} D S ( A, B, C, D ) ei ole 3NF:n mukainen, koska {A} B ja {B} D, joten {A} D ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 22
Kolmas normaalimuoto Relaatiot normalisoidaan kolmanteen normaalimuotoon jakamalla: R ( A, B, C, D ) R1 ( A, B, C ) R2 ( C, D ) S ( A, B, C, D ) S1 ( A, B, C ) S2 ( B, D ) ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 23
Luentotehtävä 7 a) Esitä funktionaaliset riippuvuudet b) Normalisoi 3NF:ään. htun etunimi sukunimi projnro projnimi h1000 Aatami Laippa p900 HR h1002 Bertta Hukari p900 HR h1004 Cecilia Rastas p995 Louhinta h1005 Daavid Pörrö p886 HR ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 24
Luentotehtävä 7: ratkaisu Relaatio on 1NF:ssä, koska kaikki attribuutit ovat atomisia ja sopivaa tyyppiä. Relaatio on 2NF:ssä, koska kaikki perusavaimeen kuulumattomat attribuutit ovat täysin riippuvaisia perusavaimesta htun. Relaatio ei ole 3NF:ssä, koska pätee transitiivinen riippuvuus {htun} {projnimi} Relaatio täytyy siis jakaa: htun etunimi sukunimi projnro projnimi h1000 Aatami Laippa p900 HR h1002 Bertta Hukari p900 HR h1004 Cecilia Rastas p995 Louhinta h1005 Aatami Rastas p886 HR HENKILÖ ( htun, etunimi, sukunimi, projnro ) PROJEKTI ( projnro, projnimi ) ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 25
Boyce/Codd -normaalimuoto Boyce/Codd normaalimuoto (Boyce/Codd normal form, BCNF) tarkastelee attribuuttien funktionaalista riippuvuutta relaation avainehdokkaista. Relaatio on BCNF:ssä, jos se on 3NF:ssä ja jokaisen funktionaalisen riippuvuuden määräävä attribuuttijoukko {X} on myös relaation superavain. R ( A, B, C, D ) ei ole BCNF:n mukainen, koska {B,C} D, ja {B,C} ei ole superavain. S ( A, B, C ) ei ole BCNF:n mukainen, koska {C} B, ja C ei ole superavain. ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 26
Boyce/Codd -normaalimuoto opiskelija kurssi opettaja Aatami Tietokannat Martikainen Bertta Tietokannat Onninen Cecilia Käyttöjärjestelmät Ruotsalainen Daavid Tietokannat Onninen Aatami Käyttöjärjestelmät Ruotsalainen Tiedetään pätevän: {opettaja} kurssi {opiskelija, kurssi} opettaja Relaatio ei ole BCNF:ssä, koska attribuutti opettaja ei ole superavain. Jaetaan jollakin kolmesta tavasta: Elmasri & Navathe (2007) suosittelevat tapaa 3. 1) R(opiskelija, opettaja) ja S(opiskelija, kurssi) 2) R(kurssi, opettaja) ja S(kurssi, opiskelija) 3) R(kurssi, opettaja) ja S(opiskelija, opettaja) ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 27
Kokoava esimerkki normalisointiprosessista R ( A, B, C, D, E, F ) R1 ( A, B, D, E, F ) R2 ( B, C ) Relaatio on 1NF:ssä, koska kaikki attribuutit ovat atomisia ja ne oletetaan sopivan tyyppisiksi. Relaatio ei ole 2NF:ssä, koska attribuutti C ei ole täysin funktionaalisesti riippuvainen relaation perusavaimesta. Relaatiot ovat 2NF:ssä, koska kaikki attribuutit ovat täysin funktionaalisesti riippuvaisia relaatioidensa perusavaimesta. Relaatio R1 ei ole 3NF:ssä, koska attribuutti E on transitiivisesti riippuvainen perusavaimesta. ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 28
Kokoava esimerkki normalisointiprosessista R11 ( A, B, D, F ) R111 ( A, B, D ) R12 ( D, E ) R112 ( F, B ) Relaatiot ovat 3NF:ssä, koska mikään perusavaimeen kuulumaton attribuutti ei ole transitiivisesti riippuvainen perusavaimesta. Relaatio R11 ei ole BCNF:ssä, koska attribuutti F ei ole R11:n superavain. Kaikki relaatiot ovat BCNF:ssä, koska jokainen määräävä attribuuttijoukko on myös relaation superavain. BCNF:n mukaisessa tietokannassa on siis tässä esimerkissä relaatiot R111, R112, R12 ja R2. ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 29
Kokoava esimerkki normalisointiprosessista R 1NF R1 R2 2NF R11 R12 R2 3NF R111 R112 R12 R2 BCNF ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 30
Stressikäyrä Sisältörunko 1. Johdanto 2. Käsitteellinen mallintaminen 3. Relaatiomalli 4. Transformointi 5. Relaatioalgebra 6. SQL 7. Tapahtumanhallinta 8. Normalisointi 9. Tietovarastointi 10. Hajautus 11. Tietokantaparadigmat 10 9 8 7 6 5 4 3 2 1 0 Tässä 1 2 3 4 5 6 7 8 9 10 11 ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 31
Neljäs normaalimuoto Neljänteen normaalimuotoon (fourth normal form, 4NF) liittyy käsite moniarvoisesta riippuvuudesta (multivalued dependency, MVD). Moniarvoisella riippuvuudella tarkoitetaan tilannetta, jossa relaatio yrittää mallintaa useampaa kuin yhtä N:M suhdetta. Tällöin jotkin attribuuteista ovat arvoiltaan toisistaan riippumattomia, ja niiden arvon täytyy esiintyä relaation jokaisella monikolla. Esim. (Hoffer, Prescott & McFadden 2002): Kursseilla on tietyt opettajat. Kursseilla on tietyt kurssikirjat. Se kurssikirja, jota kurssilla käytetään, on riippumaton kurssin opettajasta. Jos kurssilla on 3 opettajaa ja 10 kurssikirjaa, kyseistä kurssia koskee 30 monikkoa. Tällöin jokainen opettaja toistetaan 10 kertaa ja jokainen kirja 3 kertaa. kurssi opettaja kirja itka204 o100 Fundamentals itka204 o100 Basics itka204 o222 Fundamentals itka204 o222 Basics itkp113 o333 Patterns itkp113 o333 Objects ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 32
Neljäs normaalimuoto Formaalimmin: relaatio R sisältää attribuuttijoukot (1..n attribuuttia) X, Y ja Z ja jokaisella monikolla m 1..m n, jolla X:n arvo on a, on Y:n arvojoukko b riippumatta Z:n arvoista sekä jokaisella monikolla, jolla X:n arvo on c, on Z:n arvojoukko d riippumatta Y:n arvoista. Tällöin sanotaan, että Y ja Z ovat moniarvoisesti riippuvaisia X:stä. kurssi opettaja kirja itka204 o100 Fundamentals itka204 o100 Basics itka204 o222 Fundamentals itka204 o222 Basics itkp113 o333 Patterns Funktionaalinen riippuvuus Moniarvoinen riippuvuus itkp113 o333 Objects ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 33
Neljäs normaalimuoto Oletetaan, että: relaatio R sisältää attribuuttijoukot (1..n attribuuttia) X, Y ja Z ja jokaisella monikolla m 1..m n, jolla X:n arvo on a, on Y:n arvojoukko b riippumatta Z:n arvoista sekä jokaisella monikolla, jolla X:n arvo on c, on Z:n arvojoukko d riippumatta Y:n arvoista. Relaatio on 4NF:ssä, jos se on BCNF:ssä ja jokaisen ei-triviaalin moniarvoisen riippuvuuden määräävä attribuuttijoukko {X} on myös relaation superavain. Moniarvoinen riippuvuus MVD{ X } Y relaatiossa R on ei-triviaali, jos Y ei ole X:n osajoukko ja X:n ja Y:n lisäksi relaatiossa on muita attribuutteja, ts. X Y R ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 34
Neljäs normaalimuoto Jos relaatio on transformoitu oikein, ongelmat 4NF:n suhteen ovat harvinaisia. kurssi opettaja kirja itka204 o100 Fundamentals itka204 o100 Basics itka204 o222 Fundamentals itka204 o222 Basics itkp113 o333 Patterns itkp113 o333 Objects KURSSIN_OPETTAJA ( kurssi, opettaja ) KURSSIN_KIRJA ( kurssi, kirja ) ovat 4NF:n mukaisia! ei ole 4NF:n mukainen! Jos kurssille itka204 lisätään uusi kurssikirja, joudutaan lisäämään kaksi uutta monikkoa (riviä). Entäs jos kurssilla ei ole kurssikirjaa? vrt. esim. TOIMITUS ( ttun, otun, ptun, maara ) on 4NF:n mukainen! ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 35
Koonti normaalimuodoista NF Keskeinen vaatimus Tyypillisiä ongelmarakenteita (eivät täytä vaatimuksia) 1NF Atomisuus, sopivat tyypit. A i v 1,v 2, 2NF Täysi funktionaalinen riippuvuus perusavaimesta. R(A1, A2, A3, A4) 3NF Ei transitiivisia riippuvuuksia perusavaimesta. R(A1, A2, A3) R(A1, A2, A3, A4) BCNF Määräävä attribuuttijoukko on myös superavain. R(A1, A2, A3) R(A1, A2, A3, A4) 4NF Moniarvoinen riippuvuus vain superavaimesta. Toisistaan riippumattomat N:M-suhteet. ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 36
vaativuus 5.3 Normaalimuodot Muita normaalimuotoja (1NF < 2NF < 3NF) Perustavan avaimen normaalimuoto (elementary key normal form) (Zaniolo, 1982) (BCNF < 4NF) Keskeisen monikon normaalimuoto (essential tuple normal form) (Darwen, Date & Fagin, 2012) Toisteeton normaalimuoto (redundancy free normal form) (Vincent, 1998) Superavainnormaalimuoto (superkey normal form) Viides normaalimuoto (fifth normal form tai projection-join normal form) (Fagin, 1979) Vahva viides normaalimuoto (overstrong projection-join normal form) Kuudes normaalimuoto (sixth normal form) Arvojoukko-avain normaalimuoto (domain-key normal form) (Fagin, 1981) ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 37
Normalisointiprosessi 1. Jäsentävä (analytical) lähestymistapa: Ota lähtökohdaksi relaatiokaavat ja tunnista niiden sisäiset riippuvuudet. Jos jokin relaatio ei ole vaaditussa normaalimuodossa, jaa se osarelaatioiksi, kunnes ei ole tarvetta jatkaa. R R1 R2 R22 R21 Lähestymistavan ongelmat: Sopivan lähtökohdan löytäminen. Pelkästään jakamalla etenevä normalisointi ei välttämättä huomaa sellaisia vaihtoehtoja, jotka edellyttäisivät jossakin vaiheessa yhdistämistä (denormalisointia). ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 38
Normalisointiprosessi 2. Kokoava (synthetical) lähestymistapa: Ota lähtökohdaksi attribuutit ja niiden väliset riippuvuudet. Ryhmittele attribuutit relaatioiksi niitä tutkien ja riippuvuuksien mukaan ryhmitellen. a 1 a 2 a 4 R1 R22 a 6 a 3 a 5 R21 Lähestymistavan ongelmat: Jätetään pois attribuuttien ja niiden välisten riippuvuuksien ymmärtämisen kannalta olennaiset kontekstit (relaatiot). Vaatii suurta huolellisuutta ja erinomaista taustatietoa suorittaa attribuuttien ryhmittely luonnollisiksi relaatioiksi. ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 39
Normalisointiprosessi Käytännössä on vakiintunut seuraava tapa: Sovelletaan jäsentävää lähestymistapaa pitäen lähtökohtana ER-kaavasta transformoinnin kautta saatua relaatiokannan kaavaa. Jos ER-kaava on tehty huolellisesti ja transformointi sääntöjen mukaan, suurin osa relaatiokaavoista on jo valmiiksi normalisoituja. Huomio kannattaa kohdistaa: moniarvoisia attribuutteja sisältäviin relaatioihin ja koottuja avaimia sisältäviin relaatioihin Käytännön työssä tavallisesti riittää, että relaatioiden normalisointitarkastelu ulotetaan koskemaan kolmatta normaalimuotoa ja mahdollisesti Boyce/Codd-normaalimuotoa. Viidettä normaalimuotoa tarvitaan erityisesti silloin, kun ollaan suunnittelemassa hajautettua tietokantaa. ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 40
Normalisointiprosessi Tietokannan suunnittelussa joudutaan usein tekemisiin satojen attribuuttien ja kymmenien relaatioiden kanssa. Niiden määrittely ja suhteiden tarkastelu käsin on työlästä ja virhealtista. Siksi on käytössä välineitä, jotka automaattisesti tai suunnittelijan tuella osaavat tehdä transformoinnin ER-kaaviosta relaatiorakenteiksi, perusnormalisointitarkastelun sekä relaatiokaavan SQL-määritykset useille tunnetuille tietokannanhallintajärjestelmille. Nämä määritykset tulee tietokannan suunnittelijan luonnollisesti vielä tarkistaa. ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 41
Keinoavaimet ja luonnolliset avaimet Taulujen perusavaimiksi voidaan tapauskohtaisesti valita luonnollisen avaimen (natural key) sijaan keinoavain (surrogate key): Keinoavain ei kuvaa kohdealueen liiketoimintalogiikkaa, sillä sen arvo on merkityksetön. Siksi keinoavaimen arvoa ei ole syytä muuttaa, kun taas luonnollisen avaimen arvo voi muuttua. Keinoavain käyttää ylimääräistä tilaa levyllä (indeksin kanssa vieläkin enemmän) Toisaalta keinoavaimella toteutettu perusavain on atominen ja tavallisesti pieni (INT, CHAR). Pienen ja atomisen perusavainsarakkeen johdosta liitokset tällä sarakkeella ovat verrattain nopeita. Toisaalta taas keinoavainten vuoksi voidaan joutua tekemään ylimääräisiä liitoksia. ORM-työkalut suosivat keinoavaimia. Keinoavaimien johdosta joudutaan luomaan ylimääräisiä eheysrajoitteita. Keinoavainten vuoksi joudutaan tavallisesti indeksoimaan ylimääräisiä sarakkeita. Keinoavaimet aiheuttavat ongelmia erityisesti BCNF:n suhteen. ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 42
TOP 5 -virheet 1. Ei ymmärretä peruskäsitteitä; esim. funktionaalinen riippuvuus, transitiivinen riippuvuus. Sekoitetaan funktionaalinen riippuvuus moniarvoiseen riippuvuuteen. 2. Ei esitetä perusavaimia (alleviivaamalla). 3. Ei anneta perusteluja normalisointiratkaisuille. 4. Relaatiotietokannan kaava on lopulta pirstaleinen. 5. Relaatiotietokanta on lopulta sellainen, että jotain tärkeää informaatiota on menetetty. ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 43
Osaamistavoitteet Ymmärtää toisteisuudesta johtuvat ongelmat. Ymmärtää mikä on normalisoinnin tarkoitus, miksi sitä tehdään ja siihen liittyvät käsitteet. Osaa soveltaa normalisointisääntöjä neljänteen normaalimuotoon saakka, esim. Annetaan jokin attribuuttijoukko tai relaatio ja käsketään normalisoimaan se ja esittämään perustelut (viittauksin normaalimuotosääntöihin) ratkaisuille. Annetaan vapaamuotoinen kuvaus tietokannan sisällöstä ja käsketään sen mukaan tunnistamaan attribuutit ja niiden väliset funktionaaliset riippuvuudet sekä esittämään niiden pohjalta normalisoidut relaatiot perustellen ratkaisua normaalimuotosäännöin. Ei: muita normaalimuotoja kuin 1NF, 2NF, 3NF, BCNF ja 4NF. ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 44