06.2 logical database design [normalization]

21
การนอร์มัลไลซ์ (Normalization) http://www.flickr.com/photos/asun/

Upload: opas-kaewtai

Post on 22-May-2015

1.667 views

Category:

Education


2 download

TRANSCRIPT

การนอรมลไลซ (Normalization)

http://www.flickr.com/photos/asun/

การนอรมลไลซ (Normalization)

● เปนกระบวนการหรอวธการททำการปรบรเลชนใหอยในรปแบบบรรทดฐานหรอนอรมลฟอรม (Normal Form) เพอทำใหรเลชนมความซำซอนนอยทสด

● โดยรเลชนทอยในนอรมลฟอรมระดบทสงกวาจะมความซำซอนนอยกวารเลชนทอยในนอรมลฟอรมระดบทตำกวา

● แตกไมจำเปนเสมอไปทรเลชนในนอรมลฟอรมระดบสงจะตองเปนรเลชนทดทสด● เนองจากรเลชนทอยในนอรมลฟอรมระดบสงจะมรเลชนจำนวนมาก ทำใหเสยเวลา

มากในการเขาถงขอมล เพราะตองเชอมโยงรเลชนเปนจำนวนมากดวยเชนกน

การนอรมลไลซ (Normalization)

● ดงนนผออกแบบระบบฐานขอมลจำเปนตองคำนงถงความตองการหรอเปาหมายของระบบ วาตองการลดความซำซอนของขอมล เพอลดพนทของหนวยความจำทจำเปนตองใช

● หรอตองการใหระบบสามารถเขาถงขอมลหรอแสดงผลลพธตามความตองการของผใชไดในระยะเวลาสนทสด

แผนภาพกระบวนการนอรมลไลซ

Functional Dependency (FD)

● ฟงกชนการขนตอกน (Functional Dependency : FD) เปนการอธบายความสมพนธระหวางแอตทรบวตในรเลชน

● แอตทรบวต B เปน Functional Dependency (FD) บนแอตทรบวต A ถาคาของแอตทรบวต B ขนกบแอตทรบวต A

● หรอเมอเรากำหนดคาของแอตทรบวต A แลว จะทำใหเราไดคาของแอตทรบวต B เพยงคาเดยวเทานน

● แสดงดวยสญลกษณ A -> B หมายถง แอตทรบวต A ทำหนาทเปนผกำหนด ททำการกำหนดคาของแอตทรบวต B

Functional Dependency (FD)

● การพจารณาหา FD หรอ เซตของ FD ของแตละรเลชน ● เรมตนจากพจารณาวา ในรเลชนมแอตทรบวตหรอกลมของแอตทรบวตใดบางท

สามารถทำหนาทเปนผกำหนด● จากนนพจารณาวาแอตทรบวตทเปนผกำหนดนทำการกำหนดคาของแอตทรบวต

หรอกลมของแอตทรบวตใดบาง ● โดย FD ทไดจะตองสอดคลองกบคณสมบตของ FD ดงน

● เปนความสมพนธแบบหนงตอหนง (1 to 1 Relationship)● เปนจรงในทกกรณ● เปน Non Trivial คอ แอตทรบวตททางขวาหรอแอตทรบวตทถกกำหนด ตองไมเปนสบ

เซตของแอตทรบวตทอยทางซายซงเปนผกำหนด

Functional Dependency (FD)

● ตวอยาง

● StdCode -> stdMajor

stdCode stdMajor5533470001 วทยาการคอมพวเตอร5533470002 วทยาการคอมพวเตอร5533470003 วทยาการคอมพวเตอร

กระบวนการนอรมลไลซ (The Process of Normalization)

มการทำงานตามลำดบขน ดงน● นอรมลฟอรมระดบท 1 (First Normal Form : 1NF)● นอรมลฟอรมระดบท 2 (Second Normal Form : 2NF)● นอรมลฟอรมระดบท 3 (Third Normal Form : 3NF)● นอรมลฟอรม BCNF (Boyce-Codd Normal Form : BCNF)● นอรมลฟอรมระดบท 4 (Fourth Normal Form : 4NF)● นอรมลฟอรมระดบท 5 (Fifth Normal Form : 5NF)

นอรมลฟอรมระดบท 1 (First Normal Form : 1NF)

● ตองไมม Multivalue Attribute คอ แอตทรบวตทเปนกลมตองอยในรปของแอตทรบวตทมคาเดยว

● อาจทำไดโดยวธการตอไปน● การเพมขอมลในเซลลของรเลชนใหเตม วธนจะสามารถกำจด Multivalue Attribute

ออกไปได แตทำใหเกดขอมลซำซอนเพมมากขนในรเลชน ● การแยกตารางหรอรเลชน วธนทำใหไดรเลชนจำนวนมากขน โดยรเลชนทไดยงมความซำ

ซอนของขอมลอยบาง

นอรมลฟอรมระดบท 1 (First Normal Form : 1NF)

stdCode stdName subjCode subjName Day Time lectCode lectName

4907010 นายเมพ ขงขง 517321 ระบบฐานขอมล Monday 9:00-12:00 C040 สามารถ

517322 ระบบปฎบตการ Tuesday 9:00-12:00 C093 ขยน

4907012 นายเกง จรงจรง

517321 ระบบฐานขอมล Monday 9:00-12:00 C040 สามารถ

517322 ระบบปฎบตการ Tuesday 9:00-12:00 C093 สเมธ

517351 การสอสารขอมล Friday 9:00-12:00 C095 สธ

นอรมลฟอรมระดบท 1 (First Normal Form : 1NF)

stdCode stdName subjCode subjName Day Time lectCode lectName

4907010 นายเมพ ขงขง 517321 ระบบฐานขอมล Monday 9:00-12:00 C040 สามารถ

4907010 นายเมพ ขงขง 517322 ระบบปฎบตการ Tuesday 9:00-12:00 C093 ขยน

4907012 นายเกง จรงจรง

517321 ระบบฐานขอมล Monday 9:00-12:00 C040 สามารถ

4907012 นายเกง จรงจรง

517322 ระบบปฎบตการ Tuesday 9:00-12:00 C093 สเมธ

4907012 นายเกง จรงจรง

517351 การสอสารขอมล Friday 9:00-12:00 C095 สธ

● FD : stdCode, subjCode -> stdName, subjName, Day, Time, lectCode, lectName

นอรมลฟอรมระดบท 2 (Second Normal Form : 2NF)

● ตองเปนรเลชนทอยใน 1NF● มคณสมบตการขนตอกนแบบทงหมด (Full FD) คอรเลชนตองไมมความสมพนธ

ระหวางแอตทรบวตแบบบางสวน● ตองกำจดการขนตอกนแบบบางสวน (Partial FD) ของรเลชนนนออกไป ดวยการ

แยกแอตทรบวตทมคณสมบต Partial FD ออกเปนรเลชนใหม โดย● Identify All Key Components จาก FD ของ 1NF เขยนแอตทรบวตทเปนองค

ประกอบของผกำหนดลงบนแตละบรรทด และเขยน Combination ของแตละแอตทรบวตลงบนบรรทดถดไป

● Identify the Dependent Attributes กำหนดใหแอตทรบวตทเขยนเปนตวกำหนด แลวเขยน FD โดยพจารณาวาแตละแอตทรบวตกำหนดคาใดไดบาง

นอรมลฟอรมระดบท 2 (Second Normal Form : 2NF)

● จาก 1NF ไดFD : stdCode, subjCode -> stdName, subjName, Day, Time, lectCode, lectName

● Identify All Key Components stdCode

subjCode

stdCode, subjCode● Identify the Dependent Attributes

stdCode -> stdName

subjCode -> subjName

stdCode, subjCode -> Day, Time, lectCode, lectName

นอรมลฟอรมระดบท 3(Third Normal Form : 3NF)

● ตองเปนรเลชนทอยใน 2NF● ไมม Transitive Dependency คอ ตองไมมแอตทรบวตทไมใชคยของรเลชน ขน

กบแอตทรบวตอนๆ ทไมใชคยของรเลชน● ตองกำจด Transitive Dependency ของรเลชนออกไป ดวยการแยกแอตทรบวต

เหลานนออกเปนรเลชนใหม

นอรมลฟอรมระดบท 3(Third Normal Form : 3NF)

stdCode -> stdName : 3NF

subjCode -> subjName : 3NF

stdCode, subjCode -> Day, Time, lectCode, lectName : ??● เลอก Non-Key

● Day● Time● lectCode● lectName

● lectCode -> lectName

นอรมลฟอรมระดบท 3(Third Normal Form : 3NF)

● stdCode -> stdName ; 3NF● subjCode -> subjName ; 3NF● stdCode, subjCode -> Day, Time, lectCode ; 3NF● lectCode -> lectName ; 3NF

นอรมลฟอรม BCNF (Boyce-Codd Normal Form : BCNF)

● ตองเปนรเลชนทอยใน 3NF● แอตทรบวตทเปนผกำหนดทงหมดตองเปนคยคแขงดวย● โดยรเลชนทอยใน BCNF จะอยใน 3NF ดวย แตรเลชนทเปน 3NF อาจจะไมเปน

BCNF

นอรมลฟอรม BCNF (Boyce-Codd Normal Form : BCNF)

● ถากำหนดให อาจารยแตละคนสอน 1 รายวชา จะได FD ดงน● stdCode -> stdName ; BCNF● subjCode -> subjName ; BCNF● lectCode -> lectName ; BCNF● stdCode, subjCode -> Day, Time, lectCode ; ไมเปน BCNF

● เนองจาก lectCode -> subjCode● ตองแยกเปนอกรเลชน

นอรมลฟอรม BCNF (Boyce-Codd Normal Form : BCNF)

● ทำใหได BCNF ทงหมดดงน● stdCode -> stdName ; BCNF● subjCode -> subjName ; BCNF● lectCode -> lectName ; BCNF● stdCode, subjCode -> Day, Time ; BCNF● lectCode -> subjCode ; BCNF

นอรมลฟอรมระดบท 4 (Fourth Normal Form : 4NF)

● ตองเปนรเลชนทอยใน 3NF● ตองไมม Multivalue Dependency

นอรมลฟอรมระดบท 5 (Fifth Normal Form : 5NF)

● ตองเปนรเลชนทอยใน 4NF● ตองไมม Join Dependency