Femte normalformen (5NF) är en av de möjliga normalformerna av en relationsdatabasrelation .
För att definiera den femte normalformen måste man först introducera begreppet sambandsberoende , som i sin tur bygger på begreppet förlustfri nedbrytning .
Nedbrytning [1] av relation R är ersättningen av R med en uppsättning relationer { R 1 , R 2 ,... , Rn } så att var och en av dem är en projektion av R , och varje attribut av R ingår i minst en av nedbrytningsprojektionerna.
Till exempel, för en relation R med attribut { a , b , c }, finns det följande huvuduppdelningsalternativ :
Betrakta nu relationen R' , som är resultatet av operationen NATURAL JOIN tillämpad på de relationer som erhålls som ett resultat av nedbrytningen av R.
En sönderdelning kallas en förlustfri sönderdelning om R' är exakt samma som R .
Informellt sett, med förlustfri nedbrytning, "delas" relationen upp i projektionsrelationer på ett sådant sätt att de resulterande projektionerna kan användas för att "sammansätta" den ursprungliga relationen med den naturliga sammanfogningsoperationen.
Inte varje nedbrytning är en förlustfri nedbrytning. Låt oss illustrera detta med relationen R med attributen { a , b , c } som ges ovan. Låt relationen R ha formen:
a | b | c |
---|---|---|
Moskva | Ryssland | huvudstad |
Tomsk | Ryssland | inte huvudstaden |
Berlin | Tyskland | huvudstad |
Nedbrytning R 1 = { a }, R 2 = { b , c } har formen:
a |
---|
Moskva |
Tomsk |
Berlin |
b | c |
---|---|
Ryssland | huvudstad |
Ryssland | inte huvudstaden |
Tyskland | huvudstad |
Resultatet av anslutningsoperationen av dessa relationer:
a | b | c |
---|---|---|
Moskva | Ryssland | huvudstad |
Moskva | Ryssland | inte huvudstaden |
Moskva | Tyskland | huvudstad |
Tomsk | Ryssland | huvudstad |
Tomsk | Ryssland | inte huvudstaden |
Tomsk | Tyskland | huvudstad |
Berlin | Ryssland | huvudstad |
Berlin | Ryssland | inte huvudstaden |
Berlin | Tyskland | huvudstad |
Det är uppenbart att R' inte sammanfaller med R , vilket betyder att en sådan sönderdelning inte är en förlustfri sönderdelning. Betrakta nu nedbrytningen R 1 = { a , b }, R 2 = { a , c }:
a | b |
---|---|
Moskva | Ryssland |
Tomsk | Ryssland |
Berlin | Tyskland |
a | c |
---|---|
Moskva | huvudstad |
Tomsk | inte huvudstaden |
Berlin | huvudstad |
En sådan sönderdelning är en förlustfri sönderdelning, vilket läsaren själv kan se.
I vissa fall kan en relation inte brytas upp utan förlust alls. Det finns också exempel på relationer som inte går att förlustfritt sönderdela i två projektioner, men som förlustfritt kan dekomponeras i tre eller flera projektioner [2] .
Låt R vara en relationsvariabel och A , B , …, Z vara några delmängder av uppsättningen av dess attribut.
Om nedbrytningen av något giltigt värde R till relationer bestående av attributuppsättningar A , B , ..., Z , är en förlustfri nedbrytning, sägs relationsvariabeln R tillfredsställa sammanfogningsberoendet *{A, B, . . . , Z} [3] .
Med andra ord, relationsvariabeln R uppfyller kopplingsberoendet *{A, B, . . . , Z} om och endast om något tillåtet värde för relationsvariabeln R är ekvivalent med unionen av dess projektioner över delmängderna A , B , …, Z i attributmängden.
Precis som ett funktionellt beroende är ett specialfall av ett flervärdigt beroende , är ett flervärdigt beroende ett specialfall av ett sammanfogningsberoende . Ett sammanfogningsberoende är en extrem generalisering av begreppen multivärdigt och funktionellt beroende, det vill säga det är den mest generella formen av beroende mellan relationsattribut.
Det är viktigt att förstå att ett sammanfogningsberoende inte definieras för ett specifikt värde av relationsvariabeln vid en given tidpunkt, utan för alla möjliga värden. Därför är begreppet anslutningsberoende inte definierat för en relation (ett särskilt värde), utan för en relationsvariabel . Föreningsberoende bestäms inte mekaniskt från de aktuella värdena, utan följer av extern kunskap om arten och mönster av de data som kan finnas i relationsvariabeln. Detsamma gäller flervärdiga och funktionella beroenden.
Ett sammanfogningsberoende *{A, B,…, Z} är trivialt om och endast om minst en av delmängderna A , B , …, Z är mängden av alla relationsattribut (inkluderar alla attribut). Annars är anslutningsberoendet icke-trivialt .
En relation är i femte normalform (med andra ord i projektiv-konnektiv normalform) om och endast om varje icke-trivialt sambandsberoende i det bestäms av potentialnyckeln (erna) för denna relation [2] .
Ett sammanfogningsberoende *{A, B,…, Z} definieras av en kandidatnyckel (er) om och endast om var och en av attributuppsättningarnas delmängder A , B , …, Z är en supernyckel av relationen [2] .
Villkoret "var och en av delmängderna A, B, ..., Z i attributmängden är en supernyckel av relationen" kan formuleras på samma sätt som följer: "var och en av delmängderna A , B , ..., Z av attributuppsättningen innehåller någon potentiell nyckel för relationen".
Varje relation i 5NF är automatiskt också i 4NF och därför i alla andra normala former. 5NF är den slutliga normala formen (åtminstone i samband med projektion och sammanfogning).
Ronald Feigin 1979 visade att vilken relationsvariabel som helst kan dekomponeras utan förlust till en ekvivalent uppsättning relationsvariabler i 5NF, det vill säga 5NF är alltid uppnåeligt. Christopher Date noterar dockatt proceduren för att bestämma att någon relationsvariabel finns i 4NF och inte i 5NF, och att det således finns en möjlighet till dess ytterligare fördelaktiga nedbrytning, fortfarande inte är helt klar. Detta beror på att uppgiften att bestämma alla anslutningsberoenden för en relation kan vara mycket svår, och en relation kan bara sägas vara i 5NF om alla dess kandidatnycklar och alla dess kopplingsberoenden är kända.
Det är mycket sällsynt att en relation som finns i 4NF inte motsvarar 5NF. Detta är situationer där de faktiska reglerna som begränsar de tillåtna kombinationerna av attribut inte uttrycks på något sätt i relationens struktur (se exemplet nedan). I ett sådant fall, om relationen inte reduceras till 5NF, flyttas bördan av att säkerställa den logiska integriteten hos datan delvis till den applikation som ansvarar för att lägga till, ta bort och ändra data. I detta fall finns risk för fel. Den femte normala formen utesluter förekomsten av sådana anomalier.
Anta att vi behöver lagra data om sortimentet av flera säljare som säljer produkter från flera företag (företagens produktsortiment kan överlappa varandra):
Försäljare | Fast | Produkt |
---|---|---|
Ivanov | Horn och hovar | Dammsugare |
Ivanov | Horn och hovar | brödlåda |
Petrov | Bezenchuk & Co | Lopper |
Petrov | Bezenchuk & Co | Dammsugare |
Petrov | Bezenchuk & Co | brödlåda |
Petrov | Bezenchuk & Co | Paraply |
Sidorov | Bezenchuk & Co | Dammsugare |
Sidorov | Bezenchuk & Co | Teleskop |
Sidorov | Horn och hovar | Dammsugare |
Sidorov | Horn och hovar | Lampa |
Sidorov | Herkules | Galge |
Om det inte finns några ytterligare villkor är detta förhållande, som är i den fjärde normala formen, korrekt och återspeglar alla nödvändiga begränsningar.
Anta nu att vi måste ta hänsyn till följande begränsning: varje säljare har en begränsad lista över företag och en begränsad lista över typer av varor i sitt sortiment och erbjuder varor från listan över varor som produceras av företag från listan över företag .
Det vill säga att säljaren inte har rätt att handla med varor från något företag. Om säljare P har rätt att handla med varor från företag F , och om säljare P har rätt att handla med varor av typ T , omfattar säljare P :s sortiment varor av typ T från företag F , förutsatt att företag F producerar varor av typ T.
En sådan begränsning kan till exempel orsakas av att säljarens förteckning över varuslag begränsas av de licenser han har, eller av de kunskaper och kvalifikationer som krävs för försäljningen av dem, och förteckningen över varje säljares företag. bestäms av partnerskapsavtal.
Särskilt i det aktuella exemplet antas det att säljaren Ivanov endast har rätt att handla med varor från företaget Roga och Kopyta, säljaren Petrov endast med varor från företaget Bezenchuk & Co, men säljaren Sidorov har inte rätt att handla med brödkärl och skärmaskiner m.m.
Den ovan föreslagna relationen kan inte utesluta situationer där denna begränsning överträds. Det finns inget som hindrar att ange uppgifter om handel med varor som detta företag inte producerar alls, eller uppgifter om handel med varor från ett företag som denna säljare inte betjänar, eller uppgifter om handel med en typ av produkt som denna säljare inte har rätt att sälja.
Relationen finns inte i 5NF, eftersom den har ett icke-trivialt anslutningsberoende *{{Säljare, Företag}, {Företag, Produkt}, {Säljare, Produkt}}, men delmängderna {Säljare, Företag}, {Företag, Produkt }, {Säljare , Produkt} är inte supernycklar för den ursprungliga relationen.
I det här fallet, för att minska till 5NF, bör relationen delas upp i tre: {Säljare, Företag}, {Företag, Produkt}, {Säljare, Produkt}.
Försäljare | Produkt |
---|---|
Ivanov | Dammsugare |
Ivanov | brödlåda |
Petrov | Lopper |
Petrov | Dammsugare |
Petrov | brödlåda |
Petrov | Paraply |
Sidorov | Teleskop |
Sidorov | Dammsugare |
Sidorov | Lampa |
Sidorov | Galge |
Försäljare | Fast |
---|---|
Ivanov | Horn och hovar |
Petrov | Bezenchuk & Co |
Sidorov | Bezenchuk & Co |
Sidorov | Horn och hovar |
Sidorov | Herkules |
Fast | Produkt |
---|---|
Horn och hovar | Dammsugare |
Horn och hovar | brödlåda |
Horn och hovar | Lampa |
Bezenchuk & Co | Lopper |
Bezenchuk & Co | Dammsugare |
Bezenchuk & Co | brödlåda |
Bezenchuk & Co | Paraply |
Bezenchuk & Co | Teleskop |
Herkules | Galge |
normala former | |
---|---|