ในการทบทวนการออกแบบฐานข้อมูลของบริษัท พบว่า ตารางสินค้า (Product) มี CategoryID FK และตารางหมวดหมู่ (Category) มี ParentCategoryID FK ที่อ้างอิงถึง CategoryID ในตารางเดียวกัน (Self-Reference) นี่คือออกแบบประเภทใด และมีข้อเด่นและข้อเสียอย่างไร
กเป็นการออกแบบ Redundant Relationship ที่สามารถหลีกเลี่ยงได้
ขเป็นการออกแบบ Recursive Relationship ข้อเด่นคือแสดงความสัมพันธ์แบบลำดับชั้น ข้อเสียคือค้นหายุ่งซับซ้อน
คเป็นการออกแบบ Self-Referential Relationship ซึ่งไม่ปฏิบัติตาม 3NF
งเป็นการออกแบบ Circular Reference ซึ่งไม่ควรใช้ในฐานข้อมูลที่ดี
เฉลยอธิบาย
การอ้างอิงตัวเอง (Self-Reference) ในตาราง Category ที่มี ParentCategoryID FK อ้างอิงถึง CategoryID ในตารางเดียวกัน เป็นการออกแบบ Recursive Relationship ข้อเด่นคือสามารถแสดงความสัมพันธ์แบบลำดับชั้น (Hierarchy) เช่น หมวดหมู่ย่อย หมวดหมู่หลัก ข้อเสียคือการค้นหา (Query) อาจซับซ้อน และต้องใช้ Recursive Query บางคิวรี ตัวเลือก B ใช้คำผิด Circular Reference โดยทั่วไปหมายถึงการอ้างอิงแบบวนกลับที่กำหนดไม่ได้ ตัวเลือก C ไม่ถูกต้องเพราะนี่คือวิธีเดียวในการแสดงลำดับชั้น ตัวเลือก D ไม่ถูกต้องเพราะปฏิบัติตาม 3NF ได้