Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Classe da tabela auxiliar

Gostaria de saber se existe uma boa prática para criação de classes para tabelas auxiliares (relacionamento n:n).

Supondo que no meu banco de dados existam 2 tabelas, clientes e pedidos, conforme a baixo:

clientes (cliente_id, nome, telefone)
pedidos (pedido_id, data)

Para criar o relacionamento entre ambas, suponha (sem considerar se é melhor ou não, apenas para ilustrar) que seja necessária uma terceira tabela:

pedidos_clientes (id, cliente_id, pedido_id)

Agora, no meu código hipotético eu criei uma classe para o cliente e outra para os pedidos, cada uma com seu respectivo atributo. Mas com a terceira tabela eu não sei como proceder.

Eu deveria adicionar uma classe para ela? Como faço para, quando adicionar um cliente e um pedido, adicionar os seus id's na tabela pedidos_clientes de forma semântica?

Obrigado.

3 respostas

Oi Yharon, tudo bom?

A verdade é que em orientação a objetos esse relacionamento existe já e está representado pela composição entre as referências.

No paradigma relacional (do banco de dados) esse tipo de relacionamento(many to many) só é possivel ser representado através de tabelas auxiliares mesmo.

Não faria muito sentido trazer essa tabela auxiliar para o paradigma orientado a objetos justamente por já serem equivalentes =)

Opa André, obrigado pela resposta.

Não entendi quando você falou "...já está representado pela composição entre as referências", poderia explicar melhor? Porque uma tabela não faz referência a outra. Como que eu faria essa referência?

solução!

Opa, a ideia é que esse referencia é representada no banco de dados pela tabela auxiliar e na memoria pelas instancias das suas classes.

Quando você tem, por exemplo, uma classe Pessoa com um atributo que guarda um id ou uma instancia de outra classe Endereco, estamos fazendo composição, uma forma de criar referencias entre objetos que é a mesma coisa, no banco de dados, que uma tabela auxiliar. Então não há necessidade de representar essa tabela auxiliar em memoria (com objetos) porque isso ja rola com composição.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software