|
|
|
Правильно ли использовать NULL в таком случае? (BIT, BOOLEAN)
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Достаточно простой вопрос, просто нужно ваше мнение, чисто из опыта работы. Есть таблица БД, в таблице этой есть некоторое поле "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? Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2014, 15:36 |
|
||
|
Правильно ли использовать NULL в таком случае? (BIT, BOOLEAN)
|
|||
|---|---|---|---|
|
#18+
roman_lenkoВообще, из вашего опыта: есть ли какие-то сложности в работе со значениями NULL? Есть особенности: UNKNOWN=UNKNOWN -> TRUE NULL=NULL -> FALSE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2014, 16:00 |
|
||
|
Правильно ли использовать NULL в таком случае? (BIT, BOOLEAN)
|
|||
|---|---|---|---|
|
#18+
_модroman_lenkoВообще, из вашего опыта: есть ли какие-то сложности в работе со значениями NULL? Есть особенности: UNKNOWN=UNKNOWN -> TRUE NULL=NULL -> FALSE Не-не, это другое.. Мне нужно будет простые запросы выполнять, типа, ... where state is null, или where state = true; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2014, 16:57 |
|
||
|
Правильно ли использовать NULL в таком случае? (BIT, BOOLEAN)
|
|||
|---|---|---|---|
|
#18+
roman_lenko, Если Вы на 101% уверены, что никогда-никогда не появится четвертого значения - можно взять вариант 2. (правда, во всех отчетах и гридах Вам придется зашивать в код отображение этого поля) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2014, 17:12 |
|
||
|
Правильно ли использовать NULL в таком случае? (BIT, BOOLEAN)
|
|||
|---|---|---|---|
|
#18+
только поле назовите типа is_connected ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2014, 19:03 |
|
||
|
Правильно ли использовать NULL в таком случае? (BIT, BOOLEAN)
|
|||
|---|---|---|---|
|
#18+
> только поле назовите типа is_connected Именно. Состояние не может быть true или false, а is connected в дополнительной интерпретации не нуждается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2014, 19:51 |
|
||
|
Правильно ли использовать NULL в таком случае? (BIT, BOOLEAN)
|
|||
|---|---|---|---|
|
#18+
roman_lenkoМне нужно будет простые запросы выполнять, типа, ... where state is nullТакое условие индекс скорее всего использовать не будет, но если состояния всего три, то индекс по полю все-равно не нужен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2014, 15:28 |
|
||
|
Правильно ли использовать NULL в таком случае? (BIT, BOOLEAN)
|
|||
|---|---|---|---|
|
#18+
Bogdanov Andrey Такое условие индекс скорее всего использовать не будет, но если состояния всего три, то индекс по полю все-равно не нужен. А вот тут уже возможны варианты. Никто не говорил что распределение данных будет равномерным. То бишь если данных с where state is null мало, то индексация может иметь смысл. Другой вопрос, что надо точно знать СУБД и суметь убедить оптимизатор использовать его. Например для mssql это будет индекс фильтр, для Oracle FBI, про другие не знаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2014, 17:44 |
|
||
|
|

start [/forum/topic.php?fid=32&fpage=31&tid=1540977]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
48ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 10ms |
| total: | 143ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...