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

welder wellder em gmail.com
Qua Jan 18 09:34:32 -03 2012


Bom dia, Obrigado pela resposta. Segue abaixo algumas dúvidas.



CREATE TABLE PEDIDOS_ITENS (
    CODIGO INTEGER NOT NULL,
    PED_CODIGO INTEGER NOT NULL,
    EMP_CODIGO INTEGER NOT NULL,

    PROD_CODIGO INTEGER NOT NULL,
    QTDE DOUBLE PRECISION,
    VALOR DOUBLE PRECISION);
alter table PEDIDOS_ITENS add constraint PK_PEDIDOS_ITENS primary key
(CODIGO,PED_CODIGO, EMP_CODIGO,PROD_CODIGO);
*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
r


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?*



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

> Em 17/01/2012 19:18, welder escreveu:
>
>> CREATE TABLE PEDIDOS_ITENS (
>>     CODIGO INTEGER NOT NULL,
>>     PED_CODIGO INTEGER NOT NULL,
>>     PROD_CODIGO INTEGER NOT NULL,
>>     QTDE DOUBLE PRECISION,
>>     VALOR DOUBLE PRECISION);
>> alter table PEDIDOS_ITENS
>> add constraint PK_PEDIDOS_ITENS
>> primary key (CODIGO,PED_CODIGO,PROD_**CODIGO);
>> *alter table PEDIDOS_ITENS*
>> *add constraint FK_PEDIDOS_ITENS_1*
>> *foreign key (PED_CODIGO)*
>> *references PEDIDOS(CODIGO,EMP_CODIGO);*
>>
>>
>> Ao rodar o ultimo script (em negrito) ocorre :
>>
>
>
> Bom dia
>
> Na tabela pedidos itens você terá que ter o campo emp_codigo também pois
> ele faz parte da chave da tabela pedidos que você está tentando fazer a
> referencia. deveria ficar assim a tabela de itens.
>
>
>
> CREATE TABLE PEDIDOS_ITENS (
>     CODIGO INTEGER NOT NULL,
>     PED_CODIGO INTEGER NOT NULL,
>     EMP_CODIGO INTEGER NOT NULL,
>
>     PROD_CODIGO INTEGER NOT NULL,
>     QTDE DOUBLE PRECISION,
>     VALOR DOUBLE PRECISION);
> alter table PEDIDOS_ITENS add constraint PK_PEDIDOS_ITENS primary key
> (CODIGO,PED_CODIGO, EMP_CODIGO,PROD_CODIGO);
> 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 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.
>
> 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