1 / 48

คิดค้นและพัฒนา โดย E.F.Codd

บทที่ 6 Normalization. คิดค้นและพัฒนา โดย E.F.Codd เป็นกระบวนการใช้แปลงตาราง(Relation data model) ที่อยู่ในรูปแบบที่ซับซ้อน ให้อยู่ในรูปแบบที่เป็นบรรทัดฐาน ( Normal Form) เพื่ อให้ง่ายต่อการใช้งาน มีความถูกต้องชัดเจนในการแสดงถึงข้อมูล ความสัมพันธ์ และข้อบังคับของข้อมูล

mariah
Download Presentation

คิดค้นและพัฒนา โดย E.F.Codd

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. บทที่ 6 Normalization • คิดค้นและพัฒนา โดย E.F.Codd • เป็นกระบวนการใช้แปลงตาราง(Relation data model) ที่อยู่ในรูปแบบที่ซับซ้อน ให้อยู่ในรูปแบบที่เป็นบรรทัดฐาน (Normal Form) เพื่อให้ง่ายต่อการใช้งาน มีความถูกต้องชัดเจนในการแสดงถึงข้อมูล ความสัมพันธ์และข้อบังคับของข้อมูล • เรียกอีกอย่างหนึ่งว่า The Normalization Process • Normalization เป็นวิธีการแบบ bottom-upในการออกแบบฐานข้อมูล ซึ่งเริ่มต้นด้วยการกำหนดความสัมพันธ์ระหว่าง attributes

  2. Dependency Rule เป็นกฎที่กล่าวถึง ความสัมพันธ์ระหว่าง attribute ในแต่ละตาราง 1. Functional Dependencyเป็นความสัมพันธ์ระหว่าง attribute แบบฟังก์ชั่น 2. Partial Dependency เป็นความสัมพันธ์ระหว่าง attribute แบบบางส่วน 3. Transitive Dependencyเป็นความสัมพันธ์ระหว่าง attribute แบบทรานซิทีฟ ที่ Nonkey attribute สามารถระบุค่า attribute อื่นได้ 4. MultivaluedDependencyเป็นความสัมพันธ์ระหว่าง attribute แบบหลายค่า 5. Join Dependency คือการเชื่อมโยง attribute ด้วยคีย์ ระหว่างตารางที่แตกออกไป

  3. Functional Dependency Functional Dependency เป็นความสัมพันธ์ระหว่างค่าของ attribute แบบฟังก์ชันที่มี attribute หนึ่ง หรือ มากกว่า 1 attributeประกอบกันเป็นคีย์และสามารถระบุค่าของ attribute อื่นๆ ในแต่ละแถวได้ชัดเจน และมีค่าเป็นเอกลักษณ์ (Unique) ซึ่งเรียกว่า คีย์ผสม (composite key) SUPPLIER SNO SNAME CITY S1 SERI BANGKOK S2 WANIDA RAYONG S3 SOMCHAI RAYONG S4 ORAPIN BANGKOK S5 TANACHOTE PATUMTANE SNO สามารถระบุค่า SNAME , CITY

  4. Function Dependency x y z w รหัสนศ. ชื่อนศ. รหัสโปรแกรม เกรดเฉลี่ย S1 นนนี่ 244 2.59 S2 จอน 144 3.50 S3 บอย 144 2.80 S4 เอก 244 3.21 จะได้ 1. รหัส น.ศ. ระบุ ชื่อน.ศ. (x y) Reflexivity Rule 2. รหัสนศ. ระบุ ชื่อน.ศ. แล้ว รหัสนศ.+รหัสโปรแกรมระบุ ถึง ชื่อนศ.ในโปรแกรมที่ต้องการได้ (x y แล้ว xz yz) Augmentation Rule 3. รหัสนศ. ระบุชื่อนศ. และ ชื่อนศ. ระบุ รหัสโปรแกรม จะได้ว่า รหัสนศ. ระบุ รหัสโปรแกรมของนศ.คนนั้น(x y และ y z แล้ว x z) Transitivity Rule 4. รหัสนศ. ระบุชื่อนศ. และ ชื่อนศ. ระบุ รหัสโปรแกรม จะได้ว่า รหัสนศ. ระบุ ชื่อ นศ. และรหัสโปรแกรมของนศ.คนนั้น(x y และ y z แล้ว x yz) Union Rule 5. รหัสนศ. ระบุชื่อนศ. และ ชื่อนศ.+โปรแกรมวิชา ระบุ เกรดเฉลี่ย จะได้ว่ารหัส นศ.+รหัสโปรแกรม ระบุ เกรดเฉลี่ยของนศ.คนนั้น(x y และ yz w แล้ว xz w) Pseudotransitivity Rule

  5. Functional Dependency การแตกตาราง(Decomposition) ต้องคงไว้คุณสมบัติสองประการ คือ 1. คุณสมบัติด้าน Lossless-Join (Non additive Join Property) คือการแตกตารางจะต้องคงไว้ซึ่งข้อมูลเดิมไม่มีข้อมูลใหม่เกิดขึ้น(Instance of original relation) 2. คุณสมบัติด้าน Dependency Preservationเป็นการคงไว้ซึ่งข้อกำหนดของตารางเดิม(Constraint on the Original Relation)ไว้ให้ได้มากที่สุดและเป็นประโยชน์ต่อการใช้งาน

  6. Partial Dependency Partial Dependency เป็นความสัมพันธ์ระหว่างค่าของแอททริบิวต์ แบบบางส่วน ที่เกิดขึ้นกับตารางที่มีคีย์หลักเป็นคีย์ผสม(Composite Key) และมีบางส่วนของคีย์หลัก สามารถระบุค่าของAttributeอื่นที่ไม่ใช่คีย์หลักได้ SNOPNO PNAME QTY S1 P1 PEN 100 S1 P2 TABLE 200 S1 P3 DESK 300 S2 P1 PEN 300 S2 P3 DESK 400 S3 P4 BAG 100 ORDER1 SNO,PNO สามารถระบุค่า PNAME , QTY PNO สามารถระบุค่า PNAME ได้ด้วย

  7. Transitive Dependency Transitive Dependency เป็นกรณีที่ NonKey Attribute สามารถระบุค่า Attribute อื่นได้ SNO SNAME CITY RATING S1 SERI BANGKOK 2 S2 WANIDA RAYONG 3 S3 SOMCHAI RAYONG 3 S4 ORAPIN BANGKOK 2 S5 TANACHOTE PATUMTANE 1 SUPPLIER1 SNO สามารถระบุค่า SNAME,CITY,RATING CITY สามารถระบุค่า RATING

  8. Multivalued Dependency Multivalued Dependency เป็นความสัมพันธ์ระหว่างค่าของแอททริบิวต์แบบหลายค่าที่มักเกิดขึ้นกับตารางที่มี Attribute อย่างน้อย 3 Attribute และมี Attribute หนึ่ง สามารถระบุค่า Attribute อื่นๆ ในตารางนั้น ได้มากกว่า 1 ค่า SNOPJNOCITY S1 PJ01 BANGKOK S1 PJ01 SAMUTPRAKARN S1 PJ02 BANGKOK S1 PJ02 SAMUTPRAKARN S2 PJ03 RAYONG S2 PJ03 CHONBURE S2 PJ04 RAYONG S2 PJ04 CHONBURE SPJC SNO สามารถระบุค่า PJNO ได้หลายค่า SNO สามารถระบุค่า CITY ได้หลายค่า

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

  10. คำศัพท์ Normalization • Repeating Group คือ กลุ่มของข้อมูลซ้ำในตารางใดๆ หรือ กลุ่มของAttribute มีค่าเหมือนกับแถวอื่นๆ มากกว่าหนึ่งแถว • Unnormalization Relation คือตารางที่อาจมีกลุ่มข้อมูลซ้ำเก็บอยู่หรือตารางที่ยังไม่ผ่านกระบวนการนอร์มัลไลเซชั่น โดยยังมีโครงสร้างที่ซับซ้อนยากแก่การจัดการข้อมูล (Insert ,Delete & Update) • Over normalizationคือการแตกตารางมากเกินไป • Fully Function Dependencyคือการที่แอททริบิวต์หนึ่งหรือกลุ่มของ แอททริบิวต์สามารถระบุค่าแอททริบิวต์อื่นได้อย่างชัดเจน อาจเรียกว่า Determinant

  11. Anomaly Rule การกระทำอาจก่อให้เกิดความผิดพลาดกับข้อมูล แบ่งออกเป็น 3 ข้อดังนี้ • InsertAnomaly คือความผิดพลาดที่เกิดจากการเพิ่มข้อมูล ที่มีผลต่อ The Entity Integrity Rule นั่นคือค่าของข้อมูลที่เพิ่มเข้ามาค่าของคีย์หลักจะต้องไม่เป็นค่าว่างหรือซ้ำกับข้อมูลเดิม หรือการเพิ่มข้อมูลบาง Attribute ในแถว ขณะที่เหตุการณ์ของ Attribute อื่นไม่เกิดขึ้น • DeleteAnomaly คือ ความผิดพลาดที่เกิดจากการลบข้อมูล เนื่องจากยังมีข้อมูลบาง Attribute ในแถวที่ถูกลบ ถูกอ้างอิงจากตารางอื่น • Update Anomalyคือ ความผิดพลาดเนื่องมาจากการแก้ไขปรับปรุงข้อมูล แล้วก่อให้เกิดความขัดแย้งของข้อมูลในตารางที่สัมพันธ์กัน เช่น การแก้ไขข้อมูลของแถวใด ต้องตรวจสอบว่ามีการแก้ไขข้อมูลแถวอื่น ที่มีข้อมูลเดียวกันครบถ้วน

  12. ขบวนการNormalization • Level 1 First Normal Form (1 NF) • Level 2 Second Normal Form (2 NF) • Level 3 Third Normal Form (3 NF) • Level 4 Boyce/Codd Normal Form (BCNF) • Level 5 Fourth Normal Form (4 NF) • Level 6 Fifth Normal Form (5 NF)

  13. First Normal Form : 1 NF (Repeating Group) • ใช้ปรับตารางที่มีกลุ่มข้อมูลซ้ำภายใต้กฎ ดังนี้ “ค่าของ Attribute ของแต่ละแถวจะมีค่าของข้อมูลเพียงค่าเดียว ” • วิธีการทำ 1NF 1. กำหนด แอททริบิวต์ และ คีย์ โดยคำนึงถึง Entity Integrity Rule 2. เติมข้อมูลให้สมบูรณ์ เพื่อกำจัดปัญหากลุ่มข้อมูลซ้ำ 3. แยกกลุ่มข้อมูลซ้ำเป็นตารางใหม่ 4. กำหนด PK ของตารางใหม่ 5. ตารางเดิม ให้ตัดกลุ่มข้อมูลที่แยกเป็นตารางใหม่ออก โดยคงไว้เฉพาะคีย์ The Entity Integrity Ruleคือค่าของข้อมูลที่เพิ่มเข้ามาค่าของคีย์หลักจะต้องไม่เป็นค่าว่างหรือซ้ำกับข้อมูลเดิม หรือการเพิ่มข้อมูลบาง Attribute ในแถว ขณะที่เหตุการณ์ของ Attribute อื่นไม่เกิดขึ้น

  14. First Normal Form : 1 NF

  15. First Normal Form : 1 NF รายการสั่งซื้อ ผู้ผลิต

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

  17. Partial Dependency Partial Dependencyเป็นความสัมพันธ์ระหว่างค่าของแอททริบิวต์ แบบบางส่วน ที่มักเกิดขึ้นกับตารางที่มีคีย์หลักเป็นคีย์ผสม (Composite Key) และมี Attribute เพียงบางส่วนของคีย์หลัก สามารถระบุค่าของ Attribute อื่น ที่ไม่ใช่คีย์หลัก (Non-Key Attribute) ได้ รายการสั่งซื้อ รหัสผู้ผลิตรหัสสินค้า ชื่อสินค้า จำนวน S1 P1 PEN 100 S1 P2 TABLE 200 S1 P3 DESK 300 S2 P1 PEN 300 S2 P3 DESK 400 S3 P4 BAG 100

  18. Second Normal Form : 2 NF • วิธีการทำ 2NF 1. พิจารณาตารางให้อยู่ในรูปแบบ 1 NF(ไม่มีกลุ่มข้อมูลซ้ำ) 2. กำจัดปัญหาPartial Dependency มีขั้นตอนดังนี้ 2.1 แยก Attribute ที่มีความสัมพันธ์กันเพียงบางส่วนของคีย์หลักไว้ในตารางใหม่ 2.2 กำหนดให้ PK จากตารางเดิม เป็น PK ของ ตารางใหม่ด้วย 2.3 ตัด Attribute ที่แยกออกมาจากตารางเดิม (PK ยังต้องอยู่ครบ) 3. พยายามขจัดปัญหาข้อขัดแย้งของข้อมูล ที่อาจเกิดขึ้นจากการเพิ่ม ลบ แก้ไขข้อมูลของตารางหนึ่งๆ (Insert,Delete,Update)

  19. Partial Dependency รายการสั่งซื้อ 1 รหัสผู้ผลิต รหัสสินค้า ชื่อสินค้า จำนวน S1 P1 PEN 100 S1 P2 TABLE 200 S1 P3 DESK 300 S2 P1 PEN 300 S2 P3 DESK 400 S3 P4 BAG 100 จะได้ รหัสผู้ผลิตรหัสสินค้า จำนวน S1 P1 100 S1 P2 200 S1 P3 300 S2 P1 300 S2 P3 400 S3 P4 100 รหัสสินค้า ชื่อสินค้า P1 PEN P2 TABLE P3 DESK P4 BAG

  20. Third Normal Form : 3 NF (Transitive Dependency) • เป็นกระบวนการที่ใช้กับตารางที่อยู่ในรูป 2 NF แล้ว “ Nonkey Attribute จะต้องไม่มีคุณสมบัติในการระบุค่า Attribute อื่นๆได้” จังหวัด รหัสผู้ผลิต ชื่อผู้ผลิต อัตรา ระบุค่า จังหวัด สามารถระบุ อัตราได้

  21. Transitive Dependency Transitive Dependency เป็นความสัมพันธ์ระหว่างค่าของแอททริบิวต์ ในลักษณะที่ NonKey Attribute สามารถระบุค่า Attribute อื่นได้ ผู้ผลิต รหัสผู้ผลิต ชื่อผู้ผลิต จังหวัด อัตรา S1 SERI BANGKOK 2 S2 WANIDA RAYONG 3 S3 SOMCHAI RAYONG 3 S4 ORAPIN BANGKOK 2 S5 TANACHOTE PATUMTANE 1

  22. Third Normal Form : 3 NF • วิธีการทำ 3NF 1. พิจารณาตารางให้อยู่ในรูปแบบ 2 NF 2. กำจัดTransitive Dependency 2.1 แยก Attribute ที่มีความสัมพันธ์แบบ Transitive Dependencyไปไว้ในตารางใหม่ 2.2 กำหนดให้ Attribute ที่ระบุค่า Attribute อื่น เป็น PK ของ ตารางใหม่ด้วย และตัด Attribute ที่ถูกระบุค่า ออกจากตารางเดิม 2.3 ใส่ Attribute ที่เป็น PK ของตารางใหม่ไว้ในตารางเดิมด้วย 3. พยายามขจัดปัญหาข้อขัดแย้งของข้อมูลที่อาจเกิดขึ้นจากการ เพิ่ม ลบแก้ไขข้อมูล

  23. Transitive Dependency ผู้ผลิต 1 รหัสผู้ผลิต ชื่อผู้ผลิต จังหวัด อัตรา S1 SERI BANGKOK 2 S2 WANIDA RAYONG 3 S3 SOMCHAI RAYONG 3 S4 ORAPIN BANGKOK 2 S5 TANACHOTE PATUMTANE 1 จะได้ รหัสผู้ผลิต ชื่อผู้ผลิต จังหวัด S1 SERI BANGKOK S2 WANIDA RAYONG S3 SOMCHAI RAYONG S4 ORAPIN BANGKOK S5 TANACHOTE PATUMTANE จังหวัด อัตรา PATUMTANE 1 BANGKOK 2 RAYONG 3

  24. Boyce/Codd Normal Form:BCNF เป็นกระบวนการที่ใช้กับตารางที่อยู่ในรูป 3 NF แล้ว “ จะต้องไม่มี Attribute อื่นสามารถระบุค่าของคีย์หลัก หรือบางส่วนของคีย์หลักได้” จะเป็นการขยายภาพของ 3 NF ให้ชัดเจนขึ้น โดยมองถึงตารางที่มีคีย์คู่แข่งหลายคีย์ ซึ่งแต่ละคีย์เป็นคีย์ผสม อาจเกิดความซ้ำซ้อนของข้อมูลได้ Candidate Key ชื่อผู้ผลิต รหัสผู้ผลิต รหัสสินค้า จำนวน สามารถระบุค่า PK

  25. Boyce/Codd Normal Form:BCNF • หลักการ ของการทำ BCNF • พิจารณาตารางให้อยู่ในรูปแบบ 3 NF • กำจัด Nonkey Attribute/คีย์คู่แข่ง/คีย์ผสม ที่สามารถระบุถึงบางส่วนของคีย์หลักหรือคีย์หลักได้ โดย 2.1 แยก Attribute ที่เป็นส่วนหนึ่งของคีย์คู่แข่ง ไปไว้ในตารางใหม่ 2.2 กำหนดให้ Attributeที่เป็นคีย์หลักที่ถูกระบุค่า เป็น PK ของตารางใหม่ 2.3 ใส่ Attribute ที่เป็น PK ของตารางใหม่ไว้ในตารางเดิมด้วย 3. พยายามขจัดปัญหาข้อขัดแย้งของข้อมูล ที่อาจเกิดขึ้นจากการเพิ่ม ลบ แก้ไข ข้อมูล

  26. Boyce/Codd Normal Form:BCNF รายการสั่งซื้อ 1 รหัสผู้ผลิตรหัสสินค้า ชื่อผู้ผลิต จำนวน S1 P1 SERI 100 S1 P2 SERI 200 S1 P3 SERI 300 S2 P1 WANIDA 300 S2 P3 WANIDA 400 S3 P4 SOMCHAI 100 จะได้ รหัสผู้ผลิตรหัสสินค้า จำนวน S1 P1 100 S1 P2 200 S1 P3 300 s2 P1 300 s2 P3 400 S3 P4 100 รหัสผู้ผลิต ชื่อผู้ผลิต S1 SERI S2 WANIDA S3 SOMCHAI

  27. Fourth Normal Form : 4NF (Multivalued Dependency) เป็นกระบวนการที่ใช้กับตารางที่อยู่ในรูป BCNF แล้ว “ จะต้องไม่เกิดความสัมพันธ์ในการระบุค่า Attribute แบบหลายค่า โดยที่ Attribute เหล่านี้ไม่มีความสัมพันธ์กัน” คือ หลีกเลี่ยงการเกิดขึ้นของ Independently Multi valued Dependency โดยที่ตารางจะต้องมีอย่างน้อย 3 Attribute PK PK PK SNO PJNO CITY ระบุค่าแบบหลายค่า ระบุค่าแบบหลายค่า SNO+PJNO+CITY เป็น PK Attribute PJNOและ CITY ไม่มีความสัมพันธ์กัน

  28. Fourth Normal Form : 4NF • วิธีการทำ 4NF 1. พิจารณาตารางให้อยู่ในรูปแบบ BCNF 2. กำจัด Independently Multi valued Dependency โดย 2.1 วิเคราะห์หา Attribute ที่ถูกระบุค่าอย่างน้อย 2 Attribute ที่ไม่มีความสัมพันธ์กัน แยก Attribute หนึ่งไปไว้ในตารางใหม่ 2.2 ใส่ Attribute ที่เป็นตัวระบุค่า Attribute อื่นแบบหลายค่า ไปไว้ใน Relation ใหม่ด้วย และกำหนดให้เป็น PK 2.3 กำหนดให้ Attribute ในข้อ 2.2 เป็น PK ของตารางเดิมด้วย 3. พยายามขจัดปัญหาข้อขัดแย้งของข้อมูล ที่อาจเกิดขึ้นจากการ เพิ่ม ลบ แก้ไข ข้อมูล

  29. Multivalued Dependency SNO PJNOCITY S1 PJ01 BANGKOK S1 PJ01 SAMUTPRAKARN S1 PJ02 BANGKOK S1 PJ02 SAMUTPRAKARN S2 PJ03 RAYONG S2 PJ03 CHONBURE S2 PJ04 RAYONG S2 PJ04 CHONBURE SPJC SNO PJNO S1 PJ01 S1 PJ02 S2 PJ03 S2 PJ04 SNOCITY S1 BANGKOK S1 SAMUTPRAKARN S2 RAYONG S2 CHONBURE

  30. Fifth Normal Form : 5NF (Join Dependency) เป็นกระบวนการที่ใช้กับตารางที่อยู่ในรูป 4NF แล้ว “ จะต้องเกิดคุณสมบัติของ Join Dependency คือ สามารถนำตารางที่เป็นผลลัพธ์จากการแตกตาราง มารวม (Join) กัน ด้วยคีย์แล้วได้ข้อมูลที่เหมือนกับตารางเดิม” NK NK PK NK SNO SNAME CITY RATING

  31. Fifth Normal Form : 5NF • ขั้นตอน ของ การทำ 5NF(Project join normal form) 1. พิจารณาตารางให้อยู่ในรูปแบบ 4 NF 2. นำตาราง ที่เป็นผลลัพธ์ในขั้นตอนที่ผ่านมา มารวม(Join) กัน (ทำ Natural Join) แล้วเปรียบเทียบข้อมูลของตารางที่ได้ว่าตรงกับตารางตั้งต้น (ก่อนทำ 4 NF)หรือไม่ 3. ถ้าผลลัพธ์ของการเปรียบเทียบในข้อ 2 เหมือนกันให้สำรวจ Anomaly Rule เพิ่มด้วย ถ้าไม่พบความผิดปกติของข้อมูลถือว่าจบกระบวนการบรรทัดฐาน 4. ถ้าผลลัพธ์จากการเปรียบเทียบในข้อ 2 ไม่เหมือนกัน(มีข้อมูลที่เกินหรือขาดหายไป) ให้ทำการแตกตารางเพิ่มขึ้นอีก 1 ตาราง แล้วทำการ Join ตารางทั้ง 3 ตารางใหม่ เพื่อตรวจสอบว่าข้อมูลเหมือนกับตารางตั้งต้นหรือไม่

  32. Join Dependency SNO SNAME CITY S1 SERI BANGKOK S2 WANIDA RAYONG S3 SOMCHAI RAYONG S4 ORAPIN BANGKOK S5 TANACHOTE PATUMTANE CITY RATING PATUMTANE 1 BANGKOK 2 RAYONG 3 SNO SNAME CITY RATING S1 SERI BANGKOK 2 S2 WANIDA RAYONG 3 S3 SOMCHAI RAYONG 3 S4 ORAPIN BANGKOK 2 S5 TANACHOTE PATUMTANE 1 ผลการ Join

  33. ตัวอย่างการทำ 5 NF ตารางตั้งต้น PROJECT_PLAN PROJECT CITY EMP_NO 1267 ปลูกป่า เชียงราย 1267 ปลูกป่า ราชบุรี 1267 สร้างถนน เชียงราย 1345 ปลูกป่า เพชรบุรี 1345 สร้างถนน เพชรบุรี การแตกตาราง 4 NF EMP_CITY EMP_PROJECT EMP_NO PROJECT EMP_NO CITY 1267 ปลูกป่า 1267 เชียงราย 1267 สร้างถนน 1267 ราชบุรี 1345 ปลูกป่า 1345 เพชรบุรี 1345 สร้างถนน

  34. ตัวอย่างการ JOIN RELATION ตาราง PROJECT_JOIN1 (ที่เป็นผลลัพธ์ของการ JOIN ตาราง EMP_PROJECT และ EMP_CITY) PROJECT CITY EMP_NO 1267 ปลูกป่า เชียงราย 1267 ปลูกป่า ราชบุรี 1267 สร้างถนน เชียงราย * เกิน 1267 สร้างถนน ราชบุรี 1345 ปลูกป่า เพชรบุรี 1345 สร้างถนน เพชรบุรี EMP_PROJECT EMP_CITY EMP_NO PROJECT EMP_NO CITY 1267 ปลูกป่า 1267 เชียงราย 1267 สร้างถนน 1267 ราชบุรี 1345 ปลูกป่า 1345 เพชรบุรี 1345 สร้างถนน

  35. การแตกตาราง จาก 2 ตาราง เป็น 3 ตาราง EMP_CITY EMP_PROJECT EMP_NO PROJECT EMP_NO CITY 1267 ปลูกป่า 1267 เชียงราย 1267 สร้างถนน 1267 ราชบุรี 1345 ปลูกป่า 1345 เพชรบุรี 1345 สร้างถนน PROJECT_CITY ผลลัพธ์ การ Join PROJECT CITY PROJECT EMP_NO CITY ปลูกป่า เชียงราย 1267 ปลูกป่า เชียงราย ปลูกป่า ราชบุรี 1267 ปลูกป่า ราชบุรี ปลูกป่า เพชรบุรี 1267 สร้างถนน เชียงราย สร้างถนน เชียงราย 1345 ปลูกป่า เพชรบุรี สร้างถนน เพชรบุรี 1345 สร้างถนน เพชรบุรี

  36. Example ทำรายงานให้เป็นตาราง จะได้หนึ่งรายการมีมากกว่า 1 บรรทัดมีลักษณะ repeating group แก้ไขโดยใส่ข้อมูลให้ครบทุกช่อง Relation for Grade report

  37. Relation for Grade Report (1NF) • จากตาราง อยู่ในรูป 1NF แต่เกิดปัญหาในการเขียนโปรแกรม ดังนี้ • 1. Insertion anomaly ไม่สามารถเพิ่มวิชาใหม่(course number)ในตารางได้ จนกว่าจะมีการลงทะเบียนเรียนของนักศึกษา • 2. Deletion anomaly เช่น การลบข้อมูลของ Wiwai Jaidee ข้อมูล วิชา C++ จะหายไปจากตาราง • 3.Modification anomaly ในกรณีที่ Ms. Pongwilai มีการเปลี่ยนแปลง Location จาก B1114 เป็น B 2005 จะต้องแก้ไขทุก tuples ที่มีข้อมูลของ Ms. Pongwilai อยู่

  38. First Normal Form(RepeatingGroup) Student Course Instructor

  39. Second Normal Form(Partial Dependency) Course Instructor Course detail

  40. Third normal form (3NF) พบว่า STUDENTและ REGISTRATIONอยู่ในรูป 3 NF แล้ว ยกเว้น COURSE INSTRUCTORที่มีปัญหาคือ 1. ความซ้ำซ้อนของข้อมูล(Data redundancy) จะพบว่ามี ข้อมูลของอาจารย์ที่ซ้ำกัน ในกรณีที่อาจารย์หนึ่งคนสามารถสอนนักศึกษาได้มากกว่าหนึ่งคน เช่น อาจารย์พงษ์วิไล สอนนักศึกษา 2 คน 2. Data anomalies Insertion anomalyในกรณีที่ต้องการเพิ่ม tuple ของ COURSE INSTRUCTOR ต้องมีการเพิ่มข้อมูลอาจารย์เข้าไปด้วย เช่น ต้องการเพิ่ม CS 150 English 4 ต้องกำหนดอาจารย์ที่สอนวิชานั้นๆ ด้วย

  41. Third normal form (3NF) • Deletion anomalyในกรณีที่ต้องการลบ CS 300 จากตารางข้อมูลของอาจารย์ที่สอนวิชานั้นจะหายไปด้วย • Modification anomaly ในกรณีที่ต้องการเปลี่ยนแปลงค่า LOCATION สำหรับ Ms.Pongwilai จาก B 1114 เป็น B 1300 ต้องมีการแก้ไขค่าในหลายๆ tuples ที่ Ms.Pongwilaiสอนรายวิชานั้น COURSE INSTRUCTOR

  42. Third normal form (3NF) ดังนั้นสามารถกำหนด relation COURSE INSTRUCTOR ได้ดังนี้ COURSE INSTRUCTOR

  43. Boyce-Codd Normal form (BCNF) • Additional Normal Forms(แอททริบิวต์อื่นระบุค่าคีย์ได้) • ในกรณีที่ relation มีมากกว่าหนึ่ง candidate key จากตัวอย่าง ตาราง STMAJADV • Semantic rule ของตาราง ST MAJ ADV • 1.น.ศ.แต่ละคนอาจมีหลายวิชาเอก(C_Major) • 2.ในแต่ละวิชาเอก(C_Major) มี Advisor ได้หลายคน • 3.ในแต่ละ Advisor จะแนะนำน.ศ.หลายคนภายใน หนึ่งวิชาเอก(C_Major) • จาก information สามารถกำหนด functional dependent ของ relation • 1.STUDENT NUMBER,C_MAJOR ระบุถึง ADVISOR แต่ • 2.ADVISOR ระบุถึง C_MAJOR ซึ่งเป็นส่วนหนึ่งของคีย์หลัก

  44. Boyce-Codd Normal form (BCNF) ST MAJ ADV จาก (FD) STUDENT NUMBER,MAJOR ระบุถึง ADVISOR จาก relation ST MAJ ADV จะแตกได้ชัดเจนใน 3NF ซึ่งไม่มี partial functional dependency และ Transitive dependency แต่ยังเกิด anomaly ใน relation อยู่ ดังนี้

  45. Boyce-Codd Normal form (BCNF) • ในกรณีที่น.ศ. 4123004501 เปลี่ยนจาก Major Accounting เป็น Math ข้อมูลภายใน row จะถูก update ทำให้เกิดการสูญเสียข้อมูลของ Lee Sejon ที่ให้คำปรึกษา Accounting (Modification anomaly) • ในกรณีที่ต้องการเพิ่มข้อมูล Babbage ให้คำปรึกษา Computer Science จะไม่สามารถทำการเพิ่มข้อมูลได้จนกระทั่งจะมีน.ศ.ใน Major Computer Science ถูกกำหนดให้ Babbage เป็น ADVISOR (Insertion anomaly) • ในกรณีที่น.ศ.หมายเลข 4123004501 ลาออกข้อมูล Lee Sejon (ADVISOR) ก็จะ ถูกลบด้วย (Deletion anomaly) • ซึ่งความผิดพลาดที่เกิดขึ้นนั้นเกิดจากการซ้ำซ้อน (Overlap) ของ candidate key ตั้งแต่ 2 candidate key ขึ้นไป (STUDENT NUMBER,ADVISOR) และ (STUDENT NUMBER ,C_MAJOR) ซึ่งมีการใช้ key ร่วมกันคือ STUDENT NUMBER ซึ่งเหตุการณ์ดังกล่าวมีโอกาสเกิดขึ้นได้น้อยมาก

  46. Boyce-Codd Normal form (BCNF) ST MAJ ADV ST_ MAJ MAJ_ ADV

  47. Fourth Normal Form เมื่อ relation นั้นอยู่ในรูป BCNF และไม่มีความผิดปกติจากผลลัพธ์ของ Functionaldependency แต่ยังคงเกิดความผิดปกติจาก multi-valueddependency (การขึ้นต่อกันเชิงกลุ่ม) ดังตัวอย่าง จาก relation แสดงถึงข้อมูลของแต่ละ COURSE ที่ INSTRUCTOR ทำการสอน และ TEXTBOOK ที่ใช้ภายใน COURSE(เกิด repeating groups) ซึ่งภายใน relation มี สมมติฐานดังนี้ 1.แต่ละ COURSE จะมี INSTRUCTOR หลายคน 2.แต่ละ COURSE มีการใช้ TEXTBOOK หลายเล่ม 3.TEXTBOOK ที่เลือกใช้ใน COURSE จะไม่ขึ้นกับ INSTRUCTOR Course_Text

  48. Course_Text Teacher Text

More Related