In database design, a many-to-many relationship
is a type of cardinality that refers to the relationship between two entities A and B in which A may contain a parent record
for which there are many children in B and vice versa. For instance, think of A as Authors, and B as Books.
An Author can write several Books, and a Book can be written by several Authors. Because most database management systems only support one-to-many relationships, it is necessary to implement such relationships physically via a third junction table (also called cross-reference table), say,
AB with two one-to-many relationships A -> AB and
B -> AB.
In this case the logical primary key
for AB is formed from the two foreign keys (i.e. copies of the primary keys of A and B).