Integridade referencial em campo não obrigatório
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?
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
Curtidas 0
Respostas
Edilcimar
21/03/2006
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
GOSTEI 0
Aerreira
21/03/2006
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?
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?
GOSTEI 0
Gandalf.nho
21/03/2006
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.
GOSTEI 0
Aerreira
21/03/2006
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...
GOSTEI 0
Emerson Nascimento
21/03/2006
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.
GOSTEI 0
Aerreira
21/03/2006
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.
Valeu.
GOSTEI 0