Классика баз данных - статьи


         

И снова о вечной проблеме отсутствующей информации


Сергей Кузнецов

В сентябрьском номере журнала ACM SIGMOD Record за 2008 г. опубликованы сразу две небольших статьи, формальным поводом к написанию которых явилась статья Клода Рубинсона (Claude Rubinson) , которая, в свою очередь, была опубликована в декабрьском номере того же журнала за 2007 г. Когда мы публиковали мой этой статьи в нашей библиотеке, я написал небольшую собственную заметку , в которой постарался показать, что претензии Рубинсона к Дейту не основательны, а доводы Дейта относительно несоответствия требованиям реального мира подхода к управлению отсутствующей информации, принятого в SQL, безупречны.

На этот раз на статью Рубинсона откликнулись сам Кристофер Дейт (C. J. Date), а также Джон Грант (John Grant), известный своими многочисленными серьезными работами, в частности, на эту тему. Обе статьи очень небольшие по объему, но, как мне кажется, любопытные и полезные для более полного понимания сути проблемы и путей ее решения. Поэтому я решил опубликовать переводы их обеих в библиотеке CITForum, сопроводив их этой краткой заметкой со своими пояснениями и комментариями.

Начну с одного чисто переводческого пояснения. В переводе статьи Дейта везде в русском тексте я использую (и даже склоняю) только слово null, не пытаясь заменять его, например, словосочетанием неопределенное значение. В то же время, в переводе статьи Гранта я спокойно иду на такие вольности. Это связано с тем, что авторы статей по-разному относятся к проблеме отсутствующей информации и к соответствующей терминологии.

Для Дейта одним из наиболее серьезных поводов к неприятию null в SQL является как раз то, что null – это не значение, а обозначение отсутствия значения. По мнению же Дейта (совершенно справедливому) в реляционной базе данных могут храниться только типизированные значения. Поэтому называть null неопределенным значением в переводе статей Дейта просто нельзя, поскольку это не значение вообще. И сам Дейт в последние годы никогда не использует словосочетание null value, всегда только null.



Содержание    Вперед