|
Программирование >> Хронологические базы данных
некоторый атрибут кортежа содержит значение NULL ). Результатом любых операций сравнения, в которых один из операндов содержит неопределенное значение, служит третье логическое значение unknown (сокращенно - ипк), поэтому такая логика называется трехзначной. Кроме того, отмечалось, что, по крайней мере концептуально, информация может отсутствовать по целому ряду причин, поэтому существуют различные виды неопределенных значений (NULL). Для одного из видов неопределенных значений - значение не определено - было предложено удобное сокращение UNK. Далее исследовалось влияние использования величины UNK и трехзначной логики на вычисление логических выражений, кванторов FORALL и EXISTS, вычисляемых выражений и реляционных операторов произведения, выборки, проекции, объединения, пересечения и вычитания, а также на выполнение операторов обновления INSERT и UPDATE. В этой главе были представлены оператор IS UNK (проверяющий наличие величины UNK), оператор IF UNK (для преобразования величины UNK в логическое значение, отличное от UNK) и оператор MAYBE (для преобразования значения ипк в true). Дополнительно обсуждалась проблема кортежей-дубликатов с учетом присутствия величины UNK. Кроме того, было особо подчеркнуто, что величина UNK и логическое значение ипк - это не одно и то же. Затем рассматривались некоторые следствия изложенных идей. Было показано, что некоторые эквивалентности двухзначной логики не являются эквивалентностями в трехзначной логике. В результате пользователи и программы-оптимизаторы СУБД могут совершать ошибки в процессе преобразования выражений. Но даже без учета названных ошибок трехзначная логика обладает одним очень серьезным недостатком - она не соответствует реальному миру, т.е. результаты операций в трехзначной логике не всегда корректны по отношению к ситуации в реальном мире. После описывались последствия присутствия неопределенных значений в первичных и внешних ключах (в частности, упоминались правила поддержки целостности сущностей и пересмотренное правило поддержки ссылочной целостности). Было сделано отступление для описания внешнего соединения. Отмечалось, что автор не является сторонником прямой поддержки этой операции (по крайней мере, в ее обычном смысле), так как считает, что существует лучшее решение той проблемы, которую призвано решать внешнее соединение. В частности, автор предлагает использовать решения на основе атрибутов со значениями-отношениями. Также кратко рассматривалась возможность существования и других внешних операций, в частности операции внешнего объединения. В данной главе проанализирована поддержка изложенных идей в стандарте языка SQL. В трактовке проблемы отсутствия информации в стандарте языка SQL широко используется трехзначная логика, но эта трактовка вносит множество осложнений, описание которых выходит за рамки данной книги. И действительно, в дополнение к собственным недостаткам трехзначной логики ([18.6], [18.10]) стандарт языка SQL вносит свои недостатки. Более того, эти дополнительные недостатки, по сути, выступают как факторы замедления процесса оптимизации (более подробно это обсуждается в конце главы 7). В заключение попытаемся кратко сформулировать некоторые дополнительные замечания. Читатель, безусловно, согласится, что проблемы, связанные с использованием неопределенных значений и трехзначной логики, описаны в книге несколько сжато. Тем не менее здесь представлен достаточно большой объем материала, позволяющего убедиться в том, что преимущества , достигаемые при использовании трехзначной логики, более чем сомнительны. Следует также заметить, что даже если читатель не слишком озабочен проблемами, связанными с использованием трехзначной логики, ему все же рекомендуется избегать применения соответствующих возможностей языка SQL из-за упоминавшихся выше дополнительных недостатков . Исходя из всего сказанного, автор рекомендует пользователям СУБД полностью игнорировать все средства поддержки трехзначной логики, предоставленные разработчиком выбранного им продукта. Вместо них целесообразно использовать более строгий механизм специальных значений (благодаря своей строгости остающийся в рамках двухзначной логики). Подобная схема подробно описана в [18.12]. И наконец повторим важное утверждение, сформулированное в разделе 18.6. Очень нестрого говоря, если значение данного атрибута данного кортежа данного отношения является неопределенным , то в этой позиции атрибута вообще ничего не содержится. Это означает, что данный атрибут уже не является атрибутом, что этот кортеж уже не является кортежем, что это отношение уже не является отношением и для обоснования наших дальнейших действий (какими бы они ни были) использовать математическую реляционную теорию уже нельзя. Упражнения 18.1. Укажите логические результаты вычисления следующих выражений, если А = 6, В = 5, С = 4иО содержит величину UNK. а) А = В OR ( В > С AND А > D ) б) А > В AND ( В < С OR IS UNK ( А - D ) ) в) А < С OR В < С OR NOT ( А = С ) г) B<DORB = DORB>D д) MAYBE ( А > В AND В > С ) е) MAYBE ( IS UNK ( D ) ) ж) MAYBE ( IS UNK ( A + В ) ) з) IF UNK ( D, A ) > В AND IF UNK ( C, D ) < В 18.2. Отношение г содержит следующие кортежи. ( 6, 5, 4 ) ( UNK, 5, 4 ) ( 6, UNK, 4 ) ( UNK, UNK, 4 ) ( UNK, UNK, UNK ) Как было сказано выше в этой главе, предположим, что три атрибута в указанном порядке слева направо называются А, В и С соответственно и каждый атрибут имеет тип INTEGER. Укажите логические результаты вычисления следующих выражений, где V - переменная диапазона, принимающая значения из отношения г. а) EXISVS V ( V.B > 5 ) б) EXISVS V { V.B > 2 AND V.C > 5 ) в) EXISVS V ( MAYBE ( V.C > 3 ) ) г) EXISVS V ( MAYBE ( IS UNK ( V.C ) ) ) д) FORALL V ( V.A > 1 ) е) FORALL V ( V.B > 1 OR IS UNK ( V.B ) ) ж) FORALL V ( MAYBE ( V.A > V.B ) ) 18.3. Строго говоря, оператор IS UNK не нужен. Почему? 18.4. В [13.6] Кодд предложил maybe-версии для некоторых операторов реляционной алгебры. Например, тауЬе-выборка отличается от обычного оператора выборки тем, что возвращает кортежи, для которых условие выборки принимает значение ипк, а не true. Тем не менее, строго говоря, подобные операторы не нужны. Почему? 18.5. В двухзначной логике существует только два логических значения - true и false. Следствием этого является существование ровно четырех возможных унарных логических операторов: один преобразует оба значения в true, второй преобразует оба значения в false, третий преобразует true в false и наоборот (т.е. это оператор NOT) и четвертый сохраняет значение операнда неизменным. Кроме того, существует ровно 16 возможных бинарных логических операторов (см. таблицу истинности, приведенную ниже). А В Докажите, что все четыре унарных оператора и все шестнадцать бинарных операторов можно записать с помощью комбинаций операторов NOT, AND и OR (следовательно, нет необходимости явно поддерживать все двадцать операторов). 18.6. Сколько логических операторов может быть в трехзначной логике? А в четырехзначной? А для более общего случая - в л-значной логике? 18.7. (Взято из [18.5].) На рис. 18.5 приведен набор данных для очередного варианта базы данных поставщиков и деталей. Этот вариант отличается от предыдущих тем, что в отношение SP включен атрибут SHIPI (номер партии), а атрибут Р в этом отношении определен как разрешающий использование величины UNK. (Отношение Р в данном примере не используется и в упражнении не описывается.)
Puc. 18.5. Вариант базы данных поставщиков и деталей Рассмотрим следующее выражение реляционного исчисления.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки. |