ในการออกแบบฐานข้อมูลสำหรับร้านค้าออนไลน์ที่สินค้าหนึ่งชิ้นอาจอยู่ในหลายหมวดหมู่พร้อมกัน เช่น เสื้อเด็กสีเหลืองอาจจัดอยู่ในหมวด 'เสื้อผ้า' 'เด็ก' และ 'สีเหลือง' โครงสร้างฐานข้อมูลที่เหมาะสมที่สุดเพื่อหลีกเลี่ยงปัญหา Anomaly คือข้อใด
กสร้างตาราง Product และตาราง Category แยกกัน แล้วเพิ่มตาราง Junction Table ชื่อ Product_Category เพื่อเชื่อมความสัมพันธ์แบบ Many-to-Many
ขสร้างตาราง Product เพียงตารางเดียว แล้วเพิ่มคอลัมน์ Category1, Category2, Category3 เพื่อเก็บหมวดหมู่ทั้งหมดไว้ในแถวเดียวกัน
คสร้างตาราง Product และเพิ่มคอลัมน์ Categories เพื่อเก็บชื่อหมวดหมู่หลายค่าโดยคั่นด้วยเครื่องหมายจุลภาคในคอลัมน์เดียว
งสร้างตาราง Category หลายตารางแยกตามประเภท แล้วสร้าง Foreign Key จากแต่ละตาราง Category ชี้กลับมายังตาราง Product
เฉลยอธิบาย
ความสัมพันธ์แบบ Many-to-Many ระหว่างสินค้าและหมวดหมู่ต้องใช้ Junction Table (ตารางเชื่อม) เช่น Product_Category ที่มี Foreign Key อ้างอิงทั้ง ProductID และ CategoryID วิธีนี้เป็นไปตามหลัก Normalization (3NF) และหลีกเลี่ยง Update Anomaly, Insert Anomaly และ Delete Anomaly ได้ ส่วนตัวเลือก B ละเมิด 1NF เพราะมีจำนวนคอลัมน์คงที่และอาจไม่เพียงพอ ตัวเลือก C ละเมิด 1NF เพราะเก็บหลายค่าในคอลัมน์เดียว และตัวเลือก D ทำให้โครงสร้างซับซ้อนและยากต่อการขยายหมวดหมู่ใหม่