0% found this document useful (0 votes)
100 views

Normal Form Definitions & Examples From Codd

This document defines and provides examples of different normal forms for database relations including 1NF, 2NF, 3NF and BCNF. It explains the definitions of each normal form and gives examples of relations that satisfy each form as well as examples that do not and need to be decomposed. It also discusses anomalies that can occur when relations are not properly normalized.

Uploaded by

Yogendra Uikey
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
100 views

Normal Form Definitions & Examples From Codd

This document defines and provides examples of different normal forms for database relations including 1NF, 2NF, 3NF and BCNF. It explains the definitions of each normal form and gives examples of relations that satisfy each form as well as examples that do not and need to be decomposed. It also discusses anomalies that can occur when relations are not properly normalized.

Uploaded by

Yogendra Uikey
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 6

6/2/2015

NormalFormDefinitions&Examples

IST210
OrganizationofData
NormalFormDefinitions&Examples
FromCodd&Date

1NFArelationRisinfirstnormalform(1NF)ifandonlyifall
underlyingdomainscontainatomicvaluesonly
Example:1NFbutnot2NF
FIRST(supplier_no,status,city,part_no,quantity)

FunctionalDependencies:
(supplier_no,part_no)quantity
(supplier_no)status
(supplier_no)city
citystatus(Supplier'sstatusisdeterminedbylocation)

Comments:
Nonkeyattributesarenotmutuallyindependent(citystatus).
Nonkeyattributesarenotfullyfunctionallydependentontheprimarykey(i.e.,statusandcityare
dependentonjustpartofthekey,namelysupplier_no).

Anomalies:
INSERT:Wecannotenterthefactthatagivensupplierislocatedinagivencityuntilthatsupplier
suppliesatleastonepart(otherwise,wewouldhavetoenteranullvalueforacolumnparticipatinginthe
primarykeyCaviolationofthedefinitionofarelation).
DELETE:Ifwedeletethelast(only)rowforagivensupplier,welosetheinformationthatthesupplier
islocatedinaparticularcity.
UPDATE:Thecityvalueappearsmanytimesforthesamesupplier.Thiscanleadtoinconsistencyor
theneedtochangemanyvaluesofcityifasuppliermoves.

Decomposition(into2NF):
SECOND(supplier_no,status,city)
http://www2.yk.psu.edu/~lxn/IST_210/normal_form_definitions.html

1/6

6/2/2015

NormalFormDefinitions&Examples

SUPPLIER_PART(supplier_no,part_no,quantity)

2NFArelationRisinsecondnormalform(2NF)ifandonlyifit
isin1NFandeverynonkeyattributeisfullydependentonthe
primarykey
Example(2NFbutnot3NF):
SECOND(supplier_no,status,city)

FunctionalDependencies:
supplier_nostatus
supplier_nocity
citystatus

Comments:
Lacksmutualindependenceamongnonkeyattributes.
Mutualdependenceisreflectedinthetransitivedependencies:supplier_nocity,citystatus.

Anomalies:
INSERT:Wecannotrecordthataparticularcityhasaparticularstatusuntilwehaveasupplierinthat
city.
DELETE:Ifwedeleteasupplierwhichhappenstobethelastrowforagivencityvalue,welosethe
factthatthecityhasthegivenstatus.
UPDATE:Thestatusforagivencityoccursmanytimes,thereforeleadingtomultipleupdatesand
possiblelossofconsistency.

Decomposition(into3NF):
SUPPLIER_CITY(supplier_no,city)
CITY_STATUS(city,status)

3NFArelationRisinthirdnormalform(3NF)ifandonlyifitis
in2NFandeverynonkeyattributeisnontransitivelydependent
http://www2.yk.psu.edu/~lxn/IST_210/normal_form_definitions.html

2/6

6/2/2015

NormalFormDefinitions&Examples

ontheprimarykey.AnattributeCistransitivelydependenton
attributeAifthereexistsanattributeBsuchthat:ABandB
C.Notethat3NFisconcernedwithtransitivedependencieswhich
donotinvolvecandidatekeys.A3NFrelationwithmorethanone
candidatekeywillclearlyhavetransitivedependenciesofthe
form:primary_keyother_candidate_keyany_non
key_column
Analternative(andequivalent)definitionforrelationswithjustonecandidatekey
is:

ArelationRhavingjustonecandidatekeyisinthirdnormal
form(3NF)ifandonlyifthenonkeyattributesofR(ifany)are:
1)mutuallyindependent,and2)fullydependentontheprimary
keyofR.Anonkeyattributeisanycolumnwhichisnotpartof
theprimarykey.Twoormoreattributesaremutually
independentifnoneoftheattributesisfunctionallydependenton
anyoftheothers.AttributeYisfullyfunctionallydependenton
attributeXifXY,butYisnotfunctionallydependentonany
propersubsetofthe(possiblycomposite)attributeX
Forrelationswithjustonecandidatekey,thisisequivalenttothesimpler:

ArelationRhavingjustonecandidatekeyisinthirdnormal
form(3NF)ifandonlyifnononkeycolumn(orgroupof
columns)determinesanothernonkeycolumn(orgroupof
columns)
Example(3NFbutnotBCNF):
SUPPLIER_PART(supplier_no,supplier_name,part_no,quantity)

FunctionalDependencies:
Weassumethatsupplier_name'sarealwaysuniquetoeachsupplier.Thuswehavetwocandidatekeys:
(supplier_no,part_no)and(supplier_name,part_no)
Thuswehavethefollowingdependencies:
http://www2.yk.psu.edu/~lxn/IST_210/normal_form_definitions.html

3/6

6/2/2015

NormalFormDefinitions&Examples

(supplier_no,part_no)quantity
(supplier_no,part_no)supplier_name
(supplier_name,part_no)quantity
(supplier_name,part_no)supplier_no
supplier_namesupplier_no
supplier_nosupplier_name

Comments:
Althoughsupplier_namesupplier_no(andviceversa),supplier_noisnotanonkeycolumnitis
partoftheprimarykey!Hencethisrelationtechnicallysatisfiesthedefinition(s)of3NF(andlikewise
2NF,againbecausesupplier_noisnotanonkeycolumn).

Anomalies:
INSERT:Wecannotrecordthenameofasupplieruntilthatsuppliersuppliesatleastonepart.
DELETE:Ifasuppliertemporarilystopssupplyingandwedeletethelastrowforthatsupplier,welose
thesupplier'sname.
UPDATE:Ifasupplierchangesname,thatchangewillhavetobemadetomultiplerows(wasting
resourcesandriskinglossofconsistency).

Decomposition(intoBCNF):
SUPPLIER_ID(supplier_no,supplier_name)
SUPPLIER_PARTS(supplier_no,part_no,quantity)

BCNFArelationRisinBoyceCoddnormalform(BCNF)if
andonlyifeverydeterminantisacandidatekey
ThedefinitionofBCNFaddressescertain(ratherunlikely)situationswhich3NFdoesnothandle.The
characteristicsofarelationwhichdistinguish3NFfromBCNFaregivenbelow.Sinceitissounlikely
thatarelationwouldhavethesecharacteristics,inpracticalreallifedesignitisusuallythecasethat
relationsin3NFarealsoinBCNF.Thusmanyauthorsmakea"fuzzy"distinctionbetween3NFand
BCNFwhenitcomestogivingadviceon"howfar"tonormalizeadesign.Sincerelationsin3NFbutnot
inBCNFareslightlyunusual,itisabitmoredifficulttocomeupwithmeaningfulexamples.Tobe
precise,thedefinitionof3NFdoesnotdealwitharelationthat:
1. hasmultiplecandidatekeys,where

http://www2.yk.psu.edu/~lxn/IST_210/normal_form_definitions.html

4/6

6/2/2015

NormalFormDefinitions&Examples

2. thosecandidatekeysarecomposite,and
3. thecandidatekeysoverlap(i.e.,haveatleastonecommonattribute)

Example:
Anexampleofarelationin3NFbutnotinBCNF(andexhibitingthethreepropertieslisted)wasgiven
aboveinthediscussionof3NF.ThefollowingrelationisinBCNF(andalsoin3NF):
SUPPLIERS(supplier_no,supplier_name,city,zip)
Weassumethateachsupplierhasauniquesupplier_name,sothatsupplier_noandsupplier_nameare
bothcandidatekeys.

FunctionalDependencies:
supplier_nocity
supplier_nozip
supplier_nosupplier_name
supplier_namecity
supplier_namezip
supplier_namesupplier_no

Comments:
TherelationisinBCNFsincebothdeterminants(supplier_noandsupplier_name)areunique(i.e.,are
candidatekeys).
Therelationisalsoin3NFsinceeventhoughthenonprimarykeycolumnsupplier_namedeterminesthe
nonkeycolumnscityandzip,supplier_nameisacandidatekey.Transitivedependenciesinvolvinga
second(orthird,fourth,etc.)candidatekeyinadditiontotheprimarykeydonotviolate3NF.
NotethatevenrelationsinBCNFcanhaveanomalies.

Anomalies:
INSERT:Wecannotrecordthecityforasupplier_nowithoutalsoknowingthesupplier_name
DELETE:Ifwedeletetherowforagivensupplier_name,welosetheinformationthatthesupplier_no
isassociatedwithagivencity.
UPDATE:Sincesupplier_nameisacandidatekey(unique),therearenone.

Decomposition:
http://www2.yk.psu.edu/~lxn/IST_210/normal_form_definitions.html

5/6

6/2/2015

NormalFormDefinitions&Examples

SUPPLIER_INFO(supplier_no,city,zip)
SUPPLIER_NAME(supplier_no,supplier_name)
LarryNewcomer(UpdatedJanuary06,2000)

http://www2.yk.psu.edu/~lxn/IST_210/normal_form_definitions.html

6/6

You might also like