What is a many-to-many relationship?
sobes.tech AI
Answer from AI
Many-to-many relationship is a type of association between two entities (tables in a relational database), where a record from one entity can be linked to multiple records from another entity, and vice versa, a record from the other entity can be linked to multiple records from the first entity.
To implement a many-to-many relationship in relational databases, an intermediate (junction) table is usually used. This table contains foreign keys for both related entities, forming a composite primary key.
An example could be the relationship between "Students" and "Courses":
- A student can attend multiple courses.
- A course can be attended by many students.
Implementation in a database:
-
Table
students:id(Primary Key)name
-
Table
courses:id(Primary Key)title
-
Intermediate table
student_course(orenrollments):student_id(Foreign Key tostudents.id)course_id(Foreign Key tocourses.id)- (
student_id,course_id) — this is a composite primary key, ensuring the uniqueness of the "student-course" pair.
In ORM (e.g., SQLAlchemy or Django ORM), the many-to-many relationship is often abstracted, and explicit creation of the intermediate table can be hidden.
// Example Django ORM model for a many-to-many relationship
from django.db import models
class Student(models.Model):
name = models.CharField(max_length=100)
courses = models.ManyToManyField('Course') // Defining a "many-to-many" relationship
class Course(models.Model):
title = models.CharField(max_length=100)
// Students will be accessible via course.student_set
The student_course table in this case will be created automatically by Django ORM.