Используя [0,1] против [ "Y", "N" ] по сравнению с [ "T", "F" ] в логическом/логическом поле базы данных?

Просто из любопытства и отсутствия определенного ответа...

Я просто смотрел на некоторые данные, которые отправляются от третьей стороны к нам, а их поле "Пол" - это [0,1], обозначающее либо Female (0), либо Male (1).

Есть ли еще одна причина использовать [0,1] над [ "F", "M" ]?

Это зависит от сценария и интуитивности между полем и его значением?

Скорость доступа к данным и/или ограничения по размеру?

Если луна заполнена?


Каковы различия в использовании [0,1] против [ "Y", "N" ] по сравнению с [ "T", "F" ]?

Ответ 1

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

Кроме того, более философски, наши понятия пола/сексуальности гораздо более текучи, чем учитываются в двоичной области. Например, я был нанят, чтобы исправить крупное правительственное выражение в штате Массачусетс, когда были приняты законы о сексуальном браке, потому что было сделано много предположений о браке, которые впоследствии были признаны недействительными.

Ответ 2

Лучше использовать 0 и 1 вместо F и M, если вы хотите обфускать свои данные, чтобы затруднить понимание другими программистами.

В противном случае нет, нет никаких преимуществ.

Кроме того, я могу дать вам главный недостаток. Я работаю над приложением, которое касается свиней. Мужские свиньи, как и некоторые другие животные-мужчины, кастрируются, если их собирают использовать для производства продуктов питания, а не для разведения, поскольку они улучшают качество мяса.

Приложение первоначально просто отслеживало мужчин и женщин. Но теперь нам нужно отслеживать три разных пола: мужчина, женщина и курган (термин для кастрированной свиньи). Было бы больно изменить это, если бы кто-то решил использовать 0 и 1 в бит поле для секса.

Ответ 3

Разве мы не видим очевидного использования → внешних ключей? Я знаю, что исходный вопрос подразумевал бит-поле, но если он действительно численный, может ли гендерный столбец 0,1 относиться к гендерной таблице?

Ответ 4

Нет, если вы не хотите перейти на уровень бит для каждой записи. Я имею в виду, что вы можете установить 0 или 1 в один бит, в то время как символ занимает 8 бит. По большей части это не стоит.

Я думаю, что "M" или "F" понятнее, потому что он предоставляет большую семантическую информацию.

Ответ 5

Я бы создал пользовательский тип в sql или класс enum в С#/vb и сохранил 0,1 в базе данных по ранее указанным причинам размера и скорости.

Ответ 6

Любопытно, что нобобрийцы упомянули языки.
M/F в порядке, но как насчет других языков?

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

Поле бит (или логическое) должно использоваться только тогда, когда есть окончательно только 2 варианта.

Мои два цента.

Ответ 7

Это действительно не имеет значения.

Ответ 8

Если вы действительно, действительно, очень обеспокоены ограничениями размера, [0,1] сохранит вам несколько бит.

Ответ 9

Ну, сравнение Ints немного проще, чем сравнение строк; при сравнении строк вам необходимо учитывать прописные и строчные буквы.

Ответ 10

Различия в производительности будут тривиальными. Идите с более интуитивным для людей M/F.

Ответ 11

Почему бы не использовать перечисление? Это позволяет вам

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

Ответ 12

Короткий ответ - нет, поскольку один символ занимает то же место для хранения, что и целое число.

Долгий ответ - это зависит от того, как написано ваше приложение. Я написал приложение, когда у меня было поле с полом в базе данных с 0 или 1, потому что на прикладном уровне у меня было перечисление, которое сопоставил Gender.Female и Gender.Male с значениями 0 и 1. соответственно.

Ответ 13

Ну, в SQL Server это определенно имеет значение. В этом случае вы должны использовать бит типа столбца (1/0 или True/False - однако вы хотите это сказать). Это всего лишь 1 бит памяти по сравнению с 1 байтом для char (1).

Ответ 14

Для флагов в записи я предпочитаю "Y" / "N" или "T" / "F" до 1/0.

Если вы хотите фраза флага в качестве вопроса,, используйте Y/N, чтобы было ясно, что "Y" согласен с ответом на вопрос положительно, а "N" означает отрицательный ответ, например

SHOULD_SPECIAL_DISCOUNT_APPLY - Y or N

Если вы хотите фразу флага как положительный оператор, T/F является более четким. T - означает, что инструкция истинна, F означает, что утверждение ложно:

SPECIAL_DISCOUNT_APPLIES - T or F

0 или 1 не имеет прямого сопоставления с True или False - это зависит от того, что именно это означает. Вы не можете гарантировать, что "1" означает "Истина/Да" и "0" означает "Ложь/Нет" - это не всегда так, как в электронике, так и в программном обеспечении, зависит от того, насколько последователен программист и насколько хорошо названы поля являются...

Ответ 15

Действительно зависит от базы данных.

  • SQL Server использует бит
  • MySQL использует tinyint
  • Сохранение T/F будет как минимум char (1)

Ответ 16

Прочитав все эти и сделав небольшое исследование, я пришел к выводу, что:

  • Поле
  • [0,1] полезно, поскольку его международный и может быть расширен после включения дополнительных статей, когда связанная со статической таблицей определения.

  • [ "Y", "N" ] и [ "T", "F" ], вероятно, признанных во всем мире, но на английский язык.

  • [ "M", "F" ] поля типа поля Также на английском языке и ограничить использования при рассмотрении того, кто не хотят упоминать свой пол или чей пол неопределенен (Гермафродит)

Ответ 17

Поскольку секс не является фактически бинарным, существует непрерывный диапазон "интерсексуальных" условий между мужчиной и женщиной, а также существ без пола вообще - лучше всего использовать тип с плавающей точкой. 0 для женщин (по умолчанию, по крайней мере у млекопитающих), 1 для мужчин, с промежуточными значениями для промежуточных условий и NaN для тех, у кого нет значения.

Но помните, что это никогда не будет полностью применимо, потому что для человеческого сердца нет никакого типа. Хотя комплекс часто является хорошим приближением.