andrzejn: (Default)
[personal profile] andrzejn
Когда изобретали реляционную алгебру, зачем-то сэкономили на значении NULL. На самом деле там должно быть два значения: "никаких данных нет" и "данные неизвестно какие". От этой экономии с тех пор происходят многие неудобства в сравнительных, логических и прочих операциях.

Re

Date: Thursday, 19 March 2009 19:36 (UTC)
From: [identity profile] granite-golem.livejournal.com
Э-э... Мысль интересная. А можно конкретный пример?

Re: Re

Date: Thursday, 19 March 2009 19:49 (UTC)
vitus_wagner: My photo 2005 (Default)
From: [personal profile] vitus_wagner
Конкретные примеры я сегодня приводил в debian-russian.

Пример "данные незивестно какие" - поле "температура" в данных метеостанции, если за пять минут до срока измерения белый медведь разворотил будку и сожрал термометр. Температура какая-то в нужный момент несомненно была, но вот измерить не удалось.

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

Никаких данных нет - поле "папиллярный узор указательного пальца левой руки". Записываются данные человека, которому левую руку десять лет назад оторвало.

Или менее кровожадный пример - база данных в которой есть поле "цвет волос".
"Данные неизвестно какие" - пришла фанатичная мусульманка в хиджабе, хиджаб снимать отказалась.
"Данных никаких нет" - пришел абсолютно лысый человек.

Re: Re

Date: Thursday, 19 March 2009 20:09 (UTC)
From: [identity profile] p_govorun.livejournal.com
Что-то примеры не катят. Или тогда уж вводить градацию: "Данных нет", "Данных совсем нет", "Данных абсолютно совсем нет", "Данных абсолютно совсем нет, ДОСТАЛИ!!!"

Конкретно. Узор большого пальца безрукого вполне мог сохраниться в старых документах. А может быть когда-нибудь в будущем ему вырастят новую руку (плоды прогресса), и с неё можно будет снять отпечаток. Или научатся читать отпечатки пальцев непосредственно с генома.

Цвет волос лысого -- тоже осмысленное понятие. Если лысый -- японец, то этот цвет чёрный. А может быть, достаточно ему смазать лысину Чудодейственным Средством для Ращения Волос (ну, хоть один-то волосок от этого должен получиться :-)

То есть, вместо универсального понятия NULL, получается некий "NULL с градациями".

Re: Re

Date: Thursday, 19 March 2009 20:25 (UTC)
From: [identity profile] p_govorun.livejournal.com
Я, как и выше, придерусь к примеру. (Я чувствую, что здесь нелады по сути, но пока хочу разобраться с примерами).

Итак, ты предлагаешь два значения "телефон неизвестен" и "телефона точно нет". Почему именно эти? Вариантов много: "Телефон давать отказался", "Телефон сломан, починят через неделю", "Телефон есть, но там не берут трубку".

С точки зрения бизнес-логики вопрос стоит так: будем ли мы звонить этому человеку по телефону, и если да, то по какому? Если не будем звонить -- пишем NULL.

Re

Date: Thursday, 19 March 2009 20:44 (UTC)
From: [identity profile] granite-golem.livejournal.com
Вопрос в том, что мы будем делать дальше с этой информацией. В некоторых языках в арифметике вводятся еще специальные значения "NaN", "Infinity" (и отрицательная Infinity). Вот в SQL да, вроде не было в стандарте чего-то похожего.

Re

Date: Thursday, 19 March 2009 20:47 (UTC)
From: [identity profile] granite-golem.livejournal.com
Ага, просто я давно работал с SQL и забыл эту специфику. А в JavaScript с этим проще.

Кстати, в гадании я стараюсь разделять все эти неизвестности. "Гадание состоялось, ответ "нет", "Гадание состоялось, но ответ на вопрос неизвестен", "Гадание не состоялось - все информаторы заняты", "Гадание не состоялось - вопрос поставлен некорректно".

Date: Thursday, 19 March 2009 22:16 (UTC)
From: [identity profile] snowman-fedya.livejournal.com
вообще "данные неизвестно какие" - это параметр другого рода, относящийся к погрешности, достоверноести данных, а не их величине или наличию. С конкретным значением образует плоскость наподобие комплексной, можно даже определять некоторые операции и свойства получившегося поля.

Re: Re

Date: Thursday, 19 March 2009 23:20 (UTC)
From: [identity profile] slobin.livejournal.com
Ну вот в D, например, если хотя бы один из операндов был NaN, то результат любого из сравнений >, < или == будет false. Но зато есть такой, например, чудесный оператор, как !<>= ("не больше, не меньше и не равно"). Ну и все остальные случаи тоже, этот просто лучше всех смотрится. ;-)

... Я обонял неописуемый смрад гнилого горелого небелкового мяса ...

Re: Re

Date: Thursday, 19 March 2009 23:29 (UTC)
From: [identity profile] slobin.livejournal.com
Ну, раз уж речь зашла о бизнесе, предлагаю трактовку "по какому телефону ему звонят наши конкуренты". Аналог для примера выше: "какая температура на термометре у тех полярников, чью поддержку мы обеспечиваем". Ни одна информационная система не существует сама по себе, она всегда обеспечивает деятельность чего-то во внешнем мире. Соответственно есть два типичных случая: "проблемы с доступом только у системы, у прочего внешнего мира данные есть" и "у прочего внешнего мира проблемы те же, что и у системы".

... МНОС схутед довн ...

Re: Re

Date: Thursday, 19 March 2009 23:39 (UTC)
From: [identity profile] p_govorun.livejournal.com
Эти два случая можно сформулировать так: "у нас нет связи с миром" и "у него связи с миром". А потом ввести все прочие варианты связности. (Если речь идет, скажем, о шпионаже, то хитрые структуры связности вполне актуальны.)

Date: Friday, 20 March 2009 04:15 (UTC)
From: [identity profile] freeborn.livejournal.com
if (!true && !false)
return FILE_NOT_FOUND
почти (c) daily WTF %)

Date: Tuesday, 24 March 2009 21:41 (UTC)
netch: (Default)
From: [personal profile] netch
Слабовато будет.
В одной голландской программе было 11 вариантов для значения поля "пол":
- мужской
- женский
- был мужской, сейчас женский
- был женский, сейчас мужской
- неизвестен
- клиент отказался назвать
- клиент не определился со своим полом
и ещё четыре в том же духе.

Profile

andrzejn: (Default)
Андрій Новосьолов

February 2026

M T W T F S S
       1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 2728 

Most Popular Tags

-

Style Credit

Expand Cut Tags

No cut tags
Page generated Friday, 27 February 2026 09:37
Powered by Dreamwidth Studios