3. normalization - walailak universitymit.wu.ac.th/mit/images/editor/images/dbs 2558...
TRANSCRIPT
Connolly, Thomas and Begg, Carolyn. 2010. Database Systems: A Practical Approach to Design, Implementation, and Management. 5th Ed. Pearson Education. ดร. สลลิ บญุพรหมณ์ สํานักวชิาสารสนเทศศาสตร ์
3. Normalization
ITM-661 ระบบฐานขอ้มลู (Database system)
2
"...คนเราถา้พอในความตอ้งการก็มคีวามโลภนอ้ย เมือ่มคีวามโลภ
นอ้ยก็เบยีดเบยีนคนอืน่นอ้ย ถา้ทกุประเทศมคีวามคดิ คดิ-อนันี้
ไมใ่ชเ่ศรษฐกจิ มคีวามคดิวา่ทําอะไรตอ้งพอเพยีง หมายความ
วา่ พอประมาณ ไมส่ดุโตง่ ไมโ่ลภอยา่งมาก คนเราก็อยูเ่ป็นสขุ
..."
� àcàĉ��fĉààćåè � àcc ĉĉćå���ë� àc�ë�ĉĉæa�ē àćä � àcàĉ�ĉĉè �è c�ĉæåè �ĉæ ĉććàè �đ� âå � àc�è å � ààà ĉä �ä āĉ�ĉ�cćâ�ĉ� àæ ä ććè ëâċà��ĉä � àcàĉ�ćàæ�cćâċ
f ä �àè ćĉ� å ä fi fff
Objectives
Th�äpurpos�äofänormælizætion.ä Howänormælizætionäcænäb�äus�däwh�näd�signingäæär�lætionælä
dætæbæs�. Th�äpot�ntiæläprobl�msäæssociæt�däwithär�dundæntädætæäinä
bæs�är�lætions. Th�äconc�ptäofäfunctionæläd�p�nd�ncy,äwhichäd�scrib�säth�ä
r�lætionshipäb�tw��näættribut�s. Th�ächæræct�risticsäofäfunctionæläd�p�nd�nci�säus�däinä
normalization.
3
Objectives
Howätoäid�ntifyäfunctionæläd�p�nd�nci�säforäæägiv�när�lætion. Howäfunctionæläd�p�nd�nci�säid�ntifyäth�äprimæryäk�yäforäæä
r�lætion. Howätoäund�rtæk�äth�äproc�ssäofänormælizætion. Howänormælizætionäus�säfunctionæläd�p�nd�nci�sätoägroupä
ættribut�säintoär�lætionsäthætäær�äinäæäknownänormæläform.
4
Obj�ctiv�s
Howätoäid�ntifyäth�ämostäcommonlyäus�dänormæläforms,änæm�lyäFirstäNormæläFormä(1NF),äS�condäNormæläFormä(2NF),äændäThirdäNormæläFormä(3NF).
Th�äprobl�msäæssociæt�däwithär�lætionsäthætäbr�ækäth�ärul�säofää1NF,ä2NF,äorä3NF.
Howätoär�pr�s�ntäættribut�säshownäonäæäformäæsä3NFär�lætionsäusingänormælizætion.
5
Purpos�äofäNormælizætion
Normælizætionäisäæät�chniqu�äforäproducingäæäs�täofäsuitæbl�är�lætionsäthætäsupportäth�ädætæär�quir�m�ntsäofäænä�nt�rpris�.
Chæræct�risticsäofäæäsuitæbl�äs�täofär�lætions includ�:ä Th�äminimal number of attributes n�c�ssæryätoäsupportäth�ädætæär�quir�m�ntsäofäth�ä�nt�rpris�;
ættribut�säwithäæäclos�älogicælär�lætionshipäær�äfoundäinäth�äsæm�är�lætion;
minimal redundancy withä�æchäættribut�är�pr�s�nt�däonlyäonc�äwithäth�äimportæntä�xc�ptionäofäættribut�säthætäformäælläoräpærtäofäfor�ignäk�ys.
6
7
Th�äb�n�fitsäofäusingäæädætæbæs�äthætähæsäæäsuitæbl�äs�täofär�lætionsäisäthætäth�ädætæbæs�äwilläb�: �æsi�räforäth�äus�rätoäæcc�ssäændämæintæinäth�ädætæ; tæk�äupäminimælästoræg�äspæc�äonäth�äcomput�r.ä
8
Mæjoräæimäofär�lætionælädætæbæs�äd�signäisätoägroupäættribut�säintoär�lætionsätoäminimiz�ädætæär�dundæncy.ä
Pot�ntiæläb�n�fitsäforäimpl�m�nt�dädætæbæs�äinclud�:
Updates toäth�ädætæästor�däinäth�ädætæbæs�äær�äæchi�v�däwith a minimal number of operations thusär�ducingäth�äopportuniti�säforädætæäinconsist�nci�s.
Reduction in the file storage space r�quir�däbyäth�äbæs�är�lætionsäthusäminimizingäcosts.ä
Probl�msäæssociæt�däwithädætæär�dundæncyäær�äillustræt�däbyäcompæringäth�äStæffäændäBrænchär�lætionsäwithäth�äStæffBrænch r�lætion
Data R�dundæncyäændäUpdæt�äAnomæli�s
9
StaffBranch relation hæsär�dundæntädætæ;ääth�äd�tæilsäofäæäbrænchäær�är�p�æt�däforä�v�ryäm�mb�räofästæff.
10
Inäcontræst,äth�äbrænchäinformætionäæpp�ærsäonlyäonc�äforä�æchäbrænchäinäth�äBranch relation ændäonlyäth�äbrænchänumb�rä(brænchNo)äisär�p�æt�däinäth�äStaff relation,ätoär�pr�s�ntäwh�r�ä�æchäm�mb�räofästæffäisälocæt�d.
11
R�lætionsäthætäcontæinär�dundæntäinformætionämæyäpot�ntiællyäsuff�räfromäupdæt�äænomæli�s.ää
Typ�säofäupdæt�äænomæli�säinclud� Ins�rtion D�l�tion Modificætion
12
Functionæl D�p�nd�nci�s (FD)
Importæntäconc�ptäæssociæt�däwithänormælizætion. Functionæläd�p�nd�ncyäd�scrib�sär�lætionshipäb�tw��nä
ættribut�s.
Forä�xæmpl�,äifäAäændäBäær�äættribut�säofär�lætionäR,äBäisäfunctionællyäd�p�nd�ntäonäA
(denoted A → B), ifä�æchävælu�äofäAäinäRäisäæssociæt�däwithä�xæctlyäon�ävælu�äofäB in R.
13
� c�ćå c àċâċ ĉæ FD
Prop�rtyäofäth�äm�æningäoräs�mænticsäofäth�äættribut�säinäæär�lætion.
Diægræmmæticär�pr�s�ntætion.
Th�ädeterminant ofäæäfunctionæläd�p�nd�ncyär�f�rsätoäth�äættribut�äorägroupäofäættribut�säonäth�äl�ft-hændäsid�äofäth�äarrow.
ċàćĉæ�ĉæ 14
15
Consid�räth�ävælu�säshownäinästæffNo ændäsNæm� ættribut�säofäth�äStæffär�lætionää
Bæs�däonäsample data,äth�äfollowingäfunctionæläd�p�nd�nci�sä
æpp�ærätoähold. stæffNo → sNæm� sNæm� → stæffNo
Exæmpl�äFDäthætäholdsäforäællätim�
16
How�v�r,äth�äonlyäfunctionæläd�p�nd�ncyäthætär�mæinsätrue for all possible values foräth�ästæffNo ændäsNæm� ættribut�säofäth�äStæffär�lætionäis: stæffNo → sNæm�
17
ตวัอยา่ง
การเป็นทีป่รกึษา (รหสั, ชือ่, นามสกลุ, GPAX, หลกัสตูร, รหสัอาจารย,์ ชือ่อาจารย,์ หอ้งทํางาน, โทรศพัท)์
18
æ ĉà�ċ çæè FD
SSNä ENAME PNUMBERä PNAME,äPLOCATION SSNä+äPNUMBERä HOURS
SSN PNUMBER HOURS ENAME PNAME PLOCATION
EMP_PROJ (SSN, PNUMBER, HOURS, ENAME, PNAME, PLOCATION)
แบบท่ี 1
แบบท่ี 2
19
D�t�rminæntsäshouldähæv�äth�äminimælänumb�räofäættribut�sän�c�ssæryätoämæintæinäth�äfunctionæläd�p�nd�ncyäwithäth�äættribut�(s)äonäth�ärightähænd-sid�.ä
Thisär�quir�m�ntäisäcæll�däfull functional dependency.
20
Full functional dependency indicæt�säthætä
ifäAäændäBäær�äættribut�säofäæär�lætion,ä
Bäisäfullyäfunctionællyäd�p�nd�ntäonäA,äifäBäisäfunctionællyäd�p�nd�ntäonäA,äbut not on any proper subset of A.
21
หรอื
Aäfunctionæläd�p�nd�ncyäxä⇒ yäisäpartial dependency if
th�r�äisäsom�äattribute A ∈ X that can be removed fromäXäændäd�p�nd�ncyäwillästillähold.
Thætäisä ∃ A,äAä∈ Xä,ä(Xä- {A})ä⇒ Y
22
ตวัอยา่ง
Existsäinäth�äStæffär�lætion
stæffNo,äsNæm� → brænchNo
Tru�ä- �æchävælu�äofä(stæffNo,äsNæm�)äisäæssociæt�däwithäæäsingl�ävælu�äofäbrænchNo.
How�v�r,äbrænchNo isäælsoäfunctionællyäd�p�nd�ntäonäæäsubs�täofä(stæffNo,äsNæm�), næm�lyästaffNo.
Exæmpl�äæbov�äisäæäpartial dependency.
23
Mæinächæræct�risticsäofäFDäus�däinänormælizætion: Th�r�äisäæäone-to-one r�lætionshipäb�tw��näth�äættribut�(s)äonäth�äl�ft-hændäsid�ä(d�t�rminænt)äændäthos�äonäth�äright-hændäsid�äofäæäfunctionæläd�p�nd�ncy.ä
Holdsäforäall tim�.
Th�äd�t�rminæntähæsäth�äminimal numb�räofäættribut�sän�c�ssæryätoämæintæinäth�äd�p�nd�ncyäwithäth�äættribut�(s)äonäth�ärightähænd-sid�.ä
24
คําแนะนํา
ในตารางทีม่ ีattribute จํานวนมาก การหา FD จะยากขึน้ รวมทัง้การเขยีน FD จะดยูากจงึใหใ้ชก้ารเขยีนแบบที ่2 เพราะพจิารณางา่ยกวา่ ไมส่บัสน
25
Id�ntifyingäFunctionæläD�p�nd�nci�sä
Id�ntifyingäælläFDäb�tw��näæäs�täofäættribut�säisär�lætiv�lyäsimpl�äifäth�äm�æningäofä�æchäættribut�äændäth�är�lætionshipsäb�tw��näth�äættribut�säær�äw�lläund�rstood.
Thisäinformætionäshouldäb�äprovid�däbyäth�ä�nt�rpris�äinä
th�äformäofädiscussionsäwithäus�rsäænd/orädocum�ntætionäsuchäæsäth�äus�rs’är�quir�m�ntsäsp�cificætion.ä
26
Id�ntifyingäFunctionæläD�p�nd�nci�sä(ċ�ĉ)
ifä th�äus�rsäær�äunævæilæbl�äforäconsultætionäænd/or th�ädocum�ntætionäisäincompl�t�ä
th�nä d�p�ndingäonäth�ädætæbæs�äæpplicætionäitämæyäb�än�c�ssæryäforäth�ädætæbæs�äd�sign�rätoäus�äth�iräcommonäs�ns�äænd/orä�xp�ri�nc� toäprovid�äth�ämissingäinformætion.ä
27
สรปุการเขยีน FD
ขอ้มูลจากเอกสารที่รวบรวมมาเพื่อออกแบบฐานขอ้มูลว่าประกอบไปดว้ยขอ้มูลอะไร และขอ้มูลสัมพันธ์กันหรือไม ่อยา่งไร
ผูใ้ช(้user)บอกใหท้ราบ ประสบการณ์หรอืวจิารณญาณของผูอ้อกแบบ สามัญสํานกึของผูอ้อกแบบ บางครัง้เราสามารถระบไุดเ้พราะ
เป็นความสัมพันธท์ี ่“ใครๆก็รู”้ เชน่ หมายเลขโทรศัพทท์ีใ่ช ้ตดิตอ่ลกูคา้ยอ่มซํ้าได ้
28
ตวัอยา่ง
Exæmin�äs�mænticsäofäættribut�säinäStæffBrænch r�lætion.ä Assum�äthætäpositionäh�ldäændäbrænchäd�t�rmin�äæäm�mb�räofä
stæff’säsælæry.ä
29
FDäċ ĉæ StæffBrænch r�lætionä� cĉ stæffNo → sNæm�,äposition,äsælæry,äbrænchNo,äbAddr�ss brænchNo → bAddr�ss bAddr�ss → brænchNo brænchNo,äpositionä→ sælæry bAddr�ss,äpositionä→ sælæry
30
Id�ntifyingäth�äPKäforäæäR�lætionäusingäFD
Mæinäpurpos�äofäid�ntifyingäæäs�täofäFDäforäæär�lætionäisätoäsp�cifyäthe set of integrity constraints thætämustäholdäonäæär�lætion.
Anäimportæntäint�grityäconstræintätoäconsid�räfirstäisäth�äid�ntificætionäofäcændidæt�äk�ys,äon�äofäwhichäisäs�l�ct�dätoäb�äth�äprimæryäk�yäforäth�är�lætion.ä
31
StæffBrænch r�lætionähæsä5 FD stæffNo → sNæm�,äposition,äsælæry,äbrænchNo,äbAddr�ss brænchNo → bAddr�ss bAddr�ss → brænchNo brænchNo,äpositionä→ sælæry bAddr�ss,äpositionä→ sælæry
Th�äd�t�rminæntsäær�ästæffNo,äbrænchNo,äbAddr�ss,ä(brænchNo,ä
position),äændä(bAddr�ss,äposition).
32
Toäid�ntifyäælläcændidæt�äk�y(s),äid�ntifyäth�äættribut�ä(orägroupäofäættribut�s)äthætäuniqu�lyäid�ntifi�sä�æchätupl� inäthisär�lætion.
Alläættribut�säthætäær�änotäpærtäofäæäcændidæt�äk�yäshouldäb�äfunctionællyäd�p�nd�ntäonäth�äk�y.
Th�äonlyäcændidæt�äk�yäændäth�r�for�äprimæryäk�y foräStæffBrænch r�lætion,äisästæffNo,äæsäall oth�räættribut�s ofäth�är�lætionäær�äfunctionællyäd�p�nd�ntäonästæffNo.
33
คําแนะนํา
FD ใชใ้นการทํา normalization ตัง้แตร่ะดับที ่2 เป็นตน้ไป และในการทํา normalization แตล่ะระดับจะมีประเด็นที่ตอ้งตรวจความเกี่ยวขอ้งของ attribute ตา่งกนั
ดังนัน้จงึไมค่วรรบีเขยีน FD ในทกุประเด็นเพราะจํานวน attribute ยังมจํีานวนมากอยู ่ใหแ้สดงเฉพาะประเด็นทีใ่ชใ้นการทํา normalization นัน้ๆ
34
� fĉĉè cè fĉ
ตรวจสอบจํานวน attribute ใน FD วา่ตอ้งไมต่กหลน่จากตารางทีต่รวจสอบอยู ่ยิง่ตรวจสอบเราจะไดต้ารางเพิม่ขึน้ และขนาดตารางจะเล็กลง
ในการเขยีน FD ไมค่วรเขยีน non-key attribute ซํ้ากบั FD อืน่โดยไมเ่กดิประโยชน ์เพราะจะทําใหส้บัสนโดยไม่จําเป็น
35
3. Normalization
Normælizætionäisäæät�chniqu�äforäproducingäæäs�täofäsuitæbl�är�lætionsäthætäsupportäth�ädætæär�quir�m�ntsäofäænä�nt�rpris�.
Asänormælizætionäproc��ds,äth�är�lætionsäb�com�äprogr�ssiv�lyämor�är�strict�dä(strong�r)äinäformætäændäælsoäl�ssävuln�ræbl�ätoäupdæt�äænomæli�s.
36
Th�äProc�ssäofäNormælizætion
Formælät�chniqu�äforäænælyzingäæär�lætionäbæs�däonäitsäprimæryäk�yäændäth�äfunctionæläd�p�nd�nci�säb�tw��näth�äættribut�säofäthætär�lætion.
Oft�nä�x�cut�däæsäæäs�ri�säofäst�ps.ääEæchäst�päcorr�spondsätoäæäsp�cificänormæläform,äwhichähæsäknownäprop�rti�s.
37
Th�äProc�ssäofäNormælizætion
38
39
Unnormæliz�d Formä(UNF)
Aätæbl�äthætäcontæinsäon�äorämor�är�p�ætingägroups. Toäcr�æt�äænäunnormæliz�d tæbl�ä
Trænsformäth�ädætæäfromäth�äinformætionäsourc�ä(�.g.äform)äintoätæbl�äformætäwithäcolumnsäændärows.
40
41
4.äFirstäNormæläFormä(1NF)ä
Aär�lætionäisäsæidätoäb�äinäth�äfirstänormæläformäifäitäcontæinsäno repeating group.
Aätæbl�äinäwhichäth�äint�rs�ctionäofä�v�ryäcolumnäændär�cordäcontæinsäonlyäon�ävælu�.
42
ถา้ตารางนัน้ไมม่กีารเก็บขอ้มลูมากกวา่ 1 ชดุ (repeating group) หรอืขอ้มลูทีเ่ก็บมคีา่เพยีงคา่เดยีว (single value) หรอื
ถา้ในทกุชอ่ง (intersection คอืจดุทีแ่ถวกบัคอลัมนต์ัดกนั อาจเรยีกวา่ cell หรอืชอ่ง) เก็บขอ้มลูเพยีงคา่เดยีว
43
44
UNFätoä1NF
Nominate an attribute orägroupäofäættribut�sätoäæctäas the key foräth�äunnormæliz�d tæbl�.
Id�ntifyäth�är�p�ætingägroup(s)äinäth�äunnormæliz�d tæbl�äwhichär�p�ætsäforäth�äk�yäættribut�(s).
45
æ ĉàĉ� �æä UNFä���è 1NF
Remove the repeating group by Ent�ringäæppropriæt�ädætæäintoäth�ä�mptyäcolumnsäofärowsäcontæiningäth�är�p�ætingädætæä(‘flætt�ning’ th�ätæbl�).
Oräby Plæcingäth�är�p�ætingädætæäælongäwithäæäcopyäofäth�äoriginæläk�yäættribut�(s)äintoäæäs�pæræt�är�lætion.
46
ċàćĉæ�ĉæ
�ĉæ� âëĉà�ĉċĉàĉæè ç�ć�ĉå ç� c�ćå c àċâä Firstänormæläformäē àcĉæå �
47
ĉææ � �ĉĉç��f�ĉĉĉæ ���è ĉðćē àcĉä tuple åē å ��c�æ� �ĉç�æ��� cĉ
48
จากการแยกแถวใหมนั่น้จะทําใหใ้นบางเซลยงัไมม่ขีอ้มลู จงึตอ้งเตมิขอ้มลูใหค้รบถว้น การทําแบบนีเ้รยีกวา่การทํา table flattening
49
แตจ่ะพบวา่ Primary key เดมินัน้ไมส่ามารถใชไ้ดอ้กีตอ่ไป เพราะไมม่คีณุสมบตั ิUniqueness หรอืคา่ทีไ่มซ่ํา้ จงึตอ้งพจิารณา Key ใหม ่ในทีน่ีจ้ะใช ้SID มาเป็น key
50
ëcææ��ċĉàĉæćc�ĉ�ĉæĉç�å ç� c�ćå c àċâċ ĉæ 1NFäĉç��ċ çæè æ�����è
51
ตวัอยา่ง จงตรวจสอบและแกไ้ขตาราง Enrolment ใหม้คีณุสมบตั ิ1NF
52
ċĉàĉæ Enrollm�ntäè ç�æå �å ç� c�ćå c àċâċ ĉæä 1NF
53
การแกไ้ขเพือ่ทําให ้relation นีม้คีณุสมบตั ิ1NF ทําไดโ้ดยการแยกคา่ทีม่ีมากกวา่ 1 คา่นัน้ออกมาเป็นแตล่ะ tuple หรอืแยกออกมาเป็นคา่ในแถวยอ่ยๆ และตอ้งเตมิคา่ในแถวใหค้รบ
54
เมือ่แกไ้ขแลว้จะเห็นวา่ Course_ID ซึง่เป็น Key เดมิเนือ่งจากมีคณุสมบตัทิีใ่หค้า่ไมซ่ํ้า (Uniqueness) จะใชไ้มไ่ดอ้กีตอ่ไป จงึตอ้งพจิารณา Primary key ทีเ่หมาะสมใหมด่ว้ยในกรณีนีจ้งึเพิม่ Course_ID เป็น key อกี 1 attribute โดยจะได ้relation ทีม่ีลกัษณะดงันี ้
55
ตวัอยา่ง จงตรวจสอบและแกไ้ขตาราง Project ใหม้คีณุสมบตั ิ1NF
56
พบวา่ pno ซึง่เดมิใชเ้ป็น primary key ไมส่ามารถใชเ้ป็น key ได ้อกีตอ่ไปเพราะมหีลายบรรทดัทีใ่ชค้า่ของ pno เหมอืนกนั
57
58
การแกไ้ขตารางประกอบดว้ยขัน้ตอนดงันี ้
1) แยกคา่ทีใ่สม่ากกวา่ 1 คา่ออกมาใสใ่นบรรทดัใหม ่โดยจัดให ้ใสเ่ซลละ 1 คา่เทา่นัน้
2) เตมิคา่ในสว่นทีเ่กีย่วขอ้งในเต็มบรรทดั สําหรับในกรณีนี ้เมือ่เพิม่บรรทดัใหมใ่หใ้สค่า่ของ Emp_num และ Emp_name ลงไปในบรรทดัใหมด่ว้ย
3) กําหนด primary key ในตารางทีแ่กไ้ขแลว้
59
สรปุ
ขัน้ตอนการแกไ้ขใหต้ารางมคีณุสมบตั ิ1NF มดีงันี ้ 1) ตรวจสอบวา่ repeating group หรอืไม ่หากไมม่ถีอืวา่เป็น
1NF โดยใช ้key เดมิได ้แตถ่า้ม ีrepeating group ให ้ดําเนนิการตอ่ไป
2) ทําให ้attribute ทีเ่ก็บคา่มากกวา่ 1 คา่เก็บไดเ้พยีงคา่เดยีวโดยเก็บแยกบรรทดัละ 1 คา่ ในการทําเชน่นีจ้ะตอ้งเตมิคา่เดมิลงในบรรทดัใหมใ่หค้รบถว้นดว้ย การทําเชน่นีม้ีวา่ table flattening
3) กําหนด primary key ของตารางใหม ่
60
61
5.äS�condäNormæläFormä(2NF)
Bæs�däonäth�äconc�ptäofäfulläfunctionæläd�p�nd�ncy. Fulläfunctionæläd�p�nd�ncyäindicæt�säthætäifä AäændäBäær�äættribut�säofäæär�lætion,ä Bäisäfullyäd�p�nd�ntäonäAäifäBäisäfunctionællyäd�p�nd�ntäonäAäbutänotäonäænyäprop�räsubs�täofäA.
62
Aär�lætionäisäinä2NFäifäitähæsäb��näplæc�däinä1NF,äændäifä�v�ryädætæäit�mäinäth�ä�ntityäisäfullyäfunctionællyäd�p�nd�nt onäth�äprimæryäk�y.ä
Aäfunctionæläd�p�nd�ncyäxä⇒ yäisäpartial dependency if
th�r�äisäsom�äattribute A ∈ X that can be removed fromäXäændäd�p�nd�ncyäwillästillähold.
Thætäisäforäsom�äAä∈ Xä,ä(Xä- {A})ä⇒ Y
63
ตัวอย่าง
ð�ĉä X = {àē àććâ�ĉ, àē àć� a�ćĉè }ä ĉ�c Y = {ē è �ćææ âċ,ä�c�ĉćâ�ĉ} X Y àē àććâ�ĉ, àē àć� a�ćĉè ä ē è �ćææ âċ,ä�c�ĉćâ�ĉä àē àććâ�ĉ ē è �ćææ âċ,ä�c�ĉćâ�ĉä �àæè à�è ä ćàc� ć�ĉä àē àććâ�ĉ, àē àć� a�ćĉè ä ē è �ćææ âċ,ä�c�ĉćâ�ĉä ä ä ä ä å ç� ćĉå ćàå � àè � fĉc c ä pærtiæläd�p�nd�ncyä
64
æ ĉàĉ� �æä 1NFäåē ����è 2NF
1) Identify the PK foräth�ä1NFär�lætion. 2) Identify the FD inäth�är�lætion. 3)äIfäpærtiæläd�p�nd�nci�sä�xistäonäth�äprimæryäk�yär�mov�ä
th�mäbyäplacing them in a new relation along with a copy of their determinant.
4)äสรปุตารางทีม่คีณุสมบตั ิ2NF
65
ċàćĉæ�ĉæ
ตาราง assignment วา่มคีณุสมบตั ิ2 NF หรอืไม ่หากไมม่ ีจงแกไ้ข
66
Business rules 1) พนักงานแตล่ะคนสามารถทํางานในโครงการไดม้ากกวา่ 1 โครงการ 2) ระยะเวลาทีพ่นักงานแตล่ะคนทํางานในโครงการไมเ่ทา่นัน้ แลว้แตป่รมิาณ
งาน 3) แตล่ะโครงการเป็นงานของลกูคา้บรษัิทเดยีว และมพีนักงานทีทํ่างานให ้
โครงการนัน้มากกวา่ 1 คน 4) ลกูคา้แตล่ะบรษัิทอาจมโีครงการทีจ่า้งใหดํ้าเนนิการมากกวา่ 1 โครงการ 5) ชือ่ของโครงการอาจซํ้ากนัได ้
67
æ ĉà� âëĉà�ĉ� àcæ ĉc��ćæċ à�è ċĉè �àæè ç�
1. ตรวจสอบคณุสมบตั ิ1NF ตารางมคีณุสมบตั ิ1NF และโครงสรา้งดังนี ้
2. เขยีน FD หลกั (FD1)
68
3. เขยีน FD รอง
69
4. สรปุตารางทีม่คีณุสมบตั ิ2NF โดยพจิารณาจาก FD ทัง้หมด
70
ċ �ĉćàæ�æċä
การตรวจสอบ 2NF เป็นการตรวจเพือ่พจิารณาวา่ primary key ทีเ่ลอืกมานัน้ใหญเ่กนิจําเป็นหรอืไม ่โดยการตัง้คําถามวา่จําเป็นตอ้งใช ้attribute มากๆมาเป็น key หรอืเปลา่ ม ีattribute ใดทีเ่มือ่นําออกไปแลว้ key ยงัคงความเป็น key
หาก Attribute ทีเ่ลอืกเป็น key นัน้มเีพยีง 1 attribute ซึง่ไม่สามารถลดขนาดของ key ไดแ้ลว้ กรณีเชน่นี้จงึมคีุณสมบัต ิ2NF อยูแ่ลว้
71
ċàćĉæ�ĉæ
Business rules 1) ชือ่นักศกึษาไมซ่ํ้ากนั 2) รหสัวชิาไมซ่ํ้ากนั แตช่ือ่วชิาอาจซํ้ากนัได ้3) นักศกึษาแตล่ะคนลงทะเบยีนเรยีนไดห้ลายวชิา 4) แตล่ะวชิาอาจมนัีกศกึษาเรยีนมากกวา่ 1 คน 5) แตล่ะวชิามผีูส้อนรายเดยีว 6) ชือ่อาจารยไ์มซ่ํ้ากนั 7) อาจารยแ์ตล่ะคนสอนไดม้ากกวา่ 1 วชิา
72
การพจิารณาประกอบดว้ยขัน้ตอนดงันี ้1. ทําใหต้าราง Enrolment มคีณุสมบตั ิ1NF 2. เขยีน FD1
ในกรณีนีค้ยีค์อืซึง่จัดไดว้า่เป็น compound key หรอื concatenated key คอื (SName, CourseID)
3. เขยีน FD รอง จงึตอ้งพจิารณาในลกัษณะทกุชดุในคยีท์ีเ่ป็นไปไดใ้นทีน่ีม้คียีเ์ป็นไป
ได ้3 ชดุคอื SName, CourseID, (Sname, CourseID)
4. สรปุตารางทีม่คีณุสมบตั ิ2NF
73
Business rules 1) นักศกึษาแตละคนมอีาจารยท์ีป่รกึษาไดเ้พยีงคนเดยีว 2) นักศกึษาสมัครทํางานไดไ้มเ่กนิ 3 บรษัิท 3) แตล่ะบรษัิทมเีจา้หนา้ทีต่ดิตอ่เพยีงรายเดยีว เป็นไปไดท้ีช่ ือ่จนท.อาจเหมอืนกนั 4) แตล่ะบรษัิทอาจเปิดรับสมัครมากกวา่ 1 ตําแหน่ง 5) จํานวนรับในแตล่ะตําแหน่งทีบ่รษัิทเปิดรับไมจํ่าเป็นตอ้งเทา่กนั 6) อาจารยท์ีป่รกึษาแตล่ะคนมโีทรศัพทห์มายเลขเดยีว และกําหนดหมายเลขให ้
อาจารยแ์ตล่ะคนไมซ่ํ้ากนั 7) อาจารยแ์ตล่ะคนสามารถมนัีกศกึษาทีต่อ้งดแูลไดม้ากกวา่ 1 คน
74
การพจิารณาประกอบดว้ยขัน้ตอนดงันี ้1. ทําใหต้ารางใหม้คีณุสมบตั ิ1NF 2. เขยีน FD1 3. เขยีน FD รอง 4. สรปุตารางทีม่คีณุสมบตั ิ2NF
75
6.äThirdäNormæläFormä(3NF)
Bæs�däonäth�äconc�ptäofätrænsitiv�äd�p�nd�ncy. Trænsitiv�äD�p�nd�ncyäisäæäconditionäwh�r�ä A,äBäændäCäær�äættribut�säofäæär�lætionäsuchäthætäifäAä→ BäændäBä→ C,ä
th�näCäisätrænsitiv�lyäd�p�nd�ntäonäAäthroughäB.ää(Provid�däthætäAäisänotäfunctionællyäd�p�nd�ntäonäBäoräC).
76
Aär�lætionäisäinä3NFä iff itäisäinä2 NFäændänoänonk�y ættribut�äisä“transitively dependent”
onäth�äprimæryäk�y. Anä�ntityäisäsæidätoäb�äinäth�ä3NFä ifäitähæsäb��näplæc�däinä2NF and ifäælläfi�ldsäwhichäær�änotäæäpærtäofäPKäær�ämutuællyä
ind�p�nd�nt;ä that is,äth�r�äær�äno transitive dependencies.
77
Trænsitiv�äd�p�nd�ncyää� cĉĉcæà
xä⇒ yäisätransitive dependency iff th�r�äisäæäs�täofäættribut�säZäthætäisänotäæäsubs�täofäænyäk�yäofäR,ä
ændäbothäXä⇒ ZäændäZä⇒Yähold.
KEYS R X
Y
Z
78
Trænsitiv�äd�p�nd�ncy
Emp_D�pt (ENAME,äSSN,äBDATE,äADDRESS,äDNUMBER,äDNAME,äDMGRSSN)
Business rules 1) หมายเลขประกนัสงัคมของพนักงานแตล่ะคนไมซ่ํ้ากนั ถงึแมช้ือ่พนักงานอาจ
เหมอืนกนั 2) พนักงานแตล่ะคนทํางานอยูใ่นแผนกใดแผนกหนึง่เพยีงแผนกเดยีว 3) แตล่ะแผนกมหีวัหนา้แผนกคนเดยีว
79
การแปลง 2NF ใหเ้ป็น 3NF
Identify the primary key inäth�ä2NFär�lætion. Identify FD inäth�är�lætion. Ifätrænsitiv�äd�p�nd�nci�sä�xistäonäth�äprimæryäk�yär�mov�ä
th�mäbyäplacing them in a new relation ælongäwithäæäcopyäofäth�irädominænt.
80
ขัน้ตอนการตรวจสอบและแกไ้ข
1. พจิารณาวา่ตารางคณุสมบตั ิ2 NFหรอืไม ่ ทําใหต้ารางใหม้คีณุสมบัต ิ1NF เขยีน FD1 เขยีน FD รอง สรปุตารางทีม่คีณุสมบัต ิ2NF
2. พจิารณาวา่ตารางคณุสมบตั ิ3 NFหรอืไม ่ พจิารณาตารางทีต่อ้งตรวจสอบ ระบ ุFD ทีทํ่าใหเ้กดิ Transitive dependency และปรับแก ้FD ของตารางนัน้ เขยีนโครงสรา้งตารางจาก FD ใหมทั่ง้สว่นทีเ่กดิ Transitive dependency และ
FD ของตารางทีแ่กไ้ข นํามาสรปุรวมกับตารางทัง้หมด
81
1. พจิารณาวา่ตารางคณุสมบตั ิ2 NF หรอืไม ่ ทําใหต้ารางใหม้คีณุสมบัต ิ1NF เขยีน FD1
เขยีน FD รอง
สรปุตารางทีม่คีณุสมบัต ิ2NF
82
2. พจิารณาวา่ตารางคณุสมบตั ิ3 NF หรอืไม ่ พจิารณาตารางทีต่อ้งตรวจสอบ ระบ ุFD ทีทํ่าใหเ้กดิ Transitive dependency และปรับแก ้FD ของตารางนัน้
เขยีนโครงสรา้งตารางจาก FD ใหมทั่ง้สว่นทีเ่กดิ Transitive dependency และ FD ของตารางทีแ่กไ้ข
นํามาสรปุรวมกับตารางทัง้หมด
สรปุ
83
ตาราง 1NF
ตาราง 2NF
ตาราง 3NF
84
ตวัอยา่ง จงตรวจสอบตาราง staffBranch และทําใหม้คีณุสมบตั3ิNF
Business rules 1) พนักงานแตล่ะคนจะทํางานในสาขาใดสาขาหนึง่เพยีงสาขาเดยีว 2) แตล่ะสาขาอาจมพีนักงานประจําอยูม่ากกวา่ 1 คน 3) แตล่ะสาขามหีมายเลขโทรศพัทห์มายเลขเดยีว 4) ถงึแมพ้นักงานทํางานในตําแหน่งเดยีวกนั เงนิเดอืนอาจแตกตา่ง
กนัได ้
ćâ�çĉfĉ
85
1. พจิารณาวา่ตารางคณุสมบตั ิ2 NFหรอืไม ่ ทําใหต้ารางใหม้คีณุสมบัต ิ1NF
เขยีน FD1
เขยีน FD รอง
สรปุตารางทีม่คีณุสมบัต ิ2NF
86
2. พจิารณาวา่ตารางคณุสมบตั ิ3 NF หรอืไม ่ พจิารณาตารางทีต่อ้งตรวจสอบ ระบ ุFD ทีทํ่าใหเ้กดิ Transitive dependency และปรับแก ้FD ของตารางนัน้
เขยีนโครงสรา้งตารางจาก FD ใหมทั่ง้สว่นทีเ่กดิ Transitive dependency และ FD ของตารางทีแ่กไ้ข
นํามาสรปุรวมกับตารางทัง้หมด
87
ćàc�
ตาราง 1NF
ตาราง 2NF
ตาราง 3NF
88
ตัวอยา่ง จงตรวจสอบตาราง Assignmentและทําใหม้คีณุสมบตั3ิNF
Business rules 1) แตล่ะโครงการมพีนักงานรับผดิชอบมากกวา่ 1 คน 2) ระยะเวลาทีพ่นักงานแตล่ะคนทํางานในแตล่ะโครงการอาจตา่งกนัตามปรมิาณงาน 3) คา่ตอบแทนทีพ่นักงานไดรั้บขึน้อยูก่บัความรับผดิชอบในโครงการ 4) พนักงานแตล่ะคนมตํีาแหน่งหรอืบทบาทเดยีว แตตํ่าแหน่งหนึง่ๆมพีนักงานได ้
มากกวา่ 1 คน
วธิทํีา
89
1. พจิารณาวา่ตารางคณุสมบตั ิ2 NFหรอืไม ่ ทําใหต้ารางใหม้คีณุสมบัต ิ1NF
เขยีน FD1
เขยีน FD รอง
สรปุตารางทีม่คีณุสมบัต ิ2NF
90
2. พจิารณาวา่ตารางคณุสมบตั ิ3 NF หรอืไม ่ พจิารณาตารางทีต่อ้งตรวจสอบ ระบ ุFD ทีทํ่าใหเ้กดิ Transitive dependency และปรับแก ้FD ของตารางนัน้
เขยีนโครงสรา้งตารางจาก FD ใหมทั่ง้สว่นทีเ่กดิ Transitive dependency และ FD ของตารางทีแ่กไ้ข
นํามาสรปุรวมกับตารางทัง้หมด
91
ćàc�
ตาราง 1NF
ตาราง 2NF
ตาราง 3NF
ตวัอยา่ง จงตรวจสอบและทําใหม้คีณุสมบตั3ิNF
92
93
Business rules 1) ในการซือ้สนิคา้ของลกูคา้แตล่ะครัง้กระทําโดยพนักงานขายเพยีงรายเดยีว 2) ในแตล่ะวันสามารถมพีนักงานทํางานมากกวา่ 1 คน 3) ในวันหนึง่ๆลกูคา้ทีซ่ ือ้สนิคา้แลว้จะไมก่ลบัมาซือ้ซ้ํา 4) ลกูคา้รายเดมิสามารถซือ้สนิคา้ซ้ําไดโ้ดยไมจํ่าเป็นวา่ปรมิาณการซือ้จะตอ้ง
เทา่กนัทกุครัง้ทีซ่ ือ้คา้นัน้ 5) ลกูคา้ไมจํ่าเป็นตอ้งใชบ้รกิารผูข้ายรายเดมิเพือ่กลับมาซือ้สนิคา้ใหม ่
วธิทํีา
94
1. พจิารณาวา่ตารางคณุสมบตั ิ2 NFหรอืไม ่ ทําใหต้ารางใหม้คีณุสมบัต ิ1NF
เขยีน FD1
เขยีน FD รอง
สรปุตารางทีม่คีณุสมบัต ิ2NF
95
2. พจิารณาวา่ตารางคณุสมบตั ิ3 NF หรอืไม ่ พจิารณาตารางทีต่อ้งตรวจสอบ ระบ ุFD ทีทํ่าใหเ้กดิ Transitive dependency และปรับแก ้FD ของตารางนัน้
เขยีนโครงสรา้งตารางจาก FD ใหมทั่ง้สว่นทีเ่กดิ Transitive dependency และ FD ของตารางทีแ่กไ้ข
นํามาสรปุรวมกับตารางทัง้หมด
96
ćàc�
ตาราง 1NF
ตาราง 2NF
ตาราง 3NF