ไม่มีคำตอบเดียวจบ ขึ้นอยู่กับ:
- Application Design: โครงสร้างแอปพลิเคชันต้องการอย่างไร
- Database Normalization: หลักการ Normalize เพื่อลด redundancy และ anomaly
กรณีที่ควรใช้หลายตารางเล็ก (Multiple Small Tables):
- ทีมพัฒนาหลายทีม ทำงานบนส่วนต่างๆ ของข้อมูล (แยก Ownership)
- ต้องการ Authority/Access Control แบบละเอียดต่อส่วนข้อมูล
- ย้ายข้อมูลจากแหล่งต่างๆ มารวมกัน (Data Integration)
- Partitioning แบบ Manual (Sharding) สำหรับ Scalability
กรณีที่ตารางใหญ่เพียงตารางเดียว (Single Large Table) อาจเหมาะ:
- ข้อมูลโครงสร้างเดียวกัน ต้อง Query Join บ่อย
- Data Warehouse / Fact Table แบบ Denormalized
- Log/Event Table ที่ Append-only
แนวทางปฏิบัติ: เริ่มจาก Normalization (3NF) แล้ว Denormalize เฉพาะจุดที่จำเป็นสำหรับ Performance (Materialized Views, Summary Tables)