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

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

Есть таблица БД, в таблице этой есть некоторое поле "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
14.02.2014, 16:00
    #38561219
_мод
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильно ли использовать NULL в таком случае? (BIT, BOOLEAN)
roman_lenkoВообще, из вашего опыта: есть ли какие-то сложности в работе со значениями NULL?
Есть особенности:
UNKNOWN=UNKNOWN -> TRUE
NULL=NULL -> FALSE
...
Рейтинг: 0 / 0
14.02.2014, 16:57
    #38561296
roman_lenko
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильно ли использовать NULL в таком случае? (BIT, BOOLEAN)
_модroman_lenkoВообще, из вашего опыта: есть ли какие-то сложности в работе со значениями NULL?
Есть особенности:
UNKNOWN=UNKNOWN -> TRUE
NULL=NULL -> FALSE

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

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

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

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


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