powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Правильно ли использовать NULL в таком случае? (BIT, BOOLEAN)
8 сообщений из 8, страница 1 из 1
Правильно ли использовать NULL в таком случае? (BIT, BOOLEAN)
    #38561189
roman_lenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!

Достаточно простой вопрос, просто нужно ваше мнение, чисто из опыта работы.

Есть таблица БД, в таблице этой есть некоторое поле "state" (состояние). Состояние может быть логически определно как FALSE, TRUE, UNKNOWN. Есть 2 варианта реализации:

1) Представить поле "state" как INT, с возможными значениями 0, 1, 2 соответственно. При этом сделать поле "state" как FOREIGN KEY на таблицу, где значения 0, 1, 2 описаны.

2) Преставить поле "state" как BIT (или как BOOLEAN — в зависимости от СУБД), с возм. значениями TRUE, FALSE, NULL соответственно.

Лично мне нравится вариат №2 — он не требует дополнительной таблицы для описания состояния "state", но меня смущает возможное значение NULL. Как вы думаете, использование NULL здесь — дурной тон, или нет? Вообще, из вашего опыта: есть ли какие-то сложности в работе со значениями NULL?

Спасибо!
...
Рейтинг: 0 / 0
Правильно ли использовать NULL в таком случае? (BIT, BOOLEAN)
    #38561219
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
roman_lenkoВообще, из вашего опыта: есть ли какие-то сложности в работе со значениями NULL?
Есть особенности:
UNKNOWN=UNKNOWN -> TRUE
NULL=NULL -> FALSE
...
Рейтинг: 0 / 0
Правильно ли использовать NULL в таком случае? (BIT, BOOLEAN)
    #38561296
roman_lenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_модroman_lenkoВообще, из вашего опыта: есть ли какие-то сложности в работе со значениями NULL?
Есть особенности:
UNKNOWN=UNKNOWN -> TRUE
NULL=NULL -> FALSE

Не-не, это другое..

Мне нужно будет простые запросы выполнять, типа, ... where state is null, или where state = true;
...
Рейтинг: 0 / 0
Правильно ли использовать NULL в таком случае? (BIT, BOOLEAN)
    #38561321
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
roman_lenko,

Если Вы на 101% уверены, что никогда-никогда не появится четвертого значения - можно взять вариант 2.
(правда, во всех отчетах и гридах Вам придется зашивать в код отображение этого поля)
...
Рейтинг: 0 / 0
Правильно ли использовать NULL в таком случае? (BIT, BOOLEAN)
    #38561455
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
только поле назовите типа is_connected
...
Рейтинг: 0 / 0
Правильно ли использовать NULL в таком случае? (BIT, BOOLEAN)
    #38561496
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> только поле назовите типа is_connected

Именно. Состояние не может быть true или false, а is connected в дополнительной интерпретации не нуждается.
...
Рейтинг: 0 / 0
Правильно ли использовать NULL в таком случае? (BIT, BOOLEAN)
    #38561841
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
roman_lenkoМне нужно будет простые запросы выполнять, типа, ... where state is nullТакое условие индекс скорее всего использовать не будет, но если состояния всего три, то индекс по полю все-равно не нужен.
...
Рейтинг: 0 / 0
Правильно ли использовать NULL в таком случае? (BIT, BOOLEAN)
    #38561905
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bogdanov Andrey Такое условие индекс скорее всего использовать не будет, но если состояния всего три, то индекс по полю все-равно не нужен. А вот тут уже возможны варианты. Никто не говорил что распределение данных будет равномерным. То бишь если данных с where state is null мало, то индексация может иметь смысл. Другой вопрос, что надо точно знать СУБД и суметь убедить оптимизатор использовать его. Например для mssql это будет индекс фильтр, для Oracle FBI, про другие не знаю.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Правильно ли использовать NULL в таком случае? (BIT, BOOLEAN)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]