| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/03/2008 10:49:04
|
luiz_ross
GUJ Master
![[Avatar]](/images/avatar/ac627ab1ccbdb62ec96e702f07f6425b.jpg)
Membro desde: 25/09/2002 16:38:34
Mensagens: 1110
Localização: Salto, SP
Offline
|
Não existem chaves compostas em rails?
|
"Quanto mais inteligente é um homem, mais originalidade ele descobre nos homens. Pessoas ordinárias não enxergam nenhuma diferença entre eles" |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/03/2008 12:00:06
|
Mauricio Linhares
Moderador
![[Avatar]](/images/avatar/97af07a14cacba681feacf3012730892.jpg)
Membro desde: 09/01/2005 23:28:22
Mensagens: 3717
Localização: João Pessoa, Paraíba - Brasil
Offline
|
Em rails ou no active record?
Se for no ActiveRecord, não, ele não dá nenhum suporte especial a chaves compostas. Mas você pode usar esse plugin pra facilitar a sua vida -> http://compositekeys.rubyforge.org/
De qualquer forma, chaves compostas são uma péssima idéia
|
Meu blog sobre desenvolvimento | My Last.fm | @mauriciojr
Screencast de Introdução a linguagem Objective-C |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/05/2008 08:48:48
|
maniacs
JavaGuru
![[Avatar]](/images/avatar/44d47238d7d3e17aa176019eafac82af.jpg)
Membro desde: 05/07/2005 09:04:14
Mensagens: 240
Offline
|
Maurício Linhares wrote:Em rails ou no active record?
Se for no ActiveRecord, não, ele não dá nenhum suporte especial a chaves compostas. Mas você pode usar esse plugin pra facilitar a sua vida -> http://compositekeys.rubyforge.org/
De qualquer forma, chaves compostas são uma péssima idéia 
why ?
|
Yuri Nascimento
Moderador GUJS |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/05/2008 17:47:58
|
renatosilva
GUJ Master
Membro desde: 16/12/2004 17:09:19
Mensagens: 1787
Offline
|
É, why?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/06/2008 23:11:33
|
rodrigoy
GUJ Ranger
![[Avatar]](/images/avatar/cf79ae6addba60ad018347359bd144d2.jpg)
Membro desde: 18/04/2006 01:06:28
Mensagens: 758
Localização: São Paulo
Offline
|
Objetos se relacionam entre si através de associações. Na teoria existem vários tipos de associações n-árias e até classes de associação. O problema é que muitos desses conceitos não são implementáveis em código de maneira natural na maioria das linguagens.
No âmbito de negócio também era comum você usar chaves compostas para garantir integridade. Você fazia uma nota fiscal ter a chave (cod_nota + cod_filial) só para garantir essa integridade entre as tuplas. Na verdade o relacionamento é que a filial possui notas fiscais e uma nota é de uma filial e seu próprio modelo tem que garantir que as notas de uma filial não se misture com outras.
Quando você pensa num modelo de objetos, como as coisas acontecem na vida real, você não precisa de chaves compostas. As associações binárias são suficientes. Chave composta é um conceito do modelo relacional e não do modelo de objetos.
|
Rodrigo Yoshima
www.ASPERCOM.com.br
Próximas Turmas:
São Paulo: Scrum 28/agosto | OOAD-UML 13/setembro
Débito Técnico Blog: blog.aspercom.com.br
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/06/2008 05:46:45
|
pcalcado
Moderador
![[Avatar]](/images/avatar/110eec23201d80e40d0c4a48954e2ff5.jpg)
Membro desde: 08/03/2004 17:19:35
Mensagens: 5174
Localização: Sydney - Australia
Offline
|
rodrigoy wrote:
Quando você pensa num modelo de objetos, como as coisas acontecem na vida real, você não precisa de chaves compostas. As associações binárias são suficientes. Chave composta é um conceito do modelo relacional e não do modelo de objetos.
Ok mas nada impede (exceto um ORM feijão-com-arroz como ActiveRecord) que você tenha uma base relacional e um sistema Orientado a Objetos, nete caso chaves compostas fazem sentido.
No geral eu concordo com você que é melhor evitar chaves compostas mas é bom separar o que é paradigma e o que é prática.
|
Phillip Calçado "Shoes"
http://fragmental.tw/
http://blog.fragmental.com.br/
"It is unfortunate that much of what is called 'object-oriented programming today is simply old style programming with fancier constructs." - Alan Kay |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/06/2008 07:58:24
|
rodrigoy
GUJ Ranger
![[Avatar]](/images/avatar/cf79ae6addba60ad018347359bd144d2.jpg)
Membro desde: 18/04/2006 01:06:28
Mensagens: 758
Localização: São Paulo
Offline
|
Sim... o cuidado que deve ser tomado é fazer seu modelo de objetos direcionar seu modelo relacional e não o contrário [Ambler]. Se isso for sua prática dificilmente existirá chaves compostas. Usamos a chave única (world-famous campo id) sem "business meaning".
Já faz uns bons 4 anos que não modelo banco de dados e as vezes que precisei lidar com legado foi um porre. Hibernate por exemplo é muito green-field IMHO.
|
Rodrigo Yoshima
www.ASPERCOM.com.br
Próximas Turmas:
São Paulo: Scrum 28/agosto | OOAD-UML 13/setembro
Débito Técnico Blog: blog.aspercom.com.br
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/06/2008 12:46:14
|
renatosilva
GUJ Master
Membro desde: 16/12/2004 17:09:19
Mensagens: 1787
Offline
|
rodrigoy wrote:Você fazia uma nota fiscal ter a chave (cod_nota + cod_filial) só para garantir essa integridade entre as tuplas. Na verdade o relacionamento é que a filial possui notas fiscais e uma nota é de uma filial e seu próprio modelo tem que garantir que as notas de uma filial não se misture com outras.
1 - E qual seria o jeito certo de fazer?
2 - Pensando bem, qualquer chave comporta pode ser substituída por um único campo de ID, certo?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/06/2008 13:15:25
|
rodrigoy
GUJ Ranger
![[Avatar]](/images/avatar/cf79ae6addba60ad018347359bd144d2.jpg)
Membro desde: 18/04/2006 01:06:28
Mensagens: 758
Localização: São Paulo
Offline
|
Isso... A filial nada mais é que uma associação com a nota. Cada um tem seu único ID sem "business meaning". Se uma nota não pode estar associada a 2 filiais seu sistema deve resolver isso funcionalmente. Se quiser bloquear isso no banco crie um índice unique.
|
Rodrigo Yoshima
www.ASPERCOM.com.br
Próximas Turmas:
São Paulo: Scrum 28/agosto | OOAD-UML 13/setembro
Débito Técnico Blog: blog.aspercom.com.br
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/06/2008 13:54:46
|
renatosilva
GUJ Master
Membro desde: 16/12/2004 17:09:19
Mensagens: 1787
Offline
|
Acho que foi isso que eu me confundi, pois eu queria pôr uma restrição dessas num banco aqui, onde 2 campos não poderão ter o mesmo valor conjunto. Não é uma chave composta, mas sim um "unique composto". Isso pode né?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/06/2008 13:56:09
|
Mauricio Linhares
Moderador
![[Avatar]](/images/avatar/97af07a14cacba681feacf3012730892.jpg)
Membro desde: 09/01/2005 23:28:22
Mensagens: 3717
Localização: João Pessoa, Paraíba - Brasil
Offline
|
renato3110 wrote:Acho que foi isso que eu me confundi, pois eu queria pôr uma restrição dessas num banco aqui, onde 2 campos não poderão ter o mesmo valor conjunto. Não é uma chave composta, mas sim um "unique composto". Isso pode né?
Claro
|
Meu blog sobre desenvolvimento | My Last.fm | @mauriciojr
Screencast de Introdução a linguagem Objective-C |
|
|
 |
|
|