Можно ли выразить ненулевое ограничение с помощью реляционного исчисления?

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

Например, может ли базовый SQL-запрос в форме: SELECT * from x WHERE y IS NOT NULL быть выражен с использованием реляционного исчисления?


person mdmjsh    schedule 05.01.2019    source источник
comment
WHERE y=y будет достаточно   -  person wildplasser    schedule 05.01.2019
comment
Хорошее предложение - очень элегантно. Использование силы NULL != NULL   -  person mdmjsh    schedule 05.01.2019
comment
Реляционная алгебра или исчисление имеет нуль тогда и только тогда, когда определено, что она и ее операторы обрабатывают любой нуль так, как они определены. В SQL null — это значение, которое операторы SQL обрабатывают особым образом. Обычно/исторически, когда говорят об реляционной алгебре или исчислении, подразумевается, что нуля нет. Но у некоторых он есть — как правило, они изобретены для учебника по апологетике SQL. Ваш вопрос бессмыслен, если вы не определите свою алгебру и исчисление. (И тогда ответ становится очевидным.)   -  person philipxy    schedule 06.01.2019
comment
comment
Ограничения и запросы — разные вещи. Также значение каждого из этих терминов зависит от контекста. Но похоже, что когда вы говорите не нулевое ограничение, вы имеете в виду что-то вроде предикатного выражения с одной свободной (логической) переменной, которое истинно тогда и только тогда, когда его свободной переменной присвоено значение, отличное от нуля. Но ты не ясен. PS Вы пометили это реляционным исчислением кортежей, но в своем вопросе просто сказали реляционное исчисление. Вы понимаете, что существует два вида реляционного исчисления: кортеж и домен? Вы действительно заботитесь о чем-то конкретном?   -  person philipxy    schedule 07.01.2019


Ответы (1)


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

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

person nvogel    schedule 08.01.2019