บริษัทขนส่งต้องการออกแบบระบบจองรถบัส พิจารณาตาราง 'ผู้โดยสาร' มีฟิลด์ที่สำคัญ: รหัสผู้โดยสาร (PK), ชื่อผู้โดยสาร, เบอร์โทรศัพท์, อีเมล หากสมมติว่ามีผู้โดยสารหลายคนจองรถบัสในเที่ยวเดียวกัน ตาราง 'ผู้โดยสาร' นี้ควรมีความสัมพันธ์กับตารางอื่นหรือไม่

ควร เพิ่มฟิลด์ 'รหัสเที่ยวรถ' ลงในตาราง 'ผู้โดยสาร' โดยตรง
ไม่ควร เพราะฟิลด์ในตารางผู้โดยสารครบครันแล้ว
ควร สร้างตาราง 'เที่ยวรถ' แต่ไม่จำเป็นต้องเชื่อมกับตาราง 'ผู้โดยสาร'
ควร สร้างตาราง 'การจอง' เพื่อบันทึกการจองของแต่ละผู้โดยสาร โดยมี Foreign Key ชี้ไปตาราง 'ผู้โดยสาร'

เฉลยอธิบาย

ตามการออกแบบฐานข้อมูลแบบสัมพันธ์ที่ดี ความสัมพันธ์ระหว่างผู้โดยสารกับเที่ยวรถเป็น Many-to-Many และควรจัดการผ่านตารางกลาง 'การจอง' ซึ่งแยกเป็น Passenger 1:N Booking และ Trip 1:N Booking ซึ่งจะเก็บความสัมพันธ์ของผู้โดยสารแต่ละคนกับการจองแต่ละครั้ง ตัวเลือก B และ C ไม่บันทึกความสัมพันธ์การจอง ส่วน D ทำให้ผู้โดยสารหนึ่งคนผูกได้เพียงเที่ยวเดียวและเกิดการแก้โครงสร้างเมื่อจองซ้ำ ตัวเลือก A จึงเหมาะสม

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

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