Mysql
 sql >> Datenbank >  >> RDS >> Mysql

enum oder char(1) in MySQL

Weder. Sie würden normalerweise tinyint mit einer Nachschlagetabelle verwenden

  • char(1) wird etwas langsamer sein, da der Vergleich eine Sortierung verwendet

  • Verwirrung:Wenn Sie sich auf mehr als A und P erstrecken

  • Die Verwendung eines Buchstabens schränkt Sie ein, wenn Sie weitere Typen hinzufügen. Siehe letzter Punkt.

  • Jedes System, das ich gesehen habe, hat mehr als einen Client, zB Reporting. A und P müssen in jedem Client-Code in Aktiv und Passiv aufgelöst werden

  • Erweiterbarkeit:Fügen Sie einen weiteren Typ hinzu ("S" für "Suspended") können Sie eine Zeile zu einer Nachschlagetabelle hinzufügen oder eine Menge Code und Einschränkungen ändern. Und Ihren Kundencode auch

  • Wartung:Die Logik befindet sich an 3 Stellen:Datenbankeinschränkung, Datenbankcode und Clientcode. Mit einer Suche und einem Fremdschlüssel kann es sich an einem Ort befinden

  • Enum ist nicht portierbar

Auf der positiven Seite der Verwendung eines einzelnen Buchstabens oder Enum

Hinweis:Es gibt eine verwandte DBA.SE MySQL-Frage zu Enums . Die Empfehlung ist, auch dort eine Nachschlagetabelle zu verwenden.