Fórum Integridade referencial em campo não obrigatório #316956

21/03/2006

0

Pessoal,

Estou aqui com uma dúvida: o que manda a regra com relação a ´integridade referencial´ quando o campo a ser referenciado não é de preenchimento obrigatório ?

Explicando melhor: um determinado campo de uma tabela precisa ter integridade com relação a uma outra tabela de itens, porém se o campo não for preenchido o registro continua sendo válido, ou seja, não precisa da referência. Seria uma referência condicional ao preenchimento.

O que manda a regra neste caso?


Aerreira

Aerreira

Responder

Posts

22/03/2006

Edilcimar

Eu diria para quando o campo estiver em branco, vc criar um código ´não usual´ para referenciá-lo com a outra tabela, use como código um caracter que não existe no teclado, por ex: ┴, &9571;, &9618;, algo mais ou menos assim, aí vc faz a referência com a outra tabela e também sabe que o campo estava em branco


Responder

Gostei + 0

22/03/2006

Aerreira

Pois é, Elcimar, solução meio maluca essa, não acha!

Desse modo eu teria que ter um registro na tabela referenciada cuja chave fosse ´┴´, por exemplo, e na manipulação dessa tabela ignorar tal registro. Não gostei muito disso não... Vou pensar a respeito...

Alguem saberia qual é a regra oficial nesses casos em termos de bancos de dados relacionais? Não ter a referência explicita, ou ter a referência e criar ´quebra-galhos´ para resolver quando o campo precisar ficar em branco?


Responder

Gostei + 0

22/03/2006

Gandalf.nho

Basta criar o relacionamento normalmente entre as tabelas e não setar o campo como NOT NULL. Assim ele aceitará tanto um valor em branco (nulo) quanto um obrigatório pela integridade. Eu já fiz isso inúmeras vezes em bancos diferentes e nunca tive problemas.


Responder

Gostei + 0

22/03/2006

Aerreira

Será que é tão simples assim? Nos testes que andei fazendo inserindo registros pelo IBExpert, realmente em alguns casos ele passa, e em outros não... Talvez seja isso mesmo... Vou conferir melhor...


Responder

Gostei + 0

23/03/2006

Emerson Nascimento

Basta criar o relacionamento normalmente entre as tabelas e não setar o campo como NOT NULL. Assim ele aceitará tanto um valor em branco (nulo) quanto um obrigatório pela integridade. Eu já fiz isso inúmeras vezes em bancos diferentes e nunca tive problemas.


realmente é assim que funciona: quando você tem um campo referenciado a outra tabela, desde que esse campo permita nulos, não é nmecessário seu preenchimento, mas se ele for preenchido, o valor deverá existir na tabela estrangeira.

eu só gostaria de salientar que branco não é nulo. se for deixado nulo o campo é válido. se for colocado qualquer valor, mesmo branco, esse valor deve existir na tabela estrangeira.


Responder

Gostei + 0

23/03/2006

Aerreira

Perfeito emerson.en, se o campo for nulo funciona, se for em branco realmente não funciona. Isso resolve meus problemas aqui, pois são muitos relacionamentos e alguns deles desse modo.

Valeu.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar