Logo CitForum CITForum на CD Форумы Газета Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

21.05.2012

Google
WWW CITForum.ru
2009 г.

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

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

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

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

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

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

Грант в гораздо меньшей степени формалист. Его не очень беспокоит терминология. В его статье "базы данных выполняют запросы", и совершенно спокойно используется термин null value. Поэтому я и в переводе не стесняюсь использовать привычный оборот неопределенное значение. Для Гранта гораздо важнее дефекты трехзначной логики в том виде, в котором она применяется в SQL.

В статье Дейта, в общем-то, и нет критики статьи Рубинсона. Он даже и не пытается опровергнуть нападки в свою сторону, что, дескать он (Дейт) не понимает трехзначной логики SQL. Дейт снисходительно соглашается, что готов признать (условно!) безупречность логики SQL. Он всего лишь говорит, что если null является обозначением отсутствия значения, то для таблиц SQL не работает традиционная интерпретация отношений, принятая в реляционной модели.

Дейт показывает, что при интерпретации каждого отношения степени n как n-местного предиката, а каждого кортежа этого отношения – как истинного высказывания, являющегося инстанциацией предиката отношения, логически правильным подходом для поддержки в реляционных базах данных отсутствующей информации является подход к горизонтальной декомпозии, предложенный несколько лет назад соратником Дейта Хью Дарвеном (Hugh Darwen), см. его материал How To Handle Missing Information Without Using NULL.

Грант, напротив, начинает свою статью с того, что Рубинсон совершенно не прав, утверждая, что Дейт не умеет писать запросы на SQL. Просто SQL не умеет правильно выполнять запросы, формулируемые Дейтом. И он поясняет, почему так получилось. Оказывается, во всем виноват Кодд, который тридцать с лишним лет тому назад не послушал Гранта, когда тот говорил, что нельзя использовать трехзначную логику, основанную на таблицах истинности. А потом ошибочный подход Кодда попал в стандарт SQL, и отсюда и пошли все неприятности. К сожалению, я не читал статьи Гранта, написанные в 1970-е гг., и не смог найти их в Internet. Наверное, стоит устанить этот недочет.

Затем Грант кратко описывает два подхода к организации баз данных (дизъюнктивный и вероятностный), которые позволяют справляться с отсутствующей информацией без дефектов, свойственных SQL. По крайней мере, он показывает, что на основе этих подходов запрос из примера Дейта выполнился бы корректно.

В общем, понятно одно. В SQL имеется ряд дефектов, связанных с поддержкой null'ов. Рано или поздно эти дефекты нужно устранить. Наверное, уже всем ясно, что от этого языка нам никуда не деться. Значит, нужно его, по мере возможности, приводить в порядок.

Итак, Вашему вниманию предлагаются статьи:

Подписка на новости CITForum.ru

Новые публикации:

19 мая

  • Прозрачный механизм удаленного обслуживания системных вызовов

  • Система моделирования Grid: реализация и возможности применения

    Газета:

    Майкл Стоунбрейкер:

  • Ошибки в системах баз данных, согласованность "в конечном счете" и теорема CAP

  • Дискуссия по поводу "NoSQL" не имеет никакого отношения к SQL

    29 апреля

  • Материалы конференции "Корпоративные Базы Данных-2010"

  • Разные облики технологии баз данных (отчет о конференции)

    14 апреля

  • MapReduce: внутри, снаружи или сбоку от параллельных СУБД?

  • Научные вызовы технологиям СУБД

    Обзоры журнала Computer:

    31 марта

  • Рационализация согласованности в "облаках": не платите за то, что вам не требуется

  • Взаимные блокировки в Oracle

  • Архитектура среды тестирования на основе моделей, построенная на базе компонентных технологий

  • Объектное представление XML-документов

    Газета:

  • Microsoft для российских разработчиков: практика с элементами фундаментальности

    10 марта

  • HadoopDB: архитектурный гибрид технологий MapReduce и СУБД для аналитических рабочих нагрузок

  • Классификация OLAP-систем вида xOLAP

  • BGP. Три внешних канала. Балансировка исходящего и входящего трафиков

    Газета:

  • Что мы знаем об iPhone 4G?

    17 февраля

  • MapReduce и параллельные СУБД: друзья или враги?

  • Объектно-ориентированное программирование в ограничениях: новый подход на основе декларативных языков моделирования данных

  • Системологический подход к декомпозиции в объектно-ориентированном анализе и проектировании программного обеспечения

    Газета:

  • Эволюция Wine

    3 февраля

  • Дом на песке

  • Реальное переосмысление "формальных методов"

  • Интервью с Найджелом Пендзом

    Газета:

  • iPad. Первый взгляд на долгожданный планшет от Apple

  • Я не верю в iPad

    20 января

  • SQL/MapReduce: практический подход к поддержке самоописываемых, полиморфных и параллелизуемых функций, определяемых пользователями

  • Данные на лету: как технология потокового SQL помогает преодолеть кризис

    Обзоры журнала Computer:

    2 декабря

  • Сергей Кузнецов. Год эпохи перемен в технологии баз данных

    18 ноября

  • Генерация тестовых программ для подсистемы управления памятью микропроцессора

  • Сравнительный анализ современных технологий разработки тестов для моделей аппаратного обеспечения

    Все публикации >>>


  • IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

    Информация для рекламодателей PR-акции, размещение рекламы — тел. +7 495 6608306, ICQ 232284597 Пресс-релизы — pr@citforum.ru
    Послать комментарий
    Информация для авторов

    Редакция раздаёт котят!

    Rambler's Top100 TopList liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня This Web server launched on February 24, 1997
    Copyright © 1997-2000 CIT, © 2001-2009 CIT Forum
    Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...