06.2 logical database design [normalization]
TRANSCRIPT
การนอรมลไลซ (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