บริษัทต้องการเก็บข้อมูลพนักงาน (ชื่อ เลขประจำตัว เงินเดือน แผนก) และติดตามประวัติการเลื่อนขั้นเลื่อนตำแหน่งตลอดช่วงเวลาที่ทำงาน การออกแบบฐานข้อมูลเชิงสัมพันธ์ที่เหมาะสมที่สุดควรเป็นอย่างไร
กสร้างตาราง Employee เก็บข้อมูลพนักงาน และสร้างตาราง Promotion_History แยกต่างหาก โดยมี Foreign Key เชื่อมกับตาราง Employee เพื่อบันทึกประวัติการเลื่อนขั้นแต่ละครั้ง
ขสร้างตารางเดียวชื่อ Employee แล้วเพิ่มคอลัมน์ Promotion1, Promotion2, Promotion3 สำหรับเก็บประวัติการเลื่อนขั้นในแถวเดียวกันกับข้อมูลพนักงาน
คสร้างตาราง Employee และเก็บประวัติการเลื่อนขั้นทั้งหมดในคอลัมน์เดียวในรูปแบบ JSON String เพื่อความสะดวกในการเรียกดูข้อมูลทั้งหมดพร้อมกัน
งสร้างตาราง Employee ใหม่ทุกปีเพื่อเก็บข้อมูลการเลื่อนขั้นประจำปี เช่น Employee_2022, Employee_2023 เพื่อแยกข้อมูลตามช่วงเวลาให้ชัดเจน
เฉลยอธิบาย
การออกแบบที่ถูกต้องตามหลัก Normalization คือการแยกตาราง Employee สำหรับข้อมูลหลักของพนักงาน และสร้างตาราง Promotion_History แยกต่างหากเพื่อเก็บประวัติการเลื่อนขั้น โดยใช้ Foreign Key เชื่อมความสัมพันธ์ ซึ่งช่วยให้สามารถบันทึกประวัติได้หลายครั้งต่อพนักงาน 1 คน ตัวเลือก B ละเมิด 1NF เพราะกำหนดจำนวนการเลื่อนขั้นตายตัว ตัวเลือก C ฝังข้อมูลในรูป JSON ซึ่งไม่เหมาะกับการ Query และ ตัวเลือก D สร้างตารางแยกตามปีทำให้ยากต่อการ Query ข้ามปีและบำรุงรักษาระบบ