Tengo problemas para descubrir exactamente cómo colocar buenos límites para cuándo y dónde usar tablas de búsqueda en una base de datos. La mayoría de las fuentes que he visto dicen que nunca puedo tener demasiadas pero, en algún momento, parece que la base de datos se dividirá en tantas partes que, si bien puede ser eficiente, ya no es manejable. Aquí hay un ejemplo de lo que estoy trabajando:
Digamos que tengo una tabla llamada Empleados:
ID LName FName Gender Position
1 Doe John Male Manager
2 Doe Jane Female Sales
3 Smith John Male Sales
Imagine por un momento que los datos son más complejos y contienen cientos de filas. Lo más obvio que veo que podría moverse a una tabla de búsqueda sería Posición. Podría crear una tabla llamada Posiciones y pegar las claves externas de la tabla Posiciones en la tabla Empleados en la columna Posición.
ID Position
1 Manager
2 Sales
Pero, ¿hasta qué punto puedo continuar dividiendo la información en tablas de búsqueda más pequeñas antes de que sea inmanejable? Podría crear una tabla de género y tener un 1 corresponde a Masculino y un 2 corresponde a Femenino en una tabla de búsqueda separada. Incluso podría poner LNames y FNames en tablas. Todas las entradas de "John" se reemplazan con una clave foránea de 1 que apunta a la tabla FName que dice que una ID de 1 corresponde a John. Sin embargo, si baja por esta madriguera de conejo, su tabla de Empleados se reduce a un desorden de claves externas:
ID LName FName Gender Position
1 1 1 1 1
2 1 2 2 2
3 2 1 1 2
Si bien esto podría o no ser más eficiente para que un servidor lo procese, esto es ciertamente ilegible para una persona normal que puede estar tratando de mantenerlo y hace que sea más difícil para un desarrollador de aplicaciones que intente acceder a él. Entonces, mi verdadera pregunta es ¿qué tan lejos está demasiado lejos? ¿Existen "mejores prácticas" para este tipo de cosas o un buen conjunto de pautas en alguna parte? No puedo encontrar ninguna información en línea que realmente establezca un buen conjunto de pautas utilizables para este problema en particular que estoy teniendo. El diseño de la base de datos es viejo para mí, pero el buen diseño de la base de datos es muy nuevo, por lo que las respuestas demasiado técnicas pueden estar sobre mi cabeza. ¡Cualquier ayuda sería apreciada!