Em geral,
ENUM
tipos não devem ser usados nessas situações. Este é especialmente o caso se você pretende atender à flexibilidade de adicionar ou remover funções no futuro. A única maneira de alterar os valores de um ENUM
está com um ALTER TABLE
, enquanto definir os papéis em sua própria tabela exigirá simplesmente uma nova linha no roles
tabela. Além disso, usando os
roles
table permite que você adicione colunas adicionais para definir melhor a função, como a description
campo que você sugeriu na Opção 1. Isso não é possível se você usar um ENUM
digite como na Opção 2. Pessoalmente, eu não optaria por um
ENUM
nestes cenários. Talvez eu possa vê-los sendo usados para colunas com um conjunto de valores absolutamente finito, como {Spades, Hearts, Diamonds, Clubs}
para definir o naipe de uma carta, mas não em casos como o em questão, pelas desvantagens mencionadas anteriormente.