Когда следует сопоставить столбец с типом Enum в коде - PullRequest
1 голос
/ 12 марта 2009

Возможно, это глупый вопрос, но когда следует сопоставить столбец с типом enum? Например, мы все знаем, что столбец «Gender», который представлен как «M» или «F» в базе данных, может быть сопоставлен с перечислением под названием «Gender». Поскольку обычно существует 2 пола :), мы можем быть уверены, что это перечисление не нуждается в обновлении. Однако как насчет enum, настроенного для бизнес-логики? Например, скажем, для региона, если у вас есть Enum, представляющий весь регион в вашей базе данных, то всякий раз, когда вы вставляете другой регион в свою базу данных, этот enum должен меняться, поэтому необходимо другое продвижение. Это хорошая практика? Есть ли лучшая практика вокруг этого?

Спасибо!

Ответы [ 2 ]

1 голос
/ 12 марта 2009

На самом деле это сложный вопрос: когда вы используете перечисление, традиционно в БД также есть таблица поиска, как предлагает Рид. Но это поднимает проблему синхронизации определений.

Что мы делаем, это генерируем таблицы из определений enum как часть наших сценариев сборки / развертывания, чтобы гарантировать, что оба отражают один и тот же набор допустимых значений.

Затем у нас есть вспомогательные функции, которые берут DataSet, возвращенный из запроса к БД, и сопоставляют столбцы идентификатора с (вновь созданными) столбцами со значениями перечисления. Но мы делаем это сразу после получения результатов запроса. Поэтому я бы посоветовал отобразить их как можно скорее, желательно в вашем DAL.

0 голосов
/ 12 марта 2009

Вам лучше создать отдельную таблицу для региона с собственным уникальным идентификатором. Затем используйте идентификатор региона в основной таблице.

Это обеспечивает большую гибкость в будущем, поскольку добавление региона - это просто добавление новой записи.

См. Любой текст о нормализации базы данных для подробностей и полных объяснений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...