Вы должны использовать в своем коде перечисления - строгая типизация помогает избежать множества ошибок - и преобразовывать их в строки или числа для хранения.
Строки действительно требуют значительно больше места для хранения - «Баскетбол» составляет 10-20 байт в зависимости от кодировки, и если вы сохраняете его как 4, ему нужен только 1 байт. Тем не менее, есть очень мало случаев, когда это действительно имеет значение - если у вас миллион записей, разница в общем размере базы данных все равно будет меньше 20 МБ. Со строками легче работать и с меньшей вероятностью произойдет сбой без вывода сообщений при изменении перечисления, поэтому используйте строки.
Строки также медленнее, чем числа, для большинства операций, включая преобразование в enum при загрузке. Однако разница на несколько порядков меньше, чем время, необходимое для извлечения чего-либо из базы данных, поэтому не имеет значения.