Many-to-Many Relationships — Complete Guide
Many-to-Many Relationships — Complete Guide: free step-by-step lesson with examples, common mistakes, and interview tips — part of MySQL Tutorial on Toolliyo Academy.
On this page
MySQL Tutorial · Lesson 26 of 100
Many-to-Many Relationships
Basics → Advanced
Basics · 1 — SQL · ~6 min · MySQL — Joins & Relationships
What is this?
Many-to-many links two entities where each side can relate to many on the other. You build it with a junction table carrying two foreign keys.
Why should you care?
A Flipkart order can have many coupons; one coupon applies to many orders over time — cannot store both IDs in a single column cleanly.
See it live — copy this example
Run in MySQL Workbench or the mysql CLI.
CREATE TABLE order_coupons (
order_id INT UNSIGNED NOT NULL,
coupon_id INT UNSIGNED NOT NULL,
PRIMARY KEY (order_id, coupon_id),
FOREIGN KEY (order_id) REFERENCES orders(order_id),
FOREIGN KEY (coupon_id) REFERENCES coupons(coupon_id)
);
What happened?
- Composite primary key stops duplicate pairings.
- Each row is one link.
- Queries JOIN orders → order_coupons → coupons to list codes used.
Practice next
- Create coupons table and order_coupons bridge.
- Insert two orders sharing one coupon.
- SELECT order_ref, coupon_code via double JOIN.
- Add applied_at TIMESTAMP to bridge for audit.
- COUNT coupons per order with GROUP BY.
Remember
Bridge table holds pairs of FKs. Composite PK enforces uniqueness. Query through two JOINs.
DataFlow festival coupons
Single DIWALI50 code tracked across thousands of orders via junction table.
Outcome: Finance reconciles discount spend accurately.
Interview prep for this lesson
Practice these questions aloud after reading—each links to a full structured answer.
Sign in to ask a question or upvote helpful answers.
No questions yet — be the first to ask!