เมื่อลบข้อมูลลูกค้าออก แต่ยังมีข้อมูลคำสั่งซื้อของลูกค้านั้นอยู่ในฐานข้อมูล จะเกิดปัญหา Referential Integrity หรือไม่ และควรแก้อย่างไร
กต้องลบข้อมูลคำสั่งซื้อก่อน แล้วค่อยลบข้อมูลลูกค้า
ขไม่เกิดปัญหา เพราะข้อมูลคำสั่งซื้อยังสามารถมีอยู่ได้
คใช่ เพราะมี Foreign Key ชี้ไปยังลูกค้าที่ไม่มีอยู่แล้ว ต้องกำหนด ON DELETE CASCADE หรือ ON DELETE SET NULL
งเกิดปัญหา Normalization เท่านั้น ไม่ใช่ Referential Integrity
เฉลยอธิบาย
Referential Integrity คือการรักษาความสอดคล้องของข้อมูลระหว่างตาราง โดยต้องป้องกันไม่ให้ Foreign Key ชี้ไปยังข้อมูลที่ไม่มีอยู่ วิธีแก้ปัญหาคือกำหนด ON DELETE CASCADE (ลบข้อมูลที่เกี่ยวข้องด้วย) หรือ ON DELETE SET NULL (ตั้งค่า Foreign Key เป็น NULL) ตัวเลือก B ผิดเพราะจะเกิด Orphaned Records ตัวเลือก C ผิดเพราะเป็นเรื่องต่างกัน