Os bancos de dados relacionais estão há muito tempo no mercado e são amplamente utilizados, pois, sua estrutura de relacionamentos expressa adequadamente muitas situações do quotidiano, permitindo que situações que acontecem recorrentemente possam ser expressados por meio de tabelas e suas cardinalidades, onde cada tabela tem suas conexões, nomes e atributos. A partir da cardinalidade entre as tabelas, o programador precisa tomar determinadas atitudes. Considere que o programador precisa criar o relacionamento do tipo N:N entre duas tabelas, o que vai acontecer como resultado deste relacionamento?
- A)Um atributo deve ficar reservado para ser a chave primária, sendo restrito ao tipo numérico, pois os Ids precisam ser inteiros e evitar ponto flutuante.
Errada, porque a questão trata de cardinalidade N:N e não de tipo de chave primária nem de restrição ao tipo numérico.
- B)A tabela da direita deve conter a chave estrangeira da relação, permitindo que os dados sejam recuperados de forma prática e organizados.
Errada, pois em relacionamento N:N não basta colocar a chave estrangeira em apenas uma tabela do lado direito.
- C)Uma terceira tabela vai ser criada tendo sua chave primária composta pelas chaves estrangeiras das tabelas envolvidas.
Certa, porque um relacionamento muitos-para-muitos exige uma tabela intermediária com as chaves das tabelas envolvidas, normalmente formando chave primária composta.
- D)A tabela da esquerda deve conter a chave estrangeira da relação, permitindo que os dados sejam recuperados de forma prática e organizados.
Errada, pelo mesmo motivo da letra B: a chave estrangeira em apenas uma tabela não resolve um relacionamento N:N.
Gabarito: C
Em banco de dados relacional, a cardinalidade mostra como uma tabela se relaciona com a outra. Quando o relacionamento é 1:1 ou 1:N, em regra, a chave estrangeira fica em uma das tabelas para apontar para a outra. Mas quando o relacionamento é N:N, a coisa muda de figura: uma simples chave estrangeira em uma das tabelas não resolve, porque vários registros de um lado se conectam com vários do outro ao mesmo tempo. Por isso, o modelo relacional cria uma tabela intermediária, também chamada de tabela de junção, associação ou relacionamento. Ela guarda as chaves das duas tabelas originais e costuma formar sua chave primária de modo composto por essas chaves estrangeiras. Assim, cada combinação fica registrada de forma única, sem bagunçar o desenho do banco. É exatamente isso que a alternativa C descreve. Em termos práticos, essa tabela intermediária transforma o N:N em dois relacionamentos 1:N, que o modelo relacional consegue tratar com naturalidade. É a solução clássica ensinada em modelagem de dados e usada no dia a dia de qualquer SGBD relacional. Então, se aparecer relacionamento muitos-para-muitos, pense na famosa ponte entre tabelas. Em vez de forçar uma chave estrangeira em apenas um lado, você cria uma terceira tabela para fazer o trabalho pesado com elegância.