Kolmas normaalimuoto ( eng. Third normaalimuoto ; lyhennettynä 3NF ) on yksi relaatiotietokannan mahdollisista normaalimuodoista . 3NF:n muotoili alun perin E. F. Codd vuonna 1971 .
Relaatiomuuttuja R on arvossa 3NF, jos ja vain, jos seuraavat ehdot ovat totta:
Selitykset määritelmälle:
Relaation R ei- avainattribuutti on attribuutti, joka ei kuulu mihinkään R :n ehdokasavaimeen .
Attribuuttijoukon Z toiminnallinen riippuvuus attribuuttijoukosta X (kirjoitettu X → Z , lausutaan "x määrittää z:n") on transitiivinen , jos on olemassa attribuuttijoukko Y siten, että X → Y ja Y → Z. Samanaikaisesti mikään joukoista X , Y ja Z ei ole toisen osajoukko, eli funktionaaliset riippuvuudet X → Z , X → Y ja Y → Z eivät ole triviaaleja , eikä myöskään toiminnallista riippuvuutta Y ole olemassa. → X.
Carlo Zaniolo antoi vuonna 1982 määritelmän 3NF:stä, joka vastaa Coddia, mutta muotoiltiin eri tavalla . Sen mukaan relaatiomuuttuja on 3NF:ssä silloin ja vain, jos jokainen sen toiminnallinen riippuvuus X → A täyttää vähintään yhden seuraavista ehdoista:
Zaniolon määritelmä määrittelee selvästi eron 3NF:n ja tiukemman Boyce-Coddin normaalimuodon (BCNF) välillä: BCNF eliminoi kolmannen ehdon (" A on avainattribuutti").
Bill Kent antoi mieleenpainuvan ja perinteisesti kuvaavan yhteenvedon Coddin 3NF-määritelmästä : jokaisen ei-avainattribuutin "pitäisi tarjota tietoa avaimesta, koko avaimesta ja vain avaimesta" [1] .
Ei-avainattribuuttien "täydestä avaimesta" riippuvuuden ehto varmistaa, että relaatio on toisessa normaalimuodossa; ja edellytys sille, että he ovat riippuvaisia "muista kuin avaimesta", on, että ne ovat kolmannessa normaalimuodossa.
Chris Date puhuu Kentin yhteenvedosta 3NF:n "intuitiivisesti houkuttelevana ominaisuutena" ja huomauttaa, että se voi pienellä muutoksella toimia myös tiukemman Boyce-Coddin normaalimuodon määritelmänä : "Jokaisen attribuutin on annettava tietoa avaimesta , täysi avain, eikä mitään muuta kuin avain. Kentin versio 3NF-määrittelystä on vähemmän tiukka kuin Boyce-Coddin normaalimuotoinen versio Datan formulaatiosta, koska edellinen sanoo vain, että ei-avainattribuutit riippuvat avaimista. Ensisijaisten attribuuttien (jotka ovat avaimia tai niiden osia) ei tarvitse olla toiminnallisesti riippuvaisia ollenkaan; jokainen niistä tarjoaa tietoa avaimesta antamalla itse avaimen tai osan siitä. Tässä on huomattava, että tämä sääntö pätee vain ei-avainmääritteille, koska sen soveltaminen kaikkiin attribuutteihin poistaa kokonaan käytöstä kaikki monimutkaiset vaihtoehtoiset avaimet, koska tällaisen avaimen jokainen elementti rikkoo "täysi avain" -ehtoa.
Tarkastellaan esimerkkinä relaatiomuuttujaa R1:
Työntekijä | osasto | Puhelin |
---|---|---|
Grishin | Kirjanpito | 11-22-33 |
Vasiljev | Kirjanpito | 11-22-33 |
Petrov | Toimittaa | 44-55-66 |
Jokainen työntekijä kuuluu yksinomaan yhteen osastoon; jokaisella osastolla on yksi puhelin. Työntekijä - attribuutti on ensisijainen avain. Työntekijöillä ei ole henkilökohtaisia puhelimia, ja työntekijän puhelinnumero riippuu vain osastosta.
Esimerkissä on olemassa seuraavat toiminnalliset riippuvuudet: Työntekijä → Osasto , Osasto → Puhelin , Työntekijä → Puhelin .
Relaatiomuuttuja R1 on toisessa normaalimuodossa, koska jokaisella attribuutilla on redusoitumaton toiminnallinen riippuvuus mahdollisesta avaintyöntekijästä .
Suhde Työntekijä → Puhelin on transitiivinen, joten suhde ei ole kolmannessa normaalimuodossa.
R1:n jakaminen johtaa kahteen relaatiomuuttujaan, jotka ovat 3NF:ssä:
osasto | Puhelin |
---|---|
Kirjanpito | 11-22-33 |
Toimittaa | 44-55-66 |
Työntekijä | osasto |
---|---|
Grishin | Kirjanpito |
Vasiljev | Kirjanpito |
Petrov | Toimittaa |
Alkurelaatio R1 saadaan tarvittaessa helposti relaatioiden R2 ja R3 yhdistämisoperaation tuloksena.
normaaleja muotoja | |
---|---|