2013-10-30 13 views
5

Joe Celko (sql guru) dice che non dovremmo usare tipi di dati proprietari e soprattutto astenerci da cose a livello macchina come bit o byte poiché SQL-Server usa un linguaggio di alto livello. Fondamentalmente, il principio della modellazione dei dati è l'astrazione dei dati. Quindi, discernendo la raccomandazione di cui sopra per campi come "IsActive" ecc., Quale sarebbe la scelta corretta per il tipo di dati, uno che è molto portatile e uno che è decifrato chiaramente dai livelli front-end? Grazie!Rappresenta "Qualcosa" Dati in SQL Server

+2

Sì, presupponendo che gli unici due valori possibili siano "Sì" e "No". –

+0

'Boolean' mi sembra ragionevole anche se le sue implementazioni differiscono tra i dialetti SQL. –

+1

@Jarvis. . . Sembra una buona idea se il tuo database supporta 'boolean'. Non tutti lo fanno. La tua domanda sarebbe migliore se dicesse: "Voglio rappresentare le bandiere booleane in un determinato database. Qual è il modo migliore?" - quindi tagga anche la domanda con il database che stai utilizzando. –

risposta

4

In SQL Server, sceglierei il tipo di dati BIT che corrisponde ai requisiti astratti che si descrivono: può avere 2 valori (che si associano a Sì e No mediante una convenzione ampiamente utilizzata di Sì = 1 e No = 0). Può avere un valore NULL aggiuntivo se lo si desidera.

Se possibile, l'utilizzo di tipi di dati nativi offre tutti i vantaggi di prestazioni, chiarezza e comprensibilità per gli altri. Per non parlare del principio di non complicare le cose quando puoi mantenerle semplici.

3

SQL Server non ha un tipo di dati booleano in modo che Boolean sia fuori questione. BIT è un tipo numerico che accetta i valori 0 e 1 e null. Di solito preferisco un tipo CHAR con un vincolo CHECK che consente valori come "Y"/"N" o "T"/"F". CHAR consente almeno di estendere il set di valori a più di due se lo si desidera.

BIT presenta il potenziale svantaggio che è non standard, non particolarmente user-friendly e non ben compreso anche dagli utenti di SQL Server. La semantica di BIT è molto particolare in SQL Server e persino i prodotti Microsoft trattano BIT in modo incoerente.