ฐานข้อมูลของโรงเรียนมีตาราง นักเรียน (รหัส ชื่อ ชั้น) ตาราง วิชา (รหัสวิชา ชื่อวิชา หน่วยกิต) และตาราง ผลการเรียน (รหัสนักเรียน รหัสวิชา เกรด) โดยตาราง ผลการเรียน มี Foreign Key อ้างอิงไปยังตาราง วิชา หากต้องการลบข้อมูลวิชาที่มีนักเรียนลงทะเบียนอยู่ออกจากระบบ ควรดำเนินการอย่างไรจึงจะถูกต้องตามหลักการออกแบบฐานข้อมูล
กลบข้อมูลในตาราง ผลการเรียน ที่อ้างอิงถึงวิชานั้นออกก่อน แล้วจึงลบข้อมูลวิชาในตาราง วิชา เพื่อรักษา Referential Integrity
ขลบข้อมูลวิชาในตาราง วิชา ออกโดยตรง เพราะ Foreign Key จะอัปเดตค่าในตาราง ผลการเรียน โดยอัตโนมัติ
คคัดลอกข้อมูลวิชาที่ต้องการลบไปเก็บไว้ในตารางสำรองก่อน แล้วลบออกจากตาราง วิชา โดยไม่ต้องสนใจตาราง ผลการเรียน
งเพิ่มคอลัมน์ สถานะ ในตาราง วิชา แล้วอัปเดตค่าเป็น ลบแล้ว แทนการลบจริง โดยไม่ต้องจัดการตาราง ผลการเรียน เลย
เฉลยอธิบาย
หลักการ Referential Integrity กำหนดว่าไม่สามารถลบข้อมูลในตารางหลัก (Parent Table) ที่ยังมีข้อมูลในตารางลูก (Child Table) อ้างอิงอยู่ได้ ดังนั้นต้องลบข้อมูลในตาราง ผลการเรียน ที่อ้างอิงถึงวิชานั้นออกก่อน แล้วจึงลบข้อมูลในตาราง วิชา เพื่อป้องกันข้อมูลกำพร้า (Orphan Record) และรักษาความสมบูรณ์ของฐานข้อมูล