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

       

Критика критики


Но Дейт ошибается. Проблема состоит не в том, согласуются ли с реальностью результаты SQL, а в том, что Дейт неудачно формулирует свой исходный запрос «Выдать пары SNO-PNO, для которых либо поставщик и деталь располагаются в разных городах, либо город, в котором располагается деталь, не является Парижем (или выполняются оба эти условия)». Формулировка на SQL на самом деле не соответствует этому запросу. В действительности, запрос Дейта не может быть правильно транслирован на SQL, поскольку он предполагает наличие традиционной двухзначной логики, а SQL имеет дело с трехзначной логикой.

В традиционной логике высказывания бывают истинными или ложными. Т.е. деталь P1 располагается в Париже или не располагается. В трехзначной логике, используемой в SQL, высказывания бывают истинными, ложными или неизвестными (unknown). После появления возможности неизвестных высказываний деталь P1 не обязана располагаться или не располагаться в Париже. Теперь мы можем знать, что деталь P1 располагается в Париже, что деталь P1 не располагается в Париже, а можем не знать, где располагается деталь P1.

Запросы необходимо формулировать в соответствии с требованиями используемой в языке запросов логической системы. В традиционной двухзначной логической системе должна иметься возможность классификации утверждений на «истинные» и «ложные». При использовании трехзначной логической системы должны также допускаться «неизвестные» утверждения. В исходном запросе Дейта подразумевается двухзначная логика. Рассмотрим первую часть запроса: «Выдать пары SNO-PNO, для которых … поставщик и деталь располагаются в разных городах». В этом запросе подразумевается, что города, в которых располагается поставщик и деталь, либо различны, либо совпадают. Но в трехзначной логической системе SQL города поставщика и детали могут совпадать, могут не совпадать, а может быть просто неизвестно, различны они или совпадают. Аналогично обстоит дело со второй частью запроса: ««Выдать пары SNO-PNO, для которых … город, в котором располагается деталь, не является Парижем».

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