Можно ли выразить ненулевое ограничение, используя реляционное исчисление? - PullRequest
0 голосов
/ 05 января 2019

Я понимаю, что реляционное исчисление основано на логике первого порядка и, как таковое, не имеет понятия нулевых значений, однако в запросе в реляционной алгебре с помощью анти-объединения может быть выражено ненулевое ограничение. Есть ли эквивалентный механизм для выражения такого запроса, используя только реляционное исчисление?

Например, может ли базовый запрос SQL в форме: ВЫБРАТЬ * из x ГДЕ У НЕ НУЛЬ выражаться с помощью реляционного исчисления?

1 Ответ

0 голосов
/ 08 января 2019

Э. Ф. Кодд предложил ввести нулевые значения в реляционную модель, но, похоже, он никогда не имел дела с последствиями. В своей книге «Реляционная модель для управления базами данных» он предложил использовать два различных типа нулевой и четырехзначной логики. Он предположил, что такая система будет нуждаться в алгоритме обнаружения тавтологии, чтобы гарантировать, что правильный результат (или, по крайней мере, полезный, понятный результат) будет возвращен для некоторых запросов. Мне кажется, что такая схема должна быть непрактичной и обречена на провал, хотя у меня нет доказательств. Мне кажется маловероятным, что пользователи смогут правильно понимать тавтологию.

В соответствии со схемой Кодда операции короткого замыкания, такие как x = x, предположительно оцениваются как истинные, даже при наличии нулевых значений. Авторы SQL, конечно, не следовали схеме Кодда, и в этом заключается трудность. Не существует единого непротиворечивого набора правил для обработки нулей ни в теории, ни в работающем программном обеспечении, поэтому, если вы не объясните такую ​​систему и ее правила, ваш вопрос остается без ответа.

...