Сохранение имен в таблицах базы данных
У меня есть порядок, который имеет статус (который в коде является Enum). Вопрос в том, как это сохранить. Я мог:
- Перенесите строку в поле, а затем вернитесь к перечислению при извлечении данных.
- Сохраняйте это как целое число, а затем вернитесь к перечислению на поиск данных.
- Создайте отдельную таблицу для значения перечисления и выполните объединение при извлечении данных.
Мысли?
Ответы
Ответ 1
Если это фиксированный список (который, кажется, он есть, иначе вы не должны хранить его как перечисление), я бы не использовал # 1.
Основная причина использования # 3 над # 2 - это простота использования с утилитами запросов самообслуживания. Тем не менее, я бы выбрал вариант # 2: сохраните значение как целое число и сопоставьте его с перечислением на извлечение данных. Однако также создайте таблицу, представляющую тип перечисления, со значением PK и именем в качестве другого столбца. Таким образом, это просто, быстро и эффективно использовать с вашим кодом, но также легко получить логическое значение с помощью запросов самообслуживания и других целей, которые не используют ваш код доступа к данным.
Ответ 2
# 3 является наиболее "правильным" с точки зрения базы данных/нормализации. Фактически ваш статус - это объект домена, связанный с объектом заказа.
Ответ 3
hibernate по умолчанию использует целые числа.
если ваше перечисление не будет меняться очень часто, это не плохая идея, я думаю.
Ответ 4
Я бы использовал целое число, сопоставленное для значения в другой таблице со значениями.
Затем вы также можете перечислить перечисление на одно и то же значение, но тогда вам придется обновлять оба момента.
Ответ 5
Я полагаю, это зависит от того, где будут извлекаться данные. С# 3 вы можете получить данные, не полагаясь на ваш интерфейс .NET. Но также возможно, чтобы таблица базы данных не синхронизировалась с кодом перечисления.
Вариант № 2, безусловно, самый эффективный способ сделать это для хранения... но хранение дешево.