Chave Primaria Composta - java + jsf

94 views
Skip to first unread message

luan lucas

unread,
Jun 11, 2016, 7:16:06 PM6/11/16
to javasf: JavaServer Faces Group
Olá pessoal,
Gostaria de perguntar a vocês se a implementação e mapeamento de tabelas em banco de dados que possuem várias chaves primarias compostas dificulta muito a vida do programador ????

Pergunto isso porque nosso professor de BD usa somente chave primaria composta (quando necessário), e o orientador TCC diz que isso aumenta muito a complexidade do código e recomenda que cada tabela tenha sua própria chave. Mas a modelagem do banco as vezes não faz muito sentido, por exemplo  em um relacionamento N:N onde segundo meu professor de banco de dados  diz que deve ser criada uma terceira tabela onde sua chave primaria será composta pela chave estrangeira das duas outras tabelas (e para mim isso faz muito sentido), já o orientador diz que isso é desnecessário, há outras formas de se evitar  duplicidade de registros e falta de integridade do código e ainda diz que nem o maior SAP que é o maior ERP do mundo fica usando isso. A questão é que vou ser avaliado pelos dois no TCC, e agora ?

Rafael Ramon

unread,
Jun 11, 2016, 7:36:36 PM6/11/16
to jav...@googlegroups.com

Amigo, TCC eh pesquisa, independentemente da sua decisão teoricamente vc tera que se embasar em alguma bibliografia para apontar essa ou aquela decisao de projeto. Nao deveria colocar achismo e sim

--
Você recebeu essa mensagem porque está inscrito no grupo "javasf: JavaServer Faces Group" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para javasf+un...@googlegroups.com.
Acesse esse grupo em https://groups.google.com/group/javasf.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/javasf/55715dee-3401-4519-8aed-26c99cb25d88%40googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Lucas Paz

unread,
Jun 12, 2016, 12:20:11 PM6/12/16
to jav...@googlegroups.com

Não costumo responder muito, e vou talvez criar uma indisposição com alguns. Mais a realidade é que não existe chave primária composta.

Quando criamos uma chave primária composta o banco sempre gera um rowid que seria a chave primária da tabela e o resto é chave única + estrangeira. Isso acontece com a maioria dos bancos de dados comerciais e open source: Oracle, PostgreSQL, DB2, MySQL e etc... só pra citar os que eu trabalho todo dia.

O Java trabalha com modelos orientados a objetos e não relacionamentos. Não que não seja possível trabalhar com relacionamentos compostos mais na maioria das vezes isso traz complicações desnecessárias.

Na minha opinião seu orientador está certo. Embora o professor de bd não esteja totalmente errado, se vc for trabalhar com jpa ou algo assim, prefira o modelo: chave primária do tipo serial ou com o dado que realmente seja primário e único; os relacionamentos com chave estrangeira e chave única no lugar das chaves compostas.

Assim não fere a integridade e tbem não tem um overhead desnecessário no código em Java.

Agora se for pra procedural... faz de qualquer uma das 2 maneiras.

E se for pra trabalho de faculdade às vezes é melhor atender o que vai dar a maior parte da nota.

Que venham os normalizadores rebaterem hehehe.

Até mais e boa sorte.

Rafael Ponte

unread,
Jun 12, 2016, 6:13:08 PM6/12/16
to jav...@googlegroups.com
Oi Luan,

Não existe o certo ou errado na nossa área sem contexto. Podemos modelar as entidades (tabelas) como seu professor e orientador comentaram, contudo, é recomendado evitar chave composta quando trabalhamos com algum framework ORM, como JPA e Hibernate. Talvez seu orientador tenha mais experiência no mercado e por isso recomendou você seguir esse caminho.

Agora isso não significa que você usará chave primária para TODAS as tabelas. Geralmente definimos apenas nas entidades e não nas tabelas de relacionamento. Quando uma tabela de relacionamento necessita de chave primária ou alguma outra coluna extra as chances são de que ela representa uma entidade no seu negócio.

Enfim, se vai trabalhar com Java usando JPA/Hibernate é recomendado evitar chaves compostas nas suas entidades. A própria documentação do Hibernate recomenda isso!

Um abraço,

Para mais opções, acesse https://groups.google.com/d/optout.
--
Rafael Ponte
TriadWorks | Formação Java
http://cursos.triadworks.com.br
Reply all
Reply to author
Forward
0 new messages