Back to Home

DataBase System

Lesson1235679101112131415

Lesson 4 : Normal Form



Lesson Plan
Section No.
Section 1
Section 2
Test
PDF file
PPT File


<<Prev pageCourse MapNext page>>

Print content of this page
Save content of this page

 

รูปแบบที่เป็นบรรทัดฐานขั้นที่ 3

แม้ว่ารีเลชันใด ๆ จะมีคุณสมบัติอยู่ในรูปแบบที่เป็นบรรทัดฐานขั้นที่ 2 แล้ว ก็อาจก็ยังมีปัญหาที่เกิดจากความซ้ำซ้อนของข้อมูลในรีเลชันอยู่อีก ดังนั้น รูปแบบที่เป็นบรรทัดฐานขั้นที่ 3 (Third Normal Form : 3NF) จึงเป็นขั้นตอนถัดมาในการแก้ไขปัญหาความซ้ำซ้อนของข้อมูลที่พบในรีเลชันที่มีคุณสมบัติอยู่ใน รูปแบบที่เป็นบรรทัดฐานขั้นที่ 2 ซึ่งในขั้นตอนนี้จะให้ความสำคัญกับความสัมพันธ์ระหว่างแอททริบิวต์แบบ Transitive

1. คุณสมบัติของรูปแบบที่เป็นบรรทัดฐานขั้นที่ 3

รีเลชันใด ๆ จะมีคุณสมบัติอยู่ในรูปแบบที่เป็นบรรทัดฐานขั้นที่ 3 ก็ต่อเมื่อ

1. รีเลชันนั้นมีคุณสมบัติอยู่ในรูปแบบที่เป็นบรรทัดฐานขั้นที่ 2 แล้ว

2.ทุกแอททริบิวต์ที่ไม่ใช่คีย์หลักไม่มีคุณสมบัติในการกำหนดค่าของแอททริบิวต์อื่นที่ไม่ใช่ คีย์หลัก หรืออีกนัยหนึ่งรีเลชันนั้นต้องไม่มีความสัมพันธ์ระหว่างแอททริบิวต์แบบ Transitive เกิดขึ้น

2. ขั้นตอนการจัดทำรีเลชันให้เป็นรูปแบบที่เป็นบรรทัดฐานขั้นที่ 3

เพื่อแสดงให้เห็นถึงการจัดทำรีเลชันให้เป็นรูปแบบที่เป็นบรรทัดฐานขั้นที่ 3 ในที่นี้ขอนำตัวอย่าง รีเลชันจากเรื่องที่ 4.2.2 มาประกอบดังนี้

ภาพที่ 4.13 รีเลชันข้อมูลนักศึกษา รีเลชันข้อมูลลงทะเบียน และรีเลชันชุดวิชา

- รีเลชันข้อมูลนักศึกษาประกอบด้วย แอททริบิวต์รหัสนักศึกษา ชื่อนักศึกษา รหัสอาจารย์ และชื่ออาจารย์ที่ปรึกษา โดยมีแอททริบิวต์รหัสนักศึกษาเป็นคีย์หลัก

- รีเลชันข้อมูลลงทะเบียนประกอบด้วย แอททริบิวต์รหัสนักศึกษา รหัสชุดวิชา และหมู่เรียน โดยมีแอททริบิวต์รหัสนักศึกษาและรหัสชุดวิชาประกอบกันเป็นคีย์หลัก

- รีเลชันชุดวิชาประกอบด้วย แอททริบิวต์รหัสชุดวิชา ชื่อชุดวิชาที่ลงทะเบียน และหน่วยกิตโดยมีแอททริบิวต์รหัสชุดวิชาเป็นคีย์หลัก

จากการตรวจสอบรีเลชันข้อมูลนักศึกษา รีเลชันชุดวิชา และรีเลชันข้อมูลลงทะเบียน จะพบว่า ทั้ง 3 รีเลชันมีคุณสมบัติอยู่ในรูปแบบที่เป็นบรรทัดฐานขั้นที่ 2 แล้ว เนื่องจากทุกแอททริบิวต์ที่ไม่ได้เป็นคีย์หลักมีความสัมพันธ์ระหว่างแอททริบิวต์แบบฟังก์ชันกับคีย์หลักหรือแอททริบิวต์ที่ประกอบกันเป็นคีย์หลัก โดยความสัมพันธ์ดังกล่าวเป็นความสัมพันธ์ระหว่างแอททริบิวต์แบบทั้งหมด

รีเลชันข้อมูลนักศึกษามีความสัมพันธ์ระหว่างแอททริบิวต์แบบฟังก์ชันดังนี้

รีเลชันข้อมูลลงทะเบียนมีความสัมพันธ์ระหว่างแอททริบิวต์แบบฟังก์ชันดังนี้

รีเลชันชุดวิชามีความสัมพันธ์ระหว่างแอททริบิวต์แบบฟังก์ชันดังนี้

ส่วนการตรวจสอบทั้ง 3 รีเลชันว่า ทุกแอททริบิวต์ที่ไม่ใช่คีย์หลักมีคุณสมบัติในการกำหนดค่าของแอททริบิวต์อื่นที่ไม่ใช่คีย์หลัก หรืออีกนัยหนึ่งทั้ง 3 รีเลชันมีความสัมพันธ์ระหว่างแอททริบิวต์แบบ Transitive เกิดขึ้นหรือไม่

จากการตรวจสอบรีเลชันข้อมูลนักศึกษาพบว่า คีย์หลักหรือ Determinant ของรีเลชันข้อมูล นักศึกษามีเพียงหนึ่งแอททริบิวต์ คือ รหัสนักศึกษา และแอททริบิวต์อื่นในรีเลชันข้อมูลนักศึกษาที่ไม่ได้เป็นคีย์หลัก คือ ชื่อนักศึกษา รหัสอาจารย์ และชื่ออาจารย์ที่ปรึกษา

รีเลชันข้อมูลนักศึกษามีความสัมพันธ์ระหว่างแอททริบิวต์แบบฟังก์ชันดังนี้

เขียน FD ไดอะแกรมได้ดังนี้

จากภาพจะพบว่า แอททริบิวต์รหัสนักศึกษาเป็นคีย์หลักหรือ Determinant ที่สามารถระบุค่าของ Dependent หรือแอททริบิวต์อื่นในทูเพิลเดียวกัน คือ ชื่อนักศึกษา รหัสอาจารย์ และชื่ออาจารย์ที่ปรึกษาได้ ในขณะเดียวกัน รีเลชันข้อมูลนักศึกษามีความสัมพันธ์ระหว่างแอททริบิวต์แบบ Transitive เกิดขึ้น เนื่องจากรหัสอาจารย์ซึ่งเป็นแอททริบิวต์ที่ไม่ใช่คีย์หลักสามารถระบุค่าของแอททริบิวต์อื่นในทูเพิลเดียวกัน คือ ชื่ออาจารย์ที่ปรึกษา ได้ ดังนั้น จึงกล่าวได้ว่า รีเลชันข้อมูลนักศึกษาไม่มีคุณสมบัติอยู่ในรูปแบบที่เป็นบรรทัดฐานขั้นที่ 3

เพื่อขจัดปัญหาความสัมพันธ์ระหว่างแอททริบิวต์แบบ Transitive ที่เกิดขึ้น จึงต้องทำการจำแนก ข้อมูลนักศึกษาออกเป็น 2 รีเลชันย่อย ด้วยการนำแอททริบิวต์ที่เป็นตัวระบุค่าของแอททริบิวต์อื่นและ แอททริบิวต์หรือกลุ่มของแอททริบิวต์ที่ถูกระบุค่าแยกออกเป็นรีเลชันใหม่ โดยคำนึงถึงหลักการของ ความสัมพันธ์ระหว่างแอททริบิวต์แบบ Join

ดังนั้น รีเลชันข้อมูลนักศึกษาจึงจำแนกได้เป็น 2 รีเลชันย่อย คือ รีเลชันอาจารย์ที่ปรึกษา และ รีเลชันนักศึกษา

- รีเลชันอาจารย์ที่ปรึกษาประกอบด้วย แอททริบิวต์รหัสอาจารย์ และชื่ออาจารย์ที่ปรึกษา โดยมีแอททริบิวต์รหัสอาจารย์เป็นคีย์หลัก

- รีเลชันนักศึกษาประกอบด้วย แอททริบิวต์รหัสนักศึกษา ชื่อนักศึกษา และรหัสอาจารย์ โดยมีแอททริบิวต์รหัสนักศึกษาเป็นคีย์หลัก

ภาพที่ 4.14 การจำแนกรีเลชันข้อมูลนักศึกษา

ส่วนการตรวจสอบรีเลชันข้อมูลลงทะเบียนว่า ทุกแอททริบิวต์ที่ไม่ใช่คีย์หลักมีคุณสมบัติในการกำหนดค่าของแอททริบิวต์อื่นที่ไม่ใช่คีย์หลัก หรืออีกนัยหนึ่งรีเลชันข้อมูลลงทะเบียนมีความสัมพันธ์ระหว่างแอททริบิวต์แบบ Transitive เกิดขึ้น หรือไม่

จากการตรวจสอบพบว่า คีย์หลักหรือ Determinant ของรีเลชันข้อมูลลงทะเบียนประกอบด้วย แอททริบิวต์รหัสนักศึกษาและรหัสชุดวิชา ส่วนแอททริบิวต์อื่นในรีเลชันข้อมูลลงทะเบียนที่ไม่ได้เป็นคีย์หลัก คือ หมู่เรียน

รีเลชันข้อมูลลงทะเบียนมีความสัมพันธ์ระหว่างแอททริบิวต์แบบฟังก์ชันดังนี้

เขียน FD ไดอะแกรมได้ดังนี้

 

จากภาพจะพบว่า แอททริบิวต์รหัสนักศึกษาและรหัสชุดวิชาที่ประกอบกันเป็นคีย์หลักสามารถระบุค่าของ Dependent หรือแอททริบิวต์อื่นที่ไม่ได้เป็นคีย์หลัก คือ หมู่เรียน ได้ และทุกแอททริบิวต์ที่ไม่ใช่ คีย์หลักไม่มีคุณสมบัติในการกำหนดค่าของแอททริบิวต์อื่นที่ไม่ใช่คีย์หลัก ดังนั้น จึงกล่าวได้ว่า รีเลชันข้อมูลลงทะเบียนมีคุณสมบัติอยู่ในรูปแบบที่เป็นบรรทัดฐานขั้นที่ 3 แล้ว

ส่วนการตรวจสอบรีเลชันชุดวิชาว่า ทุกแอททริบิวต์ที่ไม่ใช่คีย์หลักมีคุณสมบัติในการกำหนดค่าของแอททริบิวต์อื่นที่ไม่ใช่คีย์หลัก หรืออีกนัยหนึ่งรีเลชันชุดวิชามีความสัมพันธ์ระหว่างแอททริบิวต์แบบ Transitive เกิดขึ้น หรือไม่

จากการตรวจสอบพบว่า คีย์หลักหรือ Determinant ของรีเลชันชุดวิชามีเพียงหนึ่งแอททริบิวต์ คือ รหัสชุดวิชา และแอททริบิวต์อื่นในรีเลชันชุดวิชาที่ไม่ได้เป็นคีย์หลัก คือ ชื่อชุดวิชาที่ลงทะเบียน และหน่วยกิต

รีเลชันชุดวิชามีความสัมพันธ์ระหว่างแอททริบิวต์แบบฟังก์ชันดังนี้

เขียน FD ไดอะแกรมได้ดังนี้

จากภาพจะพบว่า แอททริบิวต์รหัสชุดวิชาเป็นคีย์หลักหรือ Determinant ที่สามารถระบุค่าของ Dependent หรือแอททริบิวต์อื่นในทูเพิลเดียวกัน คือ ชื่อชุดวิชาที่ลงทะเบียน และหน่วยกิต ได้ ขณะเดียวกัน รีเลชันชุดวิชามีความสัมพันธ์ระหว่างแอททริบิวต์แบบ Transitive เกิดขึ้น เนื่องจากชื่อชุดวิชาที่ลงทะเบียนซึ่งเป็นแอททริบิวต์ที่ไม่ใช่คีย์หลักสามารถระบุค่าของแอททริบิวต์อื่นในทูเพิลเดียวกัน คือ หน่วยกิต ได้ ดังนั้น จึงกล่าวได้ว่า รีเลชันชุดวิชาไม่มีคุณสมบัติอยู่ในรูปแบบที่เป็นบรรทัดฐานขั้นที่ 3

เพื่อขจัดปัญหาความสัมพันธ์ระหว่างแอททริบิวต์แบบ Transitive ที่เกิดขึ้น จึงต้องทำการจำแนกรีเลชันชุดวิชาออกเป็น 2 รีเลชันย่อย ด้วยการนำแอททริบิวต์ที่เป็นตัวระบุค่าของแอททริบิวต์อื่น และแอททริบิวต์หรือกลุ่มของแอททริบิวต์ที่ถูกระบุค่าแยกออกเป็นรีเลชันใหม่ โดยคำนึงถึงหลักการของความสัมพันธ์ระหว่างแอททริบิวต์แบบ Join

ดังนั้น รีเลชันชุดวิชาจึงจำแนกได้เป็น 2 รีเลชันย่อย คือ รีเลชันรหัส-ชื่อชุดวิชา และ รีเลชันชุดวิชา-หน่วยกิต

- รีเลชันรหัส-ชื่อชุดวิชา ประกอบด้วย แอททริบิวต์รหัสชุดวิชา และชื่อชุดวิชาที่ลงทะเบียนโดยมีแอททริบิวต์รหัสชุดวิชา เป็นคีย์หลัก

- รีเลชันชื่อชุดวิชา-หน่วยกิต ประกอบด้วย แอททริบิวต์ชื่อชุดวิชาที่ลงทะเบียน และหน่วยกิต โดยมีแอททริบิวต์ชื่อชุดวิชาที่ลงทะเบียนเป็นคีย์หลัก

ภาพที่ 4.15 การจำแนกรีเลชันชุดวิชา

แม้ว่าจะจัดทำรีเลชันชุดวิชาให้อยู่ในรูปแบบที่เป็นบรรทัดฐานขั้นที่ 3 ซึ่งเป็นรูปแบบที่ขจัดความซ้ำซ้อนของข้อมูลให้ลดลงจนแทบจะไม่มีเหลืออยู่ด้วยการแตกออกเป็น 2 รีเลชันย่อย คือ รีเลชันรหัส-ชื่อชุดวิชา และ รีเลชันชุดวิชา-หน่วยกิตแล้วก็ตาม แต่ก็ยังมีโอกาสที่จะเกิดปัญหาความผิดพลาดขึ้นได้อีกเช่นกัน

จากกรณีข้างต้นจะเห็นว่า การเพิ่มชื่อชุดวิชาฯ ใหม่และหน่วยกิตจะทำไม่ได้ หากไม่มีการระบุรหัสชุดวิชา ทั้งนี้ เนื่องจากรีเลชันรหัส-ชื่อชุดวิชาและรีเลชันชื่อชุดวิชา-หน่วยกิตเป็นรีเลชันที่ไม่มีความเป็นอิสระต่อกัน เนื่องจากแอททริบิวต์รหัสชุดวิชาและชื่อชุดวิชาฯ ต่างก็สามารถกำหนดค่าของหน่วยกิตได้เช่นกัน ปัญหาดังกล่าวนี้จึงเป็นปัญหาที่เกิดจากการแตกรีเลชันมากเกินความจำเป็น

ดังนั้น จากกรณีดังกล่าวข้างต้น ผู้ออกแบบฐานข้อมูลจึงไม่จำเป็นต้องทำการจำแนกรีเลชันชุดวิชาออกเป็นรีเลชันรหัส-ชื่อชุดวิชา และ รีเลชันชุดวิชา-หน่วยกิต รวมทั้งอาจกล่าวได้ว่า รีเลชันชุดวิชามีคุณสมบัติอยู่ในรูปแบบที่เป็นบรรทัดฐานขั้นที่ 3 แล้ว

 

 

Last Updated: 12/13/2001 11:22:24 AM
© โครงการเครือข่ายสารสนเทศเพื่อพัฒนาการศึกษา ทบวงมหาวิทยาลัย