In
systems analysis, a
many-to-many relationship is a type of
cardinality that refers to the relationship between two
entities (see also
entity–relationship model) 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).