2013/4/26 Marcelo da Silva <[email protected]>

> Então Danilo, FKs no meu modo de entender não que deva ter valores únicos,
> mas a TabelaA de referencia devem sim ter valores únicos,
>  mas na TabelaB podem ser N valores, é o velho 1(A) para N(B)
>
>
Correto.


>  TabelaA->Codigo
> 1
> 2
> 3
> 4
>
> TabelaB->Codigo (FK para TabelaA)
> 1
> 1
> 1
> 2
> 2
> 2
> 3
> 3
> 3
> ...
>
> Veja que os valores da TabelaB estão contidos na TabelaA e o FK me parece
> que exige isso.
>



Correto.


>  A duvida é se a TabelaB poderia estar ou não na TabelaA, mas quando
> estiver deve ter o valor idêntico.
> Pelo que vejo isso só é possível por Functions como você citou.
>
>
Não entendi muito bem o que quis dizer com " se a TabelaB poderia estar ou
não na TabelaA ". Mas, todo valor da TabelaB deve estar presente na TabelaA
(o contrário não é verdade).

E! Como eu e o Osvaldo informamos, essa regra só pode ser quebrada caso o
valor na TabelaA seja NULL. Obviamente, para isso acontecer você não pode
declarar o campo como "NOT NULL".

A regra seria assim:

   - Se for um relacionamento forte, ou seja, obrigatório, o campo na
   TabelaB deve ter sempre valor e ser declarado como NOT NULL.
   - Se for um relacionamento fraco, ou seja, não obrigatório, o campo na
   TabelaB pode conter valores NULL. Quando aparecer NULL indica que não houve
   o relacionamento, caso contrário, o valor apresentado deve estar presente
   na TabelaA, pois o relacionamento foi satisfeito.




>
>
> Em 26 de abril de 2013 09:34, Danilo Silva 
> <[email protected]>escreveu:
>
>>
>>
>>
>> Em 26 de abril de 2013 09:02, Marcelo da Silva <[email protected]>escreveu:
>>
>>  Sei que ao criamos uma FK o campo lincado devem ter o mesmo conteúdo nas
>>> tabelas A e B
>>>
>>> Exemplo:
>>> TabelaA->Codigo = 123
>>> TabelaB->Codigo = 123 FK->TabelaA
>>>
>>> Tenho a seguinte duvida:
>>>
>>> TabelaB->Codigo pode ser
>>> 0
>>> 123
>>> 0
>>> 456
>>> etc
>>>
>>> Queria saber se existe uma FK que diga que quando o valor de B for > 0
>>> ele esteja na tabela A, senão ele permite que seja 0 (somente)
>>>
>>> Isso existe, ou só por Triggers / Procedures ?
>>>
>>> Até onde eu conheço por FKs, o campo referenciado deve possuir  valores
>> únicos. Creio que para seu caso deverás criar uma function que faça essa
>> verificação.
>>
>> []s
>> Danilo
>>
>>
>> _______________________________________________
>> pgbr-geral mailing list
>> [email protected]
>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>
>>
>
>
> --
> Marcelo Silva
> ----------------------------------------------------------------
> Desenvolvedor Delphi / PHP
> My Postgres database
> Cel.: (11) 99693-4251
>
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>


-- 
Matheus de Oliveira
Analista de Banco de Dados
Dextra Sistemas - MPS.Br nível F!
www.dextra.com.br/postgres
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a