Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Introduction to Database System Chapter 5: Normalization Adisak Intana Lecturer บรรทัดฐานข้ อมูล (Normalization) เป็ นการแปลงข้ อมูลทีอ่ ยู่ในรู ปแบบซับซ้ อน ยากต่ อการ จัดการให้ อยู่ในรู ปแบบง่ ายและสะดวกต่ อการจัดการ Introduction to Database System 2 ความจาเป็ นของบรรทัดฐานข้ อมูล (Normalization) ตัวอย่ าง 5.1 ตารางโครงการ Introduction to Database System 3 ความจาเป็ นของบรรทัดฐานข้ อมูล (Normalization) จากตารางตัวอย่ าง 5.1 primary key คือ ………………….. Introduction to Database System 4 ความจาเป็ นของบรรทัดฐานข้ อมูล (Normalization) 1. ถ้ าหากต้ องการเพิม่ พนักงานใหม่ เช่ น นายสมรักษ์ คาเหมือง ซึ่งเป็ นนักเขียนโปรแกรม สามารถทาได้ หรื อไม่ ? 2. ถ้ าหากต้ องการแก้ ไขข้ อมูลพนักงานทีช่ ื่ อ นายสมบัติ ส่ งศรี เป็ น สมบัติ ส่ งส่ วย จะแก้ ไขได้ หรื อไม่ ? Introduction to Database System 5 ความจาเป็ นของบรรทัดฐานข้ อมูล (Normalization) 3. ถ้ าหากต้ องการระบบโครงการระบบบัญชี ออกลบได้ หรื อไม่ ? Introduction to Database System 6 ความจาเป็ นของบรรทัดฐานข้ อมูล (Normalization) เราเรียกปัญหาทีเ่ กิดจากการเพิม่ ข้ อมูลว่ า insert anomaly ปัญหาทีเ่ กิดจากการแก้ ไขข้ อมูลว่ า update anomaly ปัญหาทีเ่ กิดจากการลบข้ อมูลว่ า delete anomaly Introduction to Database System 7 ประโยชน์ ของการทาบรรทัดฐานข้ อมูล (Normalization) 1. การทาบรรทัดฐานเป็ นเครื่ องมือทีช่ ่ วยในการออกแบบ ฐานข้ อมูลเชิงสั มพันธ์ 2. ทาให้ ทราบว่ ารีเลชันที่ออกแบบ เกิดปัญหาหรื อไม่ ด้ าน ใดบ้ าง 3. ช่ วยแก้ ปัญหาที่เกิดขึน้ กับรีเลชัน 4. ช่ วยลดปัญหาทีเ่ กิดขึน้ จากการจัดเก็บข้ อมูล Introduction to Database System 8 ระดับของการทาบรรทัดฐานข้ อมูล (Normalization) การทาบรรทัดฐานข้ อมูลมีหลายระดับด้ วยกัน แต่ จะ แนะนาให้ รู้ จกั เพียง 3 ระดับ มีดงั ต่ อไปนี้ 1 NF Normalization 2 NF Normalization 3 NF Normalization Introduction to Database System 9 1 NF Normalization นิยาม : รีเลชันใดจะอยู่ในรู ปแบบนอร์ มลั ระดับที่ 1 (1 NF) ได้ เมื่อรีเลชันนั้นจะต้ องไม่ มีกลุ่มข้ อมูลซ้ากันอยู่ (repeating group) Introduction to Database System 10 1 NF Normalization ตัวอย่ าง 5.2 ตารางโครงการ Introduction to Database System 11 1 NF Normalization 1 แถว 1 แถว มีหลายค่ า (repeating group) Introduction to Database System 12 1 NF Normalization Introduction to Database System 13 1 NF Normalization Introduction to Database System 14 1 NF Normalization ตัวอย่ าง 5.3 ตารางพนักงาน Introduction to Database System 15 2 NF Normalization นิยาม : รีเลชันใดจะอยู่ในรู ปแบบนอร์ มลั ระดับที่ 1 (1 NF) ได้ เมื่อรีเลชันนั้น 1. เป็ น 1 NF 2. ไม่ มี partial independency Introduction to Database System 16 2 NF Normalization partial independency คือ attributes ที่ไม่ ได้ เป็ น key หรื อ non key จะต้ องขึน้ กับ attributes ที่เป็ น key ทุกตัว กล่ าวคือ attributes ที่เป็ น key ทุกตัว จะต้ องสามารถเป็ น ตัวแทนใช้ ในการระบุ attributes ที่ไม่ ได้ เป็ น key ได้ Introduction to Database System 17 2 NF Normalization ตัวอย่ าง 5.4 ตารางโครงการ Introduction to Database System 18 2 NF Normalization จากตารางตัวอย่ าง 5.4 primary key คือ ………………….. Introduction to Database System 19 2 NF Normalization โครงการหมายเลข 15 มีชื่อโครงการว่ าอย่ างไร มีพนักงานที่รับผิดชอบ ชื่ ออะไร รหัสอะไร ทางาน ตาแหน่ งไหน รหัสโครงการ, รหัสพนักงาน --> ชื่ อโครงการ, ชื่ อ พนักงาน, ตาแหน่ ง Introduction to Database System 20 2 NF Normalization โครงการหมายเลข 15 มีชื่อโครงการว่ าอย่ างไร รหัสโครงการ --> ชื่ อโครงการ Introduction to Database System 21 2 NF Normalization พนักงานที่มีรหัส 101 ชื่ ออะไร ทางานตาแหน่ งไหน รหัสพนักงาน --> ชื่ อพนักงาน, ตาแหน่ ง Introduction to Database System 22 2 NF Normalization จากตัวอย่ างไม่ เป็ น 2 NF เพราะเนื่องจาก รหัสโครงการ, รหัสพนักงาน --> ชื่ อโครงการ, ชื่ อ พนักงาน, ตาแหน่ ง รหัสพนักงาน --> ชื่ อพนักงาน, ตาแหน่ ง มี ชื่ อพนักงาน และตาแหน่ ง ทีไ่ ม่ ใช่ คยี ์ สามารถถูกคีย์ รหัสพนักงานระบุได้ โดยไม่ ต้องใช้ รหัสโครงการ Introduction to Database System 23 2 NF Normalization รหัสโครงการ --> ชื่ อโครงการ มี ชื่ อโครงการ ทีไ่ ม่ ใช่ คยี ์ สามารถถูกคีย์รหัสโครงการ ระบุได้ โดยไม่ ต้องใช้ รหัสพนักงาน Introduction to Database System 24 2 NF Normalization สรุปได้ ว่า มีบาง attribute ทีไ่ ม่ ใช่ คยี ์ สามารถถูกระบุได้ เพียงแค่ คีย์ใดคีย์หนึ่ง Introduction to Database System 25 2 NF Normalization วิธีการแก้ ไข แยกเป็ น 3 ตาราง ดังนี้ โครงการ(รหัสโครงการ, ชื่ อโครงการ) พนักงาน(รหัสพนักงาน, ชื่ อพนักงาน, ตาแหน่ ง) ผู้รับผิดชอบ(รหัสโครงการ, รหัสพนักงาน) Introduction to Database System 26 2 NF Normalization ตารางโครงการ Introduction to Database System 27 2 NF Normalization ตารางพนักงาน Introduction to Database System 28 2 NF Normalization ตารางผู้รับผิดชอบโครงการ Introduction to Database System 29 3 NF Normalization นิยาม : รีเลชันใดจะอยู่ในรู ปแบบนอร์ มลั ระดับที่ 3 (3 NF) ได้ เมื่อรีเลชันนั้น 1. เป็ น 2 NF 2. ไม่ มี transitive independency Introduction to Database System 30 3 NF Normalization transitive independency คือ attributes ที่ไม่ ได้ เป็ น key หรื อ non key จะขึน้ กับ attributes ที่ไม่ ได้ เป็ น non key Introduction to Database System 31 3 NF Normalization Introduction to Database System 32 3 NF Normalization พนักงานรหัส 101 ชื่ ออะไร ทาตาแหน่ งไหน อยู่แผนก อะไร รหัสพนักงาน --> ชื่ อพนักงาน, ตาแหน่ ง, รหัสแผนก, ชื่ อแผนก Introduction to Database System 33 3 NF Normalization แผนก 1001 มีชื่อว่ าแผนกอะไร รหัสแผนก --> ชื่ อแผนก Introduction to Database System 34 3 NF Normalization จากตัวอย่ างไม่ เป็ น 3 NF เพราะเนื่องจาก รหัสแผนก --> ชื่ อแผนก มี ชื่ อแผนก ทีไ่ ม่ ใช่ คยี ์ สามารถถูกรหัสแผนก ที่ไม่ ใช่ คยี ์ ระบุได้ โดยไม่ ต้องใช้ รหัสพนักงาน Introduction to Database System 35 3 NF Normalization Transitive dependency รหัสพนักงาน --> รหัสแผนก --> ชื่ อแผนก Introduction to Database System 36 3 NF Normalization วิธีการแก้ ไข แยกเป็ น 2 ตาราง ดังนี้ พนักงาน(รหัสพนักงาน, ชื่ อพนักงาน, ตาแหน่ ง) แผนก(รหัสแผนก, ชื่ อแผนก) Introduction to Database System 37 3 NF Normalization ตารางพนักงาน Introduction to Database System 38 3 NF Normalization ตารางแผนก Introduction to Database System 39 BCNF Normalization นิยาม : รีเลชันใดจะอยู่ในรู ปแบบ BCNF ได้ เมื่อรีเลชันนั้น 1. เป็ น 3 NF 2. ไม่ มี attribute อื่นในรีเลชันที่สามารถระบุค่า attribute ที่เป็ นคีย์หลัก หรื อส่ วนใดส่ วนหนึ่งของคีย์ หลักในกรณีที่คยี ์ หลักเป็ นคีย์ผสม Introduction to Database System 40 BCNF Normalization รู ปแบบทีต่ ้ องทาให้ เป็ น BCNF มักจะมีคุณสมบัติ ดังนี้ – เป็ นรี เลชันทีม ่ ีคยี ์ คู่แข่ งหลายคีย์ (Multiple Candidate Key) โดยทีค่ ยี ์ คู่แข่ งนั้นเป็ นคีย์ผสม (Composite key) – คีย์ค่ ูแข่ งนั้นมีบางส่ วนซ้าซ้ อนกัน (Overlapped) มี attribute บางตัวร่ วมกันอยู่ Introduction to Database System 41 BCNF Normalization Introduction to Database System 42 BCNF Normalization จากตัวอย่ างไม่ เป็ น BCNF เนื่องจาก รหัสคนงาน, ความชานาญ--> ชื่ อผู้ควบคุม รหัสคนงาน, ชื่ อผู้ควบคุม --> ความชานาญ ชื่ อผู้ควบคุม --> ความชานาญ ตารางนีม้ ี 2 candidate keys คือ (รหัสคนงาน, ความ ชานาญ) และ (รหัสคนงาน, ชื่ อผู้ควบคุม) Introduction to Database System 43 BCNF Normalization ตารางนีม้ ี 2 candidate keys คือ (รหัสคนงาน, ความ ชานาญ) และ (รหัสคนงาน, ชื่ อผู้ควบคุม) คีย์คู่แข่ งจะมีแอทริบิวท์ ทเี่ หมือนกันเชื่ อมอยู่ คือ รหัสคนงาน Introduction to Database System 44 BCNF Normalization เกิดความซ้าซ้ อนกันของข้ อมูล Introduction to Database System 45 BCNF Normalization วิธีการแก้ ไขแยกเป็ น 2 ตาราง คนงาน (รหัสคนงาน, ชื่ อผู้ควบคุม) ผู้ควบคุม (ชื่ อผู้ควบคุม, ความชานาญ) Introduction to Database System 46 4NF Normalization นิยาม : รีเลชันใดจะอยู่ในรู ปแบบ 4 NF ได้ เมื่อรีเลชันนั้น 1. เป็ น BCNF 2. รีเลชันทีไ่ ม่ มีความสั มพันธ์ ในการระบุค่าของ attribute แบบหลายค่ า Introduction to Database System 47 4NF Normalization Introduction to Database System 48 4NF Normalization จากตัวอย่ างไม่ เป็ น 4NF เนื่องจาก รหัสพนักงาน -->> ชื่ อบุตร ตารางนีม้ ระบุค่าของ attribute ชื่ อบุตรแบบหลายค่ า Introduction to Database System 49 4NF Normalization วิธีการแก้ ไขแยกเป็ น 2 ตาราง พนักงาน (รหัสพนักงาน, ชื่ อพนักงาน) บุตร(รหัสพนักงาน, ชื่ อบุตร) Introduction to Database System 50