![]() |
|
![]() |
|
![]() |
รูปแบบที่เป็นบรรทัดฐานขั้นที่ 2รูปแบบที่เป็นบรรทัดฐานขั้นที่ 2 (Second Normal Form : 2NF) เป็นขั้นตอนถัดมาจากการจัดทำ รีเลชันให้อยู่ในรูปแบบที่เป็นบรรทัดฐานขั้นที่ 1 ซึ่งเป็นขั้นตอนที่ยังไม่มีการวิเคราะห์ความสัมพันธ์ระหว่าง แอททริบิวต์ การจัดทำรีเลชันให้มีคุณสมบัติอยู่ในรูปแบบที่เป็นบรรทัดฐานขั้นที่ 2 จะเป็นการตรวจสอบเพื่อแก้ไขปัญหาความซ้ำซ้อนของข้อมูลที่ปรากฏในรีเลชันที่มีคุณสมบัติอยู่ในรูปแบบที่เป็นบรรทัดฐานขั้นที่ 1 โดยให้ความสำคัญในเรื่องของคีย์หลักและความสัมพันธ์ระหว่างแอททริบิวต์แบบฟังก์ชัน โดยเฉพาะอย่างยิ่ง ความสัมพันธ์ระหว่างแอททริบิวต์แบบทั้งหมด 1. คุณสมบัติของรูปแบบที่เป็นบรรทัดฐานขั้นที่ 2รีเลชันใด ๆ จะมีคุณสมบัติอยู่ในรูปแบบที่เป็นบรรทัดฐานขั้นที่ 2 ก็ต่อเมื่อ 1. รีเลชันนั้นมีคุณสมบัติอยู่ในรูปแบบที่เป็นบรรทัดฐานขั้นที่ 1 แล้ว 2.ทุกแอททริบิวต์ที่ไม่ใช่คีย์หลักต้องมีความสัมพันธ์ระหว่างแอททริบิวต์แบบฟังก์ชันกับคีย์หลักหรือแอททริบิวต์ที่ประกอบกันเป็นคีย์หลัก ซึ่งความสัมพันธ์ดังกล่าวเป็นความสัมพันธ์ระหว่างแอททริบิวต์แบบทั้งหมด (fully functional dependency) หรืออีกนัยหนึ่งรีเลชันนั้นต้องไม่มีความสัมพันธ์ระหว่าง แอททริบิวต์แบบบางส่วนเกิดขึ้น 2. ขั้นตอนการจัดทำรีเลชันให้เป็นรูปแบบที่เป็นบรรทัดฐานขั้นที่ 2เพื่อแสดงให้เห็นถึงการจัดทำรีเลชันให้เป็นรูปแบบที่เป็นบรรทัดฐานขั้นที่ 2 ในที่นี้ขอนำตัวอย่าง รีเลชันจากเรื่องที่ 4.2.1 มาประกอบดังนี้
ภาพที่ 4.11รีเลชันการลงทะเบียนรีเลชันการลงทะเบียนประกอบด้วย แอททริบิวต์รหัสนักศึกษา ชื่อนักศึกษา รหัสอาจารย์ ชื่ออาจารย์ที่ปรึกษา รหัสชุดวิชา ชื่อชุดวิชาที่ลงทะเบียน หมู่เรียน และหน่วยกิต โดยมีแอททริบิวต์รหัสนักศึกษาและรหัสชุดวิชาประกอบกันเป็นคีย์หลัก จากการตรวจสอบจะพบว่า รีเลชันการลงทะเบียนมีคุณสมบัติอยู่ในรูปแบบที่เป็นบรรทัดฐานขั้นที่ 1 แล้ว เนื่องจากทุกแอททริบิวต์ในแต่ละทูเพิลมีค่าของข้อมูลเพียงค่าเดียว ส่วนการตรวจสอบรีเลชันการลงทะเบียนว่า ทุกแอททริบิวต์ที่ไม่ได้เป็นคีย์หลักมีความสัมพันธ์ระหว่างแอททริบิวต์แบบฟังก์ชันกับคีย์หลักหรือแอททริบิวต์ที่ประกอบกันเป็นคีย์หลัก โดยความสัมพันธ์ ดังกล่าวเป็นความสัมพันธ์ระหว่างแอททริบิวต์แบบทั้งหมดหรือไม่ จากการตรวจสอบพบว่า คีย์หลักหรือ Determinant ของรีเลชันการลงทะเบียนประกอบด้วย แอททริบิวต์รหัสนักศึกษาและรหัสชุดวิชา ส่วนแอททริบิวต์อื่นในรีเลชันการลงทะเบียนที่ไม่ได้เป็นคีย์หลัก คือ ชื่อนักศึกษา รหัสอาจารย์ ชื่ออาจารย์ที่ปรึกษา ชื่อชุดวิชาที่ลงทะเบียน หมู่เรียน และหน่วยกิต รีเลชันการลงทะเบียนมีความสัมพันธ์ระหว่างแอททริบิวต์แบบฟังก์ชันดังนี้ เขียน FD ไดอะแกรมได้ดังนี้ จากภาพ รีเลชันการลงทะเบียนมีแอททริบิวต์รหัสนักศึกษาและรหัสชุดวิชาประกอบกันเป็นคีย์หลักหรือ Determinant ที่สามารถระบุค่าของ Dependent หรือแอททริบิวต์อื่น ๆ ในทูเพิลเดียวกัน คือ ชื่อ นักศึกษา รหัสอาจารย์ ชื่ออาจารย์ที่ปรึกษา ชื่อชุดวิชาที่ลงทะเบียน หมู่เรียน และหน่วยกิตได้ ขณะเดียวกัน รีเลชันการลงทะเบียนมีความสัมพันธ์ระหว่างแอททริบิวต์แบบบางส่วนเกิดขึ้น เนื่องจากแอททริบิวต์รหัสนักศึกษาซึ่งเป็นส่วนประกอบหนึ่งของคีย์หลักสามารถระบุค่าของ Dependent หรือแอททริบิวต์อื่นที่ไม่ได้เป็นคีย์หลัก คือ ชื่อนักศึกษา รหัสอาจารย์ และชื่ออาจารย์ที่ปรึกษาได้ นอกจากนี้ แอททริบิวต์รหัสชุดวิชาซึ่งเป็นส่วนประกอบหนึ่งของคีย์หลักสามารถระบุค่าของ Dependent หรือแอททริบิวต์อื่นที่ไม่ได้เป็นคีย์หลัก คือ ชื่อชุดวิชาที่ลงทะเบียน และหน่วยกิตได้ ดังนั้นจึงกล่าวได้ว่า รีเลชันการลงทะเบียนไม่มีคุณสมบัติอยู่ในรูปแบบที่เป็นบรรทัดฐานขั้นที่ 2 ภาพที่ 4.12 การจำแนกรีเลชันการลงทะเบียนเพื่อขจัดปัญหาความสัมพันธ์ระหว่างแอททริบิวต์แบบบางส่วนที่เกิดขึ้น จึงต้องทำการจำแนกรีเลชันการลงทะเบียนออกเป็น 3 รีเลชันย่อย ด้วยการนำแอททริบิวต์ที่เป็นตัวระบุค่าของแอททริบิวต์อื่น และ แอททริบิวต์หรือกลุ่มของแอททริบิวต์ที่ถูกระบุค่าแยกออกเป็นรีเลชันใหม่ โดยคำนึงถึงหลักการของ ความสัมพันธ์ระหว่างแอททริบิวต์แบบ Join นั่นคือ รีเลชันใด ๆ สามารถจำแนกออกเป็นรีเลชันย่อยได้ และเมื่อนำรีเลชันย่อยที่จำแนกออกมาเหล่านั้นมารวมกันจะต้องได้รีเลชันกลับไปเหมือนเดิมเสมอ ดังนั้น รีเลชันการลงทะเบียนจึงจำแนกเป็น 3 รีเลชันย่อย คือ รีเลชันข้อมูลนักศึกษา รีเลชันชุดวิชา และรีเลชันข้อมูลลงทะเบียน - รีเลชันข้อมูลนักศึกษาประกอบด้วย แอททริบิวต์รหัสนักศึกษา ชื่อนักศึกษา รหัสอาจารย์ และชื่ออาจารย์ที่ปรึกษา โดยมีแอททริบิวต์รหัสนักศึกษาเป็นคีย์หลัก - รีเลชันชุดวิชาประกอบด้วย แอททริบิวต์รหัสชุดวิชา ชื่อชุดวิชาที่ลงทะเบียน และหน่วยกิตโดยมีแอททริบิวต์รหัสชุดวิชาเป็นคีย์หลัก - รีเลชันข้อมูลลงทะเบียนประกอบด้วย แอททริบิวต์รหัสนักศึกษา รหัสชุดวิชา และหมู่เรียน โดยมีแอททริบิวต์รหัสนักศึกษาและรหัสชุดวิชาประกอบกันเป็นคีย์หลัก แม้ว่าการจำแนกรีเลชันการลงทะเบียนออกเป็น 3 รีเลชันย่อย คือ รีเลชันข้อมูลนักศึกษา และรีเลชันชุดวิชา และรีเลชันข้อมูลลงทะเบียน จะช่วยลดปัญหาความซ้ำซ้อนของข้อมูลที่ปรากฏในรูปแบบที่เป็น บรรทัดฐานขั้นที่ 1 ลงได้ ไม่ว่าจะเป็นการแก้ไขชื่อนักศึกษา การเพิ่มข้อมูลนักศึกษาใหม่ หรือการลบข้อมูล นักศึกษา หากทว่าปัญหาความซ้ำซ้อนของข้อมูลในลักษณะอื่นก็ยังคงมีอยู่อีกดังนี้คือ 1. การปรับปรุงข้อมูลใด ๆ จะต้องทำซ้ำหลายแห่ง ทำให้สิ้นเปลืองเวลา รวมทั้งอาจทำการแก้ไขข้อมูลได้ไม่ครบถ้วนและถูกต้องทุกรายการ ตัวอย่างเช่น การแก้ไขชื่ออาจารย์ที่ปรึกษาในรีเลชันข้อมูล นักศึกษาจาก ศิริภัทรา เหมือนมาลัย เป็น สุรพล ประดิษฐ์ทัศนีย์ 2. การเพิ่มเติมข้อมูลอาจไม่สามารถทำได้ ตัวอย่างเช่น ในรีเลชันข้อมูลนักศึกษา หากต้องการเพิ่มข้อมูลอาจารย์ที่ปรึกษาใหม่ Q1073 ณัชชา มาลัย จะไม่สามารถเพิ่มเติมข้อมูลได้ เนื่องจากยังไม่ปรากฏ ข้อมูลของนักศึกษาในการปรึกษามาก่อน ค่าของรหัสนักศึกษาจึงเป็นค่าว่าง ทำให้ไม่อาจเพิ่มเติมข้อมูลลงในรีเลชันได้ เพราะแอททริบิวต์ที่เป็นส่วนของคีย์หลักจะมีค่าว่างไม่ได้ 3. การลบข้อมูลออกจากรีเลชันอาจทำให้ข้อมูลบางส่วนสูญหายไปจากฐานข้อมูล ตัวอย่างเช่น หากผู้ที่มีรหัสนักศึกษา 41012451 นพดล ทับทิมทอง ลาออก ข้อมูลที่เกี่ยวข้องกับนักศึกษาจะถูกลบไปทั้ง ทูเพิล ดังนั้น ข้อมูลเกี่ยวกับอาจารย์ที่ปรึกษา Q1035 ศิริชัย ศรีพรหม ซึ่งมีเพียงแห่งเดียวในฐานข้อมูลก็จะสูญหายไปด้วย ซึ่งปัญหาลักษณะนี้ของรีเลชันเนื่องจากการมีแอททริบิวต์จำนวนมากเกินไป และแอททริบิวต์ที่ยังไม่จำเป็นต้องใช้งานมาผูกติดอยู่กับแอททริบิวต์ที่ต้องการใช้งาน ดังนั้น เพื่อแก้ไขปัญหาความซ้ำซ้อนของข้อมูลในรีเลชันดังกล่าว ไม่ว่าจะเป็นการปรับปรุง การเพิ่ม หรือการลบข้อมูล จึงจำเป็นต้องดำเนินการจัดทำรีเลชันให้อยู่ในรูปแบบที่เป็นบรรทัดฐาน ขั้นต่อไป |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|