Я бы начал с таблицы виджетов с полем категории, имеющим числовой тип. Если вы также используете таблицу категорий, числовая категория является внешним ключом, который относится к строке в таблице категорий. Числовой тип хорош и мал для лучшей производительности.
При желании вы можете добавить таблицу категорий, содержащую числовое значение первичного ключа и текстовое описание. Это сопоставляет числовое значение с понятным для человека текстовым значением. Эта таблица может использоваться для преобразования чисел в текст, если вы просто хотите запускать отчеты непосредственно из базы данных. Приятно иметь эту таблицу в том, что вам не нужно обновлять исполняемый файл, если вы добавляете новую категорию. Я бы добавил такую таблицу в свой дизайн.
ENUM в MySQL удобен, но хранит int в таблице в виде строки, поэтому он занимает в таблице больше места, чем необходимо. Однако оно имеет преимущество в том, что предотвращает сохранение неопознанных значений. Предотвращение хранения недопустимых числовых значений возможно, но не так элегантно, как ENUM. Другая проблема с ENUM состоит в том, что она рассматривается как строка, и база данных должна выполнять больше работы, если вы выбираете по значению, поскольку вместо сравнения одного числа необходимо сравнивать несколько символов.
Если вы действительно хотите, вы можете иметь в своем коде перечисление, которое покрывает числовую категорию обратно во что-то более дружественное к коду приложения, но вы делаете этот код более трудным для поддержки, выполняя это. Однако это может иметь преимущество в производительности, поскольку при выполнении запроса нужно возвращать меньше байтов. Я бы попытался избежать этого, потому что это требует обновления кода приложения каждый раз, когда категория добавляется в базу данных. Если вам действительно нужно выжать производительность из базы данных, вы можете выбрать всю таблицу категорий, выбрать таблицу виджетов и объединить их в коде приложения, но это редкое обстоятельство, поскольку клиент БД почти всегда имеет быстрое соединение с БД сервер и еще несколько байтов по сети незначительны.