3. normalization - walailak universitymit.wu.ac.th/mit/images/editor/images/dbs 2558...

Post on 21-May-2020

6 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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

top related