Introduction to Database System Chapter 5: Normalization Adisak Intana Lecturer
บรรทัดฐานข้อมูล (Normalization) เป็นการแปลงข้อมูลที่อยู่ในรูปแบบซับซ้อน ยากต่อการจัดการให้อยู่ในรูปแบบง่ายและสะดวกต่อการจัดการ 2
ความจำเป็นของบรรทัดฐานข้อมูล (Normalization) ตัวอย่าง 5.1 ตารางโครงการ 3
ความจำเป็นของบรรทัดฐานข้อมูล (Normalization) จากตารางตัวอย่าง 5.1 primary key คือ ………………….. 4
ความจำเป็นของบรรทัดฐานข้อมูล (Normalization) 1. ถ้าหากต้องการเพิ่มพนักงานใหม่ เช่น นายสมรักษ์ คำเหมือง ซึ่งเป็นนักเขียนโปรแกรม สามารถทำได้หรือไม่? 2. ถ้าหากต้องการแก้ไขข้อมูลพนักงานที่ชื่อ นายสมบัติ ส่งศรี เป็น สมบัติ ส่งส่วย จะแก้ไขได้ หรือไม่? 5
ความจำเป็นของบรรทัดฐานข้อมูล (Normalization) 3. ถ้าหากต้องการระบบโครงการระบบบัญชี ออกลบได้หรือไม่? 6
ความจำเป็นของบรรทัดฐานข้อมูล (Normalization) เราเรียกปัญหาที่เกิดจากการเพิ่มข้อมูลว่า insert anomaly ปัญหาที่เกิดจากการแก้ไขข้อมูลว่า update anomaly ปัญหาที่เกิดจากการลบข้อมูลว่า delete anomaly 7
ประโยชน์ของการทำบรรทัดฐานข้อมูล (Normalization) 1. การทำบรรทัดฐานเป็นเครื่องมือที่ช่วยในการออกแบบฐานข้อมูลเชิงสัมพันธ์ 2. ทำให้ทราบว่ารีเลชันที่ออกแบบ เกิดปัญหาหรือไม่ ด้านใดบ้าง 3. ช่วยแก้ปัญหาที่เกิดขึ้นกับรีเลชัน 4. ช่วยลดปัญหาที่เกิดขึ้นจากการจัดเก็บข้อมูล 8
ระดับของการทำบรรทัดฐานข้อมูล (Normalization) การทำบรรทัดฐานข้อมูลมีหลายระดับแต่จะแนะนำให้รู้จักเพียง 3 ระดับ มีดังต่อไปนี้ 1 NF Normalization 2 NF Normalization 3 NF Normalization 9
นิยาม : รีเลชันใดจะอยู่ในรูปแบบนอร์มัลระดับที่ 1 (1 NF) 1 NF Normalization นิยาม : รีเลชันใดจะอยู่ในรูปแบบนอร์มัลระดับที่ 1 (1 NF) ได้ เมื่อรีเลชันนั้นจะต้องไม่มีกลุ่มข้อมูลซ้ำกันอยู่ (repeating group) 10
1 NF Normalization ตัวอย่าง 5.2 ตารางโครงการ 11
มีหลายค่า (repeating group) 1 NF Normalization 1 แถว 1 แถว มีหลายค่า (repeating group) 12
1 NF Normalization 13
1 NF Normalization 14
1 NF Normalization ตัวอย่าง 5.3 ตารางพนักงาน 15
นิยาม : รีเลชันใดจะอยู่ในรูปแบบนอร์มัลระดับที่ 1 (1 NF) 2 NF Normalization นิยาม : รีเลชันใดจะอยู่ในรูปแบบนอร์มัลระดับที่ 1 (1 NF) ได้ เมื่อรีเลชันนั้น 1. เป็น 1 NF 2. ไม่มี partial independency 16
partial independency คือ 2 NF Normalization partial independency คือ attributes ที่ไม่ได้เป็น key หรือ non key จะต้องขึ้นกับ attributes ที่เป็น key ทุกตัว กล่าวคือ attributes ที่เป็น key ทุกตัว จะต้องสามารถเป็นตัวแทนใช้ในการระบุ attributes ที่ไม่ได้เป็น key ได้ 17
2 NF Normalization ตัวอย่าง 5.4 ตารางโครงการ 18
primary key คือ ………………….. 2 NF Normalization จากตารางตัวอย่าง 5.4 primary key คือ ………………….. 19
โครงการหมายเลข 15 มีชื่อโครงการว่าอย่างไร 2 NF Normalization โครงการหมายเลข 15 มีชื่อโครงการว่าอย่างไร มีพนักงานที่รับผิดชอบ ชื่ออะไร รหัสอะไร ทำงานตำแหน่งไหน รหัสโครงการ, รหัสพนักงาน --> ชื่อโครงการ, ชื่อพนักงาน, ตำแหน่ง 20
โครงการหมายเลข 15 มีชื่อโครงการว่าอย่างไร 2 NF Normalization โครงการหมายเลข 15 มีชื่อโครงการว่าอย่างไร รหัสโครงการ --> ชื่อโครงการ 21
พนักงานที่มีรหัส 101 ชื่ออะไร ทำงานตำแหน่งไหน 2 NF Normalization พนักงานที่มีรหัส 101 ชื่ออะไร ทำงานตำแหน่งไหน รหัสพนักงาน --> ชื่อพนักงาน, ตำแหน่ง 22
จากตัวอย่างไม่เป็น 2 NF เพราะเนื่องจาก 2 NF Normalization จากตัวอย่างไม่เป็น 2 NF เพราะเนื่องจาก รหัสโครงการ, รหัสพนักงาน --> ชื่อโครงการ, ชื่อพนักงาน, ตำแหน่ง รหัสพนักงาน --> ชื่อพนักงาน, ตำแหน่ง มี ชื่อพนักงาน และตำแหน่ง ที่ไม่ใช่คีย์ สามารถถูกคีย์รหัสพนักงานระบุได้ โดยไม่ต้องใช้รหัสโครงการ 23
รหัสโครงการ --> ชื่อโครงการ 2 NF Normalization รหัสโครงการ --> ชื่อโครงการ มี ชื่อโครงการ ที่ไม่ใช่คีย์ สามารถถูกคีย์รหัสโครงการระบุได้ โดยไม่ต้องใช้รหัสพนักงาน 24
มีบาง attribute ที่ไม่ใช่คีย์ สามารถถูกระบุได้เพียงแค่ คีย์ใดคีย์หนึ่ง 2 NF Normalization สรุปได้ว่า มีบาง attribute ที่ไม่ใช่คีย์ สามารถถูกระบุได้เพียงแค่ คีย์ใดคีย์หนึ่ง 25
วิธีการแก้ไข แยกเป็น 3 ตาราง ดังนี้ โครงการ(รหัสโครงการ, ชื่อโครงการ) 2 NF Normalization วิธีการแก้ไข แยกเป็น 3 ตาราง ดังนี้ โครงการ(รหัสโครงการ, ชื่อโครงการ) พนักงาน(รหัสพนักงาน, ชื่อพนักงาน, ตำแหน่ง) ผู้รับผิดชอบ(รหัสโครงการ, รหัสพนักงาน) 26
2 NF Normalization ตารางโครงการ 27
2 NF Normalization ตารางพนักงาน 28
2 NF Normalization ตารางผู้รับผิดชอบโครงการ 29
นิยาม : รีเลชันใดจะอยู่ในรูปแบบนอร์มัลระดับที่ 3 (3 NF) 3 NF Normalization นิยาม : รีเลชันใดจะอยู่ในรูปแบบนอร์มัลระดับที่ 3 (3 NF) ได้ เมื่อรีเลชันนั้น 1. เป็น 2 NF 2. ไม่มี transitive independency 30
transitive independency คือ 3 NF Normalization transitive independency คือ attributes ที่ไม่ได้เป็น key หรือ non key จะขึ้นกับ attributes ที่ไม่ได้เป็น non key 31
3 NF Normalization 32
พนักงานรหัส 101 ชื่ออะไร ทำตำแหน่งไหน อยู่แผนกอะไร 3 NF Normalization พนักงานรหัส 101 ชื่ออะไร ทำตำแหน่งไหน อยู่แผนกอะไร รหัสพนักงาน --> ชื่อพนักงาน, ตำแหน่ง, รหัสแผนก, ชื่อแผนก 33
แผนก 1001 มีชื่อว่าแผนกอะไร 3 NF Normalization แผนก 1001 มีชื่อว่าแผนกอะไร รหัสแผนก --> ชื่อแผนก 34
จากตัวอย่างไม่เป็น 3 NF เพราะเนื่องจาก 3 NF Normalization จากตัวอย่างไม่เป็น 3 NF เพราะเนื่องจาก รหัสแผนก --> ชื่อแผนก มี ชื่อแผนก ที่ไม่ใช่คีย์ สามารถถูกรหัสแผนก ที่ไม่ใช่คีย์ระบุได้ โดยไม่ต้องใช้รหัสพนักงาน 35
Transitive dependency รหัสพนักงาน --> รหัสแผนก --> ชื่อแผนก 3 NF Normalization Transitive dependency รหัสพนักงาน --> รหัสแผนก --> ชื่อแผนก 36
วิธีการแก้ไข แยกเป็น 2 ตาราง ดังนี้ 3 NF Normalization วิธีการแก้ไข แยกเป็น 2 ตาราง ดังนี้ พนักงาน(รหัสพนักงาน, ชื่อพนักงาน, ตำแหน่ง) แผนก(รหัสแผนก, ชื่อแผนก) 37
3 NF Normalization ตารางพนักงาน 38
3 NF Normalization ตารางแผนก 39