Вы бы использовали метку цифр c или семанти c в качестве значений столбцов? - PullRequest
0 голосов
/ 19 февраля 2020

У меня есть определенные столбцы, которые должны "состояния", например, "выполнено", "не выполнено", "ожидание", "да", "нет" и т. Д. c. У меня есть следующие варианты:

  1. целочисленный столбец, документирующий отображение, например: 0 = не выполнено, 1 = выполнено и c ...
  2. строковый столбец с реальное слово «выполнено», «не выполнено» et c.
  3. enum тип данных? Вопрос в том, есть ли какое-то обоснование, чтобы решить, какой из них использовать? Целые числа, конечно, сэкономят место. Но код будет сложнее читать, сложнее понимать, сложнее поддерживать документацию. Стоит ли экономить?

Объединяет ли тип данных enum преимущества 1 и 2?

У меня есть личное предпочтение к решению 2 или 3, удобочитаемость, но я не знать, будет ли база данных выглядеть странно после этого или производительность станет ключевым моментом.

1 Ответ

0 голосов
/ 08 мая 2020

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

  • СУБД автоматически проверяет допустимые значения.
  • Практически самодокументируется в таблице состояний.
  • Занимаемое пространство не увеличивается со временем имена состояний
  • Позволяет избежать повторяющихся имен для одного и того же состояния (выполнено / выполнено / выполнено! / завершено).
  • Может легко добавлять новые состояния после этого.
  • Новая таблица может быть повторно использована если нужны состояния в других таблицах (или других столбцах в той же таблице).
  • Состояния могут иметь больше информации, чем просто короткое имя: однобуквенное сокращение для состояний, длинные и короткие имена, описание того, когда использовать это состояние, порядок отображения в списках, et c. Все это могут быть столбцы в таблице состояний.
...