[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Perl or Python?



Hello!

On Thursday 19 March 2009 18:17:03 Victor Wagner wrote:
> > > Другая часть лакун объясняется тем, что СЕЙЧАС мы этой информации не
> > > знаем (вроде цвета шара в момент, когда электричество отключено), но
> > > ПОТОМ можем узнать (повторить эксперимент).
> >
> > Когда нет информации, то ничего и не пишем. Если же нас вдруг может
>
> Вот NULL это и есть то самое "ничего". В отличие от пустой строки. Тем
> более, что в описанном примере речь идет о параметрах числовых, у
> которых аналога пустой строки не существует. 0 - это вполне осмысленное
> значение что для температуры, что для скорости ветра. Для атмосферного
> давления - да, бессмысленное, но ежели случайно в рассчеты попадет -
> хорошо не будет.
>
> > заинтересовать причина отсутствия информации, то пишем сообщение об
> > ошибке.
>
> Речь идет о базе данных. Которая должна обрабатываться машиной.
> Алгоритм рассчета прогноза погоды НЕ УМЕЕТ интерпретировать сообщения об
> ошибке. Как максимум он может исключить из рассчета либо данную точку
> вообще, либо только данный параметр

Беда в том, что NULL это может быть и отсутствие информации, и ее 
некорректность, и даже невалидность самого вопроса. Например, при 
использовании NULL в базу может быть вставлена дата 31 февраля:

create table tests(date,value);
insert into tests (date,value) values ('2009-02-31',NULL);

Ну и что мы получаем:

select count(value) from tests;
0
select count(*) from tests;
1

Итак, сколько у вас измерений проведено? А черт его знает. Может, это ошибка в 
дате и есть 1 измерение, сделанное непонятно когда. А может, это сделано 
специально и сутки 29, 30 и 31-го февраля авторами программы полагаются 
нулевой длительности для упрощения каких-то расчетов. Или использован другой 
календарь. В итоге эту БД можно выкинуть на помойку - вы даже не можете 
определить, корректные ли в ней данные и что они значат и сколько их вообще. 
Вот вам результат использования NULL.

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

Best regards.

Reply to: