Mysql
 sql >> Database >  >> RDS >> Mysql

enum o char(1) in MySQL

Né. In genere utilizzeresti tinyint con una tabella di ricerca

  • char(1) sarà leggermente più lento perché il confronto utilizza le regole di confronto

  • confusione:poiché ti estendi a più di A e P

  • l'uso di una lettera ti limita quando aggiungi più tipi. Vedi ultimo punto.

  • ogni sistema che ho visto ha più di un client, ad esempio reporting. A e P devono essere risolti in Attivo e Passivo per ogni codice client

  • estensibilità:aggiungi un altro tipo ("S" per "Sospeso") puoi una riga in una tabella di ricerca o modificare molto codice e vincoli. E anche il tuo codice cliente

  • manutenzione:la logica è in 3 posti:vincolo database, codice database e codice client. Con una ricerca e una chiave esterna, può trovarsi in un unico posto

  • Enum non è portatile

Il lato positivo dell'utilizzo di una singola lettera o Enum

Nota:esiste una domanda relativa a DBA.SE domanda MySQL sugli Enum . Il consiglio è di utilizzare una tabella di ricerca anche lì.