รูปแบบที่เป็นบรรทัดฐานขั้นที่ 2 (Second Normal Form : 2NF) เป็นขั้นตอนถัดมาจากการจัดทำ รีเลชันให้อยู่ในรูปแบบที่เป็นบรรทัดฐานขั้นที่ 1 ซึ่งเป็นขั้นตอนที่ยังไม่มีการวิเคราะห์ความสัมพันธ์ระหว่าง แอททริบิวต์
การจัดทำรีเลชันให้มีคุณสมบัติอยู่ในรูปแบบที่เป็นบรรทัดฐานขั้นที่ 2 จะเป็นการตรวจสอบเพื่อแก้ไขปัญหาความซ้ำซ้อนของข้อมูลที่ปรากฏในรีเลชันที่มีคุณสมบัติอยู่ในรูปแบบที่เป็นบรรทัดฐานขั้นที่ 1 โดยให้ความสำคัญในเรื่องของคีย์หลักและความสัมพันธ์ระหว่างแอททริบิวต์แบบฟังก์ชัน โดยเฉพาะอย่างยิ่ง ความสัมพันธ์ระหว่างแอททริบิวต์แบบทั้งหมด
รีเลชันใด ๆ จะมีคุณสมบัติอยู่ในรูปแบบที่เป็นบรรทัดฐานขั้นที่ 2 ก็ต่อเมื่อ
1. รีเลชันนั้นมีคุณสมบัติอยู่ในรูปแบบที่เป็นบรรทัดฐานขั้นที่ 1 แล้ว
2.ทุกแอททริบิวต์ที่ไม่ใช่คีย์หลักต้องมีความสัมพันธ์ระหว่างแอททริบิวต์แบบฟังก์ชันกับคีย์หลักหรือแอททริบิวต์ที่ประกอบกันเป็นคีย์หลัก ซึ่งความสัมพันธ์ดังกล่าวเป็นความสัมพันธ์ระหว่างแอททริบิวต์แบบทั้งหมด (fully functional dependency) หรืออีกนัยหนึ่งรีเลชันนั้นต้องไม่มีความสัมพันธ์ระหว่าง แอททริบิวต์แบบบางส่วนเกิดขึ้น
เพื่อแสดงให้เห็นถึงการจัดทำรีเลชันให้เป็นรูปแบบที่เป็นบรรทัดฐานขั้นที่ 2 ในที่นี้ขอนำตัวอย่าง รีเลชันจากเรื่องที่ 4.2.1 มาประกอบดังนี้
รหัสนักศึกษา |
ชื่อนักศึกษา |
รหัสอาจารย์ |
ชื่ออาจารย์ที่ปรึกษา |
รหัสชุดวิชา |
ชื่อชุดวิชาที่ลงทะเบียน |
หมู่เรียน |
หน่วยกิต |
41010703 |
สมชาย พลจันทร์ |
Q1059 |
สัมพันธ์ เย็นสำราญ |
729101 |
เศรษฐศาสตร์เบื้องต้น |
700 |
2 |
41010703 |
สมชาย พลจันทร์ |
Q1059 |
สัมพันธ์ เย็นสำราญ |
729111 |
คณิตศาสตร์และสถิติ |
711 |
3 |
41010703 |
สมชาย พลจันทร์ |
Q1059 |
สัมพันธ์ เย็นสำราญ |
999211 |
คอมพิวเตอร์เบื้องต้น |
713 |
3 |
41010943 |
สุทิศา พินิจไพฑูรย์ |
Q1011 |
ศิริภัทรา เหมือนมาลัย |
729111 |
คณิตศาสตร์และสถิติ |
712 |
3 |
41010943 |
สุทิศา พินิจไพฑูรย์ |
Q1011 |
ศิริภัทรา เหมือนมาลัย |
999211 |
คอมพิวเตอร์เบื้องต้น |
711 |
3 |
41010943 |
สุทิศา พินิจไพฑูรย์ |
Q1011 |
ศิริภัทรา เหมือนมาลัย |
729104 |
การจัดการการเงิน |
700 |
2 |
41012147 |
ณัฐพร ประคองเก็บ |
Q1061 |
เมธี ปิยะคุณ |
729111 |
คณิตศาสตร์และสถิติ |
711 |
3 |
41012147 |
ณัฐพร ประคองเก็บ |
Q1061 |
เมธี ปิยะคุณ |
999211 |
คอมพิวเตอร์เบื้องต้น |
713 |
3 |
41012451 |
นพดล ทับทิมทอง |
Q1035 |
ศิริชัย ศรีพรหม |
729111 |
คณิตศาสตร์และสถิติ |
712 |
3 |
41012451 |
นพดล ทับทิมทอง |
Q1035 |
ศิริชัย ศรีพรหม |
999211 |
คอมพิวเตอร์เบื้องต้น |
711 |
3 |
41013327 |
มัทนา พินิจไพฑูรย์ |
Q1059 |
สัมพันธ์ เย็นสำราญ |
729103 |
การจัดการการตลาด |
700 |
2 |
41013780 |
สมชาย พลจันทร์ |
Q1011 |
ศิริภัทรา เหมือนมาลัย |
999211 |
คอมพิวเตอร์เบื้องต้น |
712 |
3 |
รีเลชันการลงทะเบียนประกอบด้วย แอททริบิวต์รหัสนักศึกษา ชื่อนักศึกษา รหัสอาจารย์ ชื่ออาจารย์ที่ปรึกษา รหัสชุดวิชา ชื่อชุดวิชาที่ลงทะเบียน หมู่เรียน และหน่วยกิต โดยมีแอททริบิวต์รหัสนักศึกษาและรหัสชุดวิชาประกอบกันเป็นคีย์หลัก
จากการตรวจสอบจะพบว่า รีเลชันการลงทะเบียนมีคุณสมบัติอยู่ในรูปแบบที่เป็นบรรทัดฐานขั้นที่ 1 แล้ว เนื่องจากทุกแอททริบิวต์ในแต่ละทูเพิลมีค่าของข้อมูลเพียงค่าเดียว
ส่วนการตรวจสอบรีเลชันการลงทะเบียนว่า ทุกแอททริบิวต์ที่ไม่ได้เป็นคีย์หลักมีความสัมพันธ์ระหว่างแอททริบิวต์แบบฟังก์ชันกับคีย์หลักหรือแอททริบิวต์ที่ประกอบกันเป็นคีย์หลัก โดยความสัมพันธ์ ดังกล่าวเป็นความสัมพันธ์ระหว่างแอททริบิวต์แบบทั้งหมดหรือไม่
จากการตรวจสอบพบว่า คีย์หลักหรือ Determinant ของรีเลชันการลงทะเบียนประกอบด้วย แอททริบิวต์รหัสนักศึกษาและรหัสชุดวิชา ส่วนแอททริบิวต์อื่นในรีเลชันการลงทะเบียนที่ไม่ได้เป็นคีย์หลัก คือ ชื่อนักศึกษา รหัสอาจารย์ ชื่ออาจารย์ที่ปรึกษา ชื่อชุดวิชาที่ลงทะเบียน หมู่เรียน และหน่วยกิต
รีเลชันการลงทะเบียนมีความสัมพันธ์ระหว่างแอททริบิวต์แบบฟังก์ชันดังนี้
เขียน FD ไดอะแกรมได้ดังนี้
จากภาพ รีเลชันการลงทะเบียนมีแอททริบิวต์รหัสนักศึกษาและรหัสชุดวิชาประกอบกันเป็นคีย์หลักหรือ Determinant ที่สามารถระบุค่าของ Dependent หรือแอททริบิวต์อื่น ๆ ในทูเพิลเดียวกัน คือ ชื่อ นักศึกษา รหัสอาจารย์ ชื่ออาจารย์ที่ปรึกษา ชื่อชุดวิชาที่ลงทะเบียน หมู่เรียน และหน่วยกิตได้
ขณะเดียวกัน รีเลชันการลงทะเบียนมีความสัมพันธ์ระหว่างแอททริบิวต์แบบบางส่วนเกิดขึ้น เนื่องจากแอททริบิวต์รหัสนักศึกษาซึ่งเป็นส่วนประกอบหนึ่งของคีย์หลักสามารถระบุค่าของ Dependent หรือแอททริบิวต์อื่นที่ไม่ได้เป็นคีย์หลัก คือ ชื่อนักศึกษา รหัสอาจารย์ และชื่ออาจารย์ที่ปรึกษาได้ นอกจากนี้ แอททริบิวต์รหัสชุดวิชาซึ่งเป็นส่วนประกอบหนึ่งของคีย์หลักสามารถระบุค่าของ Dependent หรือแอททริบิวต์อื่นที่ไม่ได้เป็นคีย์หลัก คือ ชื่อชุดวิชาที่ลงทะเบียน และหน่วยกิตได้ ดังนั้นจึงกล่าวได้ว่า รีเลชันการลงทะเบียนไม่มีคุณสมบัติอยู่ในรูปแบบที่เป็นบรรทัดฐานขั้นที่ 2
เพื่อขจัดปัญหาความสัมพันธ์ระหว่างแอททริบิวต์แบบบางส่วนที่เกิดขึ้น จึงต้องทำการจำแนกรีเลชันการลงทะเบียนออกเป็น 3 รีเลชันย่อย ด้วยการนำแอททริบิวต์ที่เป็นตัวระบุค่าของแอททริบิวต์อื่น และ แอททริบิวต์หรือกลุ่มของแอททริบิวต์ที่ถูกระบุค่าแยกออกเป็นรีเลชันใหม่ โดยคำนึงถึงหลักการของ ความสัมพันธ์ระหว่างแอททริบิวต์แบบ Join นั่นคือ รีเลชันใด ๆ สามารถจำแนกออกเป็นรีเลชันย่อยได้ และเมื่อนำรีเลชันย่อยที่จำแนกออกมาเหล่านั้นมารวมกันจะต้องได้รีเลชันกลับไปเหมือนเดิมเสมอ
ดังนั้น รีเลชันการลงทะเบียนจึงจำแนกเป็น 3 รีเลชันย่อย คือ รีเลชันข้อมูลนักศึกษา รีเลชันชุดวิชา และรีเลชันข้อมูลลงทะเบียน
- รีเลชันข้อมูลนักศึกษาประกอบด้วย แอททริบิวต์รหัสนักศึกษา ชื่อนักศึกษา รหัสอาจารย์ และชื่ออาจารย์ที่ปรึกษา โดยมีแอททริบิวต์รหัสนักศึกษาเป็นคีย์หลัก
- รีเลชันชุดวิชาประกอบด้วย แอททริบิวต์รหัสชุดวิชา ชื่อชุดวิชาที่ลงทะเบียน และหน่วยกิตโดยมีแอททริบิวต์รหัสชุดวิชาเป็นคีย์หลัก
- รีเลชันข้อมูลลงทะเบียนประกอบด้วย แอททริบิวต์รหัสนักศึกษา รหัสชุดวิชา และหมู่เรียน โดยมีแอททริบิวต์รหัสนักศึกษาและรหัสชุดวิชาประกอบกันเป็นคีย์หลัก
แม้ว่าการจำแนกรีเลชันการลงทะเบียนออกเป็น 3 รีเลชันย่อย คือ รีเลชันข้อมูลนักศึกษา และรีเลชันชุดวิชา และรีเลชันข้อมูลลงทะเบียน จะช่วยลดปัญหาความซ้ำซ้อนของข้อมูลที่ปรากฏในรูปแบบที่เป็น บรรทัดฐานขั้นที่ 1 ลงได้ ไม่ว่าจะเป็นการแก้ไขชื่อนักศึกษา การเพิ่มข้อมูลนักศึกษาใหม่ หรือการลบข้อมูล นักศึกษา หากทว่าปัญหาความซ้ำซ้อนของข้อมูลในลักษณะอื่นก็ยังคงมีอยู่อีกดังนี้คือ
1. การปรับปรุงข้อมูลใด ๆ จะต้องทำซ้ำหลายแห่ง ทำให้สิ้นเปลืองเวลา รวมทั้งอาจทำการแก้ไขข้อมูลได้ไม่ครบถ้วนและถูกต้องทุกรายการ ตัวอย่างเช่น การแก้ไขชื่ออาจารย์ที่ปรึกษาในรีเลชันข้อมูล นักศึกษาจาก ศิริภัทรา เหมือนมาลัย เป็น สุรพล ประดิษฐ์ทัศนีย์
2. การเพิ่มเติมข้อมูลอาจไม่สามารถทำได้ ตัวอย่างเช่น ในรีเลชันข้อมูลนักศึกษา หากต้องการเพิ่มข้อมูลอาจารย์ที่ปรึกษาใหม่ Q1073 ณัชชา มาลัย จะไม่สามารถเพิ่มเติมข้อมูลได้ เนื่องจากยังไม่ปรากฏ ข้อมูลของนักศึกษาในการปรึกษามาก่อน ค่าของรหัสนักศึกษาจึงเป็นค่าว่าง ทำให้ไม่อาจเพิ่มเติมข้อมูลลงในรีเลชันได้ เพราะแอททริบิวต์ที่เป็นส่วนของคีย์หลักจะมีค่าว่างไม่ได้
3. การลบข้อมูลออกจากรีเลชันอาจทำให้ข้อมูลบางส่วนสูญหายไปจากฐานข้อมูล ตัวอย่างเช่น หากผู้ที่มีรหัสนักศึกษา 41012451 นพดล ทับทิมทอง ลาออก ข้อมูลที่เกี่ยวข้องกับนักศึกษาจะถูกลบไปทั้ง ทูเพิล ดังนั้น ข้อมูลเกี่ยวกับอาจารย์ที่ปรึกษา Q1035 ศิริชัย ศรีพรหม ซึ่งมีเพียงแห่งเดียวในฐานข้อมูลก็จะสูญหายไปด้วย ซึ่งปัญหาลักษณะนี้ของรีเลชันเนื่องจากการมีแอททริบิวต์จำนวนมากเกินไป และแอททริบิวต์ที่ยังไม่จำเป็นต้องใช้งานมาผูกติดอยู่กับแอททริบิวต์ที่ต้องการใช้งาน
ดังนั้น เพื่อแก้ไขปัญหาความซ้ำซ้อนของข้อมูลในรีเลชันดังกล่าว ไม่ว่าจะเป็นการปรับปรุง การเพิ่ม หรือการลบข้อมูล จึงจำเป็นต้องดำเนินการจัดทำรีเลชันให้อยู่ในรูปแบบที่เป็นบรรทัดฐาน ขั้นต่อไป