Quan hệ nhiều-nhiều ngụ ý nhiều mối quan hệ giữa hai thực thể bất kỳ. Ví dụ: Một lớp có nhiều sinh viên nhưng một sinh viên cũng tham gia nhiều lớp. Đây là quan hệ nhiều-nhiều giữa thực thể SINH_VIÊN (STUDENT) và LỚP (CLASS).
Việc quản lý quan hệ nhiều-nhiều phức tạp. Chúng ta không thể liệt kê tất cả lớp một sinh viên tham gia hoặc tất cả sinh viên trong một lớp trong một bảng. Điều đó trở nên cực kỳ phức tạp và khó hiểu.
Vì vậy, chúng ta dùng bảng nối (joining table). Minh họa như sau:
Bảng Sinh viên lưu chi tiết cá nhân như Student_ID, tên, tuổi, v.v.
<Student>
| Student_ID | Student_Name | Student_Age |
|---|---|---|
| 1 | Amit | 27 |
| 2 | Tom | 23 |
| 3 | Jack | 32 |
Bảng Lớp lưu chi tiết các lớp như Class_ID, Tên, v.v.
<Class>
| Class_ID | Class_Name |
|---|---|
| 10 | Tiếng Anh |
| 20 | Tiếng Việt |
| 30 | Toán học |
Bảng <StudentClass> là liên kết giữa <Student> và <Class>. Nó lưu chi tiết sinh viên nào tham gia lớp nào.
<StudentClass>
| Student_ID | Class_ID |
|---|---|
| 1 | 10 |
| 1 | 20 |
| 2 | 10 |
| 2 | 30 |
| 3 | 10 |
Sử dụng bảng này, chúng ta thể hiện quan hệ nhiều-nhiều giữa <Student> và <Class>. Chúng ta có thể dễ dàng cập nhật bảng Student và Class mà không can thiệp vào quan hệ giữa chúng và cũng cập nhật <StudentClass> khi cần.