ระบบจัดการเนื้อหาเว็บไซต์ (CMS) ออกแบบฐานข้อมูลสำหรับบทความที่มีแท็กกำกับ โดยบทความหนึ่งมีได้หลายแท็ก และแท็กหนึ่งใช้ได้กับหลายบทความ ควรเพิ่มคอลัมน์ใดในตาราง ArticleTag ซึ่งเป็นตารางกลาง (Junction Table) เพื่อเพิ่มประสิทธิภาพการค้นหาบทความตามแท็กได้มากที่สุด
กเพิ่มคอลัมน์ tagged_at ชนิด DATETIME เพื่อบันทึกวันเวลาที่ติดแท็ก และสร้าง Index บนคอลัมน์ article_id กับ tag_id
ขเพิ่มคอลัมน์ tag_description ชนิด TEXT เพื่อเก็บคำอธิบายแท็ก และสร้าง Full-Text Index บนคอลัมน์ดังกล่าว
คเพิ่มคอลัมน์ article_title ชนิด VARCHAR เพื่อเก็บชื่อบทความซ้ำไว้ในตารางกลาง และสร้าง Unique Index บนคอลัมน์นั้น
งเพิ่มคอลัมน์ tag_count ชนิด INT เพื่อนับจำนวนแท็กทั้งหมดของบทความ และอัปเดตค่าทุกครั้งที่มีการเพิ่มแท็ก
เฉลยอธิบาย
ตาราง ArticleTag เป็น Junction Table สำหรับความสัมพันธ์แบบ Many-to-Many ระหว่างบทความและแท็ก การเพิ่มคอลัมน์ tagged_at ชนิด DATETIME ช่วยบันทึกข้อมูลเวลาที่มีประโยชน์ในการค้นหาและเรียงลำดับ และการสร้าง Index บน article_id กับ tag_id ซึ่งเป็น Foreign Key หลักของตาราง จะช่วยเพิ่มประสิทธิภาพการ JOIN และการค้นหาได้โดยตรง ส่วนตัวเลือกอื่นไม่เหมาะสม เพราะ tag_description ควรอยู่ในตาราง Tag, article_title ซ้ำซ้อนกับตาราง Article และ tag_count ที่เก็บค่านับอาจทำให้ข้อมูลไม่สอดคล้องกัน (Data Inconsistency)