More Related Content
Similar to นอร์มัลไลเซชัน
Similar to นอร์มัลไลเซชัน (20)
More from Kittipong Joy (9)
นอร์มัลไลเซชัน
- 3. ความหมายและจุด ประสงค์ข อง
การนอร์ม ัล ไลเซชัน
่
นอร์มัลไลเซชัน เป็นทฤษฎีที่ผู้ออกแบบฐาน
่
ข้อมูลจะต้องนำามาใช้ในการแปลงข้อมูลที่อยู่ใน
รูปแบบที่ซับซ้อน ให้อยู่ในรูปแบบที่ง่ายต่อ
การนำาไปใช้งานและก่อให้เกิดปัญหาน้อยที่สุด
ในบทนี้จะสอนกระบวนการนอร์มัลไลเซชัน ใน
3 ระดับด้วยกันคือ
นอร์มัลไลชั่นระดับที่ 1 หรือเรียกว่า 1NF
นอร์มัลไลชั่นระดับที่ 2 หรือเรียกว่า 2NF
นอร์มัลไลชั่นระดับที่ 3 หรือเรียกว่า 3NF
3
- 4. วิเ คราะห์
ความ
ต้อ งการของ
ผู้ใ ช้
E-R
Diagram
รีเ ลชั่น ที่ม ีร ูป แบบไม่
เป็น บรรทัด ฐาน
(Unnormalized
relation)
1 NF
2 NF
3 NF
บอยด์
คอดด์
4 NF
รีเ ลชั่น ที่ม ีเ ป็น บรรแบบ
ทัด ฐาน
(Normalized relation)
กระบวนการปรับ
บรรทัดฐาน
(Normalization)
4
- 5. วัต ถุป ระสงค์ข องนอร์ม ัล ไลซ์
(Normalization)
ลดความซำ้าซ้อนของข้อมูล เมื่อลดความซำ้า
ซ้อนก็ทำาให้ลดเนื้อหาที่ใช้ในการจัดเก็บข้อมูล
ลดปัญหาความไม่ถูกต้องของข้อมูล เมื่อข้อมูล
ไม่เกิดความซำ้าซ้อนทำาให้การปรับปรุงข้อมูล
สามารถทำาได้จากแหล่งข้อมูลเพียงแหล่งเดียว
ลดความผิดพลาดที่อาจเกิดจากการปรับปรุง
ข้อมูล (update anomalies) ซึ่งประกอบด้วย
5
- 6. ความซำ้า ซ้อ นและข้อ ผิด พลาด
จากการปรับ ปรุง ข้อ มูล อมูลเชิง
แนวคิดหลักอันสำาคัญของการออกแบบฐานข้
สัมพันธ์ คือ การออกแบบให้มีการเก็บข้อมูลซำ้าซ้อนน้อย
ที่สุด
เพื่อประหยัดเนื้อที่ในการเก็บข้อมูลและลดปัญหาที่จะเกิดดัง
ตัวอย่างต่อไปนี้
6
- 7. ตัว อย่า งการออกแบบฐานข้อ มูล ทีด ี
่
Branch
Employee
(สาขา) ที่อ ยู่
รหั งาน) ่อ -สกุล ตำา แห เงิน
ชื
รหัส
รหัส
(พนักส
พนัก งา
น
SG21
SG37
น่ง
เดือ
น
สาขา
สาขา
B005
B003
ชูชาติ สุข
ศรี
ผู้
จัดการ
300
00
ผู้ช่วย
200
00
B003
กรุงเทพ
B005
ศิริ ดวง
เด่น
เชียงให
ม่
พิษณุโล
ก
ตัว อย่า งการออกแบบฐานข้อ มูล ทีจ ะมีป ัญ หาของความ
่
SG14
ดวงใจ มี เลขานุ
Employee_Branch ้า ซ้อ200 B003ย ดของพนัก งาน
ซำ (รวมรายละเอี
นตามมา
สุข
การ
00
ไว้ด ว ยกัน กับ ชื่อ -สกุล ย ดของสาขา ) รหัส
้ รหัส
รายละเอี ตำา แหน่ เงิน
ที่อ ยู่
SG09
อัจฉรา
ผู้
300 B007
พนัก งานยวแก้ว จัดการ ง
เดือ สาขา
เขี
00
น
SG21
SG37
ชูชาติ สุข
ศรี
ศิริ ดวงเด่น
ผู้จัดการ 300
00
ผู้ช่วย
200
B007
B005
B003
เชียงให
ม่
กรุงเทพ
7
- 8. ตัว อย่า งปัญ หาความซำ้า ซ้อ นในข้อ มูล รีเ ลชั่น
EMPLOYEE_BRANCE
รหัส
พนัก งาน
ชื่อ -สกุล
ตำา แหน่ เงิน
ง
เดือ น
รหัส
สาขา
ที่อ ยู่
SG21
ชูชาติ สุข ผู้จัดการ 30000 B005 เชียงให
ศรี
ม่
SG37
ศิริ ดวงเด่น ผู้ช่วย
SG14
ดวงใจ มี
สุข
20000 B003 กรุงเทพ
เลขานุก 20000 B003 กรุงเทพ
าร
อัจฉรา
ผู้จัดการ 30000 B007 พิษณุโล
ก
ความผิดเขียวแก้ว
พลาดจากการเพิม
่
SG09
oถ้า ต้อ งการเพิม พนัก งานใหม่ ทีอ ยู่ส าขา
่
่
B005
oจะต้อ งกรอก B005 และทีอ ยูส าขา คือ
่ ่
เชีย งใหม่ เพิม อีก
่
8
- 9. ตัว อย่า งปัญ หาความซำ้า ซ้อ นในข้อ มูล รีเ ลชั่น
EMPLOYEE_BRANCE
รหัส
พนัก งาน
ชื่อ -สกุล
ตำา แหน่ เงิน
ง
เดือ น
รหัส
สาขา
ที่อ ยู่
SG21
ชูชาติ สุข ผู้จัดการ 30000 B005 เชียงให
ศรี
ม่
SG37
ศิริ ดวงเด่น ผู้ช่วย
20000 B003 กรุงเทพ
ดวงใจ มี เลขานุก 20000 B003 กรุงเทพ
สุข
าร
ความผิด พลาดจากการเพิม
่
SG14
ถ้า ต้อ งการเพิม สาขา ัดการ ป ัญ หาคืB007 พิษณุโล
SG09
อัจฉรา
ผู้จ จะมี 30000 อ ตารางนี้
่
เขียวแก้ว
ก
มีท ง ข้อ มูล พนัก งานและข้อ มูล สาขาอยูร วมกัน
ั้
่
หากจะเพิม เฉพาะ รหัส สาขา และ ทีอ ยู่ ก็ไ ม่
่
่
ได้เ พราะ รหัส พนัก งาน จะมีค ่า ว่า งไม่ไ ด้
เพราะเป็น Primary Key ของตาราง
ดัง นัน จะบัน ทึก ได้ก ต ่อ เมือ มีพ นัก งานแล้ว
้
็
่
9
- 10. ความผิด พลาดจากการลบข้อ มูล
ถ้า ลบข้อ มูล หนึ่ง แล้ว ส่ง ผลกระทบกับ ข้อ มูล อื่น ที่ต ้อ งถูก
ลบตาม
เช่น พนัก งานรหัส SG21 ลาออก ก็ล บแถวนั้น ออก
ข้อ มูล สาขา B005 ก็จ ะหายไปด้ว ย
ข้อ ผิด พลาดจากการเปลี่ย นแปลง
ในกรณีท ี่ต อ งการเปลีย นแปลงข้อ มูล บางตัว ของสาขา
้
่
เช่น เปลี่ย นที่อ ยู่ข อง B003 ก็ต ้อ งเปลี่ย นหลายที่
ถ้า หากมีพ นัก งานสัง กัด สาขานี้ห ลายที่ก ็ต ้อ งไปตามแก้ท ุก
ๆ ที่
ดังนั้นเราควรแยกตาราง Employee_Brance ออกเป็นสอง
ตาราง คือ ตารางพนักงาน และตารางสาขา
10
- 11. พนัก งาน
รหัส
พนัก งา
น
ชื่อ -สกุล
ตำา แห
น่ง
เงิน
เดือ
น
รหัส
สาขา
SG21
ชูชาติ สุข
ศรี
ผู้
จัดการ
300
00
B005
SG37
ศิริ ดวง
เด่น
ผู้ช่วย
200
00
B003
สาขา
ดวงใจ มี เลขานุ 200
สุรหัส
ข
การ ยู่ 00
ที่อ
อัจสาขา
ฉรา
ผู้
300
เขียB005 จัดการ 00
วแก้ว เชียงให
ม่
B003
SG14
SG09
B003
กรุงเทพ
B007
พิษณุโล
B007
11
- 12. ฟัง ก์ช น การขึ้น ต่อ กัน (Functional
ั่
Dependency : FD)
ถ้า ให้ X และ Y เป็น Attribute ใน
Relation ใดๆ แทนด้ว ย R(X,Y)
Attribute Y เป็น จะถูก เรีย กว่า มี
ฟัง ก์ช น การขึ้น ต่อ กัน กับ แอททริบ ว ต์
ั
ิ
X ก็ต ่อ เมือ แต่ล ะค่า ที่ไ ม่ซ ำ้า กัน ของ
่
แอททริบ ว ต์ X มีข ้อ มูล ของ Y ที่
ิ
เกี่ย วข้อ งกับ X เพีย ง 1 ค่า
เขีย นแทนด้ว ย สัญ ลัก ษณ์ X Y
12
- 13. ตัว อย่า
ง
Employ
eeNo
Name
Position
S01
ฉัต รชัย มี
สมบัต ิ
S02
เอกชัย ใจดี Manager
Assistant
S03
มนีร ัต น์
เจริญ สุข
Manager
S04
ขวัญ ชัย
ใจเพชร
Manager
Assistant
ดวงกมล
ทิพ ย์เ ทพ
Staff
Manager
S05
มานพ เกตุ Staff
EmployeeNo
แก้ว
Position
S06
13
- 15. ชนิด ของฟัง ก์ช น การขึ้น ต่อ กัน ( Functional
ั่
Dependency :FD)
1) Complete dependencies การขึ้น ต่อ กัน
อย่า งสมบูร ณ์
แอททริบิวต์ทไม่ใช่คีย์หลัก ขึ้นต่อ แอททริบิวต์หรือ
ี่
กลุ่มของแอททริบิวต์ทเป็นคียหลัก
ี่
์
ตัวอย่าง ตารางทีมแอทริบิวต์ค่าเดียวทำาหน้าทีเป็น
่ ี
่
คีย์หลัก คืหมายเลขบัต รตรประชาชน ต ร
อ หมายเลขบั ชื่อ เจ้า ของบั
ประชาชน
344010063493 กนกวรรณ พ่วง
1
พงษ์
343728342034 ชาติชาย เตชะ
3
วงศ์
หมายเลขบัตรประชาชน ชื่อ
293874203948 กิ่งกาญ เดชา
15
- 16. ชนิด ของฟัง ก์ช น การขึ้น ต่อ กัน ( Functional
ั่
Dependency :FD)
ตัวอย่าง ตารางที่มีแอทริบิวต์หลายตัวขึ้นกับคีย์หลักตัวเดียว
หมายเลขบัต ร
ประชาชน
ชื่อ เจ้า ของ
บัต ร
วัน เกิด
วัน ที่ท ำา บัต ร
34401006349 กนกวรรณ พ่วง
31
พงษ์
27/03/252 28/04/2553
0
34372834203 ชาติชาย เตชะ
43
วงศ์
หมายเลขบัต รประชาชน
23/06/252 25/02/2553
2
ชื่อ เจ้า ของ
บัต ร,วัน เกิด ,วั กิ่ง ่ท ำา บัต ร
29387420394 น ทีกาญ เดชา
85
ทรัพย์
21/04/252 19/0125/52
5
16
- 17. ชนิด ของฟัง ก์ช น การขึ้น ต่อ กัน ( Functional
ั่
Dependency :FD)
ตัวอย่าง ตารางที่มีแอทริบิวหลายตัวรวมกันเป็นคีย์หลัก คือ
รหัสนักศึกษา รหัสวิชา
ตารางการลง
ทะเบีย น
รหัส
นัก ศึก ษา
รหัส วิช า
เกรด
520014001
S001
A
520014001
S002
B
520014002
S001
C
520014002
S002
รหัส นัก ศึก ษา,รหัส วิช า
เกรด
A
17
- 18. ชนิด ของฟัง ก์ช น การขึ้น ต่อ กัน ( Functional
ั่
Dependency :FD)
2) Partial Dependency (การขึ้นต่อกันบางส่วน)
เกิดขึ้นเมือคียหลักประกอบด้วยหลาย Attribute รวม
่
์
กัน
เมือแอตทริบิวต์บางส่วนของคียหลัก สามารถไประบุค่า
่
์
แอตทริบิวต์ตัวอื่น ๆ ทีไม่ใช่คีย์หลักของรีเลชั่นได้
่
รหัส
นัก ศึก ษา
รหัส วิช า
รหัส นัก ศึก ษา, รหัส วิช า
รหัส วิช า
เกรด
ชื่อวิชา
Partial Dependency
เกรด , ชื่อ วิช า
ชื่อ วิช า
18
- 19. ตัว อย่า งฟัง ก์ช ั่น การขึ้น ต่อ กัน แบบ
Partial
รหัส
นัก ศึก ษา
รหัส
วิช า
เกร
ด
ชื่อ วิช า
5342670 F01
01
A
การเขีย น
โปรแกรม
5342670 F02
01
B
การออกแบบฐาน
ข้อ มูล
5342670 F01
02
D
การเขีย น
โปรแกรม
5342670 F02
02
A
การออกแบบฐาน
ข้อ มูล
5342670 F01
03
A
การเขีย น
โปรแกรม
19
- 20. ชนิด ของฟัง ก์ช ั่น การขึ้น ต่อ กัน
(Functional Dependency : FD)
เกิด ขึ้น เมื่อ
Attribute ที่ไ ม่ใ ช่ Primary Key ไปขึ้น อยู่ก บ
ั
Attribute อื่น ที่ไ ม่ใ ช่ Primary Key ในรีเ ลชั่น นัน
้
เลข
ชื่อ สกุล
ที่อ ยู่
ตำา แหน่ง
รถประจำา
ๆ
3 Transitive Dependency
ประจำา ตัว
ตำา แหน่ง
01
ฉัต รชัย มี
สมบัต ิ
กรุง เทพ
ผู้จ ัด การ
02
เอกชัย ใจดี
นนทบุร ี
ผู้ช ่ว ยผู้จ ัด การ
03
มนีร ัต น์
เจริญ สุข
04
ขวัญ ชัย
คำา อธิบ าย
ใจเพชร
เชีย งใหม่
ราชบุร ี
ผู้จ ัด การ
ผู้ช ่ว ยผู้จ ัด การ
BMW
Honda
BMW
Honda
เลขประจำา ตัว เป็น คีย ์ห ลัก (Primary
Key) ของตาราง
เลขประจำา ตัว
ชื่อ สกุล , ที่อ ยู่,
20
- 21. นอร์ม ล ไลซ์เ ซชั่น
ั
(Normalization)
Normalization คือ กระบวนการปรับปรุงโครงสร้าง
ข้อมูลของฐานข้อมูลที่มีความซำ้าซ้อนให้อยู่ในรูปแบบที่
เป็นบรรทัดฐาน (Normal Form)
การนอร์มัลไลเซชันมีได้ถึง 5 ระดับ ในระดับที่ 3 ก็จัดว่า
เพียงพอสำาหรับการออกแบบฐานข้อมูลในปัจจุบัน
1NF - กำาจัด repeating group
(กำาจัดกลุ่มของข้อมูลที่มีความซำ้าซ้อน)
2NF - กำาจัด partial dependency
(กำาจัดการขึ้นต่อกันบางส่วน)
3NF - กำาจัด transitive dependency
(กำาจัดการขึ้นต่อกันของแอตทริบิวท์ที่ไม่ใช่
คีย์หลัก)
21
- 23. First Normal record จะเป็น single
Form (1NF)
ทุก Attribute ในแต่ล ะ
value ไม่ม ี ค่า ของกลุม ข้อ มูล ที่ซ ำ้า กัน (Repeating
่
Group)
ข้อ มูล ทุก แถว (Tuple) ต้อ งมีค ่า ไม่ซ ำ้า กัน
ตารางทีม ล ัก ษณะข้อ มูล เป็น Repeating group
่ ี
รหัส
ชื่อ
นัก ศึก ษา
001
สมชา
ย
002
ธีร
ชาย
นามสกุล
สมใจนึก
บุญ มาศ
รหัส วิช าที่ล ง
ทะเบีย น
204-101 Repeating Group
204-204
204-205
204-102
23
- 25. Second Normal Form
(2NF)
1. ต้อ งเป็น First Normal Form (1NF) มาก่อ น
2. ต้อ งไม่ม ี Partial Dependency (การขึ้น ต่อ กัน
บางส่ว น)
สรุป ก็ค ือ นอร์ม ัล ไลเซชัน ระดับ ที่ 2 (Second
normal form : 2NF) เป็น การขจัด แอตตริบ ิว ที่
ไม่ข ึ้น กับ ทั้ง ส่ว นของคีย ์ห ลัก
ออกไป เพื่อ ให้แ อตตริบ ิว อื่น ทั้ง หมดขึ้น ตรงกับ ส่ว น
ที่เ ป็น คีย ์ห ลัก ทั้ง หมดเท่า นั้น
25
- 26. ตัว อย่า งตารางที่ Partial Dependency
(การขึ้น ต่อ กัน บางส่ว น)
รหัส
นัก ศึก ษา
รหัส
วิช า
เกร
ด
ชื่อ วิช า
5342670 F01
01
A
การเขีย น
โปรแกรม
5342670 F02
01
B
การออกแบบฐาน
ข้อ มูล
5342670 F01
02
D
การเขีย น
โปรแกรม
5342670 F02
02 ส
รหั
A
การออกแบบฐาน
ข้อ มูล
รหัส วิช าA
5342670 F01
นัก ศึก ษา
03
รหัส นั5342670 รหัส วิช า C
ก ศึก ษา, F02
03
รหัส วิช า
เกรด
การเขีย น
Partial Dependency
โปรแกรม
ชื่อวิชา
การออกแบบฐาน ่อ วิช า
เกรด ,ชื
ข้อ มูล
26
ชื่อ วิช า
- 27. Second Normal Form
(2NF)
วิธ ข จัด ปัญ หา
ี
1) ต้อ งสร้า งตารางเพิ่ม
2) นำา คอลัม ย์ท ี่ม ีป ญ หาไปใส่ใ นตารางที่
ั
สร้า งเพิ่ม
3) กำา หนดคีย ์ห ลัก ให้ก ับ ตารางที่ส ร้า งใหม่
4) แอททริบ ว ต์ใ ดในตารางเดิม เมื่อ นำา ไปใส่
ิ
ในตารางใหม่ ให้ต ัด ออกจากตารางเดิม
ยกเว้น ส่ว นของคีย ์ห ลัก คงไว้ใ นตาราง
เดิม
27
- 28. ตารางผล
รหัส
การเรีย น รหัส
นัก ศึก ษา
วิช า
เก
รด
ชื่อ วิช า
534267
001
F01
A
การเขีย น
โปรแกรม
534267
001
F02
B
การออกแบบ
ฐานข้อ มูล
534267
002
F01
D
ตารางนีเ มือ
้ ่
ทำา ให้อ ยูใ นรูป
่
2 NF จะได้ 2
ตารางดัง นี้
การเขีย น
โปรแกรม
534267 F02 A
002 ตารางผล
การออกแบบ
ฐานข้อ มูล
534267 รหัส ย น Aรหัส
F01
การเขีย น
การเรี
เกรด
003 นัก ศึก ษา
โปรแกรม
วิช า
534267 F02 F01 การออกแบบ
5342670 C
A
003 01
ฐานข้อ มูล
5342670 F02
01
B
5342670 F01
02
ตาราง
วิรหัส
ชา
วิช า
ชื่อ วิช า
F01
การเขีย น
โปรแกรม
F02
การออกแบบ
ฐานข้อ มูล
D
28
- 29. ให้น ก ศึก ษานอมัล ไลซ์ต ารางนี้
ั
ให้อ ยูใ นรูป แบบ 2NF
่
ตารางผลการอบรม
รหัส ผู้
เข้า
อบรม
0001
รหัส ครอ
สอบรม
0001
TR05
0002
TR03
0002
TR09
0003
TR01
TR01
ชื่อ ผู้เ ข้า
อบรม
นายเอ ใจดี
ชื่อ ครอ
สอบรม
การซ่อม
ไฟฟ้า
นายเอ ใจดี การซ่อมตู้
เย็น
นางบี ใจกล้า การทำา
อาหาร
นางบี ใจกล้า การเลี้ยง
เด็ก
นายรวย มี การซ่อม
ผลการ
ทดสอบ
ผ่าน
ผ่าน
ไม่ผ่าน
ผ่าน
ผ่าน29
- 30. Third Normal Form (3NF)
1.Relation นั้นจะต้องมีคุณสมบัติ 2NF
2.ต้องไม่มีความสัมพันธ์ระหว่าง Non-key
Attribute หรือ
ไม่มี Transitive Dependency
สรุป : แอททริบวต์ทไม่ใช่คย์หลัก ต้องไม่ขึ้น
ิ
ี่
ี
ต่อกันเอง
30
- 31. Third Normal Form (3NF)
วิธีขจัดปัญหา
1. สร้างตารางเพิม
่
2. นำาแอททริบิวต์ที่มีปัญหามาใส่ในตาราง
ใหม่
3. กำาหนดคียหลัก
์
4. แอททริบิวต์ที่ยายจากตารางเดิมไปใส่
้
ในตารางใหม่ให้ตัดออกจากตารางเดิม
5. นำาคียหลักในข้อ 3 ไปใส่ในตารางเดิม
์
31
- 32. รหัส
ชือ สกุล
่
รหัส
ชื่อ แผนก เงิน เดือ น
พนัก งา
แผนก
น
P001 นพเกศ แก้ว A001
บัญชี
25000
คีย์หลักของตารางนี้คือ รหัสพนักงาน
ใส
จากตารางยังมีฟังก์ชนการขึ้นต่อกันแบบ การเงิน
ั่
Transitive30000
P002
วารุณี
F001
Dependencyรวดเร็ว
อยู่ คือ
รหัสแผนก ซึ่งไม่ใช่คีย์หลักของตาราง แต่สามารถระบุค่า
ชื่อแผนก ได้ คือ ถ้ารู้รหัสแผนก ก็จะรู้ชื่อแผนก
จากตารางข้า งบน ทำา ให้อ ยู่ใ นรูป 3 NF
รหัส
ชื่อ สกุล
รหัส
รหัส
จะได้ 2 ตารางข้า งล่าเงิน้
งนี
พนัก งา
น
P001
เดือ น
แผนก
A001
นพเกศ แก้ว 25000 F001
ชื่อ
แผนก แผนก
A001 บัญชี
F001 การเงิน
32