นักออกแบบฐานข้อมูลต้องเลือกระหว่างสองแนวทางสำหรับระบบที่มีผู้ใช้หลายประเภท (นักเรียน ครู ผู้ปกครอง): แนวทาง 1: Single Table Inheritance - ใช้ตาราง User เดียวที่มีคอลัมน์ UserType และคอลัมน์สำหรับทุกประเภทรวมกัน (บางคอลัมน์จะเป็น NULL) แนวทาง 2: Class Table Inheritance - ตาราง User กลาง และตาราง Student, Teacher, Parent แยกกัน โดย StudentID/TeacherID/ParentID อ้างอิง UserID ข้อใดวิเคราะห์ข้อดีข้อเสียได้ถูกต้องที่สุด
กแนวทาง 1 ดีสำหรับระบบที่ Query บ่อยและคอลัมน์ไม่ต่างกันมาก แต่จะมี NULL มาก; แนวทาง 2 ดีกว่าเมื่อแต่ละประเภทมีแอตทริบิวต์เฉพาะมาก แต่ต้อง JOIN เพิ่ม ควรเลือกตามลักษณะข้อมูลจริง
ขควรใช้ฐานข้อมูล NoSQL แทนเพราะทั้งสองแนวทางไม่เหมาะสม
คแนวทาง 2 ดีกว่าเสมอเพราะ Normalize สมบูรณ์กว่า
งแนวทาง 1 ดีกว่าเสมอเพราะไม่ต้อง JOIN ตาราง
เฉลยอธิบาย
ทั้งสองแนวทางมีข้อดีข้อเสียที่แตกต่างกัน: Single Table Inheritance (STI) เหมาะเมื่อประเภทต่างๆ มีแอตทริบิวต์คล้ายกัน Query ง่าย ไม่ต้อง JOIN แต่มี NULL มากและ Sparse Table; Class Table Inheritance (CTI) เหมาะเมื่อแต่ละประเภทมีแอตทริบิวต์เฉพาะมาก Normalize ดีกว่า แต่ต้อง JOIN ซับซ้อนขึ้น การเลือกต้องพิจารณาจากข้อกำหนดจริงของระบบ ไม่มีแนวทางใดที่ 'ดีกว่าเสมอ'