Di solito gli interi possono essere rappresentati da enumerazioni nel codice, in quanto ciò renderà più leggibile per i blocchi di codice che usano l'intero.
Esempio:
public enum StatusFlag
{
PastStorage = 0,
CurrentInventory = 1,
Scrap = 5,
Rework = 6,
Processing = 15,
Unknown = 99 //Optional
}
Ho incluso uno sconosciuto opzionale, ma potresti non averne bisogno. Inoltre, questo non è realmente necessario, puoi usare interi come in una cosa del genere:
if (statusflag == 15) //processing
Ma questo introduce alcuni numeri magici come scenari.
Sebbene non sia obbligatorio, dovrebbe esserci una tabella nel database che abbia il numero intero come PK e probabilmente un campo descrizione.
Qualsiasi tabella di riferimento dovrebbe avere FK nella tabella di ricerca dei flag di stato. In questo modo, non è possibile inserire un flag di stato che non è nella tabella.
Se questo non è presente, è possibile inserire qualsiasi numero intero, quindi l'integrità referenziale è inferiore ai dati. Lo svantaggio di questo è che ogni nuovo intero dovrà essere aggiunto al DB e al codice. Se lo si lascia come INT senza relazioni PK / FK, è possibile aggiungere interi ad hoc. Potrebbe essere necessario apportare modifiche al codice se si desidera incorporare la nuova INT con la logica più recente.
Tendo a difendere lo stile enum / PK-FK in quanto le aggiunte dovrebbero essere relativamente semplici. Ciò garantisce anche l'integrità dei dati, che è una buona cosa.