4.3. Muitos para muitos
Por exemplo, imagine uma tabela de Filmes e uma tabela de Pessoas. Uma pessoa poderia ver nenhum, um ou vários filmes, assim como um filme poderia ter sido visto por nenhuma, uma ou várias pessoas. A forma conceitual de se modelar essa relação é associando ambas entidades com o símbolo de garfo, dessa maneira:
Entretanto, não há como implementar essa relação dessa forma em um ambiente físico. É necessário criar uma terceira entidade, de nome associativa, que receberá as chaves primárias de ambas entidades. Para tal, a tabela associativa tem como chave primária as duas chaves primárias das tabelas que a define. Veja no exemplo abaixo como seria implementado no modelo físico o exemplo anterior:
Note que ao criar a entidade associativa, FilmesPessoas, as chaves primárias das entidades principais foram migradas para esta entidade como chave estrangeira. A chave primária da entidade associativa é formada pela junção de duas chaves estrangeiras (ela não precisa de ter uma chave primária extra).
Também é interessante notar que qualquer informação da relação entre as tabelas principais seriam atributos criados na tabela associativa. Por exemplo, se quiséssemos registrar a data em que uma pessoa viu determinado filme, esse atributo de data ficaria na tabela associativa. Se quiséssemos registrar uma nota do que a pessoa achou do filme, também ficaria na tabela associativa.