[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