|
NULL vs NOT NULL
|
|||
---|---|---|---|
#18+
Хочу посоветоваться с уважаемыми форумчанами по поводу использование 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ов. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2020, 13:40 |
|
NULL vs NOT NULL
|
|||
---|---|---|---|
#18+
когда знаешь, как работает то или иное средство (не только налл), то мысли об отказе от него часто отпадают сами собой ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2020, 13:56 |
|
NULL vs NOT NULL
|
|||
---|---|---|---|
#18+
noram, а почему вы обратились к совету специалиста по С#, а не по базам данных? Возвращаясь к теме хочется спросить - А какую головную боль они (NULLs) вами принесли? Приведите пример. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2020, 14:00 |
|
NULL vs NOT NULL
|
|||
---|---|---|---|
#18+
noram Я всегда их (NULLы) использую и ничего, кроме головной боли они мне не предлагали. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2020, 14:02 |
|
NULL vs NOT NULL
|
|||
---|---|---|---|
#18+
noram Но сегодня опять столкнулся с проблемой, вызванной NULLами Пример в студию ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2020, 14:05 |
|
NULL vs NOT NULL
|
|||
---|---|---|---|
#18+
авторПример в студию Да там двумя словами не скажешь... еще разбираюсь....Пока не понял, в чем ошибка, но точно в путаннице пустых значений и наллов. Но разве я первый человек в мире, который столкнулся с проблемой из-за NULLов? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2020, 14:10 |
|
NULL vs NOT NULL
|
|||
---|---|---|---|
#18+
noram ... Или я что то не догоняю? ... Бинго! ты попал в самую точку. Тот null, о котором с 2009го года печалится сэр Тони Хоар, изобретатель быстрой сортировки (изобрел в СССР, пока был докторантом в МГУ у Колмогорова), соавтор идей структурного программирования, изобретатель "логики Хоара", используемой для доказательства правильности работы программ, автор одной из формализаций работы параллельных взаимодействующих процессов, обладатель премии Тьюринга 1980 и премии Computer Pioneer ("Пионер компьютерных вычислений" ) 1990 года и многая-многая прочая, никакого отношения к тому Null, об отказе от которого вы сейчас размышляете, не имеет . Стыдно быть настолько невпопад неграмотным . Проклятиями интересующего вас Null-а профессионально занимается совершенно другой человек. Его зовут Кристофер Дейт (Christopher J. Date). Бывший сотрудник IBM и соратник Кодда, ныне маргинальный независимый теоретик в области баз данных, проклинающий Null и не признающий за (настоящую) реляционную любую систему, его допускающую. Прежде чем "задумываться" о чём-либо, неплохо было бы установить - о чём точно вы думаете. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2020, 14:28 |
|
NULL vs NOT NULL
|
|||
---|---|---|---|
#18+
noram, null в базах данных это свойство физического мира "нет данных", т.е. не "0" не "1", а именно "отсутствие информации" реализация данного свойствах в БД, вызывает проблемы только у тех кто не изучил как оно реализовано да, можно от него отказаться (тот же 1с), но ИМХО это больший геммор, чем его использование ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2020, 14:45 |
|
NULL vs NOT NULL
|
|||
---|---|---|---|
#18+
авторПрежде чем "задумываться" о чём-либо, неплохо было бы установить - о чём точно вы думаете Я думаю о цлесеобразности применения NULLов в БД, это точно то, о чем я думаю. Вот оказывается и NULLы бываю разные. Ведь, как я понял, и Christopher J. Date не большой полконник NULLов... Я просто хотел услышать мнения людей на эту тему - примерно такие - "Я без NULLов не представляю, как бы я жил, они мне очень помогают в работе " или "Везде проставляю дефолтные значения, чтобы не связываться с NULLами" ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2020, 14:46 |
|
NULL vs NOT NULL
|
|||
---|---|---|---|
#18+
авторnull в базах данных это свойство физического мира "нет данных", т.е. не "0" не "1", а именно "отсутствие информации" Спасибо, StarikNavy, вы мне открыли глаза на мир.... ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2020, 14:50 |
|
NULL vs NOT NULL
|
|||
---|---|---|---|
#18+
noram, Нет ничего проще, чем почитать первоисточник. Теперь ты знаешь, что читать надо Дейта. Ознакомься с его аргументацией прежде чем её обсуждать. А то ты рискуешь так и остаться со "знанием" о том, что Null - это "свойство физического мира". Путём присыпания бессмыслицы новой бессмыслицей точки зрения не сформируешь. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2020, 14:51 |
|
NULL vs NOT NULL
|
|||
---|---|---|---|
#18+
авторСпасибо, StarikNavy, вы мне открыли глаза на мир Если, что - это сарказм... ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2020, 14:53 |
|
NULL vs NOT NULL
|
|||
---|---|---|---|
#18+
StarikNavy да, можно от него отказаться (тот же 1с), но ИМХО это больший геммор, чем его использование В чем же тут трудности? У себя в хранилищах я стараюсь не использовать NULL, просто использую элемент с id=0 и значением "пусто". Это сразу дает выгоду в том, что у разработчиков меньше ошибок типа "ааа, я не учел в коде, где происходит сравнение, что там может быть null..." ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2020, 15:04 |
|
NULL vs NOT NULL
|
|||
---|---|---|---|
#18+
Критик StarikNavy да, можно от него отказаться (тот же 1с), но ИМХО это больший геммор, чем его использование В чем же тут трудности? У себя в хранилищах я стараюсь не использовать NULL, просто использую элемент с id=0 и значением "пусто". Это сразу дает выгоду в том, что у разработчиков меньше ошибок типа "ааа, я не учел в коде, где происходит сравнение, что там может быть null..." Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2020, 15:14 |
|
NULL vs NOT NULL
|
|||
---|---|---|---|
#18+
Похоже, кто-то за выходные заскучал и он решил начать неделю с холивара "старые песни". Хоть бы уж кто-нибудь что-то новое придумал :)) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2020, 16:08 |
|
NULL vs NOT NULL
|
|||
---|---|---|---|
#18+
Критик, А как поступаете, если NULL приходит в атрибутах сущностей, выступающих мерами (суммы, количества, дата-время)? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2020, 16:11 |
|
NULL vs NOT NULL
|
|||
---|---|---|---|
#18+
noram подумываю о том, чтобы отказаться от NULLов. Как это, даже интересно. "Отказаться" от нуллов можно только тщательно их обрабатывая во всех местах, где они могут появиться. Это не "отказаться", а "учитывать". ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2020, 16:31 |
|
NULL vs NOT NULL
|
|||
---|---|---|---|
#18+
PizzaPizza noram подумываю о том, чтобы отказаться от NULLов. Как это, даже интересно. "Отказаться" от нуллов можно только тщательно их обрабатывая во всех местах, где они могут появиться. Это не "отказаться", а "учитывать". это просто как дважды три: Отказаться, это именно отказаться , а не "учитывать". Путем взятия на себя обязательства всегда проектировать разложение данных не менее, чем в 6-ю нормальную форму, с одновременным тотальным отказом от любых вариантов внешнего (outer) соединения, как зловредного процесса, порождающего Null-ы ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2020, 16:43 |
|
NULL vs NOT NULL
|
|||
---|---|---|---|
#18+
env Критик, А как поступаете, если NULL приходит в атрибутах сущностей, выступающих мерами (суммы, количества, дата-время)? Для даты ставится 1900-01-01. Остальные приведенные варианты довольно редки, в этом случае просто выясняется, что это значит в первичной системе и принимается решение: поставить NULL/поставить 0/вообще не грузить такие данные в хранилище/загрузить только в stage-слой и отправить автописьмо ответственным лицам. Я не за абсолютное отсутствие NULL, а за (по возможности) избегание его использования, особенно в поля, по которым идут джойны. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2020, 16:48 |
|
NULL vs NOT NULL
|
|||
---|---|---|---|
#18+
Критик env Критик, А как поступаете, если NULL приходит в атрибутах сущностей, выступающих мерами (суммы, количества, дата-время)? Для даты ставится 1900-01-01. ... Само по себе это не решает проблемы правильной работы ни текущего агрегатного Min, ни агрегатного Max для базы, не содержащей Null-ов. Пусть Вы даёте запрос Код: plsql 1. 2. 3. 4.
Для базы, не содержащей Null такой агрегатный запрос вернет строку, со значением именно Null, вместо, например 9999-12-31, и Max() тоже вернет Null, вместо, например, 1900-01-01 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2020, 16:59 |
|
NULL vs NOT NULL
|
|||
---|---|---|---|
#18+
booby, несуществующее значение <> неизвестное значение В любом случае, таких запросов будет гораздо меньше, чем всяких сравнений-джойнов по полям, где будут оставлены NULL. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2020, 17:08 |
|
NULL vs NOT NULL
|
|||
---|---|---|---|
#18+
Критик Для даты ставится 1900-01-01. А почему, например, не 1973-09-08? Мне, например, так больше нравится. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2020, 17:10 |
|
NULL vs NOT NULL
|
|||
---|---|---|---|
#18+
Критик booby, несуществующее значение <> неизвестное значение В любом случае, таких запросов будет гораздо меньше, чем всяких сравнений-джойнов по полям, где будут оставлены NULL. не важно, меньше их или больше. Ты либо "отказываешься" от Null-ов, либо "учитываешь" их. Это две разных математики, просто потому что две разных логики. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2020, 17:11 |
|
NULL vs NOT NULL
|
|||
---|---|---|---|
#18+
noram, Код: sql 1.
Здесь надо понимать баланс математика против физики. Математика говорит - нормализуй до потери NULL, а физика говорит, что дробление данных имеет риск увеличить количество отношений до такого. с которым станет неудобно работать или будет получен удар по производительности СУБД. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2020, 18:03 |
|
|
start [/forum/topic.php?fid=46&fpage=51&tid=1685774]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
34ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
68ms |
get tp. blocked users: |
2ms |
others: | 256ms |
total: | 406ms |
0 / 0 |