1 / 28

Normalization

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

creda
Download Presentation

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 เป็นกระบวนการนำโครงร่างของรีเลชันมาแตกเป็นรีเลชันต่างๆ ให้อยู่ในรูปแบบที่เรียกว่า Normal form เป้าหมายเพื่อให้รีเลชันที่ได้รับการออกแบบอยู่ในรูปแบบบรรทัดฐานระดับที่เหมาะสม • E.F. Codd แบ่งรูปแบบ Normal Form ออกเป็น 3 ระดับด้วยกันคือ • Normal Form ระดับที่ 1 (1NF) • Normal Form ระดับที่ 2 (2NF) • Normal Form ระดับที่ 3 (3NF)

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

  4. ความผิดพลาดจากการปรับปรุงข้อมูลความผิดพลาดจากการปรับปรุงข้อมูล • การผิดพลาดจากการเพิ่มข้อมูล • การผิดพลาดจากการลบข้อมูล • การผิดพลาดจากเปลี่ยนแปลงข้อมูล

  5. ตาราง Staff

  6. Normalize ระดับที่ 1 • ไม่มีคอลัมน์ใด มีค่า มากกว่า 1 ค่า (ไม่มี repeating Group) • แต่ละตารางต้องมี Primary key

  7. ตัวอย่างข้อมูล ตาราง Student และตาราง Subject

  8. Student Subject

  9. ทำให้ตารางทั้ง3 เป็นNF1 • แยกคอลัมน์ที่มีมากว่า 1 ค่าเป็นแถวใหม่ • เพิ่มข้อมูลที่เหมาะสมเข้าไป • กำหนด Primary Key

  10. ได้ตาราง NF 1 ดังต่อไปนี้ ตารางStudent

  11. ตาราง Subject

  12. ตาราง student_subject

  13. Functional Dependency • ฟังก์ชั่นการขึ้นต่อกัน คือ ความสัมพันธ์ระหว่าง Attribute หนึ่ง หรือ กลุ่มของ Attribute ที่ประกอบกันแล้ว สามารถระบุค่าของ Attribute อื่นๆ ใน tuple เดียวกันของรีเลชั่นนั้นได้ • สมมติว่า A กับ B คือ Attribute ของรีเลชั่น R แล้ว B เป็นฟังก์ชั่นที่ขึ้นอยู่กับ A จะเขียนในรูปแบบสัญลักษณ์ได้ว่า A  B โดยเรียก A ว่า Determinant และ เรียก B ว่า Dependent

  14. ตัวอย่าง • จากตาราง staff ถ้าถามว่า พนักงานคนใดมี รหัสพนักงงาน sl22 เราสามารถตอบได้ทันทีว่า คือ พนักงานชื่อ Chuchai Suksri ดังนั้น แสดงว่า ชื่อพนักงาน ขึ้นอยู่กับ รหัสพนักงาน

  15. Functional Dependency (FD) เป็นวิธีที่ใช้ตรวจสอบว่า Attribute ที่ไม่ใช่ Primary key นั้นมีความเกี่ยวข้องกับ Primary key หรือ ไม่เพื่อใช้ พิจารณา ว่าควรจะแยก Attribute ดังกล่าวควรจะแยกเป็นคอลัมน์ในตารางใหม่ หรือ ไม่ • ในรีเลชั่นหนึ่ง Attribute ทุกตัวต้องขึ้นอยู่กับ Primary key โดยถ้า Primary Key เป็นกลุ่ม Attribute ต้องขึ้นอยู่กับ Attribute ทุกตัวที่รวมเป็น Primary Key • ถ้าขึ้นอยู่กับ Primary key เพียงบางส่วนจะเรียกว่า Partial Dependency • ถ้าขึ้นอยู่กับ Primary key ทั้งหมดเรียกว่า Full Functional Dependency • ถ้า Primary key เป็น Attribute เดียวจะเป็น Full Functional Dependency

  16. ตัวอย่าง รูปแบบ NF2 • ตาราง Student • จะเห็นได้ว่าName,BirthDay,Cladd,Advisor ไม่ได้ขึ้นอยู่กับAttribute ที่เป็นPrimary key ทั้งหมด แต่ขึ้นอยู่กับStudent_id เพียงAttribute เดียวไม่ได้ขึ้นอยู่กับClub และHobby ดังนั้นจะเขียน FD ได้ดังนี้ Student_id  Name,Birthday,Class,Advisor Student_id  club,hobby

  17. ดังนั้น จึงสามารถแยกตารางตาม FD ได้ดังนี้

  18. ตัวอย่าง รูปแบบ NF2 • ตาราง Subject • จะเห็นได้ว่าตาราง Subject จะมีลักษณะคล้ายกับ ตารางStudent ดังนั้นจะเขียน FD ได้ดังนี้ Subject_id  Name, Credit Subject_id  Teacher,Textbook

  19. ดังนั้น จึงสามารถแยกตารางตาม FD ได้ดังนี้

  20. สำหรับตาราง Student_subject เขียน FD ได้ดังนี้ Student_id,Subject_id Grade,Score,Term • จาก FD จะเห็นได้ว่า เมื่อต้องการจะทราบค่าของ Attribute ที่ไม่ใช้ Key ซึ่งก็คือ Grade,Score,Term ต้องทราบค่าของ Primary key คือ Student_id,Subject_id ก่อน ไม่ได้ขึ้นอยู่กับตัวใดตัวหนึ่ง ดังนั้นจึงไม่เป็ฯ Partial Dependency จึงไม่จำเป็นต้องแยกตาราง

  21. Normalize ระดับที่ 3 • เป็น 2NF • Attribute ที่ใช่ Key ไม่ขึ้นต่อกันเอง (ไม่เป็น Transitive Dependency) • เป็น FD ที่ไม่เกี่ยวข้องกับ Primary key

  22. จากตาราง Student จะมี FD ที่ไม่เกี่ยวข้องกับ Primary key คือ • ClassTeacher • จึงต้องแยกตารางออกเป็น สองตารางดังนี้

  23. Boyce/Codd Normal Form (BCNF) • Attribute ทุกตัวขึ้นอยู่กับ Candidate Key • Determinant ทุกตัวต้องเป็น Candidate Key • ตัวอย่าง จากตาราง Teacher_Textbook ได้ FD ดังต่อไปนี้ Textbook  Subject_id Teacher,Subject_id Textbook

  24. Cadidate Key ของตารางนี้คือ • (teacher,textbook) กับ (teacher,subject_id) • Determinant คือ textbook กับ teacher,subject_id • จะเห็นว่า textbook ที่เป็น Determinant ของ FD ไม่ได้เป็น Cadidate Key ดังนั้น Relation นี้จึงไม่เป็น BCNF

  25. ดังนั้น ต้องแยกตารางดังกล่าวออกเป็นสองตาราง ตาม FD ซึ่งมี Determinant ที่ไม่ได้เป็น Candidate Key • ซึ่งจะได้ตารางดังต่อไปนี้ คือ ตาราง Textbook และ Teacher_Textbook

  26. Normalize ระดับที่ 4 • เป็น BCNF • ไม่มี Multivalued Dependency

  27. Nomalization ระดับที่ 5 • จะต้องมี Candidate Key ปรากฏใน Join Dependency ของ Relation นั้นเสมอ

More Related