Как выразить «нет информации» в реляционной алгебре? - PullRequest
0 голосов
/ 27 октября 2018

Задача, над которой я работаю по изучению реляционной алгебры, - попросить меня найти клиентов, которые хотят арендовать недвижимость бесплатно или не предоставили информацию о том, сколько они готовы заплатить. таблица выглядит так:

Клиент (clientNo, firstName, lastName, maxRent)

У меня возникли проблемы с поиском какой-либо информации о том, как представить отсутствие информации или пустую точку данных ... до сих пор я придумал это, где половина выражения представляет собой код psuedo:

σ maxRent = 0 ИЛИ [информация не указана] (Клиент)

1 Ответ

0 голосов
/ 27 октября 2018

Какие строки идут в этой таблице?Как мы можем ответить, не зная этого?Как можно запросить, не зная об этом?

Предположим, в вашей таблице содержатся строки, в которых "client [clientid] с именем [firstname] [lastname] готов заплатить [maxrent]".Если конкретный клиент не имеет ни имени, ни фамилии, в этой таблице нет строки для него.Вы не можете ответить на ваш запрос с ним.Если у них есть имена и фамилии, но вы их не знаете, вы не можете накрывать на стол - вы не можете продолжить - эта таблица не для вас.Давайте предположим, что у нас есть все имена клиентов.Но мы также не можем продолжить, если не знаем, сколько они готовы заплатить.

Предположим, в вашей таблице содержатся строки, в которых "clent [clientid] named [firstname] [lastname] сказал, что они готовызаплатить [maxrent] ".Тогда вы можете использовать его для клиентов, которые дали максимальную арендную плату.Но он не может ничего записать для других клиентов.Однако, если у вас также есть таблица, содержащая строки для «client [clientid] с именем [firstname] [lastname] не сказал, что они готовы заплатить», то вы можете записать для всех клиентов.Таким образом, вы можете ответить на ваш запрос.

Предположим, ваша таблица содержит строки, в которых "cilent [clientid] с именем [firstname] [lastname] либо сказал, что они готовы заплатить [maxrent], либо не сказал, сколько ониготовы платить и [maxrent] = 'xxx' ".Если у вас есть идентификатор и имена клиента, но они не сказали, сколько готовы заплатить, для них есть строка с maxrent = 'xxx'.Затем вы можете написать свой запрос - ваш «[информация не указана]» означает maxrent = 'xxx'.

Предположим, что вместо этой таблицы у нас есть две таблицы, "client [clientid] называется [firstname] [фамилия] "&" клиент [клиентский] готов заплатить [максимальный] ".Тогда ваша таблица по своему значению представляет собой определенный запрос этих новых таблиц по их значениям.И каждая из новых таблиц может быть выражена в терминах старых.Существует простое соответствие между запросом в одном дизайне и одним в другом.Таким образом, мы можем написать ваш запрос.

В SQL принято использовать NULL в качестве специального значения вместо «xxx».Значение таблицы будет следующим: «клиент [clientid] с именем [имя] [фамилия] либо сказал, что они готовы заплатить [maxrent], либо не сказал, сколько они готовы заплатить, а [maxrent] равно NULL».Операторы в SQL обрабатывают NULL специально - они не те же операторы, что и реляционные или обычные операторы с одинаковыми именами.

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

(В определенном учебнике, из которого, несомненно, составлена ​​ваша таблица, maxrent может быть NULL. Они также никогда не могут четко сказать, какие строки входят вих таблицы. Но идея состоит в том, что каждая таблица, которая может иметь значения NULL, имеет значение, которое является очевидным преобразованием очевидного значения без нуля. Они ошибочно и нечетко говорят: «Без нулей становится необходимым вводить ложные данные для представления этогоуказать или добавить дополнительные атрибуты, которые могут не иметь смысла для пользователя. «Они также говорят много типичных нечетких бесполезных вещей, таких как« ноль не является значением ».)

(непонятно, что вы подразумеваете под«неизвестная информация» или «выражение» чего-то, что не известно, или «пустая точка данных». Можно выразить , что никто не знает значений, удовлетворяющих условию. Но каждая строка втаблица утверждает утверждение, сделанное из его значения, и каждая строка не в нем (соответствующего типа) подтверждаетотрицание утверждения сделано из его значения.)

Реляционные запросы.
Что делать с нулевыми значениями при моделировании и нормализации?

...