Каков канонический / лучший способ реализовать простое переключение true-false для базы данных - PullRequest
0 голосов
/ 12 августа 2011

Например, пользовательские настройки, такие как «показывать мою электронную почту другим пользователям», которые они могут установить или снять с помощью флажка.

Это один бит информации, поэтому вы устанавливаете поле как INT (1) или BOOLEAN, вы устанавливаете его как один или ноль (по умолчанию ноль), или как один или NULL. Как насчет набора с двумя возможными значениями, «да» и «нет»?

Я не вижу огромных различий между ними или гочами. Какая лучшая практика?

РЕДАКТИРОВАТЬ: забыл сказать, что язык, на котором вы проверяете это значение, может быть фактором. Если у вас есть встроенный undef или false, так что вы можете проверить с помощью

if($show_email)

это лучше, чем

if($show_email == something)

Ответы [ 2 ]

1 голос
/ 12 августа 2011

NULL должен представлять «Я не знаю ответ», тогда как True или False должен представлять «Я знаю ответ, и это [True | False]» *

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

0 голосов
/ 12 августа 2011

Думаю, я бы предпочел 1 или ноль сам. И это, вероятно, сработает на многих серверах баз данных (и на многих приложениях). Я просто выброшу, что я также вижу CHAR (1) с использованием 'y' или 'n'. Что, конечно, означает, что вы должны проверить регистр и все такое, но это сэкономит немного места, если это вызывает беспокойство.

Лично я бы не допустил NULL. Это добавляет кучу дополнительных условий для проверки на уровне приложения, не так ли?

...