Когда у меня есть три таких варианта, я обычно использую бит / bool, допускающий значение NULL. Столбец bit / bool будет более производительным, чем столбец строки.
Итак, в вашей ситуации в моей таблице был бы столбец «Курение», где null будет означать некурящий, 0 / false - бывший курильщик, а 1 / true - курильщик.
Если вы думаете, что можете добавить параметры позже, например, например, «недавно завершил работу» или что-то в этом роде, bool с нулевым значением может быть не идеальным, поскольку вам придется изменить столбец, а затем написать сценарий для преобразования всех из них в соответствующую строку.
Если вы не хотите использовать логическое значение, допускающее значение NULL, вам нужна таблица «один ко многим», в которой перечислены все параметры: «курильщик, некурящий, бывший курильщик», а затем добавьте внешний ключ на "курительный" стол в вашем столе пациентов. Это также повысит производительность по сравнению с добавлением строк в столбец.