Как хранить основные данные с низким количеством элементов в базе данных

В моей базе данных приложения есть определенные столбцы, которые могут иметь только 2-4 возможных значения.

Например

  1. "ГЕНДЕР" может иметь только 2 значения ("Мужской", "Женский")

  2. "MARATAL STATUS" может иметь 3 значения ("холост", "женат", "разведен")

  3. "PROC_STATUS" может иметь 3 значения ("В ожидании", "В процессе", "Завершено")

  4. "PROC_SATISFACTION" может иметь значения ("Неудовлетворительно", "Не удовлетворено", "Удовлетворено", "Высоко удовлетворено")

Есть еще несколько значений основных данных, как это.

Каков наилучший способ хранения этих основных данных в БД?

Создание таблиц для каждой из них, кажется, не является хорошим вариантом, поскольку данные статичны (вряд ли изменятся) и очень незначительны.

Другим вариантом было бы использовать проверку ограничений.

Другой вариант - сделать перечисления в коде.

Я ищу способ хранить эти основные данные в БД. Я рассматриваю SQL Server 2012.

Любая помощь будет высоко оценена.

1 ответ

Исходя из системного аналитика...

Основное соображение, если вы собираетесь заниматься интернационализацией. Пол кажется действительно простым, как 'M' а также 'F' пока вы не думаете, что многие языки не основаны на латыни.

Другое соображение заключается в том, что база данных действительно предназначена для работы в качестве реляционной базы данных, полностью независимой от приложения (для сторонних отчетов, импорта и экспорта данных и т. Д.), Или если база данных является просто хранилищем приложения.

IMX, если вам не нужна интернационализация, то для пола я бы использовал char(1) поля для 'M' а также 'F', Больше ничего не нужно, потому что для таких категорий это очевидно (если вашей системе не нужно беспокоиться о сложных полах или тому подобном). Точно так же, если вы можете сойти с рук 'Y' или же 'N' для истинных / ложных полей и не хотят использовать bit тогда это нормально. Просто будьте последовательны во всем приложении. Не смешивать и сочетать.

Для всего остального я бы создал таблицу проверки с кодом, описанием / расширением кода и (если это вообще возможно) столбцом Active, чтобы пользователи могли указать, что определенные коды больше не используются (убедитесь, что Кодекс уважает это!). В сложной системе область настройки системы вашего приложения может позволить пользователям с доступом SysAdmin создавать новые коды, отмечать их как активные или неактивные или удалять коды из таблицы проверки, если они не используются. Они могут хотеть, например, PROC_STATUS Отменено или PROC_SATISFACTION "Нет ответа". Ограничения внешнего ключа хороши, но многие приложения, которые используют этот метод, не используют FK по моему опыту.

If your application needs to have i18n and the data needs to be portable between regions (ie, Germany's database needs to be able to function cleanly attached to China's application server with just a few updates for language changes) then you can't really store the codes in the base tables. You'll probably need to use integers that map back to your validation tables where you have the lookup id integer, the code the users will use for their region, the long name for that code, and then the active/inactive option. Proper i18n will include pre-populating these tables with the correct values depending on the installation.

Другие вопросы по тегам