Redigerer
Sjette 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!
'''Sjette normalform''' ('''6NF''') er en [[Databasenormalisering|normalform]] som brukes i [[Databasenormalisering|normalisering]] av [[Relasjonsdatabase|relasjonsdatabaser]] [[Databasenormalisering|som]] utvider [[Relasjonsalgebra|relasjonsalgebraen]] og generaliserer relasjonsoperatorer (som [[Join (SQL)|skjøt]]) for å støtte intervalldata, hvilket kan være nyttig i [[Temporal database|temporale databaser]]. Denne formen er uviktig i [[Gjeldende database|ikke-temporale databaser]], men er nyttig for temporale data, for eksempel for å spore [[Fangst av dataendringer|endringshistorikk]]. Til forveksling har begrepet 6NF historisk også blitt brukt for å referere til en annen normaliseringsgrad som i dag er mer kjent som [[Domene–nøkkel normalform|domene-nøkkel normalform]] (DKNF) (se [[Sjette normalform#Andre betydninger|Andre betydninger]]). Denne artikkelen handler imidlertid om sjette normalform som definert av Date med flere. == Definisjon == [[Christopher J. Date|Christopher John Date]] og andre har definert sjette normalform som en [[Databasenormalisering|normalform]] basert på en utvidelse av relasjonsalgebraen. Relasjonsoperatorer som skjøt (''join'') blir generaliserte for å støtte naturlig behandling av intervalldata, for eksempel [[Løpenummer|sekvenser]] av datoer eller tidspunkter (''points in time''), for eksempel i temporale databaser. Sjette normalformen er derved basert på en generalisert skjøt som følger:<blockquote>En [[relvar]] R [tabell] er på sjette normalform [[hvis og bare hvis]] den ikke tilfredsstiller noen ikke-[[Trivialitet (matematikk)|trivielle]] skjøteavhengigheter i det hele tatt, hvor en [[skjøteavhengighet]] (''join dependency'') er triviell hvis og bare hvis minst en av projeksjonene (muligens U_projeksjoner) som er involvert tas over hele mengden av alle [[Attributt|attributter]] i den aktuelle relvar [tabellen].{{Sfn|Date|Darwen|Lorentzos|2003}}</blockquote>Date og kolleger har også gitt følgende definisjon:<blockquote>En relvar R er på sjette normalform hvis og bare hvis hver skjøteavhengighet av R er [[Trivialitet (matematikk)|triviell]], hvor en skjøteavhengighet er triviell hvis og bare hvis en av komponentene er lik den relevante overskriftsraden i sin helhet. {{Sfn|Date|Darwen|Lorentzos|2014}}</blockquote>Enhver relasjon på 6NF er også på [[Femte normalform|5NF]]. Sjette normalform er ment å dekomponere relasjonsvariabler til [[Irredusibilitet (matematikk)|irreduserbare]] komponenter. Selv om dette kan være relativt uviktig for [[Gjeldende database|ikke-temporale]] relasjonsvariabler kan det være viktig når man arbeider med [[Temporal database|temporale]] variabler eller andre [[Intervall (matematikk)|intervalldata]]. For eksempel dersom en relasjon omfatter en leverandørs {navn}, {status} og {tettsted} kan det hende vi også ønsker å legge til temporale data som for eksempel tidene eller tidsrommet da disse verdiene er eller var [[Gyldigtid|gyldige]] (for eksempel for historiske data), men de tre verdiene kan variere uavhengig av hverandre og med forskjellige [[Stordata|hastigheter]]. Vi kan for eksempel ønske å spore [[Fangst av dataendringer|endringshistorikken]] til {status}, og en gjennomgang av produksjonskostnadene kan avsløre at en endring ble forårsaket av at en leverandør byttet by og dermed hva de tok betalt for levering. For ytterligere diskusjon om temporal [[Aggregering (datavarehus)|aggregering]] i [[Structured Query Language|SQL]], se også Zimanyi.{{Sfn|Zimanyi|2006}} For en annen tilnærming, se [[TSQL2]].{{Sfn|Snodgrass}} == Bruk == Den sjette normalformen brukes for tiden per 2009 i enkelte [[datavarehus]] der fordelene veier opp for ulempene,<ref>See [http://www.anchormodeling.com the Anchor Modeling website] for a website that describes a data warehouse modelling method based on the sixth normal form</ref> for eksempel ved bruk av [[ankermodellering]]. Selv om bruk av 6NF fører til en eksplosjon av tabeller kan moderne databaser trimme (''prune'') tabellene fra [[Select (SQL)|select]]-spørringer (ved å bruke en prosess som kalles [[tabelleliminering]] - slik at en spørring kan løses uten engang å lese enkelte av tabellene som spørringen refererer til<ref>{{Kilde www|url=https://mariadb.com/kb/en/what-is-table-elimination/|tittel=What is Table Elimination?|besøksdato=2024-04-24|verk=MariaDB KnowledgeBase}}</ref>) der de ikke er påkrevd og dermed øke hastigheten på spørringer som bare aksesserer flere attributter. == Eksempler == For at en tabell skal være på sjette normalform må den først være i [[femte normalform]], og deretter kreves det at hver tabell kun tilfredsstiller trivielle skjøteavhengigheter. Følgende er et enkelt eksempel med utangspunkt i en tabell som allerede er på 5NF:<ref>Example provided by: http://www.anattatechnologies.com/q/2011/07/normalization-6nf/ {{Wayback|url=http://www.anattatechnologies.com/q/2011/07/normalization-6nf/ |date=20170325032848 }}</ref> I brukertabellen er hver attributt ikke [[Null (SQL)|ikke-null]] og [[Primærnøkkel|primærnøkkelen]] er brukernavnet: {| class="wikitable" |+Brukertabell ! Brukernavn ! Avdeling ! Status |} Denne tabellen er på 5NF fordi hver skjøteavhengighet impliseres av den unike [[Kandidatnøkkel|kandidatnøkkelen]] til tabellen (brukernavn). Mer spesifikt er de eneste mulige skjøteavhengighetene {brukernavn, status} og {brukernavn, avdeling}. 6NF-versjonen vil dermed se slik ut: {| class="wikitable" |+Brukere ! Brukernavn ! Status |} {| class="wikitable" |+Brukerens_avdeling ! Brukernavn ! Avdeling |} Dermed har man med utgangspunkt i en 5NF-tabell produsert to 6NF-tabeller. Følgende er et annet eksempel: {| class="wikitable" |+Tabell 1 ! Lege-ID ! Legens navn ! Fagområde ! Type ! Års erfaring |- | 1 | Ole Pettersen | Ortoped | [[Spesialist (lege)|Spesialist]] | 23 |- | 2 | Andreas Nilsen | Ortoped | Prøveansatt | 4 |- | 3 | Nina Strand | Nevrolog | Prøveansatt | 5 |- | 4 | Inger Andersen | Ortoped | [[Lege i spesialisering|Spesialisering]] | 1 |- | 5 | Marit Dahl | Nevrolog | Spesialist | 12 |- | 6 | Lars Berg | Øyelege | Prøveansatt | 3 |- | 7 | Morten Hagen | Øyelege | Spesialist | 7 |- | 8 | Ingrid Lund | Nevrolog | Spesialisering | 1 |- | 9 | Liv Iversen | Øyelege | Spesialisering | 2 |} Skjøteavhengighetene til tabellen er {legens navn, fagområde}, {legens navn, års erfaring} og {legens navn, type}. Dermed er det tydelig at denne tabellen er på [[2NF]] (på grunn av den ser ut til å ha [[transitiv avhengighet]]). Den kan deles opp i følgende tabeller for å gjøre den om til 6NF-tabeller: {| class="wikitable" |+Tabell 2.1 ! Lege-ID ! Legens navn |- | 1 | Ole Pettersen |- | 2 | Andreas Nilsen |- | 3 | Nina Strand |- | 4 | Inger Andersen |- | 5 | Marit Dahl |- | 6 | Lars Berg |- | 7 | Morten Hagen |- | 8 | Ingrid Lund |- | 9 | Liv Iversen |} {| class="wikitable" |+Tabell 2.2 ! Lege-ID !Fagområde |- | 1 | Ortoped |- | 2 | Ortoped |- | 3 | Nevrolog |- | 4 | Ortoped |- | 5 | Nevrolog |- | 6 | Øyelege |- | 7 | Øyelege |- | 8 | Nevrolog |- | 9 | Øyelege |} {| class="wikitable" |+Tabell 2.3 ! Lege-ID !Års erfaring |- | 1 | 23 |- | 2 | 4 |- | 3 | 5 |- | 4 | 1 |- | 5 | 12 |- | 6 | 3 |- | 7 | 7 |- | 8 | 1 |- | 9 | 2 |} {| class="wikitable" |+Tabell 2.4 ! Lege-ID ! Type |- | 1 | Spesialist |- | 2 | Prøveansatt |- | 3 | Prøveansatt |- | 4 | Spesialisering |- | 5 | Spesialist |- | 6 | Prøveansatt |- | 7 | Spesialist |- | 8 | Spesialisering |- | 9 | Spesialisering |} == Andre betydninger == Sjette normalform (6NF) brukes noen ganger i stedet som et synonym for [[Domene–nøkkel normalform|domene-nøkkel normalform]] (DKNF). Denne bruken av begrepet stammer fra før Date og kolleger sitt arbeid.{{Sfn|dbdebunk}} == Se også == * [[Databaseteori]] * [[Temporal database]] * [[Ankermodellering]] * [[Datahvelvmodellering]] == Referanser == <references/> {{Databasenormalisering}} {{Datavarehus}} [[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:
Sjette normalform
(
rediger
)
Mal:Databasenormalisering
(
rediger
)
Mal:Datavarehus
(
rediger
)
Mal:Hlist/styles.css
(
rediger
)
Mal:ISOtilNorskdato
(
rediger
)
Mal:Kilde www
(
rediger
)
Mal:Main other
(
rediger
)
Mal:Navboks
(
rediger
)
Mal:Navbox
(
rediger
)
Mal:Sfn
(
rediger
)
Mal:Wayback
(
rediger
)
Modul:Arguments
(
rediger
)
Modul:Check for unknown parameters
(
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:Footnotes
(
rediger
)
Modul:Footnotes/anchor id list
(
rediger
)
Modul:Footnotes/anchor id list/data
(
rediger
)
Modul:Footnotes/whitelist
(
rediger
)
Modul:ISOtilNorskdato
(
rediger
)
Modul:Navbar
(
rediger
)
Modul:Navbar/configuration
(
rediger
)
Modul:Navbar/styles.css
(
rediger
)
Modul:Navboks
(
rediger
)
Modul:Navbox
(
rediger
)
Modul:Navbox/configuration
(
rediger
)
Modul:Navbox/styles.css
(
rediger
)
Modul:TableTools
(
rediger
)
Modul:Wayback
(
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