Sì, char
è il tipo di dati corretto per questo. La regola generale è: scegliere sempre il tipo di dati più ristretto (il più restrittivo) possibile nel contesto. Ciò significa che qualsiasi dato non valido (o fuori range) non sarà accettato se viene inserito per sbaglio, quindi il tuo programma/database diventerà meno incline agli errori.
Per considerarlo da un altro angolo: quando si desidera utilizzare un valore intero nel codice, si crea un array intero di dimensione uno? Certo che no, perché anche se farebbe il lavoro, è piuttosto inutile. vale a dire Confronto:
int[] value = new int[1] { 123 };
value[0] = 456;
a:
int value = 123;
value = 456;
Il primo è semplice assurdo, come sono sicuro che si vede. Sicuramente, questo non è così ovvio nel contesto dei database (l'utilizzo è semplice se si sceglie un tipo di dati string
), ma penso che l'analogia aiuti a spiegare la logica dietro la scelta.
Inoltre, quando si tratta di manipolare i valori nel codice, si dovrebbe trovare che avere il campo nel tipo di dati più appropriato (ad esempio char
) rende leggermente più semplice l'utilizzo in modo appropriato nel codice.
In termini di prestazioni, non immagino che l'utilizzo di string
potrebbe comportare un sovraccarico significativo. Ok, quindi occupa marginalmente più memoria, ma probabilmente non è un problema. Tuttavia, ritengo che gli altri motivi che ho appena proposto spieghino il motivo per cui lo dovrebbe scegliere char
.
(Interamente tangenziale, ma come suggerimento, eviterei di archiviare il genere come booleano - è inospitabile per le persone di genere, intersessuali e transgender.) –
@Conrad, ti preghiamo di rileggere la domanda. Ho dato tre esempi separati: (1) sesso (non di genere, ma sesso in senso biologico), che può essere M o F; (2) iniziale centrale, che può essere una singola lettera; e (3) un indicatore non specificato, che può essere una Y o una N. La mia domanda non ha nulla a che fare con l'identità di genere. –
@John: Re: (1): Stai ancora escludendo le persone biologicamente intersessuali. Re: il resto: Sì, ecco perché ho detto che era tangenziale. –