Estou tendo problemas para descobrir exatamente como colocar bons limites para quando e onde usar tabelas de pesquisa em um banco de dados. A maioria das fontes que consultei dizem que nunca é demais, mas, em algum momento, parece que o banco de dados seria dividido em tantos pedaços que, embora possa ser eficiente, não é mais gerenciável. Aqui está um exemplo combinado do que estou trabalhando:
Digamos que eu tenha uma tabela chamada Funcionários:
ID LName FName Gender Position
1 Doe John Male Manager
2 Doe Jane Female Sales
3 Smith John Male Sales
Imagine por um momento que os dados são mais complexos e contêm centenas de linhas. A coisa mais óbvia que vejo que poderia ser movida para uma tabela de pesquisa seria Posição. Eu poderia criar uma tabela chamada Positions e colocar as chaves estrangeiras da tabela Positions na tabela Employees na coluna Position.
ID Position
1 Manager
2 Sales
Mas até que ponto posso continuar a dividir as informações em tabelas de pesquisa menores antes que elas se tornem incontroláveis? Eu poderia criar uma tabela de gênero e ter 1 correspondendo a masculino e 2 correspondendo a feminino em uma tabela de pesquisa separada. Eu poderia até colocar LNames e FNames em tabelas. Todas as entradas "John" são substituídas por uma chave estrangeira de 1 que aponta para a tabela FName que diz que um ID de 1 corresponde a John. No entanto, se você for longe demais nessa toca do coelho, sua tabela Employees será reduzida a uma confusão de chaves estrangeiras:
ID LName FName Gender Position
1 1 1 1 1
2 1 2 2 2
3 2 1 1 2
Embora isso possa ou não ser mais eficiente para um servidor processar, certamente é ilegível para uma pessoa normal que pode estar tentando mantê-lo e torna mais difícil para um desenvolvedor de aplicativos tentar acessá-lo. Então, minha verdadeira pergunta é quão longe é longe demais? Existem "práticas recomendadas" para esse tipo de coisa ou um bom conjunto de diretrizes em algum lugar? Não consigo encontrar nenhuma informação on-line que realmente estabeleça um conjunto de diretrizes bom e utilizável para esse problema específico que estou tendo. O design de banco de dados é antigo para mim, mas o BOM design de banco de dados é muito novo, portanto, respostas excessivamente técnicas podem estar além da minha cabeça. Qualquer ajuda seria apreciada!