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
