sql >> Databasteknik >  >> RDS >> Mysql

Enum datatyp kontra datatabell i MySQL?

I allmänhet ENUM typer är inte avsedda att användas i dessa situationer. Detta är särskilt fallet om du har för avsikt att tillgodose flexibiliteten att lägga till eller ta bort roller i framtiden. Det enda sättet att ändra värdena för en ENUM är med en ALTER TABLE , medan rollerna definieras i sin egen tabell kräver helt enkelt en ny rad i roles bord.

Dessutom använder du roles tabell låter dig lägga till ytterligare kolumner för att bättre definiera rollen, som description fält som du föreslog i alternativ 1. Detta är inte möjligt om du skulle använda en ENUM skriv som i alternativ 2.

Personligen skulle jag inte välja en ENUM i dessa scenarier. Jag kanske kan se att de används för kolumner med en absolut ändlig uppsättning värden, som {Spades, Hearts, Diamonds, Clubs} att definiera färgen på ett kort, men inte i fall som det i fråga, för de nackdelar som nämnts tidigare.



  1. Kan jag vara säker på Last Insert Id för Mysql?

  2. Hur man framgångsrikt skriver om gammal mysql-php-kod med föråldrade mysql_*-funktioner?

  3. Hur kan jag använda regex för att dela en sträng med en sträng som avgränsare?

  4. sqlite:hur lägger man till total tid hh:mm:ss där kolumndatatypen är DATETIME?