1. Functional Dependency คืออะไร แบ่งเป็นกี่ประเภท
ตอบ Functional dependency (FD) คือความสัมพันธ์ระหว่าง attribute ใน Relation โดยมีลักษณะความสัมพันธ์ คือ ข้อมูลของ attribute หนึ่ง (หรือกลุ่มหนึ่ง) ขึ้นอยู่กับค่าของ attribute หนึ่ง (หรือกลุ่มหนึ่ง) อย่างเป็นฟังก์ชัน
Functional Dependency แบ่งออกเป็น 4 ประเภท ดังนี้
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 เช่น ความสัมพันธ์ระหว่างจำนวนสินค้าที่ผลิตได้ของสินค้าแต่ละชนิดภายใต้สายการผลิตต่าง ๆ
2. จงอธิบายความหมายของ Repeating Group พร้อมยกตัวอย่าง
ตอบ Repeating Group คือ ในฟิลด์ใด ๆ ของ Table นั้น จะมีค่าฟิลด์นั้นเกิน 1 ค่า ภายในเรคอร์ดเดียวกัน
ตารางที่มีลักษณะข้อมูลเป็น Repeating group
รหัสนักศึกษา | ชื่อ | นามสกุล | รหัสวิชาที่ลงทะเบียน |
001 | สมชาย | สมใจนึก | 204-101 204-204 204-205 |
002 | ธีรชาย | บุญมาศ | 204-102 204-204 |
3. จงอธิบายความหมายของ Transitive Dependency พร้อมยกตัวอย่าง
ตอบ การไม่ขึ้นตรงกับคีย์หลัก (Transitively Dependency) ถ้าในความสัมพันธ์ R มีคีย์หลักคือ K และแอตตริบิว A และ B จะกล่าวว่าแอตตริบิว B ไม่ขึ้นตรงกับคีย์หลัก
เมื่อ K -----------> A และ A ----------> B และ A ---/--> K
ตัวอย่างการทำ ตารางให้เป็น 3NF
ผู้บริหาร (เลขประจำ ตัว, ชื่อนามสกุล, ที่อยู่, ตำแหน่ง, ยี่ห้อรถประจำ ตำแหน่ง)
FD = {เลขประจำตัว--> ชื่อนามสกุล, ที่อยู่, ตำแหน่ง ตำแหน่ง --> ยี่ห้อรถประจำ ตำแหน่ง }
ในตัวอย่างจะเห็นได้ว่า set ของ ผู้บริหาร (เลขประจำตัว , ชื่อนามสกุล , ที่อยู่, ตำแหน่ง, ยี่ห้อ รถประจำตำแหน่ง) นี้ ยังไม่ใช่ 3NF เพราะ เลขประจำตัว --> ตำแหน่ง ตำแหน่ง --> ยี่ห้อรถประจำตำแหน่ง ดังนั้น ควรจะแยก เซ็ทผู้บริหาร ออกเป็น 2 เซ็ท คือ
3NF: ผู้บริหาร (เลขประจำตัว, ชื่อนามสกุล, ที่อยู่, ตำแหน่ง)
ตำแหน่งบริหาร (ตำแหน่ง, ยี่ห้อรถประจำ ตำแหน่ง)
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 Registration | 114 | สุรศักดิ์ ดีงาม | Application Designer | 300 | 24.6 |
118 | กมล ไม้งาม | General Support | 200 | 45.3 |
104 | นาย ยิ่งยอด | SA | 500 | 32.4 |
106 | แม็ก ยอดยิ่ง | Programmer | 400 | 20.0 |
112 | ธิดา ไม้งาม | Database Designer | 450 | 44.0 |
105 | ชาย ดีศรี | Database Designer | 450 | 44.0 |
ตอบ ยังไม่อยู่ในรูปของ 1NF 2NF และ 3NF
1NF
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 Registration | 114 | สุรศักดิ์ ดีงาม | Application Designer | 300 | 24.6 |
22 | BU Registration | 118 | กมล ไม้งาม | General Support | 200 | 45.3 |
22 | BU Registration | 104 | นาย ยิ่งยอด | SA | 500 | 32.4 |
22 | BU Registration | 106 | แม็ก ยอดยิ่ง | Programmer | 400 | 20.0 |
22 | BU Registration | 112 | ธิดา ไม้งาม | Database Designer | 450 | 44.0 |
22 | BU Registration | 105 | ชาย ดีศรี | Database Designer | 450 | 44.0 |
2NF
FD: P_ID, E_ID --> P_Name, E_Name, Job_Calss, Chg_Hour, Hour
D1: P_ID, E_ID --> Chg_Hour, Hour
D2: P_ID --> P_Name, E_Name, Job_Calss
3NF
FD: P_ID --> P_Name, E_Name, Job_Calss
D1: P_ID --> P_Name, E_Name
D2: E_Name --> Job_Calss
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+ |
4502 | 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 | D+ |
| 1/45 | A04 | ภาษาอังกฤษ1 | 01 | พื้นฐาน | 3 | C |
ตอบ 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+ |
4502 | 1/45 | A01 | คณิตศาสตร์คอมฯ | 02 | ชีพบังคับ | 3 | B |
4502 | 1/45 | A04 | ภาษาอังกฤษ1 | 01 | พื้นฐาน | 3 | C |
4502 | 2/45 | A02 | ระบบฐานข้อมูล | 03 | ชีพเลือก | 3 | B |
4502 | 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 | D+ |
4506 | 1/45 | A04 | ภาษาอังกฤษ1 | 01 | พื้นฐาน | 3 | C |
2NF
D1: รหัส นศ., รหัสวิชา --> เกรด D2: รหัสวิชา --> ภาคเรียนที่, ชื่อวิชา, ประเภทวิชา, ชื่อประเภท, หน่วยกิต
3NF
D1: รหัสวิชา--> ภาคเรียนที่, ชื่อวิชา, ประเภทวิชา, หน่วยกิต, ประเภทวิชา
D2: ประเภทวิชา--> ชื่อประเภท