This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Funktionaalisten riippuvuuksien ominaisuuksia / päättelysääntöjä 1. Refleksiivisyys
Jos Y ⊆ X niin X -> Y
Esim: otsake, vuosi -> otsake Esim: otsake -> otsake
Ns. triviaali riippuvuus (riippuvuuden olemassaolo on itsestään selvää)
2. Täydentäminen
Jos X -> Y niin XZ -> YZ
3. Ositus Jos X -> YZ niin X-> Y
4. Unioni Jos X -> Y ja X -> Z niin X -> YZ
5. Transitiivisuus
Jos X -> Y ja Y-> Z niin X -> Z Päättelysääntöjä voi käyttää relaatioiden yhdistämiseksi, (tavoitteena on sovellusalueen kuvaus pienimmällä mahdollisella relaatiomäärällä)
~ Relaatio R on 3. normaalimuodossa jos ja vain jos se on 2NF:ssa ja mikään sen avaimeen kuulumattomista ominaisuuksista ei ole avaimesta transitiivisesti riippuvainen
~ Relaatio R on 3. normaalimuodossa jos jokaisessa
funktionaalisessa riippuvuudessa X -> A joko
a) attribuuttijoukko X on relaation R yliavain tai
b) A on avainattribuutti ~ Ts. ei-avaimena oleva ominaisuus ei saa riippua avaimen
lisäksi jostakin muusta, ei-avaimena olevasta ominaisuudesta
~ Siirrä attribuutit, jotka riippuvat avaimen lisäksi jostakin ei-
avaimena olevasta ominaisuudesta omaksi relaatiokseen Esim:
Poista epätäydellinen funktionaalinen riippuvuus ts. Siirrä attribuutit jotka riippuvat pääavaimen osasta omaksi relaatiokseen, Jäljelle jäävät attribuutit riippuvat koko pääavaimesta täydellisesti
2NF (täydellinen riippuvuus koko avaimesta)
Poista transitiivinen riippuvuus ts. Siirrä attribuutit, jotka riippuvat pääavaimen lisäksi jostakin pääavaimeen kuulumattomasta ominaisuudesta omaksi relaatiokseen
1. Yksilöivä avain 2. Ei toistuvia tai rakenteellisia attribuutteja 3. Ei epätäydellistä funktionaalista riippuvuutta 4. Ominaisuudet 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)
Avaimista Yliavain (Superkey) ∼ Attribuuttijoukko S on relaation R yliavain, mikäli
X määrää funktionaalisesti relaation attribuuttien joukon Avain (Key) ∼ Attribuuttijoukko K on relaation R avain, mikäli K on relaation
R yliavain, eikä attribuuttijoukosta K voida pudottaa pois yhtään attribuuttia siten, että K olisi edelleen relaation R yliavain
Relaation avain on siis ’pienin relaation yliavaimista
• Jokaisella relaatiolla on ainakin yksi avain • Relaatiolla voi olla myös useampia avaimia Pääavain (Primary key) ∼ Relaation avain – tai mikäli niitä on useampia pääavaimeksi
valittu avain
Pääavaimen arvo ei voi olla tyhjä Avainehdokas (Key kandidate) ∼ Mikäli relaatiolla on useita avaimia, niitä nimitetään
attribuuttijoukkoja avainehdokkaiksi Avainattribuutti (Prime attribute) ∼ Kaikki avainehdokkaisiin sisältyvät attribuutit
∼ Relaatio R on Boyce-Codd -normaalimuodossa, jos jokaisessa (ei-triviaalissa) funktionaalisessa riippuvuudessa X -> A attribuuttijoukko X on relaation R yliavain
Relaatio R on 3. normaalimuodossa, jos jokaisessa funktionaalisessa riippuvuudessa X -> A joko a) attribuuttijoukko X on relaation R yliavain tai b) A on avainattribuutti
Attribuuttijoukko X on relaation R yliavain, mikäli X määrää funktionaalisesti relaation attribuuttien joukon Avainattribuutti on jokainen avainehdokkaisiin sisältyvä attribuutti
∼ Relaatio R on BC-normaalimuodossa jos sen on 3NF:ssa ja
jokainen determinantti on avainehdokas
Determinantti = attribuutti tai attribuuttiryhmä, josta joku muu ominaisuus on täysin funktionaalisesti riippuvainen
∼ Mikään funktionaalisen riippuvuuden oikealla puolella
ei määrää mitään funktionaalisen riippuvuuden vasemmalla puolella …
4. normaalimuoto 4NF Mielekäs vain jos ER-mallissa on 3 - n asteen suhteita muissa tapauksissa BCNF on automaattisesti myös 4NF (ja 5NF)
Tulee yleensä tehtyä ’intuitiivisesti’ jo suunnittelun alkuvaiheessa …
R(X, Y, Z) X ->> Y ja X –>> Z X ja Y voivat olla joko yksittäisiä attribuutteja tai attribuuttijoukkoja
William Kent, "A Simple Guide to Five Normal Forms in Relational Database Theory", Communications of the ACM 26(2), Feb.1983, 120-125.
http://home.earthlink.net/~billkent/Doc/simple5.htm Relaatio R on 4 normaalimuodossa joss se on BCNF ja sillä on korkeintaan yksi itsenäinen moniarvoinen riippuvuus
Taidon ja kielen välillä on yhteys vain henkilön kautta ts. se. ne liittyvät samaan henkilöön
HLÖ Hlo_tunnus Taito Kieli Väinö Luku Suomi Väinö Luku Englanti Väinö Kirjoitus Suomi Väinö Kirjoitus Englanti Väinö Opetus Suomi Väinö Opetus Englanti
Esim: 2 keskenään riippuvat ominaisuudet
Taidon ja kielen välillä on yhteys ts. se. henkilöllä on tietty taito vain tietyllä kielellä
HLÖ Hlo_tunnus Taito Kieli Väinö Luku Suomi Väinö Luku Englanti Väinö Kirjoitus Suomi Väinö Kirjoitus Englanti Väinö Opetus Suomi
5. normaalimuoto 5NF Relaatio on 5. Normaalimuodossa joss se on 4NF eikä sitä voi jakaa pienemmiksi osiksi informaation katoamatta. Esim: MYYJÄ
YRITYS TUOTE Myyjä edustaa useampaa yritystä Yritys valmistaa useampia tuotteita ja Myyjä myy useita tuotteita Kuka myy mitäkin tuotetta minkäkin yrityksen ’lukuun’ ? MYYNTI Myyjä_tunnus Yritys_tunnus Tuote_tunnus Väinö Renault Henkilöauto Väinö Renault Traktori Väinö Volvo Henkilöauto Risto Volvo Traktori Risto Volvo Bussi
Mikäli on olemassa sovellusalueen sisäinen eheyssääntö, ”Jos myyjä myy tietyn tuotteen ja edustaa tiettyä yritystä, joka valmistaa ko. tuotetta, niin hän myy ko. tuotetta ko. yrityksen ’lukuun’.
1. Eliminate Repeating Groups Make a separate table for each set of related attributes, and give each table a primary key.
2. Eliminate Redundant Data If an attribute depends on only part of a multi-valued key, remove it to a separate table.
3. Eliminate Columns Not Dependent On Key If attributes do not contribute to a description of the key, remove them to a separate table.
4. Isolate Independent Multiple Relationships No table may contain two or more 1:n or n:m relationships that are not directly related.
5. Isolate Semantically Related Multiple Relationships There may be practical constrains on information that justify separating logically related many-to-many relationships.
DB_KOKEMUS Hlö_id Db_id taso arvioija … 1 2 Hyvä OUGF 1 3 Hyvä Tieturi 2 1 Hyvä @B 2 4 Hyvä HP 3 1 Hyvä @B 3 3 Hyvä Tieturi 1 1 Huono Tieto
Tietyn tietokantatuotteen arviointioikeus on annettu monelle yritykselle. Samalla yrityksellä voi olla vain 1 tuotteen arviointioikeudet.
BCNF
DB_KOKEMUS DB_ARVIOIJA Hlö_id arvioija taso … Db_id arvioija … 1 OUGF Hyvä 1 @B 1 Tieturi Hyvä 2 OUGF 2 @B Hyvä 3 Tieturi 2 4 Hyvä 4 HP 3 @B Hyvä 1 Tieto 3 Tieturi Hyvä 1 Tieto Huono
• tietty henkilö voi edustaa useita tiimejä • tietty tiimi on edustettuna useassa tapahtumassa • tietyssä tapahtumassa edustavat useat henkilöt
EDUSTUS Hlö_id T_id Tap_id
1 Sanasto DB-98 1 Sanasto DB-99 2 Sanasto DB-97 2 Koulutus DB-98 2 Koulutus Koulu-97 2 Koulutus Koulu-98
Jos on voimassa sääntö (constraint), että Jos hlö on mukana tietyssä tapahtumassa ja edustaa jotakin tiimiä, joka on mukana ko. tapahtumassa, hän edustaa ko. tiimiä ko. tapahtumassa
Denormalisointi ? Parempi suorituskyky Yksinkertaisemmat kyselyt
Riskit Esim. 1 1NF
Kurssin perustietoihin kirjataan vastuuhenkilön nimi varaudutaan 3 vastuuhenkilöön.
Entä kun joskus tulee 4-n. ? Sovellusohjelmaa joudutaan muuttamaan
Esim. 2 2NF & 3 NF & 4NF
Projektin perustietoihin kirjataan osastonumeron lisäksi osaston nimi, jotta ad hoc –kyselyjä tekevät saisivat kyselyihinsä mukaan myös osaston nimen.
Entä kun osaston nimi muuttuu Kaikkien ko. tiedon päivitysten yhteydessä on (ohjelmoijan) muistettava päivittää ko. tieto kaikkiin sen kopioihin ! Mikäli sama tieto kopioidaan vielä 2. Paikkaan, on muutettava kaikkia ohjelmia, joissa ko. tietoa päivitetään.
+ Mikäli tiedosta on kopioita, ristiriitaisen tiedon mahdollisuus kasvaa
+ Mikäli samasta tiedosta on ’kopioita’ useissa tauluissa, ko. tiedon päivitys synnyttää kirjoituslukituksia kaikkiin ko. tauluihin ja todennäköisesti hidastaa järjestelmän toimintaa mikäli ko. tietoa päivitetään usein