![]() |
|
![]() |
|
![]() |
รูปแบบที่เป็นบรรทัดฐานขั้นที่ 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 แล้ว |
|
|