[firebase-br] Chave Primaria e Chave Secundária Compostas

welder wellder em gmail.com
Qua Jan 18 14:50:07 -03 2012


Ok. É exatamente do maneira do seu primeiro select que eu preciso. Creio
que da maneira que fizemos vai ficar conforme eu preciso.


Muito obrigado


Pedidos   empresa    itens    descrição
  1              1              1        item 1 emp 1 ped 1
  1              1              2        item 2 emp 1 ped 1
  2              1              1        item 1 emp 1 ped 2
  1              2              1        item 1 emp 2 ped 1
  1              3              1        item 1 emp 3 ped 1

Se eu faço o select

SELECT PEDIDO, EMPRESA, ITEM, DESCRIÇAO
FROM ITENS
WHERE (CODPEDIDO = 1) AND (CODEMPRESA = 1)

O resultado seria :

Pedidos   empresa    itens    descrição
  1             1              1         item 1 emp 1 ped 1
  1             1              2         item 2 emp 1 ped 1






Em 18 de janeiro de 2012 12:37, Forrest® <fernando.bg em gmail.com> escreveu:

> Em 18/01/2012 09:34, welder escreveu:
>
>> *alter table PEDIDOS_ITENS add constraint FK_PEDIDOS_ITENS_1 foreign key
>> (PED_CODIGO, EMP_CODIGO) references PEDIDOS(CODIGO,EMP_CODIGO);*
>>
>>
>> Agora vc pode tentar fazer a chave estrangeira dessa forma não sei se o FB
>> vai permitir não testei.
>>
>> *alter table PEDIDOS_ITENS add constraint FK_PEDIDOS_ITENS_1 foreign key
>> (PED_CODIGO) references PEDIDOS(CODIGO);*
>>
>
>  Mas não seria mas necessário isso aqui porque você já fez no script
>> anterio
>>
>
> Isso mesmo no anterior eu coloquei como fazer a chave estrangeira da
> maneira correta utilizando os dois campos como chave.
> Só demonstrei o que talvez poderia tentar fazer se não tiver o campo
> EMP_CODIGO na tabela de itens entendeu agora, mas o correto é ter esse
> campo e colocar a chave completa, como disse não sei se o FB iria permitir
> uma FK com parte da chave só.
>
>
>  Mas mesmo que permita vejo um problema nisso, caso você tenha dois pedidos
>> com o mesmo número ele vai trazer os itens dos dois pedidos independente
>> da
>> empresas. Ah note que incluí o código da empresa na chave primária da
>> tabela de itens.
>>
>
>  *Mas criando a chave estrangeira incluindo o EMP_CODIGO não irá trazer
>> somente os pedidos de uma empresa?*
>>
>
> Na verdade a chave estrangeira contendo o EMP_CODIGO vai garantir a
> integridade de que aquele item pertence a tal empresa e tal pedido.
> Talvez você esteja fazendo confusão por pensar na consulta para trazer os
> resultados. Se precisar na sua consulta trazer todos os pedidos
> independentes de empresas você consegue fazer. Se não colocar o campo da
> empresa nos itens quando fazer uma consulta não tem como saber de que
> empresa pertence tal item vou tentar dar um exemplo.
> Vamos supor que tem os seguintes pedidos.
>
> Pedidos   empresa    itens    descrição
>   1         1         1      item 1 emp 1 ped 1
>   1         1         2      item 2 emp 1 ped 1
>   2         1         1      item 1 emp 1 ped 2
>   1         2         1      item 1 emp 2 ped 1
>   1         3         1      item 1 emp 3 ped 1
>
> Se eu faço o select
>
> SELECT PEDIDO, EMPRESA, ITEM, DESCRIÇAO
> FROM ITENS
> WHERE (CODPEDIDO = 1) AND (CODEMPRESA = 1)
>
> O resultado seria :
>
> Pedidos   empresa    itens    descrição
>   1         1         1      item 1 emp 1 ped 1
>   1         1         2      item 2 emp 1 ped 1
>
> caso não tenha a amarração da chave do campo empresa como você saberia a
> qual empresa pertence o item. um select ficaria assim.
>
> SELECT PEDIDO, EMPRESA, ITEM, DESCRIÇAO
> FROM ITENS
> WHERE (CODPEDIDO = 1)
>
> O resultado seria :
>
> Pedidos   empresa    itens    descrição
>   1         1         1      item 1 emp 1 ped 1
>   1         1         2      item 2 emp 1 ped 1
>   1         2         1      item 1 emp 2 ped 1
>   1         3         1      item 1 emp 3 ped 1
>
> Bom espero ter conseguido explicar o que pensei mais do que complicado,
> qualquer coisa é só chamar.
>
>
> T++++++++++++++
>
>
>
> ______________________________**________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/**artigo.php?id=1107<http://www.firebase.com.br/fb/artigo.php?id=1107>
> Para consultar mensagens antigas: http://firebase.com.br/**pesquisa<http://firebase.com.br/pesquisa>
>



-- 
Welder Vieira
Técnico em Manutenção e Conectividade
Celular: (63) 8118-6461



Mais detalhes sobre a lista de discussão lista