SlideShare a Scribd company logo
11
Kap 02 RelasjonsdatabaserKap 02 Relasjonsdatabaser
Tabeller
Dataene i en relasjonsdatabase er plassert i
to-dimensjonale tabeller.
En relasjons-database består av tabeller.
Eksempel på innhold i en database
TablesTables
IndexesIndexes
TriggersTriggers
ViewsViews ProceduresProcedures
RulesRules
DatatypesDatatypes
DefaultsDefaults
Database
Database / Tabell / Rad / Kolonne
5 Nilsen 5002
2 Olsen 6400
1 Hansen 9000
4 Berg 6400
Database
Tabell
Rad
Post
Record
Kolonne
Felt
Hva er en relasjons-database ?
Nr Navn PNr
5 Nilsen 4890
7 Olsen 6400
3 Hansen 4890
8 Karlsen 4890
PNr Sted
4890 Grimstad
5002 Bergen
6400 Molde
En relasjons-database er en database hvor alle dataene er samlet i to-dimensjonale tabeller
og hvor tabellene eventuelt står i en 1:1 eller 1:n relasjon til hverandre.
Tabellene er inndelt i rader (records) og kolonner (felter).
n 1
Viktige fortrinn ved relasjons-database
Reduserer lagring av redundante data.Reduserer lagring av redundante data.
Data kan lett omorganiseres og kombineres i nyeData kan lett omorganiseres og kombineres i nye
relasjoner,relasjoner,
de er ikke låst til faste relasjoner pga måten de er lagretde er ikke låst til faste relasjoner pga måten de er lagret
på.på.
Data kan lett oppdateres i det disse vil bli oppdatertData kan lett oppdateres i det disse vil bli oppdatert
på et minimum antall steder.på et minimum antall steder.
Reduserer behovet for disk-plass.Reduserer behovet for disk-plass.
3 sentrale gjenfinnings-operasjoner
i Codd’s relasjons-algebra
SelectionSelection Ekstraherer alle rader fra en tabell,Ekstraherer alle rader fra en tabell,
hvor radene oppfyller gitte kriterier.hvor radene oppfyller gitte kriterier.
ProjectionProjection Ekstraherer en eller flere kolonner fra en tabell.Ekstraherer en eller flere kolonner fra en tabell.
JoinJoin Ekstraherer kolonner fra flere relaterte tabeller.Ekstraherer kolonner fra flere relaterte tabeller.
Selection Projection Join
Normal-former
n PNr Sted VNr Pris Mg VNr Pris Mg VNr Pris Mg
n 5002 Bergen 8 500 30
n 6400 Molde 1 200 20 3 400 10
en 9000 Tromsø 5 300 50 8 500 40
6400 Molde 1 200 70 3 400 50 5 300
SNr Selger-nummer
Navn Selger-navn
PNr Post-nummer
Sted Post-sted
VNr Vare-nummer
Pris Vare-pris
Mg Vare-mengde
1NF Første normalform
Hver tabell skal ha en fast postlengdeHver tabell skal ha en fast postlengde
Det skal være kun en post-type pr tabellDet skal være kun en post-type pr tabell
Hver post skal ha et eget identifikasjons-feltHver post skal ha et eget identifikasjons-felt
( ID )( ID )
SNr Navn PNr Sted VNr Pris Mg
5 Nilsen 5002 Bergen 8 500 30
2 Olsen 6400 Molde 1 200 20
2 Olsen 6400 Molde 3 400 10
1 Hansen 9000 Tromsø 5 300 50
1 Hansen 9000 Tromsø 8 500 40
4 Berg 6400 Molde 1 200 70
4 Berg 6400 Molde 3 400 50
4 Berg 6400 Molde 5 300 20
2NF Andre normalform
Databasen må være på 1.normalformDatabasen må være på 1.normalform
Deler av ID skal ikke kunne være determinantfelt for andre felt,Deler av ID skal ikke kunne være determinantfelt for andre felt,
dvs deler av ID skal ikke entydig kunne bestemmedvs deler av ID skal ikke entydig kunne bestemme
verdier i et annet feltverdier i et annet felt
SNr Navn PNr Sted
5 Nilsen 5002 Bergen
2 Olsen 6400 Molde
1 Hansen 9000 Tromsø
4 Berg 6400 Molde
VNr Pris
8 500
1 200
3 400
5 300
SNr VNr Mg
5 8 30
2 1 20
2 3 10
1 5 50
1 8 40
4 1 70
4 3 50
4 5 20
3NF Tredje normalform
Databasen må være på 2.normalformDatabasen må være på 2.normalform
Det må ikke eksistere noen funksjonelleDet må ikke eksistere noen funksjonelle
avhengigheter mellom egenskapsfelteneavhengigheter mellom egenskapsfeltene
(felter utenom ID-feltene)(felter utenom ID-feltene)
SNr Navn PNr
5 Nilsen 5002
2 Olsen 6400
1 Hansen 9000
4 Berg 6400
VNr Pris
8 500
1 200
3 400
5 300
SNr VNr Mg
5 8 30
2 1 20
2 3 10
1 5 50
1 8 40
4 1 70
4 3 50
4 5 20
PNr Sted
5002 Bergen
6400 Molde
9000 Tromsø
3NF Tredje normalform
SNr Navn PNr
5 Nilsen 5002
2 Olsen 6400
1 Hansen 9000
4 Berg 6400
VNr Pris
8 500
1 200
3 400
5 300
SNr VNr Mg
5 8 30
2 1 20
2 3 10
1 5 50
1 8 40
4 1 70
4 3 50
4 5 20
PNr Sted
5002 Bergen
6400 Molde
9000 Tromsø
Selger
Adr
Vare
Salg
Modellator- Notasjon
SelgerSelger AdrAdr
Kråkefot
Uten attributter
SelgerSelger AdrAdr Med attributter
SNr
Navn
*PNr
PNr
Sted
Modellator
SelgerSelger AdrAdr Kråkefot
SelgerSelger AdrAdr Gaffel
SelgerSelger AdrAdr Pil
SelgerSelger AdrAdr Pil / Dobbeltpil
SelgerSelger AdrAdr Antall
SelgerSelger AdrAdr Niam-basert
SelgerSelger AdrAdr Kan / Må
0..m
1..1
1:n ( 0…m – 1…1)
1515
SelgerSelger AdrAdr Kråkefot
SelgerSelger AdrAdr Niam-basert
SelgerSelger AdrAdr Pil
1:1 ( 0…1 – 1…1)
1616
SelgerSelger AdrAdr Kråkefot
SelgerSelger AdrAdr Niam-basert
SelgerSelger AdrAdr Pil
Dette vil si at vi kan bare ha en eller
ingen selgere i tabellen
Generell metode for tilordning av
3NF-tabeller (0)
Vi går tilbake til vår opprinnelige Selger-tabell på 1NF form.
Følgende felter er med i denne 1NF-tabellen ( ID er markert med * ).
* SNr Selger-nummer
Navn Selger-navn
PNr Post-nummer
Sted Post-sted
* VNr Vare-nummer
Pris Vare-pris
Mg Vare-mengde
Generell metode for tilordning av
3NF-tabeller (1)
* SNr
Navn
PNr
Sted
* VNr
Pris
Mg
1. Vi tegner inn relasjoner (piler) fra de feltene som entydig bestemmer
verdien i andre felter til disse andre feltene.
Total (1NF)
Generell metode for tilordning av
3NF-tabeller (2)
2. Lag en ny tabell ved å plukke ut alle *-feltene samt alle feltene som er funksjonelt avhengig
av alle disse *-feltene. Denne nye tabellen vil være på 2NF.
* SNr
* VNr
Mg
Salg (2NF)
Generell metode for tilordning av
3NF-tabeller (3)
3. Hvis det i 1NF-tabellen finnes felt som er avhengig av en ekte delmengde av *-feltene,
plukkes disse ut sammen med tilhørende *-felt i egne tabeller.
Disse nye tabellene vil være på 2NF.
* SNr
Navn
PNr
Sted
Selger (2NF)
* VNr
Pris
Vare (2NF)
Generell metode for tilordning av
3NF-tabeller (4)
4. Hvis det i noen av våre 2NF-tabeller ( Salg, Selger, Vare ) finnes ikke-*-felter (ikke ID-felter)
som entydig bestemmer verdier i andre ikke-*-felter, plukkes disse nevnte feltene
ut i egne tabeller. I vårt eksempel gjelder dette tabellen Selger (PNr bestemmer Sted).
Tabellen Selger splittes i to: Tabellene Selger og Adr (Adresse).
Selger-tabellen beholder informasjon om PNr.
ID i disse nye tabellene vil være de feltene som entydig bestemmer
andre felt-verdier. Alle tabellene vil nå være på 3NF.
* SNr
Navn
PNr
Selger (3NF)
* PNr
Sted
Adr (3NF)
Generell metode for tilordning av
3NF-tabeller (5)
Alle våre 4 tabeller ( Selger, Adr, Vare, Salg ) vil nå oppfylle 3NF.
* SNr
Navn
PNr
Selger (3NF)
* PNr
Sted
Adr (3NF)
* SNr
* VNr
Mg
Salg (3NF)
* VNr
Pris
Vare (3NF)
Generell metode for tilordning av
3NF-tabeller (6)
Følgende relasjoner gjelder mellom våre 4 tabeller ( Selger, Adr, Vare, Salg ) vil nå oppfylle 3NF.
* SNr
Navn
PNr
Selger
* PNr
Sted
Adr
* SNr
* VNr
Mg
Salg
* VNr
Pris
Vare

More Related Content

More from Helene Fosse (20)

K12
K12K12
K12
 
K06
K06K06
K06
 
K10
K10K10
K10
 
K07
K07K07
K07
 
K08
K08K08
K08
 
K09
K09K09
K09
 
K11
K11K11
K11
 
K05
K05K05
K05
 
K04
K04K04
K04
 
K01
K01K01
K01
 
Digitalismen
DigitalismenDigitalismen
Digitalismen
 
Postimpresjonismen
PostimpresjonismenPostimpresjonismen
Postimpresjonismen
 
Impresjonismen
ImpresjonismenImpresjonismen
Impresjonismen
 
Romantikk og realisme
Romantikk og realismeRomantikk og realisme
Romantikk og realisme
 
Roma
RomaRoma
Roma
 
Rokokko og klassisisme
Rokokko og klassisismeRokokko og klassisisme
Rokokko og klassisisme
 
Renessansen 2
Renessansen 2Renessansen 2
Renessansen 2
 
Renessansen 1
Renessansen 1Renessansen 1
Renessansen 1
 
Postimpresjonismen
PostimpresjonismenPostimpresjonismen
Postimpresjonismen
 
Oppsummering
OppsummeringOppsummering
Oppsummering
 

K02 (1)

  • 1. 11 Kap 02 RelasjonsdatabaserKap 02 Relasjonsdatabaser
  • 2. Tabeller Dataene i en relasjonsdatabase er plassert i to-dimensjonale tabeller. En relasjons-database består av tabeller.
  • 3. Eksempel på innhold i en database TablesTables IndexesIndexes TriggersTriggers ViewsViews ProceduresProcedures RulesRules DatatypesDatatypes DefaultsDefaults Database
  • 4. Database / Tabell / Rad / Kolonne 5 Nilsen 5002 2 Olsen 6400 1 Hansen 9000 4 Berg 6400 Database Tabell Rad Post Record Kolonne Felt
  • 5. Hva er en relasjons-database ? Nr Navn PNr 5 Nilsen 4890 7 Olsen 6400 3 Hansen 4890 8 Karlsen 4890 PNr Sted 4890 Grimstad 5002 Bergen 6400 Molde En relasjons-database er en database hvor alle dataene er samlet i to-dimensjonale tabeller og hvor tabellene eventuelt står i en 1:1 eller 1:n relasjon til hverandre. Tabellene er inndelt i rader (records) og kolonner (felter). n 1
  • 6. Viktige fortrinn ved relasjons-database Reduserer lagring av redundante data.Reduserer lagring av redundante data. Data kan lett omorganiseres og kombineres i nyeData kan lett omorganiseres og kombineres i nye relasjoner,relasjoner, de er ikke låst til faste relasjoner pga måten de er lagretde er ikke låst til faste relasjoner pga måten de er lagret på.på. Data kan lett oppdateres i det disse vil bli oppdatertData kan lett oppdateres i det disse vil bli oppdatert på et minimum antall steder.på et minimum antall steder. Reduserer behovet for disk-plass.Reduserer behovet for disk-plass.
  • 7. 3 sentrale gjenfinnings-operasjoner i Codd’s relasjons-algebra SelectionSelection Ekstraherer alle rader fra en tabell,Ekstraherer alle rader fra en tabell, hvor radene oppfyller gitte kriterier.hvor radene oppfyller gitte kriterier. ProjectionProjection Ekstraherer en eller flere kolonner fra en tabell.Ekstraherer en eller flere kolonner fra en tabell. JoinJoin Ekstraherer kolonner fra flere relaterte tabeller.Ekstraherer kolonner fra flere relaterte tabeller. Selection Projection Join
  • 8. Normal-former n PNr Sted VNr Pris Mg VNr Pris Mg VNr Pris Mg n 5002 Bergen 8 500 30 n 6400 Molde 1 200 20 3 400 10 en 9000 Tromsø 5 300 50 8 500 40 6400 Molde 1 200 70 3 400 50 5 300 SNr Selger-nummer Navn Selger-navn PNr Post-nummer Sted Post-sted VNr Vare-nummer Pris Vare-pris Mg Vare-mengde
  • 9. 1NF Første normalform Hver tabell skal ha en fast postlengdeHver tabell skal ha en fast postlengde Det skal være kun en post-type pr tabellDet skal være kun en post-type pr tabell Hver post skal ha et eget identifikasjons-feltHver post skal ha et eget identifikasjons-felt ( ID )( ID ) SNr Navn PNr Sted VNr Pris Mg 5 Nilsen 5002 Bergen 8 500 30 2 Olsen 6400 Molde 1 200 20 2 Olsen 6400 Molde 3 400 10 1 Hansen 9000 Tromsø 5 300 50 1 Hansen 9000 Tromsø 8 500 40 4 Berg 6400 Molde 1 200 70 4 Berg 6400 Molde 3 400 50 4 Berg 6400 Molde 5 300 20
  • 10. 2NF Andre normalform Databasen må være på 1.normalformDatabasen må være på 1.normalform Deler av ID skal ikke kunne være determinantfelt for andre felt,Deler av ID skal ikke kunne være determinantfelt for andre felt, dvs deler av ID skal ikke entydig kunne bestemmedvs deler av ID skal ikke entydig kunne bestemme verdier i et annet feltverdier i et annet felt SNr Navn PNr Sted 5 Nilsen 5002 Bergen 2 Olsen 6400 Molde 1 Hansen 9000 Tromsø 4 Berg 6400 Molde VNr Pris 8 500 1 200 3 400 5 300 SNr VNr Mg 5 8 30 2 1 20 2 3 10 1 5 50 1 8 40 4 1 70 4 3 50 4 5 20
  • 11. 3NF Tredje normalform Databasen må være på 2.normalformDatabasen må være på 2.normalform Det må ikke eksistere noen funksjonelleDet må ikke eksistere noen funksjonelle avhengigheter mellom egenskapsfelteneavhengigheter mellom egenskapsfeltene (felter utenom ID-feltene)(felter utenom ID-feltene) SNr Navn PNr 5 Nilsen 5002 2 Olsen 6400 1 Hansen 9000 4 Berg 6400 VNr Pris 8 500 1 200 3 400 5 300 SNr VNr Mg 5 8 30 2 1 20 2 3 10 1 5 50 1 8 40 4 1 70 4 3 50 4 5 20 PNr Sted 5002 Bergen 6400 Molde 9000 Tromsø
  • 12. 3NF Tredje normalform SNr Navn PNr 5 Nilsen 5002 2 Olsen 6400 1 Hansen 9000 4 Berg 6400 VNr Pris 8 500 1 200 3 400 5 300 SNr VNr Mg 5 8 30 2 1 20 2 3 10 1 5 50 1 8 40 4 1 70 4 3 50 4 5 20 PNr Sted 5002 Bergen 6400 Molde 9000 Tromsø Selger Adr Vare Salg
  • 13. Modellator- Notasjon SelgerSelger AdrAdr Kråkefot Uten attributter SelgerSelger AdrAdr Med attributter SNr Navn *PNr PNr Sted
  • 14. Modellator SelgerSelger AdrAdr Kråkefot SelgerSelger AdrAdr Gaffel SelgerSelger AdrAdr Pil SelgerSelger AdrAdr Pil / Dobbeltpil SelgerSelger AdrAdr Antall SelgerSelger AdrAdr Niam-basert SelgerSelger AdrAdr Kan / Må 0..m 1..1
  • 15. 1:n ( 0…m – 1…1) 1515 SelgerSelger AdrAdr Kråkefot SelgerSelger AdrAdr Niam-basert SelgerSelger AdrAdr Pil
  • 16. 1:1 ( 0…1 – 1…1) 1616 SelgerSelger AdrAdr Kråkefot SelgerSelger AdrAdr Niam-basert SelgerSelger AdrAdr Pil Dette vil si at vi kan bare ha en eller ingen selgere i tabellen
  • 17. Generell metode for tilordning av 3NF-tabeller (0) Vi går tilbake til vår opprinnelige Selger-tabell på 1NF form. Følgende felter er med i denne 1NF-tabellen ( ID er markert med * ). * SNr Selger-nummer Navn Selger-navn PNr Post-nummer Sted Post-sted * VNr Vare-nummer Pris Vare-pris Mg Vare-mengde
  • 18. Generell metode for tilordning av 3NF-tabeller (1) * SNr Navn PNr Sted * VNr Pris Mg 1. Vi tegner inn relasjoner (piler) fra de feltene som entydig bestemmer verdien i andre felter til disse andre feltene. Total (1NF)
  • 19. Generell metode for tilordning av 3NF-tabeller (2) 2. Lag en ny tabell ved å plukke ut alle *-feltene samt alle feltene som er funksjonelt avhengig av alle disse *-feltene. Denne nye tabellen vil være på 2NF. * SNr * VNr Mg Salg (2NF)
  • 20. Generell metode for tilordning av 3NF-tabeller (3) 3. Hvis det i 1NF-tabellen finnes felt som er avhengig av en ekte delmengde av *-feltene, plukkes disse ut sammen med tilhørende *-felt i egne tabeller. Disse nye tabellene vil være på 2NF. * SNr Navn PNr Sted Selger (2NF) * VNr Pris Vare (2NF)
  • 21. Generell metode for tilordning av 3NF-tabeller (4) 4. Hvis det i noen av våre 2NF-tabeller ( Salg, Selger, Vare ) finnes ikke-*-felter (ikke ID-felter) som entydig bestemmer verdier i andre ikke-*-felter, plukkes disse nevnte feltene ut i egne tabeller. I vårt eksempel gjelder dette tabellen Selger (PNr bestemmer Sted). Tabellen Selger splittes i to: Tabellene Selger og Adr (Adresse). Selger-tabellen beholder informasjon om PNr. ID i disse nye tabellene vil være de feltene som entydig bestemmer andre felt-verdier. Alle tabellene vil nå være på 3NF. * SNr Navn PNr Selger (3NF) * PNr Sted Adr (3NF)
  • 22. Generell metode for tilordning av 3NF-tabeller (5) Alle våre 4 tabeller ( Selger, Adr, Vare, Salg ) vil nå oppfylle 3NF. * SNr Navn PNr Selger (3NF) * PNr Sted Adr (3NF) * SNr * VNr Mg Salg (3NF) * VNr Pris Vare (3NF)
  • 23. Generell metode for tilordning av 3NF-tabeller (6) Følgende relasjoner gjelder mellom våre 4 tabeller ( Selger, Adr, Vare, Salg ) vil nå oppfylle 3NF. * SNr Navn PNr Selger * PNr Sted Adr * SNr * VNr Mg Salg * VNr Pris Vare

Editor's Notes

  1. I dette kapitlet skal vi benytte kunnskapene våre fra de foregående kapitlene til å utarbeide ulike diskrete sannsynlighetsmodeller.For en gitt oppgave vil det da kunne være hensiktsmessig å finne ut om betingelsene er oppfylt for å kunne benytte en eller flere av disse modellene med tilhørende ferdige utarbeidede metoder.Simuleringer knyttet til dette kapitlet finner du her.
  2. Definering av begrepet tabell.
  3. La oss se litt nærmere på selve databasen der dataene ligger lagret. I en relasjons-database ligger alle dataene lagret i såkalte tabeller. Dette er to-dimensjonale arrays bestående av rader og kolonner. Views:Virtuelle tabeller. Dataene kan være deler av tabell-data eller en sammenslåing av data fra flere relaterte tabeller. Indexes:Hjelpetabeller for raskere oppslag i tabeller. Procedures:Ferdigkompilerte sekvenser av SQL-statement. Triggers:Ferdigkompilerte rutiner som eksekveres under gitte forutsetninger. Rules:Regler for kolonne-verdier (eks: Datoer skal være innen 1-31. Datatypes:Opplysninger om datatyper i de enkelte kolonner (eks: Number) Defaults:Kolonne-verdier hvis ingenting annet er spesifisert (eks: Dagens dato hvis ingenting annet er spesifisert)
  4. En del viktige begrep: - Database - Tabell - Rad / Post / Record - Kolonne / Felt
  5. Eksempel på to tabeller Person og Adr som det eksisterer en relasjon mellom. Relasjonen er innebygget i tabellen Person (kolonnen PNr). Relasjonen kalles en 1:n (leses: en til n relasjon), fordi det til hver rad (post) i tabellen Adr finnes 0, 1 eller flere rader (poster) i tabellen Person. Omvendt vil det til hver rad (post) i tabellen Person finnes nøyaktig en rad (post) i tabellen Adr.
  6. Noen hovedgrunner til at relasjons-database idag er en standard blant ulike database-typer.
  7. Gjenfinnings-operasjoner i relasjons-databaser.
  8. Her har vi startet med en stor tabell hvor vi har samlet opplysninger om hver enkelt selger og de varer som denne selgeren har solgt. Tabell-formen inneholder flere svakheter: - Et varierende antall kolonner for hver enkelt selger - Datadublering Eks: 6400 Molde er gjentatt flere ganger Vareprisen på vare nr 8 er gjentatt flere ganger - Vanskelig å programmere gjenfinning og oppdatering i tabellen.
  9. Tabellen fra foregående side er endret slik at samtlige rader (records) har samme antall kolonner. Tabellen sies å være på såkalt første normalform (1NF) når de tre kravene nevnt ovenfor er oppfylt. I vår selger-tabell vist ovenfor er disse tre kravene oppfylt. SNr og VNr utgjør tilsammen ID. Ulemper: - Opplysninger om hver enkelt selger må gjentas flere ganger, en gang for hver vare denne selgeren selger. - Fortsatt datadublering.
  10. En tabell sies å være på såkalt andre normalform (2NF) når de to kravene nevnt ovenfor er oppfylt. Tabellen vist på foregående side oppfyller ikke 2NF. Hvis vi derimot splitter tabellen i tre slik som vist ovenfor, så vil hver enkelt av disse tre tabellene være på 2NF. Vi skal seinere gå nærmere inn på hvordan en slik oppsplitting gjøres. Vi har fortsatt en del ulemper med tabellene ovenfor selv om disse oppfyller 2NF, nemlig datadublering ved at sammenhengen mellom PNr (PostNumer) og Sted er nevnt flere ganger (6400 Molde er nevnt to ganger).
  11. En tabell sies å være på såkalt tredje normalform (3NF) når de to kravene nevnt ovenfor er oppfylt. Tabellen Selger vist på foregående side oppfyller ikke 3NF. Hvis vi derimot splitter tabellen i to (Selger og Adr) slik som vist ovenfor, så vil hver enkelt av disse tabellene være på 3NF. Det finnes flere normalformer enn de tre vi til nå har nevnt, men vi skal ikke gå nærmere inn på disse her.
  12. Vår opprinnelige selger-tabell er blitt splittet i fire deler. Hver av de fire tabellene oppfyller 3NF. Mellom disse tabellene eksisterer det tre 1:n relasjoner.
  13. I Modellator kan relasjoner tegnes på ulike vis. Ovenfor vises 1:n relasjon ved hjelp av såkalte kråkeføtter. Tabellene er vist med og uten attributter.
  14. Ulike representasjoner av 1:n relasjoner i Modellator.
  15. Vi skal se litt nærmere på en metode for å transformere en 1NF tabell via 2NF over til 3NF. Vi starter med vår 1NF selger-tabell. Denne tabellen består av 7 kolonner. To av kolonnene, SNr og VNr danner til sammen ID (markert med *)
  16. Vi tegner inn relasjoner (vha piler) fra de feltene som entydig bestememer verdien i andre felter.
  17. Lag en ny tabell ved å plukke ut alle *-feltene samt alle feltene som er funksjonelt avhengig av disse *-feltene. Denne nye tabellen vil være på 2NF.
  18. Hvis det i 1NF tabellene finnes felt som er avhengig av en ekte delmengde av *-feltene, plukkes disse ut sammen med tilhørende *-felt i egne tabeller. Disse nye tabellene vil være på 2NF.
  19. Hvis det i noen av våre 2NF-tabeller (Salg, Selger, Vare) finnes ikke-*-felter (ikke ID-felter) som entydig bestemmer verdier i andre ikke-*-felter, plukkes disse nevnte feltene ut i egne tabeller. I vårt eksempel gjelder dette tabellene Selger(PNr bestemmer Sted). Tabellen Selger splittes i to: Tabellene Selger og Adr (Adresse). Selger-tabellen beholder informsjonen PNr. ID i disse nye tabellene vil være de feltene som entydig bestemmer andre felt-verdier. Alle tabellene vil nå være på 3NF.
  20. Alle våre 4 tabeller (Selger, Adr, Vare, Salg) vil nå oppfylle 3NF.
  21. Figuren viser relasjonene mellom de 4 3NF-tabellene Selger, Adr, Vare, Salg. Relasjons-informasjonen er inneholdt i tabellene slik at pilene (som skal illustrere relasjonene) ikke inneholder noen ny informasjon.