Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

Many-to-Many Relationship ใน DBMS

Many-to-Many (N:N) Relationship คือความสัมพันธ์ที่หลายอินสแตนซ์ของเอนทิตี้หนึ่ง สัมพันธ์กับหลายอินสแตนซ์ของอีกเอนทิตี้หนึ่ง (ทั้งคู่มี "หลาย")

การแทนความสัมพันธ์

ใน ER Diagram ใช้เพชรคู่หรือเส้นเชื่อมพร้อมเครื่องหมาย N:M

ตัวอย่าง: Author และ Book

  • นักเขียน (Author) คนหนึ่ง เขียนหนังสือ (Book) ได้หลายเล่ม
  • หนังสือ (Book) เล่มหนึ่ง อาจมีนักเขียน (Author) หลายคน (ร่วมเขียน)

สถานการณ์:

  • หนังสือเล่มหนึ่งมี 2 นักเขียน
  • นักเขียนคนหนึ่งเขียนหนังสือไปแล้ว 6 เล่ม

การนำไปสู่ตาราง (Implementation)

ใน Relational Database ต้องสร้าง Junction Table (Associative Table) เช่น Book_Author ที่มี Foreign Key ชี้ไปทั้ง 2 ตาราง

Book_Author
+---------+----------+
| BookID  | AuthorID |
+---------+----------+
| 1       | 1        |
| 1       | 2        |  -- หนังสือเล่มที่ 1 มี 2 นักเขียน
| 2       | 1        |
| 3       | 1        |
| ...     | ...      |  -- นักเขียนคนที่ 1 เขียน 6 เล่ม
+---------+----------+

สรุป: Many-to-Many ไม่สามารถทำได้โดยตรงใน 2 ตาราง ต้องใช้ตารางกลาง (Junction Table) แยกเป็น 2 ความสัมพันธ์ One-to-Many