Я бы не рекомендовал использовать enum.Простое удаление значений перечисления невозможно без удаления типа.
Я полагаю, что очень простой в обращении, и лучше всего с точки зрения моделирования будет новая таблица с внешним ключом, который вы упомянули.Производительность здесь не должна быть проблемой, если вы поместите индекс в столбец внешнего ключа.
Другой вариант - использовать ограничение CHECK
:
ALTER TABLE mytable
ADD CONSTRAINT myconstraint_only_some_values
CHECK (mycolumn IN ('Easy', 'Medium', 'Difficult', 'Very difficult', 'NA'));
Возможно, этоявляется более "видимым" в ваших данных, и вам не нужно думать о присоединении.Если вы не забудете индекс для mycolumn
, эта версия должна быть такой же производительной, как и версия с внешним ключом.