...
/Solution: Create an Intersection Table
Solution: Create an Intersection Table
Let's devise a solution for Jaywalking by creating an intersection table.
Instead of storing the account_id
in the Products
table, we can store it in a separate table, so each individual value of that attribute occupies a separate row. This new table Contacts
implements a many-to-many relationship between Products
and Accounts
:
CREATE TABLE Contacts (product_id BIGINT UNSIGNED NOT NULL,account_id BIGINT UNSIGNED NOT NULL,PRIMARY KEY (product_id, account_id),FOREIGN KEY (product_id) REFERENCES Products(product_id),FOREIGN KEY (account_id) REFERENCES Accounts(account_id));INSERT INTO Contacts (product_id, account_id)VALUES (123, 12), (123, 34), (345, 23), (567, 12), (567, 34);
When the table has foreign keys referencing two tables, it’s called an
Let’s see how using an intersection table resolves all the problems we saw in the previous lesson.