Relacionamento Master-Detail e Chave Primária
Bom Dia Gente, Possuo uma tabela no banco com as seguintes caracteristicas :
Venda ( Master ) --- > Items_da_Venda ( Detail )
onde venda tem os seguintes campos :
vendaid (PK ) data valor
e Items_Da_venda tem os seguintes campos :
vendaid (FK) produtoid (FK) qtd
Como vocês perceberam isto é apenas um exemplo resumido do meu BAnco real, mais serve de amostra. O que ocorre é que ao criar uma relacionamento Master-Detail no Delphi o DataSetProvider do meu Master é setado como "UpWhereKeyOnly" isto porque a tabela Venda tem um PK, porém quando ligo o Detail (items_da_venda) ele não possue um PK apenas FK's, mais pelo fato de ser um Detail ele está "indiretamente" ligado ao DataSetProvider e por isso deve ter também um PK. A Solução mais comum para este problema obviamente é criar um PK no banco tal como : items_de_vendaid e o problema foi solucionado, mais isso foge totalmente do correto, já que neste caso na teoria não deveriamos usar PK.
Venda ( Master ) --- > Items_da_Venda ( Detail )
onde venda tem os seguintes campos :
vendaid (PK ) data valor
e Items_Da_venda tem os seguintes campos :
vendaid (FK) produtoid (FK) qtd
Como vocês perceberam isto é apenas um exemplo resumido do meu BAnco real, mais serve de amostra. O que ocorre é que ao criar uma relacionamento Master-Detail no Delphi o DataSetProvider do meu Master é setado como "UpWhereKeyOnly" isto porque a tabela Venda tem um PK, porém quando ligo o Detail (items_da_venda) ele não possue um PK apenas FK's, mais pelo fato de ser um Detail ele está "indiretamente" ligado ao DataSetProvider e por isso deve ter também um PK. A Solução mais comum para este problema obviamente é criar um PK no banco tal como : items_de_vendaid e o problema foi solucionado, mais isso foge totalmente do correto, já que neste caso na teoria não deveriamos usar PK.
Ronaldo Lanhellas
Curtidas 0
Respostas
Ronaldo Lanhellas
19/08/2011
Poderiamos tambem usar um Chave Composta no banco, mais como usar Chave Composto no "UpWhereKeyOnly" do DataSetProvider ?
GOSTEI 0