sql >> Database >  >> RDS >> Mysql

enum of char(1) in MySQL

Geen van beide. Normaal gesproken gebruik je tinyint met een opzoektabel

  • char(1) zal iets langzamer zijn omdat vergelijken gebruik maakt van sortering

  • verwarring:als je uitbreidt tot meer dan A en P

  • het gebruik van een letter beperkt u naarmate u meer typen toevoegt. Zie laatste punt.

  • elk systeem dat ik heb gezien heeft meer dan één klant, bijvoorbeeld rapportage. A en P moeten in elke klantcode worden omgezet in Actief en Passief

  • uitbreidbaarheid:voeg nog een type toe ("S" voor "Suspended"), je kunt één rij toevoegen aan een opzoektabel of veel code en beperkingen wijzigen. En ook uw klantcode

  • onderhoud:logica zit op 3 plaatsen:databasebeperking, databasecode en klantcode. Met een opzoek- en externe sleutel kan het op één plek zijn

  • Enum is niet draagbaar

Aan de positieve kant van het gebruik van een enkele letter of Enum

Opmerking:er is een gerelateerde DBA.SE MySQL-vraag over Enums . De aanbeveling is om daar ook een opzoektabel te gebruiken.



  1. Oracle-gegevensbronconfiguratie voor Spring

  2. Fouten negeren met psql \copy meta-command

  3. Kolomgrootte wijzigen in MySQL

  4. Cumulatief totaal berekenen in MySQL