ซอฟต์แวร์พัฒนาระบบฐานข้อมูล Normalization V.2507201301 ซอฟต์แวร์พัฒนาระบบฐานข้อมูล Normalization ปริญญา น้อยดอนไพร สาขาวิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์และเทคโนโลยี มหาวิทยาลัยราชภัฏสุราษฎร์ธานี
วัตถุประสงค์ นักศึกษามีความรู้ความเข้าใจ ดังนี้ Normalization Functional Dependency (FDs) ประเภทของ Functional Dependency First Normal Form (1NF) Second Normal Form (2NF) Third Normal Form (3NF)
Normalization Normalization คือ วิธีการใช้ในการตรวจสอบและแก้ปัญหาทางด้านความซ้ำซ้อนของข้อมูล โดยการดำเนินการให้ข้อมูลในแต่ละ Relation อยู่ในรูปที่เป็นหน่วยที่เล็กที่สุดที่ไม่สามารถแตกย่อยเป็นหน่วยย่อย ๆ ได้อีก โดยยังคงความสัมพันธ์ระหว่างข้อมูลใน Relation ต่าง ๆไว้ตามหลักการที่กำหนดไว้ใน Relational Model
Normalization ขั้นตอนในการทำ Normalization เป็นการดำเนินงานอย่างเป็นลำดับที่กำหนดไว้ด้วยกันเป็นขั้นตอน ตามปัญหาที่เกิดขึ้นในขั้นตอนนั้น ๆ ซึ่งแต่ละขั้นตอนเป็นดังนี้ First Normalization Form (1NF) Second Normalization Form (2NF) Third Normalization Form (3NF) Boyce-Codd Normalization Form (BCNF) Fourth Normalization Form (4NF) Fifth Normalization Form (5NF)
Functional Dependency (FDs) การพิจารณาโครงสร้างแต่ละ Relation ว่ามีโครงสร้างอยู่ใน Normal Form ระดับใด จะพิจารณาจาก Functional Dependency ซึ่งความสัมพันธ์ระหว่าง Attribute ต่าง ๆภายใน Relation กับ Attribute หรือกลุ่ม Attribute ที่ทำหน้าที่เป็น Key ของ Relation นั้น ซึ่งความสัมพันธ์นี้ จะถูกนิยามด้วยรูปแบบทางคณิตศาสตร์ที่เรียกว่า “Functional Dependency” ดังนี้ FD : Determinant-attribute Dependency-attribute
Functional Dependency (FDs) โดยที่ค่า Determinant-attribute หมายถึง Attribute ที่ระบุค่าด้วยค่าใดค่าหนึ่งแล้ว สามารถแสดงค่าของ Dependency-attribute ซึ่งเป็น Attribute ที่มีความสัมพันธ์กับ Determinant-attribute นั้นออกมาเช่น ตารางแสดงความสัมพันธ์ระหว่างหมายเลขบัตรประชาชน และชื่อเจ้าของบัตรดังนี้
Functional Dependency (FDs) Person_ID Person_Name 1922224757784 สมเกียรติ 1733299743822 น้ำผึ้ง 1439224567381 กาญจนา 3829112233289 พินรัฏ 3294779122333 ดวงแก้ว 1995553434654 Person_ID Person_Name
Functional Dependency (FDs) Person_ID Person_Name จากรูปแสดงการกำหนดความสัมพันธ์ระหว่าง Attribute ในรูปของ Functional Dependency
ประเภท Functional Dependency (FDs) 1. Functional Dependency ที่เกิดขึ้นจากความสัมพันธ์ระหว่าง Determinant และ Dependency อย่างละ 1 ค่า เช่นความสัมพันธ์ระหว่างหมายเลขบัตรประจำตัวประชาชนและชื่อเจ้าของบัตร ดังตารางนี้ Person_ID Person_Name 1922224757784 สมเกียรติ 1733299743822 น้ำผึ้ง Person_ID Person_Name
ประเภท Functional Dependency (FDs) 2. Functional Dependency ที่เกิดขึ้นจากความสัมพันธ์ระหว่าง Determinant 1 ค่ากับ Dependency หลายค่า เช่น หมายเลขบัตรประชาชน และข้อมูลที่ปรากฏอยู่บนบัตรประชาชน ดังตารางนี้ Person_ID Person_Name LName Address BirthDate 1922224757784 สมเกียรติ ชื่นยศ 123 บ้านโป่ง ราชบุรี 3/03/2511 1733299743822 น้ำผึ้ง สู่สุข 39/6 คลองสาน กทม. 24/6/2539 1439224567381 กาญจนา หิรัญรัตน์ 24/6 ลาดพร้าว1 กทม.
ประเภท Functional Dependency (FDs) Person_ID Person_Name LName Address BirthDate 1922224757784 สมเกียรติ ชื่นยศ 123 บ้านโป่ง ราชบุรี 3/03/2511 1733299743822 น้ำผึ้ง สู่สุข 39/6 คลองสาน กทม. 24/6/2539 1439224567381 กาญจนา หิรัญรัตน์ 24/6 ลาดพร้าว1 กทม. Person_ID Person_Name , LName , Address , BirthDate
ประเภท Functional Dependency (FDs) 3. Functional Dependency ที่มีความสัมพันธ์ 2 ทาง ซึ่งเป็น Functional Dependency ทั้ง Determinant และ Dependency ต่างสามารถทำหน้าที่ของอีกฝ่ายหนึ่งได้ เช่น ความสัมพันธ์ระหว่างชื่อของผู้จัดการโครงการ (Attribute “Manager”) กับชื่อโครงการ (Attribute “Project_No”) ซึ่งถ้าทราบชื่อผู้จัดการโครงการจะสามารถทราบถึงชื่อของโครงการที่ผู้จัดการนั้นเป็นเจ้าของได้ ในขณะเดียวกัน เมื่อทราบชื่อโครงการก็จะสามารถทราบถึงชื่อของผู้จัดการโครงการนั้นได้ เช่นเดียวกัน ดังตารางต่อไปนี้
ประเภท Functional Dependency (FDs) Project_No Manager PJ001 EM004 PJ002 EM045 PJ003 EM981 Project_No Manager Manager Project_No Manager Project_No
ประเภท Functional Dependency (FDs) 4. Functional Dependency ที่ต้องใช้ Determinant มากกว่า 1 ค่า เพื่ออ้างถึง Dependency เช่น ความสัมพันธ์ระหว่างจำนวนสินค้าที่ผลิตได้ของสินค้าแต่ละชนิดภายใต้สายการผลิตต่างๆ ดังตารางต่อไปนี้
ประเภท Functional Dependency (FDs) Product_Line Item_No Used_Qut L001 I012 I019 I024 30 40 90 L004 I001 73 L005 45 98 34 Product_Line , Item_No Used_Qut
First Normal Form (1NF) ขั้นตอนนี้เป็นขั้นตอนสำหรับปรับโครงสร้างของ Relation เพื่อให้ทุก Attribute ของ Relation มีคุณสมบัติ Atomicity กล่าวคือ โครงสร้างข้อมูลของ Relation ในแบบ 1NF ต้องประกอบด้วย Table ที่อยู่ในรูป 1NF มี Attribute ที่ได้กำหนดให้เป็น Primary Key ไม่มี Repeating Group Attribute อื่นๆ ต้องขึ้นอยู่กับ Primary Key
First Normal Form (1NF) ตัวอย่างที่ 1 แสดงการทำ First Normal Form โดยกำหนดให้ Relation “Order” มีข้อมูลดังนี้
Cust_No Cust_Name City Zone_Sale Order_Content Product_ID Order_Qut C001 นารี เกิดสว่าง อยุธยา 001 P001 P003 P004 24 30 50 C002 สลักจิตร สว่างภาพ ศรีสะเกษ 002 P002 29 40 C003 สุทิศา เจ๊กสกุล เชียงใหม่ 004 P005 60 C004 ต้นสาย ตันเจริญ
Cust_No Cust_Name City Zone_Sale Product_ID Order_Qut C001 นารี เกิดสว่าง อยุธยา 001 P001 24 P003 30 P004 50 C002 สลักจิตร สว่างภาพ ศรีสะเกษ 002 29 P002 40 C003 สุทิศา เจ๊กสกุล เชียงใหม่ 004 P005 60 C004 ต้นสาย ตันเจริญ
First Normal Form (1NF) ผลลัพธ์ที่ได้จากการทำ 1NF ในรูปของ Function Dependency ดังนี้ Cust_No,Product_ID Cust_Name,City,Zone_Sale, Order_Qut เขียนให้อยู่ในรูปแบบของ Table ได้ดังนี้ Order(Cust_No,Product_ID,Cust_Name,City,Zone_Sale,Order_Qut)
Second Normal Form (2NF) Table ที่อยู่ในรูปแบบ 2NF จะต้อง 1. อยู่ในรูปแบบของ 1NF และ 2. ไม่มี Partial dependency Partial dependency เกิดขึ้นในกรณีที่มีข้อมูลในบาง Attribute ขึ้นอยู่กับ Dependency บางส่วนของ Primary Key จาก table ที่ได้จาก 1NF เราหาได้ว่า Cust_No และ Product_ID รวมกัน ทำหน้าที่เป็น Primary Key ขั้นตอนต่อไปคือ หาว่า มี Attribute ใดบ้างที่มีความเป็น Partial dependency นั้นคือ ขึ้นอยู่กับ Cust_No เพียงอย่างเดียวหรือขึ้นอยู่กับ
Second Normal Form (2NF) Product_ID เพียงอย่างเดียว และ Attribute ใด ที่ขึ้นอยู่กับ Cust_No และ Product_ID อย่างแท้จริง ผลลัพธ์ที่ได้จากการทำ 2NF ในรูปของ Function Dependency ดังนี้ Cust_No Cust_Name,City,Zone_Sale Cust_No ,Product_ID Order_Qut
Second Normal Form (2NF) เขียนให้อยู่ในรูปแบบของ Table ได้ดังนี้ Customer(Cust_No, Cust_Name,City,Zone_Sale) Order (Cust_No ,Product_ID,Order_Qut)
Third Normal Form (3NF) Table ที่อยู่ในรูปแบบ 3NF จะต้อง 2. ไม่มี Transitive dependency Transitive dependency เกิดขึ้นในกรณีที่มี Attribute บางตัว ขึ้นอยู่กับ Dependency Attribute ที่ไม่ใช่ Key (non-key attribute) จาก ตารางที่ได้จาก 2NF
Third Normal Form (3NF) ผลลัพธ์ที่ได้จากการทำ 3NF ในรูปของ Function Dependency ดังนี้ Cust_No Cust_Name,Zone_Sale Zone_Sale City Cust_No ,Product_ID Order_Qut
Third Normal Form (3NF) เขียนให้อยู่ในรูปแบบของ Table ได้ดังนี้ Customer(Cust_No, Cust_Name,Zone_Sale) CustZone (Zone_Sale ,City) Order (Cust_No ,Product_ID,Order_Qut)