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


         

в гораздо меньшей степени формалист.


Грант в гораздо меньшей степени формалист. Его не очень беспокоит терминология. В его статье "базы данных выполняют запросы", и совершенно спокойно используется термин 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'ов. Рано или поздно эти дефекты нужно устранить. Наверное, уже всем ясно, что от этого языка нам никуда не деться. Значит, нужно его, по мере возможности, приводить в порядок.

Итак, Вашему вниманию предлагаются статьи:
  • К. Дж. Дейт.


  • Джон Грант.



Содержание  Назад