วิชา ฐานข้อมูลเบื้องต้นการบ้านเรื่อง การทำ Normolization ประจำวันที่ 5 มกราคม 2554
1.Functional Dependency คืออะไร แบ่งเป็นกี่ประเภท
ตอบ Functional Dependency คือ เป็นการพิจารณาโครงสร้างของแต่ละ Relation ว่ามีโครงสร้างอยู่ใน Normal Form ระดับใด จะพิจารณาจาก Functional Dependency ซึ่งเป็นความสัมพันธ์ระหว่าง Attribute ต่างๆ ภายใน Relation กับ Attribute หรือกลุ่ม Attribute ที่ทำหน้าที่เป็น Key ของ Relation นั้น Functional Dependency แบ่งออกเป็น 4 ประเภท
ตอบ Functional Dependency คือ เป็นการพิจารณาโครงสร้างของแต่ละ Relation ว่ามีโครงสร้างอยู่ใน Normal Form ระดับใด จะพิจารณาจาก Functional Dependency ซึ่งเป็นความสัมพันธ์ระหว่าง Attribute ต่างๆ ภายใน Relation กับ Attribute หรือกลุ่ม Attribute ที่ทำหน้าที่เป็น Key ของ Relation นั้น Functional Dependency แบ่งออกเป็น 4 ประเภท
2.จงอธิบายความหมายของ Repeating Group พร้อมยกตัวอย่าง
ตอบ Attribute ที่มีค่าของข้อมูลได้หลายค่าภายใต้ค่าของ Attribute ใด Attribute หนึ่งเช่น Attribute “DEGREE” ที่ใช้ระบุระดับการศึกษาของพนักงานแต่ละคน ซึ่งพนักงานแต่ละคน จะมีระดับการศึกษาได้หลายระดับ
ตอบ Attribute ที่มีค่าของข้อมูลได้หลายค่าภายใต้ค่าของ Attribute ใด Attribute หนึ่งเช่น Attribute “DEGREE” ที่ใช้ระบุระดับการศึกษาของพนักงานแต่ละคน ซึ่งพนักงานแต่ละคน จะมีระดับการศึกษาได้หลายระดับ
3. จงอธิบายความหมายของ Transitive Dependency พร้อมยกตัวอย่าง
ตอบ attribute ที่มีคุณสมบัติเป็นคีย์หลักจะสามารถระบุค่าของทุก attribute ในแต่ละ tuples
ตอบ attribute ที่มีคุณสมบัติเป็นคีย์หลักจะสามารถระบุค่าของทุก attribute ในแต่ละ tuples
ได้ อย่างไรก็ตาม ในบาง relation อาจจะมีกรณี attribute อื่น (Nonkey attribute) ที่สามารถระบุค่าของ
attribute อื่น ๆ ใน tuples ได้ ลักษณะของความสัมพันธ์ในการระบุค่า attribute แบบนี้ เรียกว่า ความ
จะเห็นได้ว่า รหัสสาขาวิชา ชื่อสาขาวิชา เป็น Transitive Dependency ซึ่งถือว่า
4. จงตรวจสอบตารางต่อไปว่าอยู่ในรูปของ 1NF 2NF 3NF แล้วหรือยัง ถ้ายังจง Normolization ให้อยู่ในรูปดังกล่าว
ตอบ 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 | สุรศักดิ์ ดีงาม | Appllcation 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 |
22 | Bu Registration | 112 | ธิดา ไม้งาม | Database Designer | 450 | 44.0 |
22 | Bu Registration | 105 | ชาย ดีศรี | Database Designer | 450 | 44.0 |
d2: E_ID - E_Name,Job_Calss,Chg_Hour,Hour
PName
P_ID | E_ID | P_Name |
11 | 103 | EAU Web Site |
11 | 101 | EAU Web Site |
11 | 105 | EAU Web Site |
11 | 106 | EAU Web Site |
11 | 102 | EAU Web Site |
22 | 114 | Bu Registration |
22 | 118 | Bu Registration |
22 | 104 | Bu Registration |
22 | 106 | Bu Registration |
22 | 112 | Bu Registration |
22 | 105 | Bu Registration |
EName
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 | สุรศักดิ์ ดีงาม | Appllcation 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 |
d2 : Job_Calss Chg_Hour, Hour
EJob
E_ID | E_Name | Job_Calss |
103 | สมชาย ไม้ดี | SA |
101 | แท่น งามยิ่ง | Database Designer |
105 | ชาย ดีศรี | Database Designer |
106 | แม็ก ยอดยิ่ง | Programmer |
102 | อมร ดีศรี | SA |
114 | สุรศักดิ์ ดีงาม | Appllcation Designer |
118 | กมล ไม้งาม | General Support |
104 | นาย ยิ่งยอด | SA |
106 | แม็ก ยอดยิ่ง | Programmer |
112 | ธิดา ไม้งาม | Database Designer |
105 | ชาย ดีศรี | Database Designer |
Job Hour
Job_Calss | Chg_Hour | Hour |
SA | 500 | 23.8 |
32.4 | ||
Database Designer | 450 | 19.4 |
35.7 | ||
44.0 | ||
Programmer | 400 | 12.6 |
20 | ||
Appllcation Designer | 300 | 24.6 |
General Support | 200 | 45.3 |
5.จงวิเคราะห์และจัดทำ Normalization ระบบการลงทะเบียนของนักศึกษา ให้มีความซ้ำซ้อนน้อยที่สุด
ตอบ จากตารางจะสังเกตได้ว่านักศึกษา (Attribute “รหัส นศ.”)1 คน สามารถลงทะเบียนรายวิชา (Attribute “ชื่อวิชา”) ได้มากกว่า 1 รายวิชา ดังนั้นจึงกล่าวได้ว่า Attribute “รหัส นศ.”นี้ มีความสัมพันธ์กับ Attribute “ชื่อวิชา” ในแบบ Repeating Group ส่งผลให้ Relation นี้ มีโครงสร้างที่ไม่สอดคล้องตามคุณสมบัติของ 1NF ดังนั้น จึงต้องทำรายการ Nomalization โดยการแปลง Attribute ที่อยู่ในรูป Repeating Group ให้มีคุณสมบัติ Atomicity พร้อมกับกำหนดให้ Attribute ดังกล่าวเป็น Relation Key ของ Relation ดังนั้น จึงถูกแปลงให้อยู่รูปดังนี้
ตอบ จากตารางจะสังเกตได้ว่านักศึกษา (Attribute “รหัส นศ.”)1 คน สามารถลงทะเบียนรายวิชา (Attribute “ชื่อวิชา”) ได้มากกว่า 1 รายวิชา ดังนั้นจึงกล่าวได้ว่า Attribute “รหัส นศ.”นี้ มีความสัมพันธ์กับ Attribute “ชื่อวิชา” ในแบบ Repeating Group ส่งผลให้ Relation นี้ มีโครงสร้างที่ไม่สอดคล้องตามคุณสมบัติของ 1NF ดังนั้น จึงต้องทำรายการ Nomalization โดยการแปลง Attribute ที่อยู่ในรูป Repeating Group ให้มีคุณสมบัติ Atomicity พร้อมกับกำหนดให้ Attribute ดังกล่าวเป็น Relation Key ของ Relation ดังนั้น จึงถูกแปลงให้อยู่รูปดังนี้
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 | B+ |
4506 | 1/45 | A04 | ภาษาอังกฤษ1 | 01 | พื้นฐาน | 3 | C |
เมื่อเราพิจารณาค่าของ Attribute “รหัสวิชา” , “ภาคเรียนที่” , “ชื่อวิชา” , “ประเภทวิชา” , “ชื่อประเภท” , ”หน่วยกิต” จะสังเกตเห็นว่า Tuple ที่ประกอบขึ้นจาก Attribute เหล่านี้ จะมีข้อมูลซ้ำกันเป็นชุดๆ และมีเพียง “เกรด” เท่านั้น ที่มีค่าแปรเปลี่ยนตามค่าของ Relation Key ดังนั้นจึงสามารถเขียนด้วย Functional Dependency เพิ่มเติมได้ดังนี้ d1 : รหัส นศ.,รหัสวิชา เกรด
d2 : รหัสวิชา ภาคเรียนที่ , ชื่อวิชา ,ประเภทวิชา, ชื่อประเภท, หน่วยกิต
ใน d2 จะสังเกตเห็นได้ว่า Attribute “ภาคเรียนที่” , “ชื่อวิชา” ,”ประเภทวิชา”, “ชื่อประเภท”และ “หน่วยกิต” เป็น Nonprime Attribute ของ Relation ที่ไม่ได้ขึ้นอยู่กับเฉพาะ Relation Key แต่กลับขึ้นอยู่กับค่าของ Attribute “รหัสวิชา” ด้วย แสดงว่า d2 นี้ไม่เป็นไปตามคุณสมบัติข้อ 2 ดังนั้น Relation “การลงทะเบียน” จึงไม่มีคุณสมบัติเป็นไปตามคุณสมบัติของ 2NF จึงต้องแยก Relation “การลงทะเบียน” ออกเป็น 2 Relation ตาม d1 และ d2 ดังนี้
เกรด
รหัส นศ. | รหัสวิชา | เกรด |
4501 | A01 | F |
4501 | A03 | C |
4501 | A01 | D |
4501 | A04 | D+ |
4502 | A01 | B |
4502 | A04 | C |
4502 | A02 | B |
4502 | A05 | D |
4503 | A06 | A |
4503 | A04 | C |
4503 | A05 | D |
4506 | A03 | B+ |
4506 | A04 | C |
วิชา
รหัสวิชา | ภาคเรียนที่ | ชื่อวิชา | ประเภทวิชา | ชื่อประเภท | หน่วยกิต |
A01 | 1/45 | คณิตศาสตร์คอมฯ | 02 | ชีพบังคับ | 3 |
A03 | 1/45 | ภาษาไทย | 01 | พื้นฐาน | 3 |
A01 | 2/45 | คณิตศาสตร์คอมฯ | 02 | ชีพบังคับ | 3 |
A04 | 2/45 | ภาษาอังกฤษ1 | 01 | พื้นฐาน | 3 |
A01 | 1/45 | คณิตศาสตร์คอมฯ | 02 | ชีพบังคับ | 3 |
A04 | 1/45 | ภาษาอังกฤษ1 | 01 | พื้นฐาน | 3 |
A02 | 2/45 | ระบบฐานข้อมูล | 03 | ชีพเลือก | 3 |
A05 | 2/45 | โปรแกรมสำเร็จรูป1 | 02 | ชีพบังคับ | 3 |
A06 | 1/45 | การสื่อสารข้อมูล | 01 | พื้นฐาน | 3 |
A04 | 1/45 | ภาษาอังกฤษ1 | 03 | ชีพเลือก | 3 |
A05 | 2/45 | โปรแกรมสำเร็จรูป1 | 02 | ชีพบังคับ | 3 |
A03 | 1/45 | ภาษาไทย | 01 | พื้นฐาน | 3 |
A04 | 1/45 | ภาษาอังกฤษ1 | 01 | พื้นฐาน | 3 |
3NF
จาก Relation “วิชา” ถึงแม้ว่าจะมีโครงสร้างเป็นไปตามคุณสมบัติของ 2NF แต่จะเห็นว่า ค่าของว่า Attribute “ประเภทวิชา”, “ชื่อประเภท” และ “หน่วยกิต” ยังปรากฏข้อมูลที่มีค่าซ้ำกันอยู่เป็นคู่ๆ หรือกล่าวอีกนัยหนึ่งทั้ง 2 Attribute สามารถระบุค่าระหว่างกันได้ ดังนั้นเราจึงต้องทำการแยก Attribute ได้แก่ Attribute “ชื่อวิชา” และ “ประเภทวิชา” ดังนี้
ชื่อวิชา 2
รหัสวิชา | ภาคเรียนที่ | ชื่อวิชา |
A01 | 1/45 | คณิตศาสตร์คอมฯ |
A03 | 1/45 | ภาษาไทย |
A01 | 2/45 | คณิตศาสตร์คอมฯ |
A04 | 2/45 | ภาษาอังกฤษ1 |
A01 | 1/45 | คณิตศาสตร์คอมฯ |
A04 | 1/45 | ภาษาอังกฤษ1 |
A02 | 2/45 | ระบบฐานข้อมูล |
A05 | 2/45 | โปรแกรมสำเร็จรูป1 |
A06 | 1/45 | การสื่อสารข้อมูล |
A04 | 1/45 | ภาษาอังกฤษ1 |
A05 | 2/45 | โปรแกรมสำเร็จรูป1 |
A03 | 1/45 | ภาษาไทย |
A04 | 1/45 | ภาษาอังกฤษ1 |
ประเภทวิชา
ชื่อวิชา | ประเภทวิชา | ชื่อประเภท | หน่วยกิต |
คณิตศาสตร์คอมฯ | 02 | ชีพบังคับ | 3 |
ภาษาไทย | 01 | พื้นฐาน | 3 |
ภาษาอังกฤษ1 | 01 | พื้นฐาน | 3 |
ระบบฐานข้อมูล | 03 | ชีพเลือก | 3 |
โปรแกรมสำเร็จรูป1 | 02 | ชีพบังคับ | 3 |
การสื่อสารข้อมูล | 01 | พื้นฐาน | 3 |
ไม่มีความคิดเห็น:
แสดงความคิดเห็น