แบบฝึกหัด
1. Functional Dependency คืออะไร แบ่งเป็นกี่ประเภท
- 1. Functional Dependency ที่เกิดขึ้นจากความสัมพันธ์ระหว่าง Determinant และ Dependency อย่างละ 1 คำ เช่น ความสัมพันธ์ระหว่างหมายเลขบัตรประชาชนและชื่อเจ้าของบัตร
2. Functional Dependency ที่เกิดขึ้นจากความสัมพันธ์ระหว่าง Determinant 1 คำกับ Dependency หลายค่า เช่น ความสัมพันธ์ระหว่างหมายเลขบัตรประชาชน และข้อมูลที่ปรากฏอยู่บนบัตรประชาชน
3. Functional Dependency ที่มีความสัมพันธ์ 2 ทาง ซึ่งเป็น Functional Dependency ที่ทั้ง Determinant และ Dependency ต่างสามารทำหน้าที่ของอีกฝ่ายหนึ่งได้ เช่น ความสัมพันธ์ระหว่างชื่อของผู้จักดารโครงการกับชื่อโครงการ
4. Functional Dependency ที่ต้องใช้ Determinant มากกว่า 1 ค่า เพื่ออ้างถึง Dependency เช่น ความสัมพันธ์ระหว่างจำนวนสินค้าที่ผลิตได้ของสินค้าแต่ละชนิดภายใต้สายการผลิตต่าง ๆ
- epeating Group หมายถึง รีเลชั่น ของตารางเกิดมีกลุ่มข้อมูลซ้ำกันหรือกล่าวอีกนัยหนึ่งคือแต่ละช่องเซลของรีเลชั่นจะถูกจัดเก็บข้อมูลมากกว่า 1 ค่า ส่งผลให้รีเลชั่น นี้ มีโครงสร้างที่ไม่สอดคล้องตามคุณสมบัติของ 1NF
- Transitive Dependency หมายถึง รีเลชั่น ของตารางเกิดมี Attribute บางตัวที่ไม่ได้เป็นคีย์หลัก มีคุณสมบัติในการกำหนดค่าของอื่นที่ไม่ใช่คีย์หลักในตารางรีเลชั่นหรือกล่าวอีกนัยหนึ่งคือ มี 2 Attribute ที่ไม่ใช่คีย์หลัก ที่สามารถระบุค่าระหว่างกันได้
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 | สุรศักดิ์ ดีงาม | ApplicationDesigner | 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 | สุรศักดิ์ ดีงาม | ApplicationDesigner | 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 เพิ่มเติมได้ดังนี้
- d1: E_ID, P_ID P_Name
- d2: E_ID E_ Name ,Job_Calss ,Chg_Hour, Hour
ใน 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 |
ไม่มีความคิดเห็น:
แสดงความคิดเห็น