Ci sono diversi problemi che devono essere risolti.
Categorie
L'uso usuale delle categorie è identificare classi o gruppi di record. Se crei report, se i valori sono mantenuti in una tabella di categorie, è facile per i generatori di report o per i data warehouse esterni classificare correttamente gli articoli.
Control Flavors
Molto spesso, i valori controllano il funzionamento del programma, cambiando l'interpretazione dei dati o influenzando altre decisioni. Per questi, tendo a favorire le enumerazioni. Poiché questi valori influiscono direttamente sul funzionamento del programma, la modifica o l'aggiunta di valori è associata al codice nuovo o modificato, quindi la ricostruzione e la distribuzione del software sono quasi sempre necessarie.
Descrizioni e valori aumentati
I valori delle categorie sono raramente interessanti per gli umani; non metterei mai "1", "2", "3" in un elenco a discesa per indicare "Avanti", "Indietro" o "Fermato". Avere un campo descrittivo per mostrare i valori selezionabili dall'utente corrispondenti al valore in programma è abbastanza importante. Allo stesso modo, avere una forma abbreviata (per i drop down) e una forma lunga (per i generatori di report) è anche molto utile.
C #, a mio avviso, non consente di aumentare il valore di enum
. Le versioni recenti di Java fanno, che ho trovato abbastanza utile. Per un'implementazione C #, è meglio usare una tabella di categorie per qualsiasi valore di questo tipo che abbia una rappresentazione esterna.
Categorie strutturate
Le categorie sono raramente non qualificate. Una categoria di PERIODICO potrebbe avere sottocategorie di ARBITRO e NON RISCOSSO. Se il tuo software deve essere in grado di raccogliere dati sui periodici, allora hai bisogno di un modo per ottenere le sottocategorie. Utilizzare una tabella per mantenere l'elenco delle categorie, con le relazioni genitore-figlio, è probabilmente il modo migliore per farlo.
Combina e abbina
Spesso, ho combinato entrambi gli approcci per una categoria. Usando un tipo enumerato, posso fare dichiarazioni di switch
e controllare il flusso. Mappare il valore sottostante del tipo enumerato su una chiave primaria del database richiede un po 'di attenzione. Questo metodo è molto utile quando è necessario modificare regolarmente il testo di sapore di una categoria, poiché ciò non influirà sul funzionamento del programma.
Quindi, il contenuto della tabella delle categorie viene caricato all'avvio dell'applicazione. Il valore del tipo enumerato può essere utilizzato per indicizzare questa tabella nei rari casi in cui è necessario fare riferimento a un aspetto della categoria, ad esempio il nome breve.