[firebase-br] Chave estrangeira unica

Paulo Portella pportellaa.firebase em gmail.com
Sex Abr 15 23:05:27 -03 2011


Se retirarmos a parte que fala ""on delete cascade"" não te resolveria?

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


Em 15/04/2011 21:37, Nilton Oliveira escreveu:
> 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
>
> ______________________________________________
> 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