Per implementare questo approccio, devi avere le seguenti colonne:
-
TableID (o una colonna di categorizzazione)
-
Codice
-
Descrizione
-
IsActive (per evitare l'eliminazione)
Assegnerai tableID = 1 per il livello di istruzione, tableID = 2 per il tipo di laurea, ecc.
Problemi:
0 - I valori di ricerca non saranno facilmente condivisibili tra i progetti.
1 - È necessario creare una chiave primaria sulle colonne composte di (TableID e Codice) per garantire l'univocità o avere il codice per colonna generata sequenzialmente. Ciò porterebbe a un FK composito che non è molto bello. In alternativa, puoi aggiungere una colonna artificiale come PK (sequenza automatica per ex.).
2 - Ogni SELECT avrà un ID tabella hard-coded. Questo potrebbe portare a brutti bug.
3 - Be ware per non perdere le relazioni tra le voci. Ad esempio, il livello di istruzione è correlato al tipo di laurea.
4 - Il tuo modello di dati (se ti interessa) non avrà relazioni significative con questa tabella di ricerca poiché alcune voci non saranno applicabili.
Maggiori informazioni sono disponibili in: Perché utilizzare una tabella di ricerca comune per limitare lo stato di entità errata?
In sintesi, se hai una piccola applicazione, questo può essere tollerabile, ma se stai sviluppando un'applicazione di grandi dimensioni, non è corretto avere diverse ricerche in 1 grande tabella di ricerca, almeno concettualmente.