sql >> Databasteknik >  >> RDS >> Mysql

enum eller char(1) i MySQL

Varken. Du skulle vanligtvis använda tinyint med en uppslagstabell

  • char(1) kommer att vara något långsammare eftersom jämförelse använder sortering

  • förvirring:När du utökar till mer än A och P

  • att använda en bokstav begränsar dig när du lägger till fler typer. Se sista punkten.

  • varje system jag har sett har mer än en klient, t.ex. rapportering. A och P måste lösas till Aktiv och Passiv för i varje klientkod

  • utvidgbarhet:lägg till ytterligare en typ ("S" för "Suspenderad") du kan en rad i en uppslagstabell eller ändra en massa kod och begränsningar. Och din klientkod också

  • underhåll:logik finns på tre ställen:databasbegränsning, databaskod och klientkod. Med en uppslagning och främmande nyckel kan den finnas på ett ställe

  • Enum är inte bärbar

På plussidan av att använda en enda bokstav eller Enum

Obs:det finns en relaterad DBA.SE MySQL-fråga om Enums . Rekommendationen är att använda en uppslagstabell där också.



  1. Slå samman två tabeller för en SELECT-fråga?

  2. Importera CSV-fil i Oracle Table med hjälp av lagrad procedur

  3. PHP &MySQL bästa sättet att räkna sidvisningar för dynamiska sidor

  4. ansluta Python 2.6.1 med MySQLdb