К вашему сведению: я имею в виду SQL Server 2000-8 и C #.Таким образом, СУБД с поддержкой enum, например MySql, не является темой моего вопроса.
Я знаю, что этот вопрос задавался несколько раз в SO.Но, тем не менее, я вижу в ответах, что для хранения значений enum используются разные подходы.
Сохранить перечисление как int в db и извлечь значение перечисления (или атрибут описания перечисления, используя отражение) в коде :
thisэто подход, который я обычно использую.Проблема в том, что когда я пытаюсь выполнить запрос из базы данных в SSMS, извлеченные данные трудно понять.
Сохранить перечисление как строку (varchar) в БД и преобразоватьобратно к int в коде.
На самом деле, это может быть лучшим решением.Но (не смейтесь!) Это не так.Я не уверен в минусах.(За исключением большего количества места в дБ, которое обычно приемлемо). Так что еще против этого подхода?
Есть отдельная таблица в дБ, которая синхронизируется с определением перечисления кода иустановите связь между внешним ключом между вашей основной таблицей и таблицей enum.
Проблема заключается в том, что, когда позднее необходимо добавить другое значение enum, необходимо обновить и код, и базу данных.Кроме того, могут быть опечатки, которые могут быть боль!
Итак, в общем , когда мы можем принять накладные расходы на дб во 2-м решении. Как лучше всего хранить значения перечислений в дб?Есть ли общее правило шаблона проектирования по этому поводу?
Спасибо.