ในการออกแบบฐานข้อมูลร้านค้า มีตาราง 'ลูกค้า' และตาราง 'ใบเสร็จ' โดยลูกค้า 1 คนสามารถมีใบเสร็จได้หลายฉบับ และตาราง 'ใบเสร็จ' มี Foreign Key อ้างอิงไปยังตาราง 'ลูกค้า' หากผู้ดูแลระบบพยายามลบข้อมูลลูกค้ารายหนึ่งที่มีใบเสร็จอยู่ในระบบ โดยไม่ได้กำหนดค่า ON DELETE ใดๆ ไว้ล่วงหน้า จะเกิดผลใดในระบบฐานข้อมูล

ระบบจะแจ้งข้อผิดพลาดและไม่ยอมให้ลบข้อมูลลูกค้า เนื่องจากละเมิด Referential Integrity
ระบบจะลบข้อมูลลูกค้าสำเร็จและลบข้อมูลใบเสร็จที่เกี่ยวข้องออกโดยอัตโนมัติ
ระบบจะลบข้อมูลลูกค้าสำเร็จและตั้งค่า Foreign Key ในตาราง 'ใบเสร็จ' เป็น NULL โดยอัตโนมัติ
ระบบจะสำรองข้อมูลลูกค้าไปยังตาราง Archive ก่อนทำการลบเพื่อรักษาความสมบูรณ์ของข้อมูล

เฉลยอธิบาย

เมื่อไม่ได้กำหนดค่า ON DELETE ไว้ ฐานข้อมูลจะใช้พฤติกรรมเริ่มต้น (Default) คือ RESTRICT หรือ NO ACTION ซึ่งจะปฏิเสธการลบข้อมูลในตารางหลัก (Parent Table) หากยังมีข้อมูลในตารางลูก (Child Table) อ้างอิงอยู่ เพื่อรักษา Referential Integrity การลบแบบอัตโนมัติต้องกำหนด ON DELETE CASCADE และการตั้งค่าเป็น NULL ต้องกำหนด ON DELETE SET NULL ไว้อย่างชัดเจน

ข้อสอบอื่นในวิชาความรู้ความสามารถในการวิเคราะห์ ออกแบบ ฐานข้อมูล

ดูข้อสอบวิชานี้ทั้งหมด →