Скачиваний:
82
Добавлен:
02.05.2014
Размер:
2.28 Mб
Скачать

18.8. Резюме

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

некоторый атрибут кортежа содержит "значение 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, C = 4hD содержит величину UNK.

а) А = В OR ( В > С AND А > D )

б) А > В AND ( В < С OR ISJJNK ( А - D ) )

в) А < С OR В < С OR NOT ( А = С )

г) B<DORB = DORB>D

д) MAYBE ( А > В AND В > С )

е) MAYBE ( ISJJNK ( D ) )

ж) MAYBE ( ISJJNK ( A + В ) )

з) IFJJNK ( D, A ) > В AND IFJJNK ( C, D ) < В

18.2. Отношение г содержит следующие кортежи.

{ 6,

5,

4 )

( UNK,

5,

4 )

( 6,

UNK,

4 )

( UNK,

UNK,

4 )

{ UNK,

0NK,

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 ( ISJJNK { V.C ) ) )

д) FORALL V ( V.A > 1 )

е) FORALL V ( V.B > 1 OR IS_UNK ( V.B ) )

ж) FORALL V ( MAYBE ( V.A > V.B ) )

  1. Строго говоря, оператор IS_UNK не нужен. Почему?

  2. В [13.6] Кодд предложил "maybe''-версии для некоторых операторов реляци- онной алгебры. Например, maybe-выборка отличается от обычного оператора выборки тем, что возвращает кортежи, для которых условие выборки прини- мает значение ипк, а не true. Тем не менее, строго говоря, подобные операторы не нужны. Почему?

  3. В двухзначной логике существует только два логических значения — true и false. Следствием этого является существование ровно четырех возможных унарных логических операторов: один преобразует оба значения в true, второй преобразу- ет оба значения в false, третий преобразует true в false и наоборот (т.е. это опера- тор NOT) и четвертый сохраняет значение операнда неизменным. Кроме того, существует ровно 16 возможных бинарных логических операторов (см. таблицу истинности, приведенную ниже).

А

В

t

t

t

t

t

t

t

t

t

t

f

f

f

f

f

f

f

f

t

f

t

t

t

t

f

f

£

f

t

t

t

t

f

f

f

f

f

t

t

t

f

f

t

t

f

f

t

t

f

f

t

t

f

f

f

f

t

f

t

f

t

f

t

f

t

f

t

f

t

f

t

f

Докажите, что все четыре унарных оператора и все шестнадцать бинарных опера- торов можно записать с помощью комбинаций операторов NOT, AND и OR (следовательно, нет необходимости явно поддерживать все двадцать операторов).

  1. Сколько логических операторов может быть в трехзначной логике? А в четырех- значной? А для более общего случая — в и-значной логике?

  2. (Взято из [18.5].) На рис. 18.5 приведен набор данных для очередного варианта ба- зы данных поставщиков и деталей. Этот вариант отличается от предыдущих тем, что в отношение SP включен атрибут SHIP! (номер партии), а атрибут Р| в этом отношении определен как разрешающий использование величины UNK. (Отношение Р в данном примере не используется и в упражнении не описывается.)

s#

SNAME

STATUS

CITY

SP

SHIP#

S#

p#

QTY

SI

Smith

20

London

SHIP1

SI

PI

300

S2

Jones

10

Paris

SHIP2

S2

P2

200

S3

Blake

30

Paris

SHIP3

S3

UNK

400

S4

Clark

20

London

Рис. 18.5. Вариант базы данных поставщиков и деталей Рассмотрим следующее выражение реляционного исчисления.

S WHERE NOT EXISTS SP { SP.Sf = S.Si AND

SP.Pi = PI ( 'P2' ) )

Здесь S и SP — это неявные переменные диапазона. Какая из следующих интерпре- таций запроса будет корректна (если таковая вообще существует)?

а) Получить сведения о поставщиках, которые не поставляют деталь с номером 'Р2\

б) Получить сведения о поставщиках, о которых неизвестно, поставляют ли они де- таль с номером 'Р2'.

в) Получить сведения о поставщиках, о которых известно, что они не поставляют деталь с номером ' Р2'.

г) Получить сведения о поставщиках, о которых либо известно, либо не известно, что они поставляют деталь с номером 'Р2'.

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

Список литературы

18.1. Codd E.F. and Date C.J. Much Ado About Nothing // C.J. Date. Relational Database Writings 1991-1994. — Reading, Mass.: Addison-Wesley, 1995.

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

18.2. Darwen Н. Into the Unknown // C.J. Date. Relational Database Writings 1985-1989. — Reading, Mass.: Addison-Wesley, 1990.

В этой работе поднимается ряд дополнительных вопросов в отношении использова- ния неопределенных значений и трехзначной логики, наиболее сложным из которых является следующий: "Если (как показано в упр. 5.9 в главе 5) отношение TABLE DEE соответствует значению true, а отношение TABLE_DUM - значению false и если отно- шения TABLE_DEE и TABLE_DUM являются единственными возможными экземплярами отношения степени «нуль», то что же соответствует значению ипк?".

18.3. Darwen Н. Outer Join with No Nulls and Fewer Tears // C.J. Date and Hugh Darwen. Relational Database Writings 1989-1991. — Reading, Mass.: Addison-Wesley, 1992.

В работе предложен простой вариант "внешнего соединения", в котором не ис- пользуются неопределенные значения и решается много других задач, которые должны были устраняться с помощью внешних соединений.

18.4. Date C.J. The Outer Join // C.J. Date. Relational Database: Selected Writings. — Read- ing, Mass.: Addison-Wesley, 1986.

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

  1. Date C.J. NOT is Not "Not"! (Notes on Three-Valued Logic and Related Matters) // C.J. Date. Relational Database Writings 1985-1989. — Reading, Mass.: Addison-Wesley, 1990. Предположим, что выражение X имеет тип BOOLEAN. В этом случае оно должно иметь одно из значений true, false или ипк. Тогда утверждение "X не равно true" оз- начает, что значением выражения X является либо значение ипк, либо значение false. В противоположность этому выражение X = NOT true имеет значение false (см. таблицу истинности для операции NOT). Таким образом, действие операции NOT в языке трехзначной логики не соответствует частице "не" в обычном языке... Этот факт уже привел в замешательство многих (включая разработчиков стандарта языка SQL) и, несомненно, будет продолжать удивлять.

  2. Date C.J. EXISTS is Not "Exist"! (Some Logical Flaws in SQL) // C.J. Date. Relational Database Writings 1985-1989. — Reading, Mass.: Addison-Wesley, 1990.

В этой статье утверждается, что оператор EXISTS языка SQL не является идентич- ным квантору существования языка трехзначной логики, потому что он всегда ра- вен либо true, либо false и никогда не равен ипк, даже если ипк является логически корректным ответом.

18.7. Date C.J. Watch Out for Outer Join // C.J. Date and Hugh Darwen. Relational Database Writings 1989-1991. — Reading, Mass.: Addison-Wesley, 1992.

В разделе 18.5 утверждается, что внешнее соединение обладает несколькими "неприятными свойствами". В этой работе приводится перечень подобных свойств.

  1. Внешнее в-соединение не является выборкой из результата декартова произве- дения.

  1. Выборка не распространяется на операции внешнего в-соединения.

  1. В трехзначной логике выражение А < В— это не то же самое, что выражение А < В OR А = В.

  1. В трехзначной логике операции в-сравнения не транзитивны.

  1. Внешнее естественное соединение не является проекцией внешнего соединения по эквивалентности.

В статье также рассматривается влияние, оказанное на конструкты SELECT-FROM- WHERE в результате введения в язык SQL поддержки внешних соединений.

  1. Операция расширения в предложении WHERE не работает.

  2. Оператор AND, связывающий операции внешнего соединения и выборки, не ра- ботает.

  3. Включение условия соединения в предложение WHERE не работает.

  4. Внешние соединения из более чем двух отношений не могут быть сформулиро- ваны без использования вложенных выражений.

  5. Операция расширения в предложении SELECT (только) не работает.

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

18.8. Date C.J. Composite Foreign Keys and Nulls // C.J. Date and Hugh Darwen. Relational Database Writings 1989-1991. — Reading, Mass.: Addison-Wesley, 1992.

В этой статье рассматривается возможность полного и частичного присутствия не- определенных значений во внешних ключах.

  1. Date C.J. Three-Valued Logic and the Real World // C.J. Date and Hugh Darwen. Relational Database Writings 1989-1991. — Reading, Mass.: Addison-Wesley, 1992.

  2. Date C.J. Oh No Not Nulls Again // C.J. Date and Hugh Darwen. Relational Database Writings 1989-1991. — Reading, Mass.: Addison-Wesley, 1992.

В этой статье приводится дополнительная информация о неопределенных значениях. 18.11.Date C.J. A Note on the Logical Operators Of SQL // Relational Database Writings 1991-1994. — Reading, Mass.: Addison-Wesley, 1995.

Для любой и-значной логики, где п > 2, возникают следующие вопросы.

  • Каков наиболее подходящий набор примитивных операторов? (Например, как множество операторов {NOT, AND}, так и множество операторов {NOT, OR} явля- ются подходящими примитивными наборами для двухзначной логики.)

  • Каков подходящий набор полезных операторов? (Например, множество {NOT, AND, OR} — подходящий полезный набор для двухзначной логики.)

В данной статье показано, что стандарт SQL (при очень вольной интерпретации) прямо или косвенно поддерживает все 19 710 операторов трехзначной логики. Тем не менее необходимо обратить внимание на то, что в логике операторы оперируют предикатами и предложениями, в то время как в языке SQL (даже при вольной ин- терпретации) операторы оперируют только предложениями. 18.12.Date C.J. Faults and Defaults (in five parts) // C.J. Date, Hugh Darwen and David McGoveran. Relational Database Writings 1994-1997.— Reading, Mass.: Addison-Wesley, 1998.


В трехзначной логике (3VL) используются три логических значения — true, false и unknown (обозначенные здесь как t,f и и соответственно). Следовательно, в трех- значной логике может быть 3*3*3 = 27 возможных унарных операторов, так как каждое из трех возможных входных значений t,fnu может отображать любое из трех возможных выходных значений г,/и и. По той же причине в трехзначной логике может быть 39=19 683 возможных бинарных оператора (см. таблицу, при- веденную ниже).

t

u

f

t

t/u/f

t/u/f

t/u/f

U

t/u/f

t/u/f

t/u/f

f

t/u/f

t/u/f

t/u/f

Фактически в более общем случае и-значная логика (nVL) включает и в степени п

унарных операторов и и в

степени n бинарных операторов (см. таблицу, приве-

денную ниже).

Унарные операторы

Бинарные операторы

2VL

4

16

3VL

27

19 683

4VL

256

4 294 967 296

nVL

(»)**(«)

(я)**(«2)

Разработан систематический подход к проблеме отсутствия информации, ос- нованный на использовании значений по умолчанию и двухзначной логики вместо неопределенных значений и трехзначной логики. В статье аргументи- ровано доказывается, что значения по умолчанию — это то, что мы использу- ем в реальном мире (в реальном мире такого понятия, как NULL, не существует). Таким образом, желательно, чтобы системы баз данных были максимально приближены к реальному миру. 18.13.Debabrata Dey and Sumit Sarkar. A Probabilistic Relational Model and Algebra // ACM TODS 21, No. 3, September, 1996.

В этой статье предлагается способ работы с "неопределенностью в значениях дан- ных" на основе теории вероятности вместо неопределенных значений и трехзнач- ной логики. "Вероятностная реляционная модель" является совместимым расши- рением обычной реляционной модели. 18.14.Cesar A. Galindo-Legaria. Outerjoins and Disjunctions // Proc. 1994 ACM SIGMOD Int. Conf. On Management of Data, Minneapolis, Minn., May, 1994.

Внешнее соединение в общем случае не является ассоциативным оператором [18.4]. Эта статья точно характеризует те внешние соединения, которые являются ассоциативными, и те, которые не являются таковыми. В ней также предлагаются стратегии реализации каждого случая. 18.15.Cesar A. Galindo-Legaria and Arnon Rosenthal. Outerjoin Simplification and Reordering for Query Optimization // ACM TODS 22, No. 1, March, 1997.

В этой статье представлен "полный набор правил преобразования" для выражений, включающих внешние соединения. 18.16. Piyush Goel and Bala Iyer. SQL Query Optimization: Reordering for a General Class of Queries // Proc. 1996 ACM SIGMOD Int. Conf. on Management of Data, Montreal, Canada, June, 1996.

Так же, как и в [18.15], в этой статье рассматриваются выражения преобразования с внешними соединениями: "[Мы] предлагаем метод переупорядочения [произ- вольного] SQL-запроса с соединениями, внешними соединениями и... обобщаю- щими функциями... [Мы] предлагаем мощное и простое средство [для упрощения такого переупорядочения, которое называется] обобщенная выборка". 18.17.Heath I.J. IBM internal memo. —April, 1971.

В статье впервые вводится термин (и концепция) "внешнее соединение".

18.18. Liu К.-С, Sunderraman R. Indefinite and Maybe Information in Relational Databases // ACM TODS. — March, 1990. — 15, № 1.

Содержит набор формальных предложений по расширению реляционной модели для работы с возможной информацией (например, "деталь с номером 'Р7' может быть черной") и с неопределенной или дизъюнктивной информацией (например, "деталь с номером 'Р8' или номером 'Р9' красная"). Представлены таблицы ис- тинности (l-tables) для нормальной (определенной), возможной и неопределенной информации. Для работы с таблицами истинности расширены операторы выборки, проекции, произведения, объединения, пересечения и вычитания. 18.19.Maier D. The Theory of Relational Databases. — Rockville, Md.: Computer Science Press, 1983.

18.20.McGoveran D. Nothing from Nothing // C.J. Date, Hugh Darwen and David McGoveran. Relational Database Writings 1994-1997. — Reading, Mass.: Addison-Wesley, 1998. Работа состоит из четырех частей. В части I показано определяющее значение логики в системах баз данных. В части II объясняется, почему эта логика должна быть двух- значной и почему попытки использовать трехзначную логику не приветствуются. В части III рассматривается, как можно "разрешить" проблемы трехзначной логики. И наконец в части IV приводится ряд прагматических решений этих проблем.

18.21.RescherN. Many-Valued Logic. — New-York, N.Y.: McGraw-Hill, 1969. Стандартный учебник по многозначной логике.

Ответы к некоторым упражнениям

  1. Вариант а— значение ипк; вариант б— значение true; вариант в— значение true; вариант г — значение ипк (обратите внимание на то, что интуитивно предполагает- ся другой ответ); вариант д — значение false; вариант е — значение false (обратите внимание на то, что оператор ISJJNK никогда не возвращает значение ипк); вари- ант ж — значение false; вариант з — значение true.

  2. Вариант а— значение ипк; вариант б— значение ипк; вариант в— значение true; вариант г — значение false; вариант д — значение ипк; вариант е — значение true; вариант ж — значение false.

  3. Это следует из приведенного ниже тождества.

ISJJNK ( х ) = MAYBE ( х = х )

  1. Так как, например, выражение MAYBE_RESTRICT г WHERE р аналогично выражению Г WHERE MAYBE(p).

  2. Четыре унарных оператора могут быть определены следующим образом (здесь А — единственный операнд).

А

NOT(A)

A OR NOT(A)

A AND NOT(A)

16 бинарных операторов могут быть определены следующим образом (здесь А и В — два возможных операнда).

A OR NOT(A) OR В OR NOT(В) A AND NOT(A) AND В AND NOT(B) A

NOT(A) В

NOT(B)

A OR В

A AND В

A OR NOT(B)

A AND NOT(B)

NOT(A) OR В

NOT(A) AND В

NOT(A) OR NOT(В)

NOT(A) AND NOT(В5

(NOT(A) OR B) AND (NOT(B) OR A)

(NOT(A) AND B) OR (NOT(B) AND A)

Чтобы убедиться в том, что одновременное использование операторов AND и OR не является необходимым, обратите внимание на следующее выражение.

A OR В = NOT ( NOT ( А ) AND { NOT ( В ) )

  1. См. комментарий к [18.11].

  2. Корректен вариант в. Более подробная информация приводится в [18.8]. Дополнительное упражнение. Для интерпретации варианта б предложите форму- лировку с использованием реляционного исчисления.

  3. Опишем кратко представление, используемое в СУБД DB2. В ней столбец табли- цы, который может принимать неопределенные значения, физически представлен в хранимой базе данных двумя столбцами— столбцом непосредственно данных и скрытым столбцом индикатора (длиной 1 байт), сохраняемым как префикс для столбца фактических данных. Значение в столбце индикатора, состоящее из дво- ичных единиц, указывает, что соответствующее значение в столбце данных должно игнорироваться (т.е. восприниматься как неопределенное значение); значение в столбце индикатора, состоящее из двоичных нулей, указывает, что соответствую- щее значение в столбце данных должно восприниматься, как реальное значение. Безусловно, столбец индикатора всегда скрыт от пользователя.

Соседние файлы в папке Дейт К. Дж. Введение в системы баз данных [7 издание]