Как правило, перечисление следует использовать только при наличии четкого набора элементов, который не изменится, например, основные цвета или названия континентов. В противном случае таблицы поиска с соответствующим образом реализованными внешними ключами почти всегда являются лучшим вариантом.
Возможен вариант с таблицей подстановки, когда у вас может быть большое количество таблиц подстановки для простых отношений идентификатор / значение. Пара домен / таблица поиска может значительно сократить это количество требуемых таблиц, хотя и с некоторой дополнительной сложностью кодирования. В этом случае у вас будет доменная таблица
DomainID int identity
Domain varchar(255)
и таблица ключей / значений
DomainID int
ID int identity
Value varchar(255)
Следовательно, в таблицу Домена добавляется строка, соответствующая каждой таблице поиска, которую вы в противном случае использовали бы, и все пары (ключ-домен) / значение добавляются в таблицу значений. Помимо упрощения структуры базы данных, этот подход также обладает тем преимуществом, что в коде приложения можно динамически создавать «справочные таблицы», что в некоторых приложениях может быть чрезвычайно полезным.