Viides normaalimuoto (5NF) on yksi relaatiotietokantarelaation mahdollisista normaalimuodoista .
Viidennen normaalimuodon määrittelemiseksi on ensin otettava käyttöön käsite yhteysriippuvuus , joka puolestaan perustuu häviöttömän hajoamisen käsitteeseen .
Relation R hajottaminen [1] on R : n korvaaminen joukolla relaatioita { R 1 , R 2 ,… , R n } siten, että jokainen niistä on R :n projektio ja jokainen R :n attribuutti sisältyy ainakin yksi hajoamisennusteista.
Esimerkiksi relaatiolle R , jolla on attribuutit { a , b , c }, on seuraavat päähajotusvaihtoehdot :
Tarkastellaan nyt relaatiota R' , joka on NATURAL JOIN -operaation tulos, jota sovelletaan R :n hajotuksen tuloksena saatuihin suhteisiin .
Hajoamista kutsutaan häviöttömäksi hajotukseksi , jos R' on täsmälleen sama kuin R .
Epävirallisesti sanottuna häviöttömässä hajotuksessa relaatio "jaetaan" projektiorelaatioiksi siten, että tuloksena saatujen projektioiden avulla voidaan "koota" alkuperäinen relaatio käyttämällä luonnollista liitosoperaatiota.
Jokainen hajoaminen ei ole häviötöntä hajoamista. Havainnollistetaan tätä yllä annetulla relaatiolla R attribuuttien { a , b , c } avulla. Olkoon suhteella R muoto:
a | b | c |
---|---|---|
Moskova | Venäjä | iso alkukirjain |
Tomsk | Venäjä | ei pääkaupunki |
Berliini | Saksa | iso alkukirjain |
Hajotus R 1 = { a }, R 2 = { b , c } on muodossa:
a |
---|
Moskova |
Tomsk |
Berliini |
b | c |
---|---|
Venäjä | iso alkukirjain |
Venäjä | ei pääkaupunki |
Saksa | iso alkukirjain |
Näiden suhteiden yhteystoiminnan tulos:
a | b | c |
---|---|---|
Moskova | Venäjä | iso alkukirjain |
Moskova | Venäjä | ei pääkaupunki |
Moskova | Saksa | iso alkukirjain |
Tomsk | Venäjä | iso alkukirjain |
Tomsk | Venäjä | ei pääkaupunki |
Tomsk | Saksa | iso alkukirjain |
Berliini | Venäjä | iso alkukirjain |
Berliini | Venäjä | ei pääkaupunki |
Berliini | Saksa | iso alkukirjain |
On selvää, että R' ei ole sama kuin R , mikä tarkoittaa, että tällainen hajottaminen ei ole häviötön hajoaminen. Tarkastellaan nyt hajotusta R 1 = { a , b }, R 2 = { a , c }:
a | b |
---|---|
Moskova | Venäjä |
Tomsk | Venäjä |
Berliini | Saksa |
a | c |
---|---|
Moskova | iso alkukirjain |
Tomsk | ei pääkaupunki |
Berliini | iso alkukirjain |
Tällainen hajoaminen on häviötön hajoaminen, kuten lukija voi itse todeta.
Joissakin tapauksissa relaatiota ei voida hajottaa ilman häviötä. On myös esimerkkejä suhteista, joita ei voida hajottaa häviöttömästi kahteen projektioon, mutta jotka voidaan hajottaa häviöttömästi kolmeen tai useampaan projektioon [2] .
Olkoon R relaatiomuuttuja ja A , B , …, Z sen attribuuttien joukon osajoukkoja.
Jos minkä tahansa kelvollisen arvon R hajottaminen suhteiksi, jotka koostuvat attribuuttijoukoista A , B , ..., Z , on häviötön hajoaminen, relaatiomuuttujan R sanotaan tyydyttävän liitosriippuvuuden *{A, B, . . . , Z} [3] .
Toisin sanoen relaatiomuuttuja R täyttää liitosriippuvuuden *{A, B, . . . , Z} jos ja vain jos mikä tahansa relaatiomuuttujan R sallittu arvo vastaa sen projektioiden liittoa attribuuttijoukon osajoukkojen A , B , …, Z yli.
Aivan kuten toiminnallinen riippuvuus on moniarvoisen riippuvuuden erikoistapaus , moniarvoinen riippuvuus on liitosriippuvuuden erikoistapaus . Join-riippuvuus on moniarvoisen ja toiminnallisen riippuvuuden käsitteiden äärimmäinen yleistys, eli se on yleisin riippuvuuden muoto relaatioattribuuttien välillä.
On tärkeää ymmärtää, että liitosriippuvuutta ei määritellä relaatiomuuttujan tietylle arvolle tietyllä hetkellä, vaan kaikille mahdollisille arvoille. Siksi yhteysriippuvuuden käsitettä ei määritellä suhteelle (tietylle arvolle), vaan relaatiomuuttujalle . Liitosriippuvuutta ei määritetä mekaanisesti nykyisistä arvoista, vaan se seuraa ulkopuolisesta tiedosta relaatiomuuttujassa mahdollisesti olevien tietojen luonteesta ja malleista. Sama koskee moniarvoisia ja toiminnallisia riippuvuuksia.
Liitosriippuvuus *{A, B,…, Z} on triviaali , jos ja vain jos ainakin yksi osajoukoista A , B , …, Z on kaikkien relaatioattribuuttien joukko (sisältää kaikki attribuutit). Muuten yhteysriippuvuus ei ole triviaali .
Relaatio on viidennessä normaalimuodossa (toisin sanoen projektitiivis-konnektiivisessa normaalimuodossa) silloin ja vain, jos jokainen ei-triviaalinen yhteysriippuvuus siinä määräytyy tämän suhteen potentiaaliavaimen (-avaimien) avulla [2] .
Liitosriippuvuus *{A, B,…, Z} määritellään ehdokasavaimella, jos ja vain jos kukin attribuuttijoukon osajoukoista A , B , …, Z on suhteen [2] superavain .
Ehto "kukin attribuuttijoukon osajoukoista A , B , ..., Z on suhteen superavain" voidaan vastaavasti muotoilla seuraavasti: "kukin osajoukoista A , B , ... , Z attribuuttijoukko sisältää jonkin suhteen mahdollisen avaimen ".
Mikä tahansa suhde 5NF:ssä on automaattisesti myös 4NF:ssä ja siten kaikissa muissa normaaleissa muodoissa. 5NF on lopullinen normaalimuoto (ainakin projektio- ja liitosoperaatioiden yhteydessä).
Ronald Feigin vuonna 1979 osoitti, että mikä tahansa relaatiomuuttuja voidaan jakaa ilman häviötä vastaavaksi relaatiomuuttujien joukoksi 5NF:ssä, eli 5NF on aina saavutettavissa. Christopher Date kuitenkinhuomauttaa, että menettely sen määrittämiseksi, että jokin relaatiomuuttuja on 4NF:ssä eikä 5NF:ssä, ja näin ollen on mahdollisuus sen edulliseen hajoamiseen, ei ole vielä täysin selvä. Tämä johtuu siitä, että kaikkien liitosriippuvuuksien määrittäminen relaatiolle voi olla erittäin vaikeaa, ja suhteen voidaan sanoa olevan 5NF:ssä vain, jos kaikki sen ehdokasavaimet ja kaikki sen liitosriippuvuudet tunnetaan.
On hyvin harvinaista, että 4NF:ssä oleva relaatio ei vastaa 5NF:ää. Nämä ovat tilanteita, joissa todellisia sääntöjä, jotka rajoittavat sallittuja attribuuttien yhdistelmiä, ei ilmaistu millään tavalla relaatiorakenteessa (katso esimerkki alla). Tällöin, jos suhdetta ei vähennetä arvoon 5NF, tiedon loogisen eheyden varmistamisen taakka siirtyy osittain datan lisäämisestä, poistamisesta ja muuttamisesta vastaavalle sovellukselle. Tässä tapauksessa on olemassa virheiden riski. Viides normaalimuoto sulkee pois tällaisten poikkeavuuksien esiintymisen.
Oletetaan, että meidän on tallennettava tietoja useiden myyjien valikoimasta, jotka myyvät usean yrityksen tuotteita (yritysten tuotevalikoima voi mennä päällekkäin):
Myyntimies | Kiinteä | Tuote |
---|---|---|
Ivanov | Sarvet ja kaviot | Pölynimuri |
Ivanov | Sarvet ja kaviot | leipälaatikko |
Petrov | Bezenchuk&Co | Lopper |
Petrov | Bezenchuk&Co | Pölynimuri |
Petrov | Bezenchuk&Co | leipälaatikko |
Petrov | Bezenchuk&Co | Sateenvarjo |
Sidorov | Bezenchuk&Co | Pölynimuri |
Sidorov | Bezenchuk&Co | Teleskooppi |
Sidorov | Sarvet ja kaviot | Pölynimuri |
Sidorov | Sarvet ja kaviot | Lamppu |
Sidorov | Hercules | Ripustin |
Jos lisäehtoja ei ole, tämä suhde, joka on 4. normaalimuodossa, on oikea ja heijastaa kaikkia tarvittavia rajoituksia.
Oletetaan nyt, että meidän on otettava huomioon seuraava rajoitus: jokaisella myyjällä on rajoitettu luettelo yrityksistä ja rajoitettu luettelo tavaratyypeistä valikoimassaan ja hän tarjoaa tavaroita yritysten luettelosta yritysten valmistamien tavaroiden luettelosta .
Eli myyjällä ei ole oikeutta käydä kauppaa minkään yrityksen tavaroilla. Jos myyjällä P on oikeus käydä kauppaa yrityksen F tavaroilla ja jos myyjällä P on oikeus käydä kauppaa tyypin T tavaroilla, niin myyjän P valikoima sisältää yrityksen F tyypin T tavarat edellyttäen , että yritys F valmistaa tavaroita tyyppiä T. _
Tällainen rajoitus voi johtua esimerkiksi siitä, että myyjän tavaratyyppiluetteloa rajoittavat hänen luvat tai niiden myyntiin tarvittavat tiedot ja pätevyys sekä kunkin myyjän yritysluettelo. määräytyy kumppanuussopimuksin.
Erityisesti tarkasteltavassa esimerkissä oletetaan, että myyjä Ivanovilla on oikeus käydä kauppaa vain Roga ja Kopyta -yhtiön tavaroilla, myyjä Petrovilla vain Bezenchuk & Co -yhtiön tavaroilla, mutta myyjällä Sidorovilla ei ole oikeutta käydä kauppaa leipälaatikoilla ja silppureilla jne.
Edellä ehdotettu suhde ei voi sulkea pois tilanteita, joissa tätä rajoitusta rikotaan. Mikään ei estä syöttämästä tietoja sellaisten tavaroiden kaupasta, joita tämä yritys ei tuota ollenkaan, tai tietoja sellaisen yrityksen tavaroiden kaupasta, joita tämä myyjä ei palvele, tai tietoja sellaisista tavaroista, joita tämä myyjä ei tarjoa. on oikeus myydä.
Relaatio ei ole 5NF:ssä, koska sillä on ei-triviaali yhteysriippuvuus *{{Myyjä, Yritys}, {Yritys, Tuote}, {Myyjä, Tuote}}, mutta osajoukot {Myyjä, Yritys}, {Yritys, tuote }, {Myyjä , Tuote} eivät ole alkuperäisen suhteen superavaimia.
Tässä tapauksessa 5NF:n pienentämiseksi suhde tulisi jakaa kolmeen osaan: {Myyjä, Yritys}, {Yritys, Tuote}, {Myyjä, Tuote}.
Myyntimies | Tuote |
---|---|
Ivanov | Pölynimuri |
Ivanov | leipälaatikko |
Petrov | Lopper |
Petrov | Pölynimuri |
Petrov | leipälaatikko |
Petrov | Sateenvarjo |
Sidorov | Teleskooppi |
Sidorov | Pölynimuri |
Sidorov | Lamppu |
Sidorov | Ripustin |
Myyntimies | Kiinteä |
---|---|
Ivanov | Sarvet ja kaviot |
Petrov | Bezenchuk&Co |
Sidorov | Bezenchuk&Co |
Sidorov | Sarvet ja kaviot |
Sidorov | Hercules |
Kiinteä | Tuote |
---|---|
Sarvet ja kaviot | Pölynimuri |
Sarvet ja kaviot | leipälaatikko |
Sarvet ja kaviot | Lamppu |
Bezenchuk&Co | Lopper |
Bezenchuk&Co | Pölynimuri |
Bezenchuk&Co | leipälaatikko |
Bezenchuk&Co | Sateenvarjo |
Bezenchuk&Co | Teleskooppi |
Hercules | Ripustin |
normaaleja muotoja | |
---|---|