Использование перечислений подразумевает не использовать другую таблицу, как вы делаете сейчас. Это также быстрее, как вы сказали, и намного проще.
В обоих случаях вы можете добавить больше опций, но вопрос в следующем: если вы добавите еще один элемент в таблицу, вам понадобится перекомпилировать приложение, чтобы добавить такую функцию?
Я имею в виду, что если ваш дизайн приложения связан и для поддержки нового типа сообщения вам нужно перекомпилировать (возможно, потому что вам нужно включить реализацию SMS), то не стоит иметь отдельную таблицу, и вы должны использовать перечисления
С другой стороны, если вашей сущности не хватает логики (например, таблицы «Страны» или «Состояния») или ваше приложение может подключить новый тип сообщения без перекомпиляции, вам следует использовать другую таблицу. Для этого вы можете изменить свой стол на что-то вроде этого:
MessageType
-----------
ID (bigint PK)
Value (varchar)
ImplementationType (varchar) (ie: Xyz.SMSSender, Xyz)
Или у вас может быть отдельный файл конфигурации, в котором вы можете настроить введенные зависимости.