How to Create a Many-to-Many Relationship

May 6th, 2020

Establishing a many-to-many relationship between the tables in a database is usually done for ensuring efficient data processing and data integrity, as well as for database normalization and data analysis tasks.

Since relational databases don’t allow implementing a direct many-to-many relationship between two tables, handling that kind of relationship can be an intimidating task. In this article, we’ll consider how to quickly and easily establish a many-to-many relationship between the tables in MySQL database.

dbForge Studio for MySQL

What is a many-to-many relationship

Let us first understand what many-to-many relationships are all about. A many-to-many relationship happens in the situation when the records in one table are associated with the records in another one.  A many-to-many relationship example in a database can be a table containing a list of books and a table with a list of authors. Each book may have one or more than one author, and each author may have written one or more than one book. In this case, a row in one table has many related rows in a second table. And at the same time, the rows in the second table have related rows in the first table.

Example of many to many relationship

Fig. 1 Many-to-many relationship example

A many-to-many relationship between tables is accommodated in databases by means of junction tables. A junction table contains the primary key columns of the two tables you want to relate.

Junction table

When you need to establish a many-to-many relationship between two or more tables, the simplest way is to use a Junction Table. A Junction table in a database, also referred to as a Bridge table or Associative Table,  bridges the tables together by referencing the primary keys of each data table.

Junction Table example

Fig. 2 A Junction Table example

How to create a many-to-many relationship in dbForge Studio for MySQL

With dbForge Studio for MySQL, you can create a many-to-many relationship between tables in a database quickly and easily. Below is a comprehensive algorithm that will help you cope with this task.

1. To start establishing a many-to-many relationship in MySQL, first, create a new or open an existing database diagram.

New diagram in Studio for MySQL to create many-to-many relationship

Fig. 3 Creating a database diagram

2. Add the tables you want to create a many-to-many relationship between.

Add MySQL tables to create relationship between

Fig. 4 Adding the tables to create a many-to-many relationship between

3. Create a third table: right-click the database diagram body and select New Table from the context menu that appears. This table will serve as a junction table.

Add new table to create many-to-many relationship SQL

Fig. 5 Creating a junction table to establish a many-to-many relationship

4. In the Table Editor dialog box, enter a name for the table. For example, the junction table between the Authors table and the Books table can be named Books_Authors.

Columns of a junction table SQL

Fig. 6 Entering a name for the junction table

5. Copy the primary key columns from each of the other two tables to the junction table. You can add other columns to this table, just as to any other table.

Create foreign keys for many-to-many junction table

Fig. 7 Building the junction table

6. In the junction table, set the primary key to include all the primary key columns from the other two tables.

Create many to many relationship SQL

Fig. 8 Creating new relations

7. Define a one-to-many relationship between each of the two primary tables and the junction table.

Create many to many relationship for a junction table SQL

Fig. 9 Creating a many-to-many relationship between the tables

Note: The creation of a junction table in a database diagram does not insert data from the related tables into the junction table. You can copy rows from one table to another or within a table using an Insert From query.

INSERT INTO tbl_temp2 (fld_id)
     SELECT tbl_temp1.fld_order_id
     FROM tbl_temp1 WHERE tbl_temp1.fld_order_id > 100;


There are three different types of data relationships in a database: one-to-one, one-to-many, and many-to-many.  And if you can handle the first two quite simply, coping with a many-to-many relationship can be a daunting task.  In this article, we provided a step-by-step tutorial showing how to easily establish a many-to-many relationship model with the help of our superior tool, dbForge Studio for MySQL.

Download a free 30-day trial of dbForge Studio for MySQL right now and try the database diagram functionality along with many other mighty features of the best MySQL GUI tool you can find! Also, you can watch this video tutorial:

Comments are closed.