powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / NULL vs NOT NULL
25 сообщений из 80, страница 1 из 4
NULL vs NOT NULL
    #39988169
noram
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хочу посоветоваться с уважаемыми форумчанами по поводу использование NULL в БД. Я всегда их (NULLы) использую и ничего, кроме головной боли они мне не предлагали. Но думал, со временим оценю их полезность и привыкну. Но сегодня опять столкнулся с проблемой, вызванной NULLами, полез в интернет и в общем то народ за использование NULLов. Но сегодня же послушал курс Эрика Липперта (Eric Lippert, очень известиный спец по с#) и вот, что он рассказал про NULL. Изобрел его некто Sir Tony Hoare, которого, по словам Эрика он лично знал. И вот знаменитая цитата (которая только что мне попалась) этого Tony Hoare -"I call it my billion-dollar mistake. It was the invetion of the NULL reference in 1965. This has led to innumerable errors, vulnerabilities and system crashes, which have probably caused a billion dollars of pain and damage in the last fourty years" - Мой примерный перевод - "Я называю это ошибкой на миллиард. Изобретение NULL в 1965. Это изобретение привело к бесчисленным ошибкам, уязвимостям и авариям систем, что вероятно стоило миллиард долларов боли и ущерба за последние 40 лет. " Далее Эрик говорит, что Тони сильно скромничает и что ущерб исчестляется 10-ми миллиардов.
Мой вопрос такой, скажите, многие ли не использует NULLы вообще, а если используют, то какие аргументв за. Понятно, что если в поле почти стоит NULL, то это означает что почты не нет, а она неизвестна. Но так это и так понятно, а пустое значение легче воспринимается, чем NULL. Или я что то не догоняю? После этой цитаты изобретателя сего чуда, я подумываю о том, чтобы отказаться от NULLов.
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39988177
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
когда знаешь, как работает то или иное средство (не только налл), то мысли об отказе от него часто отпадают сами собой
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39988180
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
noram, а почему вы обратились к совету специалиста по С#, а не по базам данных?
Возвращаясь к теме хочется спросить - А какую головную боль они (NULLs) вами принесли?
Приведите пример.
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39988181
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(удалено)
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39988182
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
noram
Я всегда их (NULLы) использую и ничего, кроме головной боли они мне не предлагали.
Отказавшись - получите еще большую головную боль.
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39988183
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
noram
Но сегодня опять столкнулся с проблемой, вызванной NULLами

Пример в студию
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39988193
noram
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторПример в студию
Да там двумя словами не скажешь... еще разбираюсь....Пока не понял, в чем ошибка, но точно в путаннице пустых значений и наллов. Но разве я первый человек в мире, который столкнулся с проблемой из-за NULLов?
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39988210
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
noram
... Или я что то не догоняю? ...

Бинго!
ты попал в самую точку.

Тот null, о котором с 2009го года печалится сэр Тони Хоар, изобретатель быстрой сортировки
(изобрел в СССР, пока был докторантом в МГУ у Колмогорова),
соавтор идей структурного программирования,
изобретатель "логики Хоара", используемой для доказательства правильности работы программ,
автор одной из формализаций работы параллельных взаимодействующих процессов,
обладатель премии Тьюринга 1980 и премии Computer Pioneer ("Пионер компьютерных вычислений" ) 1990 года и многая-многая прочая,
никакого отношения к тому Null, об отказе от которого вы сейчас размышляете, не имеет .

Стыдно быть настолько невпопад неграмотным .

Проклятиями интересующего вас Null-а профессионально занимается совершенно другой человек.
Его зовут Кристофер Дейт (Christopher J. Date).
Бывший сотрудник IBM и соратник Кодда, ныне маргинальный независимый теоретик в области баз данных, проклинающий Null и не признающий за
(настоящую) реляционную любую систему, его допускающую.

Прежде чем "задумываться" о чём-либо, неплохо было бы установить - о чём точно вы думаете.
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39988222
Фотография StarikNavy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
noram,

null в базах данных это свойство физического мира "нет данных", т.е. не "0" не "1", а именно "отсутствие информации"

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

да, можно от него отказаться (тот же 1с), но ИМХО это больший геммор, чем его использование
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39988224
noram
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторПрежде чем "задумываться" о чём-либо, неплохо было бы установить - о чём точно вы думаете
Я думаю о цлесеобразности применения NULLов в БД, это точно то, о чем я думаю. Вот оказывается и NULLы бываю разные. Ведь, как я понял, и Christopher J. Date не большой полконник NULLов... Я просто хотел услышать мнения людей на эту тему - примерно такие - "Я без NULLов не представляю, как бы я жил, они мне очень помогают в работе " или "Везде проставляю дефолтные значения, чтобы не связываться с NULLами"
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39988227
noram
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторnull в базах данных это свойство физического мира "нет данных", т.е. не "0" не "1", а именно "отсутствие информации" Спасибо, StarikNavy, вы мне открыли глаза на мир....
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39988228
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
noram,

Нет ничего проще, чем почитать первоисточник.
Теперь ты знаешь, что читать надо Дейта.

Ознакомься с его аргументацией прежде чем её обсуждать.
А то ты рискуешь так и остаться со "знанием" о том, что Null - это "свойство физического мира".

Путём присыпания бессмыслицы новой бессмыслицей точки зрения не сформируешь.
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39988230
noram
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторСпасибо, StarikNavy, вы мне открыли глаза на мир
Если, что - это сарказм...
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39988239
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StarikNavy
да, можно от него отказаться (тот же 1с), но ИМХО это больший геммор, чем его использование


В чем же тут трудности? У себя в хранилищах я стараюсь не использовать NULL, просто использую элемент с id=0 и значением "пусто". Это сразу дает выгоду в том, что у разработчиков меньше ошибок типа "ааа, я не учел в коде, где происходит сравнение, что там может быть null..."
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39988244
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Критик
StarikNavy
да, можно от него отказаться (тот же 1с), но ИМХО это больший геммор, чем его использование


В чем же тут трудности? У себя в хранилищах я стараюсь не использовать NULL, просто использую элемент с id=0 и значением "пусто". Это сразу дает выгоду в том, что у разработчиков меньше ошибок типа "ааа, я не учел в коде, где происходит сравнение, что там может быть null..."
да, есть люди, которые даже пишут
Код: sql
1.
where isnull(id, 0) > 0
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39988275
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Похоже, кто-то за выходные заскучал и он решил начать неделю с холивара "старые песни". Хоть бы уж кто-нибудь что-то новое придумал :))
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39988277
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Критик,

А как поступаете, если NULL приходит в атрибутах сущностей, выступающих мерами (суммы, количества, дата-время)?
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39988282
PizzaPizza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
noram
подумываю о том, чтобы отказаться от NULLов.

Как это, даже интересно. "Отказаться" от нуллов можно только тщательно их обрабатывая во всех местах, где они могут появиться. Это не "отказаться", а "учитывать".
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39988287
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PizzaPizza
noram
подумываю о том, чтобы отказаться от NULLов.

Как это, даже интересно. "Отказаться" от нуллов можно только тщательно их обрабатывая во всех местах, где они могут появиться. Это не "отказаться", а "учитывать".


это просто как дважды три:

Отказаться, это именно отказаться , а не "учитывать".

Путем взятия на себя обязательства всегда проектировать разложение данных не менее, чем в 6-ю нормальную форму,
с одновременным тотальным отказом от любых вариантов внешнего (outer) соединения,
как зловредного процесса, порождающего Null-ы
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39988291
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
env
Критик,

А как поступаете, если NULL приходит в атрибутах сущностей, выступающих мерами (суммы, количества, дата-время)?


Для даты ставится 1900-01-01.
Остальные приведенные варианты довольно редки, в этом случае просто выясняется, что это значит в первичной системе и принимается решение: поставить NULL/поставить 0/вообще не грузить такие данные в хранилище/загрузить только в stage-слой и отправить автописьмо ответственным лицам.

Я не за абсолютное отсутствие NULL, а за (по возможности) избегание его использования, особенно в поля, по которым идут джойны.
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39988299
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Критик
env
Критик,

А как поступаете, если NULL приходит в атрибутах сущностей, выступающих мерами (суммы, количества, дата-время)?


Для даты ставится 1900-01-01.
...

Само по себе это не решает проблемы правильной работы ни текущего агрегатного Min,
ни агрегатного Max для базы, не содержащей Null-ов.

Пусть Вы даёте запрос
Код: plsql
1.
2.
3.
4.
Select Min(T.date_field) 
From some_table T
Where T.search_field = 'несуществующее в базе значение'
;



Для базы, не содержащей Null такой агрегатный запрос вернет строку, со значением именно Null, вместо, например 9999-12-31,
и Max() тоже вернет Null, вместо, например, 1900-01-01
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39988307
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
booby,

несуществующее значение <> неизвестное значение

В любом случае, таких запросов будет гораздо меньше, чем всяких сравнений-джойнов по полям, где будут оставлены NULL.
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39988308
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Критик
Для даты ставится 1900-01-01.

А почему, например, не 1973-09-08? Мне, например, так больше нравится.
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39988309
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Критик
booby,

несуществующее значение <> неизвестное значение

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


не важно, меньше их или больше.

Ты либо "отказываешься" от Null-ов, либо "учитываешь" их.
Это две разных математики, просто потому что две разных логики.
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39988347
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
noram,

Код: sql
1.
 я подумываю о том, чтобы отказаться от NULLов



Здесь надо понимать баланс математика против физики. Математика говорит - нормализуй до потери NULL, а физика говорит, что дробление данных имеет риск увеличить количество отношений до такого. с которым станет неудобно работать или будет получен удар по производительности СУБД.
...
Рейтинг: 0 / 0
25 сообщений из 80, страница 1 из 4
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / NULL vs NOT NULL
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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