Solution: Create an Intersection Table

Instead of storing the account_id in the Products table, 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 ...

Get SQL Antipatterns, Volume 1 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.