Dúvida sobre chave estrangeira na tabela

Bom, tenho a seguinte situação:

Uma tabela de OC ( ordem de compra ) onde eu tenho vários atributos, porém tenho 2 atributos em específico que são chave estrangeira mais só 1 deles pode ser preenchido, se estivermos falando de DER sabemos que este é um daqueles casos de Exclusão e Totalidade (xt) onde você só pode fazer parte de um desses e somente 1. Os atributos são:

  • FUNCIONARIOID
  • DIRETORID

ou seja, esses dois campos são chave estrangeira, FUNCIONARIOID ( para a tabela FUNCIONARIO) e DIRETORID para a tabela DIRETOR, sendo que apenas 1 pode ser preenchido, sei que isso só pode ser feito via aplicação, porém se eu por eles como chave estrangeira e deixar null da erro. O que vocês me sugerem ?

Bom,

Não sei o porque da tabela diretor, na minha visão, diretor é um funcionario, entao vc não é diretor, você esta diretor.

E não tem como vc fazer 2 campos ser uma hora chave estrangeira outra não.

Se não tiver como eliminar essa tabela diretor, crie uma tabela que fara referencia com sua OC e nessa tabela inclua os campos funcionarioId e diretor id, entao vc controla seus joins atraves dessa tabela.

vlw

desculpe dei um exemplo errado, imagine que você tem o campo FUNCIONARIOID e ALUNOID, sendo que os dois são chave estrangeira e apenas 1 é preenchido e o outro deve ficar NULL, como eu faço ?

Fica como NULL. Uma FK pode ser nullable