Как правило, типы ENUM
не предназначены для использования в этих ситуациях. Это особенно актуально в том случае, если вы намереваетесь обеспечить гибкость добавления или удаления ролей в будущем. Единственный способ изменить значения ENUM
- использовать ALTER TABLE
, в то время как для определения ролей в их собственной таблице просто потребуется новая строка в таблице roles
.
Кроме того, использование таблицы roles
позволяет добавлять дополнительные столбцы для более точного определения роли, например, поле description
, которое вы предложили в варианте 1. Это невозможно, если вы использовали тип ENUM
как в варианте 2.
Лично я не выбрал бы ENUM
в этих сценариях. Может быть, я вижу, что они используются для столбцов с абсолютно конечным набором значений, таких как {Spades, Hearts, Diamonds, Clubs}
, для определения масти карты, но не в таких случаях, как рассматриваемый, для недостатков, упомянутых ранее.