1 / 32

Normalization

Normalization. Normalization. Normalization เป็นวิธีที่ใช้ในการปรับโครงสร้างของตารางเพื่อให้ได้ตารางที่สามารถเก็บข้อมูลได้โดยไม่มีปัญหาใดๆ ตามมาภายหลัง โดยให้อยู่ในรูปแบบที่เรียกว่า Normal Form มีเป้าหมายหลักคือ การลดความซ้ำซ้อนของข้อมูล และรักษาความถูกต้องให้แก่ข้อมูล.

Télécharger la présentation

Normalization

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Normalization

  2. Normalization • Normalizationเป็นวิธีที่ใช้ในการปรับโครงสร้างของตารางเพื่อให้ได้ตารางที่สามารถเก็บข้อมูลได้โดยไม่มีปัญหาใดๆ ตามมาภายหลัง โดยให้อยู่ในรูปแบบที่เรียกว่า Normal Form • มีเป้าหมายหลักคือ การลดความซ้ำซ้อนของข้อมูล และรักษาความถูกต้องให้แก่ข้อมูล

  3. วัตถุประสงค์ของ Normalization • ลดเนื้อที่ในการจัดเก็บข้อมูล • เนื่องจากกระบวนการ Normalization เป็นการออกแบบ เพื่อลดความซ้ำซ้อนในข้อมูล จึงทำให้เนื้อที่ในการจัดเก็บข้อมูลลดลงด้วย • ลดปัญหาข้อมูลที่ไม่ถูกต้อง • เมื่อข้อมูลไม่มีความซ้ำซ้อน จึงทำให้สามารถปรับปรุงข้อมูลได้จากแหล่งข้อมูลเพียงแหล่งเดียว จึงลดปัญหาการปรับปรุงข้อมูลไม่ถูกต้องได้ (รวมถึงการเพิ่ม ลบ และปรับปรุงข้อมูล)

  4. Data Redundancy and Update Anomalies • ตัวอย่างปัญหาของความซ้ำซ้อนในข้อมูลใน Staff relationและ Branch relationเมื่อเปรียบเทียบกับรีเลชันที่รวมข้อมูลพนักงานและสาขาไว้ด้วยกันใน StaffBranch relation

  5. Data Redundancy and Update Anomalies

  6. Data Redundancy and Update Anomalies • ตาราง StaffBranch จะมีความซ้ำซ้อนของข้อมูลโดยรายละเอียดของสาขา (branch) จะมีข้อมูลที่ซ้ำ ๆ กันในทุกสมาชิกของ staff • ปัญหาความซ้ำซ้อนในข้อมูลที่เกิดขึ้นจะเรียกว่า ข้อผิดพลาดจากการปรับปรุงข้อมูล ซึ่งประกอบด้วย • ข้อผิดพลาดจากการเพิ่มข้อมูล (Insertion) • ข้อผิดพลาดจากการลบข้อมูล (Deletion) • ข้อผิดพลาดจากการแก้ไขข้อมูล (Modification)

  7. 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)

  8. ขอบเขต • ในทางปฏิบัติการทำ Normalization จนถึงระดับที่ 3 (3NF) ก็สามารถขจัดปัญหาความซ้ำซ้อนของข้อมูลลงได้จนเกือบหมดแล้ว แต่อาจจะมีความซ้ำซ้อนเกิดขึ้นได้อีกแม้จะพบได้ค่อนข้างน้อย • ดังนั้นเนื้อหาจึงขอกล่าวถึงการทำ Normalization จนถึง 3NF และกล่าวถึง BCNF กรณีที่ต้องการลดความซ้ำซ้อนให้น้อยลงไปอีก • จะไม่กล่าวถึง 4NF และ 5NF หากนักศึกษาต้องการศึกษาถึง 4NF และ 5NF สามารถอ่านได้จากหนังสืออ้างอิง

  9. First Normal Form : 1NF • First Normal Form : 1NF • Relation หนึ่งๆ จะอยู่ในรูปแบบ 1NF ก็ต่อเมื่อ • “ค่าของ Attribute ต่างๆ ในแต่ละ Tuple จะมีค่าของข้อมูลเพียงค่าเดียว นั่นคือไม่มี Repeating Groupและ Multi-valued”

  10. ตัวอย่างตารางข้อมูล Employee

  11. วิธีการทำให้อยู่ในรูปแบบ 1NF • 1. กำจัด repeating group (กลุ่มซ้ำ) • 2. เพิ่มคีย์หลัก

  12. ผลลัพธ์ที่ได้จากการทำ 1NF ตาราง Employee

  13. Emp_Name Salary Dept Emp_ID Course_No Course_Name Employee D_Complete First Normal Form : 1NF Salary Course_No Dept Emp_ID Emp_Name Course_Name Employee D_Complete ผลลัพธ์ที่ได้จากการทำ 1NF

  14. Second Normal Form (2NF) • 2. Second Normal Form : 2NF • Relation หนึ่งๆ จะอยู่ในรูปแบบ 2NF ก็ต่อเมื่อ • “1. Relation นั้นๆ ต้องอยู่ในรูปแบบ 1NF • 2. Attribute ทุกตัวที่ไม่ได้เป็นคีย์หลัก จะต้องมีความสัมพันธ์กับ Attribute ที่เป็นคีย์หลักทั้งหมด(Fully Functional Dependency) ไม่ใช่แค่ส่วนใดส่วนหนึ่งของคีย์หลัก หรือกล่าวง่ายๆ ว่า ไม่มี Partial Dependencyเกิดขึ้น”

  15. 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)

  16. Second Normal Form (2NF) Employee Course

  17. Third Normal Form : 3NF • 3. Third Normal Form : 3NF • Relation หนึ่งๆ จะอยู่ในรูปแบบ 3NF ก็ต่อเมื่อ • “1. Relation นั้นๆ ต้องอยู่ในรูปแบบ 2NF • 2. Attribute ทุกตัวที่ไม่ได้เป็นคีย์หลัก ไม่มีคุณสมบัติในการกำหนดค่าของ Attribute อื่นที่ไม่ใช่คีย์หลัก หรือกล่าวง่ายๆ ว่า ไม่มี Transitive Dependencyเกิดขึ้น”

  18. 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)

  19. Third Normal Form : 3NF Emp_Name Job Emp_ID Salary Employee WORK_ON TRAINED D_Complete Job Course Chg_Hour Job_Class Course_No Course_Name

  20. ดีเพนเดนซีไดอะแกรม (Dependency diagram)

  21. แสดงขั้นตอนของการทำ Normalization Entity ที่มีข้อมูลซ้ำซ้อน กำจัดกลุ่มข้อมูลซ้ำซ้อน กำจัด Partial Dependency 1NF 2NF กำจัด Transitive Dependency 3NF

  22. Boyce/Codd Normal Form : BCNF 4. Boyce/Codd Normal Form : BCNF Relation หนึ่งๆ จะอยู่ในรูปแบบ BCNF ก็ต่อเมื่อ “1. Relation นั้นๆ ต้องอยู่ในรูปแบบ 3NF 2. ไม่มี Attribute อื่นใน Relation ที่สามารถระบุค่าของ Attribute ที่เป็นคีย์หลักหรือส่วนหนึ่งส่วนใดของคีย์หลักในกรณีที่คีย์หลักเป็นคีย์ผสม(Composite Key)”

  23. Boyce-Codd normal form (BCNF) • ลักษณะ 3NF ที่ไม่ใช่ BCNF • สังเกตว่ายังมี Attribute หนึ่งยังสามารถระบุค่า Attribute ที่เป็นส่วนหนึ่งของ Primary key (C  B)

  24. Boyce/Codd Normal Form : BCNF เช่น หากเลือก S# และ P# เป็นคีย์หลักแล้วจะเกิดปัญหาใน Relation นี้คือ SNAME จะมีคุณสมบัติในการระบุค่าของ Attribute S# ได้ S# SNAME P# QTY

  25. Boyce/Codd Normal Form : BCNF S# SNAME P# QTY ดังนั้น Relation SUPPLIER3 ต้องทำการแตกรีเลชันออก โดยแยก attribute ที่สามารถระบุค่าของ PK แยกเป็นอีกรีเลชันหนึ่ง คือ ORDER2(SNAME, P#, QTY) SUPPLIER4(SNAME , S#)

  26. Boyce-Codd normal form (BCNF)

  27. ประเด็นที่ควรคำนึงถึงในการทำให้เป็นรูปแบบบรรทัดฐาน (Normal Form) • การแตก relation มากเกินไป (Overnormalization) • การดีนอร์มอลไลเซชัน (Denormalization)

  28. การแตก relation มากเกินไป (Overnormalization) • วัตถุประสงค์ของการทำให้เป็นรูปแบบบรรทัดฐาน คือ • เพื่อลดปัญหาในด้านความซ้ำซ้อนของข้อมูล • เพื่อลดปัญหาในเรื่องการเพิ่ม การลบ หรือการปรับปรุงข้อมูล • โดยทั่วไปการออกแบบในระดับแนวคิด ผู้ออกแบบจะพยายามวิเคราะห์ relation ให้อยู่ในรูปแบบ 3NF • กรณีที่เกิดปัญหาต่างๆ ที่จำเป็นต้องทำต่อไปถึงรูปแบบ BCNF, 4NF และ 5NF (เกิดขึ้นน้อยมากในทางปฏิบัติ)

  29. ด้วยเหตุผลดังกล่าว ผู้ออกแบบไม่ควรพยายามที่จะแตก relation มากเกินความจำเป็น (Overnormalization)เพราะ • การแตก relation ออกเป็น relation ย่อยมากเกินไปมีผลต่อประสิทธิภาพในการทำงานของฐานข้อมูล เช่น ในการค้นคืนข้อมูลจะต้องใช้เวลามากกว่าเดิม เป็นต้น

  30. การดีนอร์มอลไลเซชัน (Denormalization) • เป็นกระบวนการที่ตรงกันข้ามกับการ Normalization โดยยอมเก็บข้อมูลที่มีความซ้ำซ้อนกันบ้าง เพื่อแลกกับความเร็วในการเรียกดูข้อมูลที่มากขึ้น เช่น relation นั้นควรจะปรับให้อยู่ในรูปแบบ 3NF แต่หยุดอยู่เพียงรูปแบบ 2NF เป็นต้น อาจเป็นเพราะเหตุผลในเรื่องของประสิทธิภาพในการเรียกดู หรือ การค้นคืนข้อมูล และยอมให้เกิดความซ้ำซ้อนของข้อมูลได้

  31. การดีนอร์มอลไลเซชัน (Denormalization) • การดีนอร์มอลไลเซชันอาจก่อให้เกิดปัญหาความซ้ำซ้อนของข้อมูล เกิดขึ้นได้ • ควรมีการระบุสาเหตุ และวิธีการในการปรับปรุงข้อมูลในโปรแกรมประยุกต์ใช้งาน เพื่อป้องกันไม่ให้เกิดปัญหาข้อมูลไม่ถูกต้อง • ถ้าข้อมูลใน relation นั้นๆ ส่วนใหญ่จะเป็นการเรียกดูข้อมูล (Select)มากกว่าการเพิ่ม ลบ หรือปรับปรุงข้อมูล เพื่อเพิ่มประสิทธิภาพในการทำงานของฐานข้อมูล และไม่มีปัญหาด้านความไม่ถูกต้องของข้อมูลที่ซ้ำซ้อนกันได้

  32. จงวิเคราะห์และจัดทำ Normalization ระบบการลงทะเบียนของนักศึกษา ให้มีความซ้ำซ้อนน้อยที่สุด

More Related