- •Глава 13. Семантическое моделирование
- •Часть III Проектирование базы данных
- •Часть IV
- •14.1. Введение
- •14.2. Транзакции
- •14.3. Восстановление транзакции
- •14.4. Восстановление системы
- •14.5. Восстановление носителей
- •14.6. Двухфазная фиксация
- •14.7. Поддержка языка sql
- •14.8. Резюме
- •15.1. Введение
- •15.2. Три проблемы параллельности
- •15.3. Блокировка
- •15.4. Устранение трех проблем параллельности
- •15.5. Взаимная блокировка
- •15.6. Упорядочиваемость
- •15.7. Уровни изоляции
- •15.8. Блокировка намерения
- •15.9. Средства языка sql
- •15.10. Резюме
- •Часть V
- •16.1. Введение
- •16.2. Избирательная схема управления доступом
- •16.3. Мандатная схема управления доступом
- •16.4. Статистические базы данных
- •16.5. Шифрование данных
- •16.6. Средства языка sql
- •16.7. Резюме
- •17.1. Введение
- •17.2. Пример выполнения оптимизации
- •17.3. Оптимизация запросов
- •17.4. Преобразование выражений
- •17.5. Статистические показатели базы данных
- •17.6. Стратегия по принципу "разделяй и властвуй"
- •17.7. Реализация реляционных операторов
- •17.8. Резюме
- •18.1. Введение
- •18.2. Обзор концепции трехзначной логики
- •18.3. Некоторые следствия изложенной схемы
- •18.4. Отсутствующие значения и ключи
- •18.5. Внешнее соединение
- •18.6. Специальные значения
- •18.7. Поддержка неопределенных значений в языке sql
- •18.8. Резюме
- •Глава 19
- •19.1. Введение
- •19.2. Иерархия типов
- •19.3. Полиморфизм и заменимость
- •19.4. Переменные и операция присвоения
- •19.5. Специализация по ограничениям
- •19.6. Операции сравнения
- •19.7. Операторы, версии и сигнатуры
- •19.8. Является ли окружность эллипсом
- •19.9. Пересмотр специализации ограничением
- •19.10. Резюме
- •20.1. Введение
- •20.2. Предварительные сведения
- •20.3. Двенадцать основных целей
- •1. Локальная независимость
- •2. Отсутствие опоры на центральный узел
- •3. Непрерывное функционирование
- •4. Независимость от расположения
- •5. Независимость от фрагментации
- •6. Независимость от репликации
- •7. Обработка распределенных запросов
- •8. Управление распределенными транзакциями
- •9. Аппаратная независимость
- •10. Независимость от операционной системы
- •11. Независимость от сети
- •12. Независимость от типа субд
- •20.4. Проблемы распределенных систем
- •Транзакция т1х
- •20.5. Системы "клиент/сервер"
- •20.6. Независимость от субд
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 ) )
Строго говоря, оператор IS_UNK не нужен. Почему?
В [13.6] Кодд предложил "maybe''-версии для некоторых операторов реляци- онной алгебры. Например, maybe-выборка отличается от обычного оператора выборки тем, что возвращает кортежи, для которых условие выборки прини- мает значение ипк, а не true. Тем не менее, строго говоря, подобные операторы не нужны. Почему?
В двухзначной логике существует только два логических значения — 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 (следовательно, нет необходимости явно поддерживать все двадцать операторов).
Сколько логических операторов может быть в трехзначной логике? А в четырех- значной? А для более общего случая — в и-значной логике?
(Взято из [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.
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) и, несомненно, будет продолжать удивлять.
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 утверждается, что внешнее соединение обладает несколькими "неприятными свойствами". В этой работе приводится перечень подобных свойств.
Внешнее в-соединение не является выборкой из результата декартова произве- дения.
Выборка не распространяется на операции внешнего в-соединения.
В трехзначной логике выражение А < В— это не то же самое, что выражение А < В OR А = В.
В трехзначной логике операции в-сравнения не транзитивны.
Внешнее естественное соединение не является проекцией внешнего соединения по эквивалентности.
В статье также рассматривается влияние, оказанное на конструкты SELECT-FROM- WHERE в результате введения в язык SQL поддержки внешних соединений.
Операция расширения в предложении WHERE не работает.
Оператор AND, связывающий операции внешнего соединения и выборки, не ра- ботает.
Включение условия соединения в предложение WHERE не работает.
Внешние соединения из более чем двух отношений не могут быть сформулиро- ваны без использования вложенных выражений.
Операция расширения в предложении 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.
В этой статье рассматривается возможность полного и частичного присутствия не- определенных значений во внешних ключах.
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.
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. Стандартный учебник по многозначной логике.
Ответы к некоторым упражнениям
Вариант а— значение ипк; вариант б— значение true; вариант в— значение true; вариант г — значение ипк (обратите внимание на то, что интуитивно предполагает- ся другой ответ); вариант д — значение false; вариант е — значение false (обратите внимание на то, что оператор ISJJNK никогда не возвращает значение ипк); вари- ант ж — значение false; вариант з — значение true.
Вариант а— значение ипк; вариант б— значение ипк; вариант в— значение true; вариант г — значение false; вариант д — значение ипк; вариант е — значение true; вариант ж — значение false.
Это следует из приведенного ниже тождества.
ISJJNK ( х ) = MAYBE ( х = х )
Так как, например, выражение MAYBE_RESTRICT г WHERE р аналогично выражению Г WHERE MAYBE(p).
Четыре унарных оператора могут быть определены следующим образом (здесь А — единственный операнд).
А
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 ( В ) )
См. комментарий к [18.11].
Корректен вариант в. Более подробная информация приводится в [18.8]. Дополнительное упражнение. Для интерпретации варианта б предложите форму- лировку с использованием реляционного исчисления.
Опишем кратко представление, используемое в СУБД DB2. В ней столбец табли- цы, который может принимать неопределенные значения, физически представлен в хранимой базе данных двумя столбцами— столбцом непосредственно данных и скрытым столбцом индикатора (длиной 1 байт), сохраняемым как префикс для столбца фактических данных. Значение в столбце индикатора, состоящее из дво- ичных единиц, указывает, что соответствующее значение в столбце данных должно игнорироваться (т.е. восприниматься как неопределенное значение); значение в столбце индикатора, состоящее из двоичных нулей, указывает, что соответствую- щее значение в столбце данных должно восприниматься, как реальное значение. Безусловно, столбец индикатора всегда скрыт от пользователя.