นักวิเคราะห์ระบบพบว่าฐานข้อมูลเชิงสัมพันธ์มีปัญหาประสิทธิภาพเมื่อต้องค้นหาข้อมูลสินค้าที่มีหมวดหมู่ย่อยหลายระดับ (เช่น อิเล็กทรอนิกส์ > โทรศัพท์ > สมาร์ทโฟน > iPhone) โดย Self-Reference FK ต้องใช้หลาย JOIN เพื่อดึงข้อมูลทั้งลำดับชั้น วิธีใดเหมาะสมที่สุดในการแก้ปัญหา
กเปลี่ยนไปใช้ฐานข้อมูล NoSQL ทันที เพราะเชิงสัมพันธ์ไม่เหมาะกับลำดับชั้น
ขจำกัดให้มีได้เพียง 3 ระดับเท่านั้น และสร้าง 3 คอลัมน์แยกกัน (Level1, Level2, Level3)
คเก็บ Path แบบ String เช่น '1/3/7/12' ในคอลัมน์เดียวเพื่อแสดงลำดับชั้น
งใช้ Nested Set Model หรือ Closure Table Pattern ซึ่งเป็นเทคนิคการเก็บข้อมูลลำดับชั้นใน Relational Database ที่ช่วยลดการ JOIN
เฉลยอธิบาย
Nested Set Model และ Closure Table Pattern เป็นเทคนิคที่ได้รับการยอมรับทางวิชาการสำหรับจัดการลำดับชั้น (Hierarchical Data) ใน Relational Database: Nested Set ใช้ lft/rgt ค่าตัวเลข ทำให้ดึงลูกหลานทั้งหมดด้วย Query เดียว ส่วน Closure Table เก็บความสัมพันธ์ ancestor-descendant ทุกคู่ ทำให้ Query ยืดหยุ่น ตัวเลือก A เป็นการตัดสินใจเกินกว่าเหตุ ตัวเลือก C (Path Enumeration) ใช้งานได้แต่ยากต่อการรักษาความสมบูรณ์ ตัวเลือก D จำกัดความยืดหยุ่นและไม่รองรับการเติบโต