Normalisering af en database: Første Normalform
Du kan læse indledningen til normalisering på min hovedside om normalisering.
Jeg gennemgår, de første tre normalformer og kommer også lidt ind på Boyce/Codd normalformen. Vi starter med den første normalform.
Første normalform, forkortes ofte som 1. NF.
Definition: En relation er på første normalform, hvis ingen af dens domæner har elementer, der i sig selv er mængder.
– De enkelte felter må kun indeholde én værdi.
– Der må ikke være kolonner som gentager sig.
Hvis vi kigger på den tabel (BIBLIOTEK) som der er linket til nedenfor, kan vi se at der er lavet et system over et bibliotek, hvori man kan se forskellige oplysninger på et udlån. bl.a. hvem der har lånt, hvad personen har lånt, data om bogen og en dato for udlånet.
Man kan hurtigt se at denne tabel ikke overholder første normalform, da der vil opstå nulls, hvis en låner kun låner bogen en gang, og der vil være mangel på felter hvis en låner, låner flere end to bøger.
Derfor bruger vi den løsning som jeg omtalte i min introduktion til normalisering. Vi deler tabellen op.
LAANER:
laanerId | Navn | Gade | Postnr | Bynavn |
101 | Poul | Avej | 8260 | Viby J |
201 | Britt | Bvej | 8000 | Århus |
UDLAAN:
laanerId | bogId | Forfatter | Titel | Forlag | dato |
101 | 1 | Klaus R | Heste | Dyreforlag | 1/1 – 08 |
101 | 2 | Bente F | Grise | Dyreforlag | 1/1 – 08 |
101 | 4 | Jørgen P | Både | Skibsforlag | 1/1 – 08 |
201 | 3 | Bente F | Får | Dyreforlag | 2/1 – 08 |
Nu har vi lavet to tabeller som begge overholder første normalform.
Vi har en tabel over lånerne (LAANER), så de ikke skal indtastes flere gange, men kan identificeres på deres id (laanerId). Derudover har vi lavet en udlånstabel (UDLAAN), hvori man kan skrive alle de lån som bliver foretaget. Så man vil ikke få for mange eller for lidt felter, og derved heller ikke NULL’s.
Denne tabel vil jeg arbejde videre med i anden normalform.
[...] specielle ord som man selv gerne vil ranke på.
Få samme interne linkstruktur som Wikipedia! | 9. juli 2008 | 12:18[…] specielle ord som man selv gerne vil ranke på. I mit tilfælde kunne jeg bruge et ord som ”normalisering” og linke det ord til en af mine artikler om normalisering af […]
[...] å fra formular til database (skrevet 18. februar 2008)
Mit sidste blogindlæg… | 30. december 2008 | 22:17[…] å fra formular til database (skrevet 18. februar 2008) – Mest populære indlæg (sidevisninger): Normalisering af en database: Første Normalform – 1.026 sidevisninger – Mest populære indlæg (kommentarer): Få gratis link til din hjemmeside […]
[...] skriver et indlæg som passer fint til en del
7 gode råd til hvordan du bliver en god bruger på aNyhed | 13. april 2009 | 20:26[…] skriver et indlæg som passer fint til en del af målgruppen her på bloggen, skal vi sige om normalisering af databaser, så er det måske et super indlæg her, men for et helt community, tror jeg ikke det er særlig […]
Hey. Dejligt med en god forklaring af normalformerne! -God gennemgang
Anders | 19. juni 2009 | 15:18Hey. Dejligt med en god forklaring af normalformerne! -God gennemgang på et let-forståeligt niveau.
Et hint: link til de andre normalformer på alle siderne – så siden med forklaring af første normalform, i bunden har link til anden og tredje normalform. Jeg skulle i Google for at lokalisere de andre..
Fedt at høre at du kunne bruge gennemgangen Anders. Jeg synes
Kim Andersen | 19. juni 2009 | 19:58Fedt at høre at du kunne bruge gennemgangen Anders.
Jeg synes da egentlig at jeg allerede havde linket til de andre under hver artikel, men jeg kan da godt se at de ikke er synlige. Det bliver lige rettet til inden for kort tid 🙂
[...] Læs om normalisering: 1. normalform [...]
Normalisering af databaser: Tredje Normalform | 4. januar 2010 | 22:05[…] Læs om normalisering: 1. normalform […]
Hej. Du beskriver først nogle kriterier for 1nf. Herefter beskriver
Nikolaj | 12. december 2011 | 23:27Hej. Du beskriver først nogle kriterier for 1nf. Herefter beskriver du at dit eksempel ikke er i 1nf, da der er nulls i tabellen. Hvad har nulls med din beskrivelse af 1.nf at gøre? Jeg kan desværre ikke se sammenhængen mellem definitionen og løsningen. Derudover, god artikel om de andre normalformer 🙂
Hej Nikolaj. Den tabel jeg refererer til med NULLs er den
Kim Andersen | 14. december 2011 | 08:19Hej Nikolaj.
Den tabel jeg refererer til med NULLs er den jeg linker til i artiklen som hedder TABEL: BIBLIOTEK. I denne tabel er der NULLs bl.a.
Derfor skriver jeg den så om til de to tabeller du kan se i artiklen.
Håber det giver lidt mere mening nu?