Skip to main content

ความสัมพันธ์แบบหนึ่ง - ต่อ - หลายในฐานข้อมูล

การสร้างตารางความสัมพันธ์แบบ M : N ใน Access (กรกฎาคม 2025)

การสร้างตารางความสัมพันธ์แบบ M : N ใน Access (กรกฎาคม 2025)
Anonim

ความสัมพันธ์แบบหนึ่ง - ต่อ - หลายในฐานข้อมูลเกิดขึ้นเมื่อแต่ละระเบียนในตาราง A อาจมีระเบียนที่เชื่อมโยงหลายรายการในตาราง B แต่แต่ละระเบียนในตาราง B อาจมีระเบียนที่สอดคล้องกันเพียงหนึ่งรายการในตาราง A ความสัมพันธ์แบบหนึ่ง - ต่อ - หลายใน ฐานข้อมูลคือการออกแบบฐานข้อมูลเชิงสัมพันธ์ที่พบมากที่สุดและเป็นหัวใจของการออกแบบที่ดี

พิจารณาความสัมพันธ์ระหว่างครูและหลักสูตรที่สอน ครูสามารถสอนหลายหลักสูตรได้ แต่หลักสูตรนี้จะไม่มีความสัมพันธ์กับครู

ดังนั้นสำหรับแต่ละระเบียนในตารางครูอาจมีระเบียนจำนวนมากในตารางหลักสูตร นี่เป็นความสัมพันธ์แบบหนึ่งต่อหลาย: ครูคนหนึ่งไปยังหลายหลักสูตร

ทำไมการสร้างความสัมพันธ์แบบหนึ่ง - ต่อ - หลายเป็นสิ่งสำคัญ

เพื่อเป็นตัวแทนของความสัมพันธ์แบบหนึ่งต่อหลายท่านต้องมีอย่างน้อยสองตาราง มาดูกันว่าทำไม

บางทีเราอาจสร้างตารางที่เราต้องการจะบันทึกชื่อและหลักสูตรการสอน เราอาจออกแบบได้ดังนี้:

ครูและหลักสูตร
Teacher_IDTEACHER_NAMEหลักสูตร
Teacher_001คาร์เมนชีววิทยา
Teacher_002เวโรนิก้าคณิตศาสตร์
Teacher_003Jorgeอังกฤษ

เกิดอะไรขึ้นถ้า Carmen สอนหลักสูตรสองหลักสูตรขึ้นไป? เรามีทางเลือกสองแบบด้วยการออกแบบนี้ เราสามารถเพิ่มลงในบันทึกที่มีอยู่ของ Carmen เช่น:

ครูและหลักสูตร
Teacher_IDครู_ชื่อหลักสูตร
Teacher_001คาร์เมนชีววิทยาคณิตศาสตร์
Teacher_002เวโรนิก้าคณิตศาสตร์
Teacher_003Jorgeอังกฤษ

อย่างไรก็ตามการออกแบบข้างต้นไม่ยืดหยุ่นและอาจทำให้เกิดปัญหาในภายหลังเมื่อพยายามแทรกแก้ไขหรือลบข้อมูล

ทำให้การค้นหาข้อมูลทำได้ยาก การออกแบบนี้ละเมิดหลักเกณฑ์แรกของการทำให้เป็นบรรทัดฐานของฐานข้อมูล First Normal Form (1NF) ซึ่งระบุว่าแต่ละเซลล์ในตารางควรมีข้อมูลชิ้นเดียวที่ไม่ต่อเนื่อง

อีกทางเลือกหนึ่งในการออกแบบคือการเพิ่มระเบียนที่สองสำหรับ Carmen:

ครูและหลักสูตร
ครู_idครู_ชื่อหลักสูตร
Teacher_001คาร์เมนชีววิทยา
Teacher_001คาร์เมนคณิตศาสตร์
Teacher_002เวโรนิก้าคณิตศาสตร์
Teacher_003Jorgeอังกฤษ

การปฏิบัตินี้เป็นไปตาม 1NF แต่ยังคงมีการออกแบบฐานข้อมูลที่ไม่ดีเนื่องจากแนะนำการสำรองข้อมูลและสามารถขยายฐานข้อมูลขนาดใหญ่ได้โดยไม่จำเป็น ข้อมูลที่สำคัญอาจไม่สอดคล้องกัน ตัวอย่างเช่นถ้าชื่อของ Carmen เปลี่ยนไป? คนที่ทำงานร่วมกับข้อมูลอาจอัปเดตชื่อของเธอในระเบียนเดียวและไม่สามารถอัปเดตในระเบียนที่สองได้ การออกแบบนี้ละเมิดรูปแบบที่ 2 (Second Normal Form) (2NF) ซึ่งยึดมั่นกับ 1NF และต้องหลีกเลี่ยงความซ้ำซ้อนของระเบียนหลาย ๆ อันด้วยการแยกข้อมูลย่อยลงในหลาย ๆ ตารางและสร้างความสัมพันธ์ระหว่างกัน

วิธีการออกแบบฐานข้อมูลด้วยความสัมพันธ์แบบหนึ่ง - ต่อ - หลาย

ในการใช้ความสัมพันธ์แบบหนึ่งต่อหลายในตารางครูและหลักสูตรเราจะแบ่งตารางออกเป็นสองส่วนและเชื่อมโยงโดยใช้คีย์ต่างประเทศ

ที่นี่เราได้ลบคอลัมน์หลักสูตรในตารางครู:

ครูผู้สอน
ครู_idครู_ชื่อ
Teacher_001คาร์เมน
Teacher_002เวโรนิก้า
Teacher_003Jorge

และนี่คือตารางหลักสูตร โปรดทราบว่าคีย์ต่างประเทศ Teacher_ID เชื่อมโยงหลักสูตรกับครูในตารางครู:

หลักสูตร
Course_IDCOURSE_NAMETeacher_ID
Course_001ชีววิทยาTeacher_001
Course_002คณิตศาสตร์Teacher_001
Course_003อังกฤษTeacher_003

เราได้พัฒนาความสัมพันธ์ระหว่างครูและตารางหลักสูตรโดยใช้คีย์ต่างประเทศ

นี่บอกเราว่าทั้งชีววิทยาและคณิตศาสตร์สอนโดย Carmen และ Jorge สอนภาษาอังกฤษ

เราสามารถดูได้ว่าการออกแบบนี้หลีกเลี่ยงความซ้ำซ้อนที่เป็นไปได้ใด ๆ ช่วยให้ครูแต่ละคนสอนหลายหลักสูตรและใช้ความสัมพันธ์แบบหนึ่งต่อหลาย

ฐานข้อมูลยังสามารถใช้ความสัมพันธ์แบบหนึ่งต่อหนึ่งและความสัมพันธ์แบบหลายต่อหลายคน