Ho problemi a capire esattamente come posizionare i limiti per quando e dove utilizzare le tabelle di ricerca in un database. La maggior parte delle fonti che ho visto dicono che non potrò mai averne troppi ma, a un certo punto, sembra che il database sarebbe suddiviso in così tanti pezzi che, sebbene possa essere efficiente, non è più gestibile. Ecco un esempio di ciò su cui sto lavorando:
Diciamo che ho un tavolo chiamato Employees:
ID LName FName Gender Position
1 Doe John Male Manager
2 Doe Jane Female Sales
3 Smith John Male Sales
Fingi per un momento che i dati siano più complessi e contengano centinaia di righe. La cosa più ovvia che vedo che potrebbe essere spostata in una tabella di ricerca sarebbe Posizione. Potrei creare una tabella denominata Posizioni e incollare le chiavi esterne dalla tabella Posizioni nella tabella Impiegati nella colonna Posizione.
ID Position
1 Manager
2 Sales
Ma fino a che punto posso continuare a suddividere le informazioni in tabelle di ricerca più piccole prima che diventino ingestibili? Potrei creare una tabella Sesso e avere 1 corrisponde a Maschio e 2 corrispondono a Femmina in una tabella di ricerca separata. Potrei persino mettere LNames e FNames nelle tabelle. Tutte le voci "John" vengono sostituite con una chiave esterna di 1 che punta alla tabella FName che indica che un ID di 1 corrisponde a John. Se vai in questa tana del coniglio troppo in questo modo, però, la tabella dei tuoi dipendenti viene ridotta a un casino di chiavi esterne:
ID LName FName Gender Position
1 1 1 1 1
2 1 2 2 2
3 2 1 1 2
Sebbene ciò possa o meno essere più efficiente da elaborare per un server, questo è certamente illeggibile per una persona normale che potrebbe tentare di mantenerlo e rende più difficile per uno sviluppatore dell'applicazione tentare di accedervi. Quindi, la mia vera domanda è quanto è troppo lontano? Esistono "buone pratiche" per questo genere di cose o una buona serie di linee guida da qualche parte? Non riesco a trovare alcuna informazione online che risolva davvero un buon insieme di linee guida utilizzabili per questo particolare problema che sto riscontrando. La progettazione del database è per me un vecchio cappello, ma la BUONA progettazione del database è molto nuova, quindi le risposte eccessivamente tecniche potrebbero essere sopra la mia testa. Qualsiasi aiuto sarebbe apprezzato!