4.3. Muitos para muitos

A relação muitos para muitos é aquela em que há uma combinação de itens de duas entidades distintas, A e B, na qual uma tupla da entidade A pode estar relacionada a várias tuplas da entidade B e uma tupla da entidade B pode estar relacionada a várias tuplas da entidade A.

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:

Forma conceitual de se modelar a relação muitos para muitos

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:

Forma física para se implementar a relação muitos para muitos

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.

Copyright © 2014 AIEC.