[firebase-br] Chave estrangeira unica

Nilton Oliveira nillgolv em bol.com.br
Sex Abr 15 21:37:04 -03 2011


Aproveitando o momento gostaria de entender sobre a trigger, nesta situação:
tenho a tabela clientes(master) e a tabela bairro(details), quero que não 
seja deletado nenhum bairro, pois os mesmos estão referenciados na tabela 
cliente.


----- Original Message ----- 
From: "Paulo Portella" <pportellaa.firebase em gmail.com>
To: "FireBase" <lista em firebase.com.br>
Sent: Friday, April 15, 2011 5:28 PM
Subject: Re: [firebase-br] Chave estrangeira unica


O Unique Index tambem resolveria, só que não na necessidade exposta:
Ele precisa que NÃO tenha duplicidade na tabela B, mas que o registro na
tabela B possua referência na tabela A.

No caso do Unique Index, eu poderia muito bem colocar um código na
tabela B que não existe referência na tabela A

Vida de americano é assim: iPhone, iPod, iPad, iMac….
Já a de brasileiro é assim:IPTU, IPVA, ICMS, IPI etc


Em 15/04/2011 17:09, Sandro Souza escreveu:
> Bom dia/tarde Raul.
>
> O nosso amigo Paulo Portella detalhou bem um exemplo, e criou a chave
> estrangeira "fk_B" que é justamente a referência de B para A:
>
> alter table b add constraint fk_B foreign key (id_A) references A (id) on
> delete cascade on update cascade;
>
> Como a chave primária da tabela B é o campo/coluna "id_a", e por regra não
> pode haver repetições dos valores da chave primária, acabou resolvendo a
> questão perfeitamente, ou seja, só pode haver um único registro em B que
> corresponda a um registro em A.
>
> O nosso amigo Paulo Geloramo, também contribuiu com outra solução, criando
> um índice único na tabela B p/ que não hajam dois ou mais registros da
> tabela B para o registro da tabela A:
>
> CREATE UNIQUE INDEX UK_CAMPO ON TABELA_B (CAMPO);
>
> Nesse caso, uma regra de unicidade (unique) também seria idêntica a esse
> índice único, ou seja:
>
> ALTER TABLE TABELA_B ADD CONSTRAINT UK_CAMPO UNIQUE(CAMPO);
>
> daria o mesmo efeito.
>
> Só tem gente ninja nesse fórum. :D
>
> Os Paulos que o digam.
>
> Em 15 de abril de 2011 16:26, Raul Geraldin<rgeraldin em gmail.com> 
> escreveu:
>
>> Ok, mais onde está a referencia da B para A??
>>
>>
>>
>>
>> Em 15 de abril de 2011 16:18, Paulo Portella
>> <pportellaa.firebase em gmail.com>escreveu:
>>
>>> //Tabela A pode ter quantos registros quiser, sem depender da B existir.
>>> Create table A (
>>> id integer not null,
>>> descricao varchar(50));
>>>
>>> alter table a add constraint pk_A primary key (id);
>>>
>>> create table B (
>>> id_a integer not null,
>>> descricao_B varchar(50));
>>>
>>> alter table b add constraint pk_B primary key (id_a);
>>> // Tabela B pra existir o registro, a referência PRECISA existir na
>> Tabela
>>> A
>>> alter table b add constraint fk_B foreign key (id_A) references A (id) 
>>> on
>>> delete cascade on update cascade;
>>>
>>>
>>> Vida de americano é assim: iPhone, iPod, iPad, iMac….
>>> Já a de brasileiro é assim:IPTU, IPVA, ICMS, IPI etc
>>>
>>>
>>> Em 15/04/2011 16:05, Raul Geraldin escreveu:
>>>
>>>> Srs., boa tarde, estou com o seguinte problema:
>>>>
>>>> tenho duas tabela A e B, com o relacionamento 1 para 1, porém a PK da
>>>> tabela
>>>> A que está como FK na tabela B tem que ser unica.
>>>>
>>>> Posso ter resgitro na tabela A que não exista na B, porem não posso ter
>>>> registro na B sem o registro da A, e o mesmo tem que ser unico na B,
>>>> pois naõ posso ter o mesmo gistro da tabela A repetido na tabela B.
>>>>
>>>>
>>>> Como resolver isso da melhor forma ?
>>>> ______________________________________________
>>>> 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
>>>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>>>
>>> ______________________________________________
>>> 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
>>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>>
>> ______________________________________________
>> 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
>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>
> ______________________________________________
> 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
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa

______________________________________________
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
Para consultar mensagens antigas: http://firebase.com.br/pesquisa 





Mais detalhes sobre a lista de discussão lista