| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/01/2008 18:19:24
|
root_
JavaGuru
![[Avatar]](/images/avatar/5dc86332c108bc63cafa5c4ea0d34ae1.jpg)
Membro desde: 05/09/2006 15:46:19
Mensagens: 206
Localização: Gurupi - Tocantins
Offline
|
Galera.. para os que manjam bem de DB...
Estou usando o bando de dados Firebird e Hibernate para controle entre DB e Aplicaçao..
Na propria documentaçao do Hibernate não recomenda o uso de chaves compostas, mais isso n signica que n funcione...
Como seria melhor uso para mapeamento e criaçao de tabelas que precisam de dados de outras tabelas:
- Criando chave composta (Na TABELA INGERDIENTE) , por exemplo:
OU Apenas criando uma foreign key, como mostrado abaixo...
Qual das formas seria melhor para trabalhar, levando em conta mapeamentos com Hibernate.
Abraços..
This message was edited 2 times. Last update was at 10/01/2008 18:36:09
|
Rogério Milhomens de Queiroz
Agile - Consultoria em Tecnologia da Informação!
http://www.agilecti.com.br
Dataview - Inteligência em Tecnologia!
http://www.dataview.com.br |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/01/2008 11:02:16
|
Yky Mattshawn
Virtual Machine Man
Membro desde: 18/12/2006 03:34:14
Mensagens: 651
Localização: São Sebastião do Caí / RS
Offline
|
Cara, já que o Hibernate te recomenda não usar e, ao meu ver, Foreign Key é a melhor solução, use Foreign Key's!
Até por que não entendi muito porque você compara as duas. Afinal, usar uma chave composta vai garantir apenas que existirá um ingrediente para uma medida, sempre. Usando Foreign Key você estará garantindo que a unidade escolhida existe no cadastro de unidades, coisa que a primeira opção não faria.
Não sei se entendi bem o que você expôs.
|
Yky Mattshawn [ Compusoft - Desenvolvimento de Sistemas Empresariais ]
"Tudo que é ortodoxo ou heterodoxo demais gera heresia."
Bixo 2010 - Ciência da Computação - Feevale/RS e Unisinos/RS |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/01/2008 11:17:51
|
fabioissamu
JavaChild
Membro desde: 21/02/2007 16:48:46
Mensagens: 145
Localização: Rio de Janeiro
Offline
|
Acredito que faria diferença de as FK fossem PK.
Ou seja um Igrediente fosse identificado somente pelas FK.
|
se tanto faz, então escolha o melhor.
http://www.goals.com.br |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/01/2008 14:31:05
|
root_
JavaGuru
![[Avatar]](/images/avatar/5dc86332c108bc63cafa5c4ea0d34ae1.jpg)
Membro desde: 05/09/2006 15:46:19
Mensagens: 206
Localização: Gurupi - Tocantins
Offline
|
poise... se eu trabalhar com a FK sendo tambem PK, eu taria trabalhando com chave composta... o que n eh recomendando no Hibernate!
Eita sinuca danada essa! Com qual das formas eh melhor de trabalhar?????
xD
|
Rogério Milhomens de Queiroz
Agile - Consultoria em Tecnologia da Informação!
http://www.agilecti.com.br
Dataview - Inteligência em Tecnologia!
http://www.dataview.com.br |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/01/2008 14:41:10
|
MiltonBastos
JavaChild
Membro desde: 28/09/2007 11:02:12
Mensagens: 117
Localização: Curitiba/PR
Offline
|
root_, seguinte...
Primeiro vc tem que pensar na sua regra de negócio.
O que é uma chave composta?
Se vc tem dois campos como chave primária
(ID_INGREDIENTE, ID_UNIDADE), significa
que vc não poderá repetir registros com
os DOIS campos idênticos, ou seja, vc pode repetir
só o ID_INGREDIENTE em alguns registros sem
problema nenhum, OU pode também repetir o
ID_UNIDADE em alguns registros, sem problema,
DESDE que não repita OS DOIS valores em dois
registros diferentes.
Se vc deixar somente o ID_INGREDIENTE como chave
primária, então, vc não poderá repetir o valor desse
campo NUNCA, ele será único.
Portanto, vai da sua regra de negócio!
Se vc trocar o valor de ID_UNIDADE, vc
pode repetir o ID_INGREDIENTE? Se a resposta
for SIM, então o ID_INGREDIENTE não pode
ser uma chave primária sozinho...
Eu particularmente NUNCA crio chaves compostas,
eu não gosto desse modelo.
Se a minha tabela não tem um campo que seja
único (no seu caso, o ID_INGREDIENTE, é único
ou não??), então eu crio um campo a mais e uso
como código da tabela. E imagino que seja isso
que o Hibernate sugere!!
|
http://certificacaobd.com.br - Tudo sobre Certificação em Banco de Dados! |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/01/2008 14:59:33
|
root_
JavaGuru
![[Avatar]](/images/avatar/5dc86332c108bc63cafa5c4ea0d34ae1.jpg)
Membro desde: 05/09/2006 15:46:19
Mensagens: 206
Localização: Gurupi - Tocantins
Offline
|
Hum.. otimo esclarecimento MiltonBastos.
entao deixarei apenas como PK o ID_INGREDIENTE e ID_UNIDADE como apenas FK.
xD
vlw aew
|
Rogério Milhomens de Queiroz
Agile - Consultoria em Tecnologia da Informação!
http://www.agilecti.com.br
Dataview - Inteligência em Tecnologia!
http://www.dataview.com.br |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/01/2008 15:24:14
|
root_
JavaGuru
![[Avatar]](/images/avatar/5dc86332c108bc63cafa5c4ea0d34ae1.jpg)
Membro desde: 05/09/2006 15:46:19
Mensagens: 206
Localização: Gurupi - Tocantins
Offline
|
MAIS UMA DUVIDA:
pode-se trabalhar com o hibernate sem usar PK,
tipo, tenho uma tabela chamada ENTRADA_INGREDIENTE que eh criada dessa forma:
O problema é que n da pra fazer desses 2 IDs como chave composta pq eles pode repetir varias vezes!
Pode-se trabalhar no hibernate dessa forma? sem o uso de uma chave primaria?
This message was edited 1 time. Last update was at 11/01/2008 15:31:15
|
Rogério Milhomens de Queiroz
Agile - Consultoria em Tecnologia da Informação!
http://www.agilecti.com.br
Dataview - Inteligência em Tecnologia!
http://www.dataview.com.br |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/01/2008 15:49:48
|
MiltonBastos
JavaChild
Membro desde: 28/09/2007 11:02:12
Mensagens: 117
Localização: Curitiba/PR
Offline
|
Ah, sobre o Hibernate, infelizmente não vou poder te ajudar!
Não conheço absolutamente NADA sobre hibernate... rs...
|
http://certificacaobd.com.br - Tudo sobre Certificação em Banco de Dados! |
|
|
 |
|
|