1. Functional Dependency คืออะไร แบ่งเป็นกี่ประเภท
= คือการพิจารณาโครงสร้างของแต่ละ Relation ว่ามีโครงสร้างอยู่ใน Normal Form ระดับใด จะพิจารณาจาก Functional Dependency ซึ่งเป็นความสัมพันธ์ระหว่าง Attribute ต่าง ๆ ภายใน Relation กับ Attribute หรือกลุ่ม Attribute ที่ทำหน้าที่เป็น Key ของ Relation นั้นซึ่งความสัมพันธ์นี้ จะถูกนิยามด้านรูปแบบทางคณิตศาสตร์ที่เรียกว่า “Functional Dependency”
Functional Dependency สมารถแบ่งออกเป็น 4 ประเภท ดังนี้
1. Functional Dependency ที่เกิดจากความสัมพันธ์ระหว่าง Determinant และ Dependency อย่างละ 1 คำ เช่น ความสัมพันธ์ระหว่างหมายเลขบัตรประชาชนและชื่อเจ้าของบัตร
2. Functional Dependency ที่เกิดจากความสัมพันธ์ระหว่าง Determinant 1 ค่ากับ Dependency หลายค่า เช่น ความสัมพันธ์ระหว่างหมายเลขบัตรประชาชนและข้อมูลที่ปรากฏอยู่บนบัตรประชาชน
3. Functional Dependency ที่มีความสัมพันธ์ 2 ทาง ซึ่งเป็น Functional Dependencyที่ทั้ง Determinant และ Dependency ต่างสามารถทำหน้าที่ของอีกฝ่ายหนึ่งได้ เช่น ความสัมพันธ์ ระหว่างชื่อผู้จัดการโครงการ (Attribute “MANAGER”)กับชื่อโครงการ(Attribute“PROJECT_NO”)ซึ่งถ้าทราบชื่อของโครงการจะสามารถทราบได้ถึงชื่อของโครงการที่ผู้จัดการนั้นเป็นเจ้าของได้ และเมื่อทราบชื่อโครงการก็จะสามารถทราบถึงชื่อของผู้จัดการโครงการนั้นเช่นเดียวกัน
4. Functional Dependency ที่ต้องใช้ Determinant มากกว่า 1 ค่า เพื่ออ้างถึง Dependency เช่น ความสัมพันธ์ระหว่างจำนวนสินค้าที่ผลิตได้ของสินค้าแต่ละชนิดภายใต้สายการผลิตต่าง ๆ
2. จงอธิบายความหมายของ Repeating Group พร้อมยกตัวอย่าง
= Repeating Group หมายถึง รีเลชั่น ของตารางเกิดมีกลุ่มข้อมูลซ้ำกันหรือกล่าวอีกนัยหนึ่งคือแต่ละช่องเซลของรีเลชั่นจะถูกจัดเก็บข้อมูลมากกว่า 1 ค่า ส่งผลให้รีเลชั่น นี้ มีโครงสร้างที่ไม่สอดคล้องตามคุณสมบัติของ 1NF
ยกตัวอย่างเช่น ตาราง Oder สังเกตว่าลูกค้า(Attribute“CUST_NO”) 1 คนสามารถมีรายการสั่งซื้อ (Attribute “ORDER_CONTENT”) ได้มากกว่า 1 รายการ ดังนั้นจึงกล่าวได้ว่า (Attribute“CUST_NO”) นี้ มีความสัมพันธ์กับ(Attribute“ORDER_CONTENT”) ในแบบ Repeating Group ส่งผลให้รีเลชั่น นี้ มีโครงสร้างที่ไม่สอดคล้องตามคุณสมบัติของ 1NF
3. จงอธิบายความหมายของ Transitive Dependency พร้อมยกตัวอย่าง
= Transitive Dependency หมายถึง รีเลชั่น ของตารางเกิดมี Attribute บางตัวที่ไม่ได้เป็นคีย์หลัก มีคุณสมบัติในการกำหนดค่าของอื่นที่ไม่ใช่คีย์หลักในตารางรีเลชั่นหรือกล่าวอีกนัยหนึ่งคือ มี 2 Attribute ที่ไม่ใช่คีย์หลัก ที่สามารถระบุค่าระหว่างกันได้
ยกตัวอย่างเช่น ในตาราง Oder สินค้าของลูกค้าจาก รีเลชั่น “Cust” มีค่าของ Attribute “CITY” และ Attribute “ZONE_SALE” ปรากฏข้อมูลซ้ำกันเป็นคู่ ๆ หรือกล่าวอีกนัยหนึ่งคือ ทั้ง 2 Attribute สมารถระบุค่าระหว่างกันได้ กล่าวคือ เมื่อระบุค่าให้กับ Attribute “ZONE_SALE” จะสามารถทราบถึงเมืองใน Attribute “CITY” ได้ ดังนั้นจึงทำให้ รีเลชั่นนี้ขาดคุณสมบัติของ 3NF และยังก่อให้เกิดปัญหาความผิดพลาดทางด้าน Anomaly
4.จงตรวจสอบตารางต่อไปว่าอยู่ในรูปของ 1NF 2NF และ 3NF แล้วหรือยัง ถ้ายัง Normalization ให้อยู่ในรูปดังกล่าว
P_ID | P_Name | E_ID | E_ Name | Job_Calss | Chg_Hour | Hour |
11 | EAU Web Site | 103 | สมชาย ไม้ดี | SA | 500 | 23.8 |
101 | แท่น งามยิ่ง | Database Designer | 450 | 19.4 | ||
105 | ชาย ดีศรี | Database Designer | 450 | 35.7 | ||
106 | แม็ก ยอดยิ่ง | Programmer | 400 | 12.6 | ||
102 | อมร ดีศรี | SA | 500 | 23.8 | ||
22 | BU Reglstration | 114 | สุรศักดิ์ ดีงาม | Application Designer | 300 | 24.6 |
118 | กมล ไม้งาม | General Support | 200 | 45.3 | ||
104 | นาย ยิ่งยอด | SA | 500 | 32.4 | ||
106 | แม็ก ยอดยิ่ง | Programmer | 400 | 20 | ||
112 | ธิดา ไม้งาม | Database Designer | 450 | 44.0 | ||
105 | ชาย ดีศรี | Database Designer | 450 | 44.0 |
= จากตารางจะสังเกตว่าไม่มีคุณสมบัติครบเป็น 1NF เพราะเป็นรีเลชั่นที่มีคีย์หลักของรีเลชั่น คือ มี (Attribute “P_ID”) เป็นคีย์หลัก แล้วแต่มีกลุ่มข้อมูลซ้ำซ้อน (Repeating Group) อยู่ในรีเลชั่นหรือในแต่ละช่องหรือเซล ของรีเลชั่นมีการเก็บข้อมูลหลายค่าคือ Attribute “E_ID”นี้มีความสัมพันธ์กับ Attribute “P_Name” ในแบบ Repeating Group ส่งผลให้ Relation นี้ มีโครงสร้างที่ไม่สอดคล้องตามคุณสมบัติของ 1NF ดังนั้นจึงต้องทำรายการ Normalization โดยการแปลงคุณสมบัติ Attribute ที่อยู่ในรูป Repeating Group ให้มีคุณสมบัติ Atomicity พร้อมกับกำหนดให้ Attribute ดังกล่าวเป็น Relation Key ของ Relation ดังนั้นจึงถูกแปลงให้อยู่ในรูปดังนี้
P_ID | P_Name | E_ID | E_ Name | Job_Calss | Chg_Hour | Hour |
11 | EAU Web Site | 103 | สมชาย ไม้ดี | SA | 500 | 23.8 |
11 | EAU Web Site | 101 | แท่น งามยิ่ง | Database Designer | 450 | 19.4 |
11 | EAU Web Site | 105 | ชาย ดีศรี | Database Designer | 450 | 35.7 |
11 | EAU Web Site | 106 | แม็ก ยอดยิ่ง | Programmer | 400 | 12.6 |
11 | EAU Web Site | 102 | อมร ดีศรี | SA | 500 | 23.8 |
22 | BU Reglstration | 114 | สุรศักดิ์ ดีงาม | Application Designer | 300 | 24.6 |
22 | BU Reglstration | 118 | กมล ไม้งาม | General Support | 200 | 45. |
22 | BU Reglstration | 104 | นาย ยิ่งยอด | SA | 500 | 32.4 |
22 | BU Reglstration | 106 | แม็ก ยอดยิ่ง | Programmer | 400 | 20 |
22 | BU Reglstration | 112 | ธิดา ไม้งาม | Database Designer | 450 | 44.0 |
22 | BU Reglstration | 105 | ชาย ดีศรี | Database Designer | 450 | 44.0 |
- ไม่มีคุณสมบัติเป็นไปตาม 2NF เพราะจะเห็นได้ว่า Relation ของตาราง จะมี Attribute (E_ID ,P_ID) เป็น Attribute ที่ทำให้ข้อมูลในแต่ละ Tuple มีค่าไม่ซ้ำกัน ดังนั้น Attribute ทั้ง 2 จึงทำหน้าที่เป็น Relation Key และพิจารณาค่าของ Attribute “E_ID”, “E_ Name” , “Job_Calss”, “Chg_Hour”,“ Hour ” จะสังเกตเห็นว่า Tuple ที่ประกอบขึ้นจาก Attribute เหล่านี้ จะมีข้อมูลซ้ำกันเป็นชุด ๆ และมีเพียง Attribute “P_Name” เท่านั้นที่มีค่าแปรเปลี่ยนตามค่าของ Relation Key ดังนั้นจึงสามารถเขียนด้วย Functional Dependency เพิ่มเติมได้ดังนี้
ใน d2 จะสังเกตเห็นว่า Attribute “E_ Name” , “Job_Calss”, “Chg_Hour”และ “ Hour ”, เป็น Nonprime Attribute ของ Relation ที่ไม่ได้ขึ้นอยู่กับเฉพาะ Relation Key แต่กลับขึ้นอยู่กับค่าของ Attribute “E_ID” ด้วย แสดงว่า d2 นี้ไม่เป็นไปตามคุณสมบัติข้อ 2
ดังนั้น Relation นี้ จึงไม่มีคุณสมบัติเป็นไปตามคุณสมบัติของ 2NF จึงต้องแยก Relation นี้ ออกเป็น 2 Relation ตาม d1และ d2 ดังนี้
E P_Name
E_ID | P_ID | P_Name |
103 | 11 | EAU Web Site |
101 | 11 | EAU Web Site |
105 | 11 | EAU Web Site |
106 | 11 | EAU Web Site |
102 | 11 | EAU Web Site |
114 | 22 | BU Reglstration |
118 | 22 | BU Reglstration |
104 | 22 | BU Reglstration |
106 | 22 | BU Reglstration |
112 | 22 | BU Reglstration |
105 | 22 | BU Reglstration |
E
E_ID | E_ Name | Job_Calss | Chg_Hour | Hour |
103 | สมชาย ไม้ดี | SA | 500 | 23.8 |
101 | แท่น งามยิ่ง | Database Designer | 450 | 19.4 |
105 | ชาย ดีศรี | Database Designer | 450 | 35.7 |
106 | แม็ก ยอดยิ่ง | Programmer | 400 | 12.6 |
102 | อมร ดีศรี | SA | 500 | 23.8 |
114 | สุรศักดิ์ ดีงาม | Application Designer | 300 | 24.6 |
118 | กมล ไม้งาม | General Support | 200 | 45. |
104 | นาย ยิ่งยอด | SA | 500 | 32.4 |
106 | แม็ก ยอดยิ่ง | Programmer | 400 | 20 |
112 | ธิดา ไม้งาม | Database Designer | 450 | 44.0 |
105 | ชาย ดีศรี | Database Designer | 450 | 44.0 |
- จาก Relation นี้ ถึงแม้จะมีโครงสร้างเป็นไปตามคุณสมบัติ 2NF แต่จะเห็นว่าค่าของ Attribute “Job_Calss” , “Chg_Hour”และ “ Hour ” ยังปรากฏข้อมูลที่มีซ้ำกันอยู่เป็นคู่ ๆ หรือกล่าวอีกนัยหนึ่งทั้ง 2 Attribute สามารถรับบุค่าระหว่างกันได้ ดังนั้น Relation นี้จึงขาดคุณสมบัติของ 3NF และยังก่อให้เกิดปัญหาความผิดพลาดทางด้าน Anomaly
จากปัญหา Anomaly ที่เกิดขึ้นจาก Transitive Dependency เหล่านี้จึงต้องทำการแยก Attribute ที่ทำให้เกิด Transitive Dependency ของ Relation นี้ ออกมาเป็น Relation ใหม่ ซึ่งจากตารางได้แก่ Attribute “Job_Calss” , “Chg_Hour”และ “ Hour ” ดังนี้
E2
E_ID | E_ Name | Job_Calss |
103 | สมชาย ไม้ดี | SA |
101 | แท่น งามยิ่ง | Database Designer |
105 | ชาย ดีศรี | Database Designer |
106 | แม็ก ยอดยิ่ง | Programmer |
102 | อมร ดีศรี | SA |
114 | สุรศักดิ์ ดีงาม | Application Designer |
118 | กมล ไม้งาม | General Support |
104 | นาย ยิ่งยอด | SA |
106 | แม็ก ยอดยิ่ง | Programmer |
112 | ธิดา ไม้งาม | Database Designer |
105 | ชาย ดีศรี | Database Designer |
Job Chg Hour
Job_Calss | Chg_Hour | Hour |
SA | 500 | 23.8 |
Database Designer | 450 | 19.4 |
Database Designer | 450 | 35.7 |
Programmer | 400 | 12.6 |
SA | 500 | 23.8 |
Application Designer | 300 | 24.6 |
General Support | 200 | 45. |
SA | 500 | 32.4 |
Programmer | 400 | 20 |
Database Designer | 450 | 44.0 |
Database Designer | 450 | 44.0 |
5.จงวิเคราะห์และจัดทำ Normalization ระบบการลงทะเบียนของนักศึกษา ให้มีความซ้ำซ้อนน้อยที่สุด
รหัส นศ. | ภาคเรียนที่ | รหัสวิชา | ชื่อวิชา | ประเภทวิชา | ชื่อประเภท | หน่วยกิต | เกรด |
4501 | 1/45 | A01 | คณิตศาสตร์คอม | 02 | ชีพบังคับ | 3 | F |
1/45 | A03 | ภาษาไทย | 01 | พื้นฐาน | 3 | C | |
2/45 | A01 | คณิตศาสตร์คอม | 02 | ชีพบังคับ | 3 | D | |
2/45 | A04 | ภาษาอังกฤษ1 | 01 | พื้นฐาน | 3 | D+ | |
4052 | 1/45 | A01 | คณิตศาสตร์คอม | 02 | ชีพบังคับ | 3 | B |
1/45 | A04 | ภาษาอังกฤษ1 | 01 | พื้นฐาน | 3 | C | |
2/45 | A02 | ระบบฐานข้อมูล | 03 | ชีพเลือก | 3 | B | |
2/45 | A05 | โปรแกรมสำเร็จรูป1 | 02 | ชีพบังคับ | 3 | D | |
4503 | 1/45 | A06 | การสื่อสารข้อมูล | 01 | พื้นฐาน | 3 | A |
1/45 | A04 | ภาษาอังกฤษ1 | 03 | ชีพเลือก | 3 | C | |
2/45 | A05 | โปรแกรมสำเร็จรูป1 | 02 | ชีพบังคับ | 3 | D | |
4506 | 1/45 | A03 | ภาษาไทย | 01 | พื้นฐาน | 3 | B+ |
1/45 | A04 | ภาษาอังกฤษ1 | 01 | พื้นฐาน | 3 | C |
จัดทำ Normalization
5.1 First Normal Form (1NF) ได้ดังนี้
ระบบการลงทะเบียนของนักศึกษา
รหัส นศ. | ภาคเรียนที่ | รหัสวิชา | ชื่อวิชา | ประเภทวิชา | ชื่อประเภท | หน่วยกิต | เกรด |
4501 | 1/45 | A01 | คณิตศาสตร์คอม | 02 | ชีพบังคับ | 3 | F |
4501 | 1/45 | A03 | ภาษาไทย | 01 | พื้นฐาน | 3 | C |
4501 | 2/45 | A01 | คณิตศาสตร์คอม | 02 | ชีพบังคับ | 3 | D |
4501 | 2/45 | A04 | ภาษาอังกฤษ1 | 01 | พื้นฐาน | 3 | D+ |
4052 | 1/45 | A01 | คณิตศาสตร์คอม | 02 | ชีพบังคับ | 3 | B |
4052 | 1/45 | A04 | ภาษาอังกฤษ1 | 01 | พื้นฐาน | 3 | C |
4052 | 2/45 | A02 | ระบบฐานข้อมูล | 03 | ชีพเลือก | 3 | B |
4052 | 2/45 | A05 | โปรแกรมสำเร็จรูป1 | 02 | ชีพบังคับ | 3 | D |
4503 | 1/45 | A06 | การสื่อสารข้อมูล | 01 | พื้นฐาน | 3 | A |
4503 | 1/45 | A04 | ภาษาอังกฤษ1 | 03 | ชีพเลือก | 3 | C |
4503 | 2/45 | A05 | โปรแกรมสำเร็จรูป1 | 02 | ชีพบังคับ | 3 | D |
4506 | 1/45 | A03 | ภาษาไทย | 01 | พื้นฐาน | 3 | B+ |
4503 | 1/45 | A04 | ภาษาอังกฤษ1 | 01 | พื้นฐาน | 3 | C |
5.2 Second Normal Form (2NF) ได้ดังนี้
รหัสวิชาระบบการลงทะเบียน
รหัส นศ. | รหัสวิชา | ภาคเรียนที่ |
4501 | A01 | 1/45 |
4501 | A03 | 1/45 |
4501 | A01 | 2/45 |
4501 | A04 | 2/45 |
4052 | A01 | 1/45 |
4052 | A04 | 1/45 |
4052 | A02 | 2/45 |
4052 | A05 | 2/45 |
4503 | A06 | 1/45 |
4503 | A04 | 1/45 |
4503 | A05 | 2/45 |
4506 | A03 | 1/45 |
4503 | A04 | 1/45 |
รหัสวิชา
รหัสวิชา | ชื่อวิชา | ประเภทวิชา | ชื่อประเภท | หน่วยกิต | เกรด |
A01 | คณิตศาสตร์คอม | 02 | ชีพบังคับ | 3 | F |
A03 | ภาษาไทย | 01 | พื้นฐาน | 3 | C |
A01 | คณิตศาสตร์คอม | 02 | ชีพบังคับ | 3 | D |
A04 | ภาษาอังกฤษ1 | 01 | พื้นฐาน | 3 | D+ |
A01 | คณิตศาสตร์คอม | 02 | ชีพบังคับ | 3 | B |
A04 | ภาษาอังกฤษ1 | 01 | พื้นฐาน | 3 | C |
A02 | ระบบฐานข้อมูล | 03 | ชีพเลือก | 3 | B |
A05 | โปรแกรมสำเร็จรูป1 | 02 | ชีพบังคับ | 3 | D |
A06 | การสื่อสารข้อมูล | 01 | พื้นฐาน | 3 | A |
A04 | ภาษาอังกฤษ1 | 03 | ชีพเลือก | 3 | C |
A05 | โปรแกรมสำเร็จรูป1 | 02 | ชีพบังคับ | 3 | D |
A03 | ภาษาไทย | 01 | พื้นฐาน | 3 | B+ |
A04 | ภาษาอังกฤษ1 | 01 | พื้นฐาน | 3 | C |
5.3 Second Normal Form (2NF) ได้ดังนี้
รหัสวิชา 2
รหัสวิชา | ชื่อวิชา | ประเภทวิชา |
A01 | คณิตศาสตร์คอม | 02 |
A03 | ภาษาไทย | 01 |
A01 | คณิตศาสตร์คอม | 02 |
A04 | ภาษาอังกฤษ1 | 01 |
A01 | คณิตศาสตร์คอม | 02 |
A04 | ภาษาอังกฤษ1 | 01 |
A02 | ระบบฐานข้อมูล | 03 |
A05 | โปรแกรมสำเร็จรูป1 | 02 |
A06 | การสื่อสารข้อมูล | 01 |
A04 | ภาษาอังกฤษ1 | 03 |
A05 | โปรแกรมสำเร็จรูป1 | 02 |
A03 | ภาษาไทย | 01 |
A04 | ภาษาอังกฤษ1 | 01 |
ชื่อประเภทวิชา
ชื่อวิชา | ประเภทวิชา | ชื่อประเภท | หน่วยกิต | เกรด |
คณิตศาสตร์คอม | 02 | ชีพบังคับ | 3 | F |
ภาษาไทย | 01 | พื้นฐาน | 3 | C |
คณิตศาสตร์คอม | 02 | ชีพบังคับ | 3 | D |
ภาษาอังกฤษ1 | 01 | พื้นฐาน | 3 | D+ |
คณิตศาสตร์คอม | 02 | ชีพบังคับ | 3 | B |
ภาษาอังกฤษ1 | 01 | พื้นฐาน | 3 | C |
ระบบฐานข้อมูล | 03 | ชีพเลือก | 3 | B |
โปรแกรมสำเร็จรูป1 | 02 | ชีพบังคับ | 3 | D |
การสื่อสารข้อมูล | 01 | พื้นฐาน | 3 | A |
ภาษาอังกฤษ1 | 03 | ชีพเลือก | 3 | C |
โปรแกรมสำเร็จรูป1 | 02 | ชีพบังคับ | 3 | D |
ภาษาไทย | 01 | พื้นฐาน | 3 | B+ |
ภาษาอังกฤษ1 | 01 | พื้นฐาน | 3 | C |