Dúvida relacionamento muitos-para-muitos

6 respostas
andre_guitar7

Pessoal, preciso de uma ajuda de vcs sobre como mapear classes muitos pra muitos, só que com atributo entre esse relacionamento.

Um exemplo: digamos que eu tenha a classe Leitor e uma classe Livro. O relacionamento seria um Leitor pode ter muitos Livros e um Livro pode ter muitos Leitores.

Digamos que eu queira colocar um atributo “data de leitura” entre esse relacionamento, seria tipo:

Leitor -> leitor_livros <- Livro

Aonde iria o atributo data de leitura?

6 Respostas

luistiagos

neste caso acredito que como a data da leitura do livro foi efetuada por um leitor então ficaria no leitor… já em questão de modelagem de banco o melhor e fazer uma nova tabela que tenha 3 campos um id(pk) e duas chaves estrangeiras uma para livros e outra para leitor… isto facilita bem mais do que usar chaves compostas…

andre_guitar7

Mas veja que um Leitor pode ler vários livros. A classe Leitor (ou Pessoa) não pode ter o atributo “data de leitura” porque não vai ser uma data de leitura somente.

ederson_js

André, veja se esse link pode ajudá-lo:

andre_guitar7

ederson.js:
André, veja se esse link pode ajudá-lo:

http://www.vaannila.com/hibernate/hibernate-example/hibernate-mapping-many-to-many-1.html

Obrigado, Ederson, mas esse exemplo é sem atributo no relacionamento.

luistiagos

Mas veja que um Leitor pode ler vários livros. A classe Leitor (ou Pessoa) não pode ter o atributo “data de leitura” porque não vai ser uma data de leitura somente.

É verdade… sendo vários livros ele não terá como ler vários na mesma hora… então vc pode criar uma terceira classe chamada Leitura onde terá a data da leitura, sendo que a mesma classe tem um relacionamento de 1 para 1 com leitor e livro… isto resolve seu problema…

andre_guitar7

Mas veja que um Leitor pode ler vários livros. A classe Leitor (ou Pessoa) não pode ter o atributo “data de leitura” porque não vai ser uma data de leitura somente.

É verdade… sendo vários livros ele não terá como ler vários na mesma hora… então vc pode criar uma terceira classe chamada Leitura onde terá a data da leitura, sendo que a mesma classe tem um relacionamento de 1 para 1 com leitor e livro… isto resolve seu problema…

Vc tem razão, como um amigo aqui do trabalho me disse, quando um relacionamento entre classes tem um atributo, uma nova classe deve ser criada.

Criado 26 de abril de 2011
Ultima resposta 26 de abr. de 2011
Respostas 6
Participantes 3