Many-to-many (data model)


In systems analysis, a many-to-many relationship is a type of cardinality that refers to the relationship between two A and B in which A may contain a parent instance for which there are many children in B and vice versa.
For example, think of A as Authors, and B as Books. An Author can write several Books, and a Book can be written by several Authors.
In a relational database management system, such relationships are usually implemented by means of an associative 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.
In web application frameworks such as CakePHP and Ruby on Rails, a many-to-many relationship between entity types represented by logical model database tables is sometimes referred to as a HasAndBelongsToMany relationship.