9 Normalization

Download Report

Transcript 9 Normalization

LOGO
Chapter 9: การทานอร์ มัลไลซ์
Normalization
4121203A ระบบฐานข้ อมูล
1
Normalization
Normalization เป็ นวิธีที่ใช้ในการปรับโครงสร้างของตาราง
เพื่อให้ได้ตารางที่สามารถเก็บข้อมูลได้โดยไม่มีปัญหาใดๆ
ตามมาภายหลัง โดยให้อยูใ่ นรู ปแบบที่เรี ยกว่า Normal Form
มีเป้าหมายหลักคือ การลดความซ้ าซ้อนของข้อมูล และรักษา
ความถูกต้องให้แก่ขอ้ มูล
© Pearson Education Limited 1995, 2005
วัตถุประสงค์ ของ Normalization
ลดเนื้อที่ในการจัดเก็บข้อมูล
 เนื่องจากกระบวนการ Normalization เป็ นการออกแบบ
เพื่อลดความซ้ าซ้อนในข้อมูล จึงทาให้เนื้อที่ในการจัดเก็บ
ข้อมูลลดลงด้วย
ลดปัญหาข้อมูลที่ไม่ถูกต้อง
 เมื่อข้อมูลไม่มีความซ้ าซ้อน จึงทาให้สามารถปรับปรุ งข้อมูล
ได้จากแหล่งข้อมูลเพียงแหล่งเดียว จึงลดปัญหาการปรับปรุ ง
ข้อมูลไม่ถูกต้องได้ (รวมถึงการเพิ่ม ลบ และปรับปรุ งข้อมูล)
© Pearson Education Limited 1995, 2005
Data Redundancy and Update Anomalies
ตัวอย่างปัญหาของความซ้ าซ้อนในข้อมูลใน Staff relation
และ Branch relation เมื่อเปรี ยบเทียบกับรี เลชันที่รวมข้อมูล
พนักงานและสาขาไว้ดว้ ยกันใน StaffBranch relation
© Pearson Education Limited 1995, 2005
Data Redundancy and Update Anomalies
© Pearson Education Limited 1995, 2005
Data Redundancy and Update Anomalies
ตาราง StaffBranch จะมีความซ้ าซ้อนของข้อมูล โดย
รายละเอียดของสาขา (branch) จะมีขอ้ มูลที่ซ้ า ๆ กันในทุก
สมาชิกของ staff
ปัญหาความซ้ าซ้อนในข้อมูลที่เกิดขึ้นจะเรี ยกว่า
ข้อผิดพลาดจากการปรับปรุ งข้อมูล ซึ่งประกอบด้วย
 ข้อผิดพลาดจากการเพิ่มข้อมูล (Insertion)
 ข้อผิดพลาดจากการลบข้อมูล (Deletion)
 ข้อผิดพลาดจากการแก้ไขข้อมูล (Modification)
© Pearson Education Limited 1995, 2005
Normalization
การ Normalization นี้เป็ นการดาเนินงานอย่างเป็ นลาดับ ที่
กาหนดไว้ดว้ ยกันเป็ นขั้นตอน ตามปัญหาที่เกิดขึ้นในข้นตอนนั้นๆ ซึ่ง
แต่ละขั้นตอนจะมีชื่อตามโครงสร้างข้อมูลที่กาหนดไว้ดงั นี้
1. ขั้นตอนการทา First Normal Form(1NF)
2. ขั้นตอนการทา Second Normal Form(2NF)
3. ขั้นตอนการทา Third Normal Form(3NF)
4. ขั้นตอนการทา Boyce-Codd Normal Form(BCNF)
5. ขั้นตอนการทา Fourth Normal Form(4NF)
6. ขั้นตอนการทา Fifth Normal Form(5NF)
ขอบเขต
 ในทางปฏิบตั ิการทา Normalization จนถึงระดับที่ 3 (3NF) ก็
สามารถขจัดปัญหาความซ้ าซ้อนของข้อมูลลงได้จนเกือบหมดแล้ว
แต่อาจจะมีความซ้ าซ้อนเกิดขึ้นได้อีกแม้จะพบได้ค่อนข้างน้อย
 ดังนั้นเนื้อหาจึงขอกล่าวถึงการทา Normalization จนถึง 3NF และ
กล่าวถึง BCNF กรณี ที่ตอ้ งการลดความซ้ าซ้อนให้นอ้ ยลงไปอีก
 จะไม่กล่าวถึง 4NF และ 5NF หากนักศึกษาต้องการศึกษาถึง 4NF
และ 5NF สามารถอ่านได้จากหนังสื ออ้างอิง
First Normal Form : 1NF
1. First Normal Form : 1NF
Relation หนึ่งๆ จะอยูใ่ นรู ปแบบ 1NF ก็ต่อเมื่อ
“ค่าของ Attribute ต่างๆ ในแต่ละ Tuple จะมีค่า
ของข้อมูลเพียงค่าเดียว นัน่ คือไม่มี Repeating
Group และ Multi-valued”
ตัวอย่ างตารางข้ อมูล Employee
Emp_ID Emp_Name
Dept
Salary
110
วิลาวัลย์ ขาคม
Account
15,000
112
091
อุษาวดี เจริ ญกุล Account
นพพร บุญชู
IT
15,100
12,000
010
กสมา ร่ มเย็น
IT
11,000
001
วนิดา แซ่ลิ้ม
Marketing 12,500
Course_
NO
01
03
01
02
03
03
01
Course_
Name
Acc PAC
SPSS
Acc PAC
3D Studio
max
SPSS
SPSS
Acc PAC
D-Complete
12/0602002
30/4/2002
12/0602002
31/03/2002
30/4/2002
30/4/2002
12/06/2002
วิธีการทาให้ อยู่ในรูปแบบ 1NF
1. กาจัด repeating group (กลุ่มซ้ า)
2. เพิม่ คียห์ ลัก
ผลลัพธ์ ที่ได้ จากการทา 1NF ตาราง Employee
Emp_ID Course_
Emp_Name
Dept
NO
Salary
Course_
Name
D-Complete
110
110
01
03
วิลาวัลย์ ขาคม
วิลาวัลย์ ขาคม
Account
Account
15,000 Acc PAC
15,000 SPSS
12/0602002
30/4/2002
112
091
01
02
อุษาวดี เจริ ญกุล
นพพร บุญชู
Account
IT
15,100 Acc PAC
12/0602002
12,000 3D Studio max 31/03/2002
091
010
001
03
03
01
นพพร บุญชู
กสมา ร่ มเย็น
วนิดา แซ่ลิ้ม
IT
IT
Marketing
12,000 SPSS
11,000 SPSS
12,500 Acc PAC
30/4/2002
30/4/2002
12/06/2002
First Normal Form : 1NF
Emp_Name
Emp_ID
Dept
Salary
Course_No
Course_No
Dept
Emp_ID
Course_Name
Employee
D_Complete
ผลลัพธ์ที่ได้จากการทา 1NF
Salary
Emp_Name
Course_Name
Employee
D_Complete
Second Normal Form (2NF)
2. Second Normal Form : 2NF
Relation หนึ่งๆ จะอยูใ่ นรู ปแบบ 2NF ก็ต่อเมื่อ
“1. Relation นั้นๆ ต้องอยูใ่ นรู ปแบบ 1NF
2. Attribute ทุกตัวที่ไม่ได้เป็ นคียห์ ลัก จะต้องมีความสัมพันธ์
กับ Attribute ที่เป็ นคียห์ ลักทั้งหมด(Fully Functional
Dependency) ไม่ใช่แค่ส่วนใดส่ วนหนึ่งของคียห์ ลัก หรื อ
กล่าวง่ายๆ ว่า ไม่มี Partial Dependency เกิดขึ้น”
Second Normal Form (2NF)
full functional dependency
Emp_ID
Course_No
D_Complete
Course_Name
Partial Dependency
เพราะฉะนั้นตาราง Employee ไม่ได้อยูใ่ นรู ป 2NF เนื่องจากมี Partial
Dependency ต้องทาการแตก Relation เพื่อลดความซ้ าซ้อนของข้อมูล ดังนี้
Employee(Emp_id , Course_No , D_Complete)
Course(Course_No, Course_Name)
Second Normal Form (2NF)
Employee
Emp_ID Emp_Name
Dept
Salary
001
010
วนิดา แซ่ล้ ี
กสมา ร่ มเย็น
Marketing
IT
12,500
11,000
091
นพพร บุญชู
IT
12,000
110
วิลาวัลย์ ขาคม
Account
15,000
112
อุษาวดี เจริ ญกุล
Account
15,100
Course
Course_No Course_Name
01
02
03
Acc PAC
3D Studio max
SPSS
Third Normal Form : 3NF
3. Third Normal Form : 3NF
Relation หนึ่งๆ จะอยูใ่ นรู ปแบบ 3NF ก็ต่อเมื่อ
“1. Relation นั้นๆ ต้องอยูใ่ นรู ปแบบ 2NF
2. Attribute ทุกตัวที่ไม่ได้เป็ นคียห์ ลัก ไม่มีคุณสมบัติในการ
กาหนดค่าของ Attribute อื่นที่ไม่ใช่คียห์ ลัก หรื อกล่าวง่ายๆ
ว่า ไม่มี Transitive Dependency เกิดขึ้น”
Third Normal Form : 3NF
Emp_ID
Name
Job_Class
Chg_Hour
Transitive Dependency
ตาราง Employee ไม่ได้อยูใ่ นรู ป 3NF เนื่องจากมี Transitive Dependency ต้อง
ทาการแตก Relation เพื่อลดความซ้ าซ้อนของข้อมูล ดังนี้
Employee(Emp_id ,Name, Job_Class)
Job(Job_Class, Chg_Hour)
Third Normal Form : 3NF
Emp_Name
Emp_ID
Employee
Job
Salary
WORK_ON
TRAINED
D_Complete
Job
Job_Class
Chg_Hour
Course_No
Course
Course_Name
ดีเพนเดนซีไดอะแกรม (Dependency diagram)
แสดงขั้นตอนของการทา Normalization
Entity
ทีม่ ขี ้ อมูลซ้าซ้ อน
1NF
2NF
3NF
กาจัดกลุ่มข้ อมูลซ้าซ้ อน
กาจัด Partial
Dependency
กาจัด Transitive
Dependency
Boyce/Codd Normal Form : BCNF
4. Boyce/Codd Normal Form : BCNF
Relation หนึ่งๆ จะอยูใ่ นรู ปแบบ BCNF ก็ต่อเมื่อ
“1. Relation นั้นๆ ต้องอยูใ่ นรู ปแบบ 3NF
2. ไม่มี Attribute อื่นใน Relation ที่สามารถระบุค่าของ
Attribute ที่เป็ นคียห์ ลักหรื อส่ วนหนึ่งส่ วนใดของคียห์ ลักใน
กรณี ที่คียห์ ลักเป็ นคียผ์ สม(Composite Key)”
Boyce-Codd normal form (BCNF)
ลักษณะ 3NF ทีไ่ ม่ ใช่ BCNF
 สั งเกตว่ ายังมี Attribute หนึ่งยังสามารถระบุค่า Attribute
ที่เป็ นส่ วนหนึ่งของ Primary key (C  B)
Boyce/Codd Normal Form : BCNF
เช่น หากเลือก S# และ P# เป็ นคียห์ ลักแล้วจะเกิดปั ญหา
ใน Relation นี้คือ SNAME จะมีคุณสมบัติในการระบุค่าของ
Attribute S# ได้
S#
SNAME
P#
QTY
Boyce/Codd Normal Form : BCNF
S#
SNAME
P#
QTY
ดังนั้น Relation SUPPLIER3 ต้องทาการแตกรี เลชันออก โดย
แยก attribute ที่สามารถระบุค่าของ PK แยกเป็ นอีกรี เลชันหนึ่ ง คือ
ORDER2(SNAME, P#, QTY)
SUPPLIER4(SNAME , S#)
Boyce-Codd normal form (BCNF)
ประเด็นที่ควรคานึงถึง
ในการทาให้ เป็ นรูปแบบบรรทัดฐาน (Normal Form)
การแตก relation มากเกินไป (Overnormalization)
การดีนอร์ มอลไลเซชัน (Denormalization)
การแตก relation มากเกินไป
(Overnormalization)
วัตถุประสงค์ของการทาให้เป็ นรู ปแบบบรรทัดฐาน คือ
 เพื่อลดปัญหาในด้านความซ้ าซ้อนของข้อมูล
 เพื่อลดปัญหาในเรื่ องการเพิม่ การลบ หรื อการปรับปรุ ง
ข้อมูล
โดยทัว่ ไปการออกแบบในระดับแนวคิด ผูอ้ อกแบบจะ
พยายามวิเคราะห์ relation ให้อยูใ่ นรู ปแบบ 3NF
กรณี ที่เกิดปั ญหาต่างๆ ที่จาเป็ นต้องทาต่อไปถึงรู ปแบบ
BCNF, 4NF และ 5NF (เกิดขึ้นน้อยมากในทางปฏิบตั ิ)
ด้วยเหตุผลดังกล่าว ผูอ้ อกแบบไม่ควรพยายามที่จะแตก relation
มากเกินความจาเป็ น (Overnormalization) เพราะ
 การแตก relation ออกเป็ น relation ย่อยมากเกินไปมีผลต่อ
ประสิ ทธิภาพในการทางานของฐานข้อมูล เช่น ในการค้นคืนข้อมูล
จะต้องใช้เวลามากกว่าเดิม เป็ นต้น
การดีนอร์ มอลไลเซชัน (Denormalization)
เป็ นกระบวนการที่ตรงกันข้ามกับการ Normalization โดยยอมเก็บ
ข้อมูลที่มีความซ้ าซ้อนกันบ้าง เพื่อแลกกับความเร็ วในการเรี ยกดู
ข้อมูลที่มากขึ้น เช่น relation นั้นควรจะปรับให้อยูใ่ นรู ปแบบ 3NF
แต่หยุดอยูเ่ พียงรู ปแบบ 2NF เป็ นต้น
อาจเป็ นเพราะเหตุผลในเรื่ องของประสิ ทธิภาพในการเรี ยกดู
หรื อ การค้นคืนข้อมูล และยอมให้เกิดความซ้ าซ้อนของข้อมูลได้
การดีนอร์ มอลไลเซชัน (Denormalization)
การดีนอร์มอลไลเซชันอาจก่อให้เกิดปัญหาความซ้ าซ้อนของข้อมูล
เกิดขึ้นได้
 ควรมีการระบุสาเหตุ และวิธีการในการปรับปรุ งข้อมูลใน
โปรแกรมประยุกต์ใช้งาน เพื่อป้องกันไม่ให้เกิดปั ญหาข้อมูลไม่
ถูกต้อง
 ถ้าข้อมูลใน relation นั้นๆ ส่ วนใหญ่จะเป็ นการเรี ยกดูขอ้ มูล
(Select) มากกว่าการเพิ่ม ลบ หรื อปรับปรุ งข้อมูล เพื่อเพิ่ม
ประสิ ทธิ ภาพในการทางานของฐานข้อมูล และไม่มีปัญหาด้าน
ความไม่ถูกต้องของข้อมูลที่ซ้ าซ้อนกันได้
แบบฝึ กหัด
A
B
C
D
E
F
G
แบบฝึ กหัด
รหัส
สมาชิก
รหัสความ
ชานาญ
ประเภท
ความชานาญ
คานาหน้า
ชื่อ
ชื่อ
นามสกุล
อายุ
รหัสกลุ่ม รหัสเมือง
รหัสผู ้
ควบคุม
จงวิเคราะห์และจัดทา Normalization ระบบการลงทะเบียนของนักศึกษา ให้มีความ
ซ้ าซ้อนน้อยที่สุด
ชือ่
ประเภท
หน่วยกิต
เกรด
คณิตศาสตร์คอมฯ
ประเภท
วิชา
02
ชีพบังคับ
3
F
ภาษาไทย
01
พื้นฐาน
3
C
02
ชีพบังคับ
3
D
01
พื้นฐาน
3
D+
02
ชีพบังคับ
3
B
01
พื้นฐาน
3
C
03
ชีพเลือก
3
B
02
ชีพบังคับ
3
D
01
พื้นฐาน
3
A
A04
การสือ่ สารข้อมูล
ภาษาอังกฤษ1
03
ชีพเลือก
3
C
2/45
A05
โปรแกรมสาเร็จรูป1
02
ชีพบังคับ
3
D
1/45
A03
01
พื้นฐาน
3
B+
1/45
A04
01
พื้นฐาน
3
C
รหัส นศ.
ภาคเรียน
ที่
รหัสวิชา
ชือ่ วิชา
4501
1/45
A01
1/45
A03
2/45
A01
2/45
A04
1/45
A01
1/45
A04
2/45
A02
2/45
A05
1/45
A06
1/45
4502
4503
4506
คณิตศาสตร์คอมฯ
ภาษาอังกฤษ1
คณิตศาสตร์คอมฯ
ภาษาอังกฤษ1
ระบบฐานข้อมูล
โปรแกรมสาเร็จรูป1
ภาษาไทย
ภาษาอังกฤษ1