Redigerer
Femte normalform
Hopp til navigering
Hopp til søk
Advarsel:
Du er ikke innlogget. IP-adressen din vil bli vist offentlig om du redigerer. Hvis du
logger inn
eller
oppretter en konto
vil redigeringene dine tilskrives brukernavnet ditt, og du vil få flere andre fordeler.
Antispamsjekk.
Ikke
fyll inn dette feltet!
'''Femte normalform''' ('''5NF'''), også kjent som '''projeksjonsskjøt normalform''' (engelsk: ''projection–join normal form'', '''PJ/NF''' ), er en type [[databasenormalisering]] designet for å fjerne redundans i relasjonsdatabaser som registrerer [[Fakta (datavarehus)|fakta]] med flere verdier ved å isolere flere [[semantisk]] relaterte relasjoner. Det er den endelige normalformen med tanke på å fjerne redundans. En [[Sjette normalform|6NF]] finnes også, men dens formål er ikke å fjerne redundans, og den blir derfor bare tatt i bruk av noen få [[datavarehus]] der det kan være nyttig å gjøre tabeller irreduserbare. == Historie == Den femte normalformen ble først beskrevet i 1979 av Ronald Fagin i konferanseartikkelen ''Normal forms and relational database operators''. <ref>{{Kilde bok|tittel=Introduction to Data Base and Knowledge Base Systems|etternavn=S. Krishna|dato=1991|utgiver=World Scientific|isbn=9810206208|sitat=The fifth normal form was introduced by Fagin}}</ref> == Definisjon == En [[Tabell (database)|tabell]] sies å være på 5NF [[hvis og bare hvis]] hver ikke-trivielle [[skjøteavhengighet]] i den tabellen er underforstått av [[Kandidatnøkkel|kandidatnøklene]]. En skjøteavhengighet *{A, B, … Z} på R impliseres av kandidatnøkkelen(e) til R [[hvis og bare hvis]] hver av A, B, …, Z er en [[supernøkkel]] for R.<ref>[http://www.anchormodeling.com/wp-content/uploads/2010/08/6nf.pdf Analysis of normal forms for anchor-tables]</ref> == Eksempel == Anta følgende eksempel: {| class="wikitable" |+Produkter tilgjengelig for omreisende selgere etter merke ! Omreisende selger ! Merke ! Produkttype |- | Trygve Dahl | Acme | Støvsuger |- | Trygve Dahl | Acme | Brødboks |- | Nina Solheim | Robusto | Beskjæringssaks |- | Nina Solheim | Robusto | Støvsuger |- | Nina Solheim | Robusto | Brødboks |- | Nina Solheim | Robusto | Paraplystativ |- | Liv Jacobsen | Robusto | Støvsuger |- | Liv Jacobsen | Robusto | Teleskop |- | Liv Jacobsen | Acme | Støvsuger |- | Liv Jacobsen | Acme | Lavalampe |- | Liv Jacobsen | Nimbus | Slipsstativ |} Tabellens predikat er: Produkter angitt av ''produkttype'' og laget av ''merke'' er tilgjengelig fra selgeren ''omreisende selger''. Primærnøkkelen er [[Sammensatt nøkkel|sammensetningen]] av alle tre kolonnene. Legg også merke til at tabellen er i [[Fjerde normalform|4NF]] siden det ikke er noen [[Multivaluert avhengighet|flervaluerte avhengigheter]] ([[Skjøteavhengighet|2-delte skjøtavhengigheter]] ) i tabellen, altså ingen kolonne (som i seg selv ikke er en [[kandidatnøkkel]] eller en [[supernøkkel]]) er en determinant for de to andre kolonnene. I fravær av regler som begrenser de mulige gyldige kombinasjonene av omreisende selger, merke og produkttype er tabellen med tre attributter vist ovenfor nødvendig for å modellere situasjonen riktig. Anta imidlertid at følgende regel gjelder: ''En reisende selger har visse merker og visse produkttyper i repertoaret.'' ''Hvis merke B1 og merke B2 er i repertoaret deres, og produkttype P er på repertoaret, så (forutsatt at merke B1 og merke B2 begge lager produkttype P), må den reisende selgeren tilby produkter av produkttype P de som er laget av merke B1 og de laget av merke B2.'' Isåfall er det mulig å dele tabellen i tre: {| class="wikitable" style="float:left;" |+Produkttyper per omreisende selger ! Omreisende selger ! Produkttype |- | Trygve Dahl | Støvsuger |- | Trygve Dahl | Brødboks |- | Nina Solheim | Beskjæringssaks |- | Nina Solheim | Støvsuger |- | Nina Solheim | Brødboks |- | Nina Solheim | Paraplystativ |- | Liv Jacobsen | Teleskop |- | Liv Jacobsen | Støvsuger |- | Liv Jacobsen | Lavalampe |- | Liv Jacobsen | Slipsstativ |} {| class="wikitable" style="margin-left:20px;float:left;" |+Merker per omreisende selger ! Omreisende selger ! Merke |- |Trygve Dahl | Acme |- |Nina Solheim | Robusto |- |Liv Jacobsen | Robusto |- |Liv Jacobsen | Acme |- |Liv Jacobsen | Nimbus |} {| class="wikitable" style="margin-left:20px;float:left;" |+Produkttyper etter merke ! Merke ! Produkttype |- | Acme | Støvsuger |- | Acme | Brødboks |- | Acme | Lavalampe |- | Robusto | Beskjæringssaks |- | Robusto | Støvsuger |- | Robusto | Brødboks |- | Robusto | Paraplystativ |- | Robusto | Teleskop |- | Nimbus | Slipsstativ |} {{Clear}} I dette tilfellet er det umulig for Liv Jacobsen å nekte å tilby støvsugere laget av Acme (forutsatt at Acme lager støvsugere) hvis hun selger noe annet laget av Acme (lavalampe) og hun også selger støvsugere laget av et annet merke (Robusto). Dette oppsettet bidrar til å fjerne redundans. Anta at Trygve Dahl begynner å selge Robusto-produktene brødbokser og støvsugere. I det forrige oppsettet måtte vi legge til to nye oppføringer, én for hver produkttype (<Trygve Dahl, Robusto, brødbokser>, <Trygve Dahl, Robusto, støvsugere>). Med det nye oppsettet trenger vi bare å legge til en enkelt oppføring (<Trygve Dahl, Robusto>) under "Merker per omreisende selger". == Bruk == Bare i sjeldne situasjoner samsvarer ikke en 4NF-tabell med 5NF, som for eksempel når de dekomponerte tabellene er [[Sykel (grafteori)|sykliske]]. Dette er situasjoner der en kompleks begrensning fra den virkelige verden som styrer de gyldige kombinasjonene av attributtverdier i 4NF-tabellen ikke er implisitt i strukturen til tabellen. Hvis en slik tabell ikke er normalisert til 5NF må byrden med å opprettholde den logiske konsistensen til dataene i tabellen delvis bæres av applikasjonen som er ansvarlig for [[Opprett, les, oppdater og slett|innsetting, sletting og oppdateringer]], og det er en økt risiko for at dataene i tabellen blir inkonsistente. Derimot utelukker 5NF-designet muligheten for slike inkonsekvenser. En tabell T er på femte normalform (5NF) hvis den ikke kan ha en [[Tapsfri dekomposisjon|tapsfri dekomponering]] til et hvilket som helst antall mindre tabeller. Tilfellet der alle de mindre tabellene etter dekomponeringene har samme kandidatnøkkel som tabellen T er ekskludert. == Se også == * [[Attributt–verdi-system]] == Referanser == <references/> {{Databasenormalisering}} [[Kategori:Databaser]]
Redigeringsforklaring:
Merk at alle bidrag til Wikisida.no anses som frigitt under Creative Commons Navngivelse-DelPåSammeVilkår (se
Wikisida.no:Opphavsrett
for detaljer). Om du ikke vil at ditt materiale skal kunne redigeres og distribueres fritt må du ikke lagre det her.
Du lover oss også at du har skrevet teksten selv, eller kopiert den fra en kilde i offentlig eie eller en annen fri ressurs.
Ikke lagre opphavsrettsbeskyttet materiale uten tillatelse!
Avbryt
Redigeringshjelp
(åpnes i et nytt vindu)
Maler som brukes på denne siden:
Mal:Clear
(
rediger
)
Mal:Databasenormalisering
(
rediger
)
Mal:Hlist/styles.css
(
rediger
)
Mal:ISOtilNorskdato
(
rediger
)
Mal:Kilde bok
(
rediger
)
Mal:Navbox
(
rediger
)
Modul:Arguments
(
rediger
)
Modul:Citation/CS1
(
rediger
)
Modul:Citation/CS1/COinS
(
rediger
)
Modul:Citation/CS1/Configuration
(
rediger
)
Modul:Citation/CS1/Date validation
(
rediger
)
Modul:Citation/CS1/Identifiers
(
rediger
)
Modul:Citation/CS1/Utilities
(
rediger
)
Modul:Citation/CS1/Whitelist
(
rediger
)
Modul:ISOtilNorskdato
(
rediger
)
Modul:Navbar
(
rediger
)
Modul:Navbar/configuration
(
rediger
)
Modul:Navbar/styles.css
(
rediger
)
Modul:Navbox
(
rediger
)
Modul:Navbox/configuration
(
rediger
)
Modul:Navbox/styles.css
(
rediger
)
Modul:TableTools
(
rediger
)
Navigasjonsmeny
Personlige verktøy
Ikke logget inn
Brukerdiskusjon
Bidrag
Opprett konto
Logg inn
Navnerom
Side
Diskusjon
norsk bokmål
Visninger
Les
Rediger
Rediger kilde
Vis historikk
Mer
Navigasjon
Forside
Siste endringer
Tilfeldig side
Hjelp til MediaWiki
Verktøy
Lenker hit
Relaterte endringer
Spesialsider
Sideinformasjon