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.