Obs: sou desenvolvedor...
Eu tenho uma tabela de ativos que possui muitos códigos que são chaves estrangeiras em uma segunda tabela OutlineFiles. A tabela OutlineFiles tem Tipo e Código como chave primária. A restrição de chave estrangeira precisa ficar assim...
ALTER TABLE "dbo"."Assets"
ADD CONSTRAINT "Locations" FOREIGN KEY ( "LN", "LocationCode" ASC )
REFERENCES "dbo"."OutlineFiles" ( "Type", "Code" );
ALTER TABLE "dbo"."Assets"
ADD CONSTRAINT "CostCentre" FOREIGN KEY ( "CC", "CostCentreCode" ASC )
REFERENCES "dbo"."OutlineFiles" ( "Type", "Code" );
Portanto, haverá um relacionamento com a tabela de contornos por meio de um valor fixo de "LN" e "CC". Ou será mais fácil mudar o banco de dados para ter duas tabelas e remover a coluna Type da tabela OutlineFiles? Estou tentando isso no Sybase, mas oferecemos suporte a muitos bancos de dados.
Parece que você tem um antipadrão "One True Lookup Table " (OTLT) e está misturando entidades nesta tabela. Você descobriu por que não é uma boa ideia:
Seu código de exemplo acima é confuso (você tem vários pais para a mesma coluna de código), então darei a você o que entendi
Se você tiver 30 códigos para pesquisar, terá 30 tabelas de pesquisa: isso está correto.
Se você insistir no OTLT, terá que adicionar colunas extras para armazenar o tipo em Ativos e FK para o seu OTLT. Eu não faria isso.
Ou use gatilhos para manter os códigos corretos. Eu também não faria isso.