บริษัทต้องการเก็บข้อมูลพนักงาน (ชื่อ เลขประจำตัว เงินเดือน แผนก) และติดตามประวัติการเลื่อนขั้นเลื่อนตำแหน่งตลอดช่วงเวลาที่ทำงาน การออกแบบฐานข้อมูลเชิงสัมพันธ์ที่เหมาะสมที่สุดควรเป็นอย่างไร

สร้างตาราง 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 ข้ามปีและบำรุงรักษาระบบ

ข้อสอบอื่นในวิชาความรู้ความสามารถในการวิเคราะห์ ออกแบบ ฐานข้อมูล

ดูข้อสอบวิชานี้ทั้งหมด →