|
Программирование >> Хронологические базы данных
по одному кортежу, а именно - кортежи {Х:х, У:у}и{Х:х, Y:z} соответственно {уфг). Тогда (А MINUS В){Х} дает отношение, содержащее только кортеж {Х:х}, тогда как А{Х} MINUS В{X} дает пустое отношение. 17.9. Хороший набор подобных правил можно найти в [17.3]. 17.10.Хороший набор подобных правил можно найти в [17.3]. 17.11. а) Выбрать сведения о поставщиках не из Лондона, не поставляющих деталь с номером Р2; б) выбрать сведения о поставщиках из Парижа; в) выбрать сведения о поставшиках не из Лондона, причем таких, для которых не существует других поставшиков, поставляющих меньше различных типов деталей; г) выбрать пустое множество сведений о поставщиках; д) упрощение невозможно; е) выбрать пустое множество сведений о парах поставщиков; ж) выбрать пустое множество сведений о деталях; з) выбрать сведения о таких поставщиках не из Парижа, которые поставляют наибольшее количество различных видов деталей. Заметьте, что результаты выполнения некоторых запросов (если быть точным, то результаты запросов б, г, е и ж) можно получить непосредственно из офаничений целостности. 17.15. Исходя из особенностей методов обработки, настоящие максимальное и минимальное значения иногда являются в некотором роде фиктивными. Например, максимальным значением атрибута employee name (имя сотрудника) будет строка из букв Z (или букв Я), а ее минимальным значением - строка, составленная из пробелов. Если исходить из этих значений, то оценка, например, среднего расстояния между разными значениями атрибута в таблице может быть вычислена некорректно. Глава 18 Отсутствующая информация 18.1. Введение в повседневной жизни часто приходится сталкиваться с проблемой отсутствия некоторой информации. Весьма типичны ситуации, когда, например, дата рождения неизвестна , имя докладчика будет объявлено дополнительно , местонахождение объекта в данный момент неизвестно и т.д. Поэтому в системах баз данных должен существовать механизм обработки подобных ситуаций. На практике наиболее типичный подход к рещению этой проблемы (используемый, в частности, в языке SQL и, следовательно, во многих коммерческих продуктах) основан на применении неопределенных значений (NULL-значений) и трехзначной логики. Например, вес детали, скажем, с номером Р7, может быть неизвестен, поэтому упрощенно можно сказать, что ее вес является неопределенным . В более точном смысле это выражение означает следующее: а) известно, что деталь существует; б) несомненно, деталь имеет вес; в) чему равен вес, нам неизвестно. Давайте рассмотрим этот пример более внимательно. Ясно, что мы не можем поместить истинное значение веса детали в атрибут WEIGHT кортежа, описывающего деталь с номером Р7. Следовательно, все, что остается, - пометить или как-то обозначить, что значение атрибута WEIGHT этого кортежа является неопределенным. В дальнейщем наличие подобной метки будет интерпретироваться как указание, что истинное значение атрибута неизвестно. Для удобства можно неформально сказать, что атрибут WEIGHT содержит неопределенное значение или что значение этого атрибута равно NULL . На практике подобные выражения действительно щироко используются. Однако следует четко понимать, что подобные выражения неформальны и несколько неточны, поскольку, говоря, что значение атрибута WEIGHT в кортеже является неопределенным или равно NULL, мы на самом деле имеем в виду, что кортеж вообще не содержит никакого значения атрибута WEIGHT. Поэтому щироко распространенные выражения неопределенное значение и значение NULL использовать не рекомендуется, так как это неопределенное значение (NULL) на самом деле не значение, а всего лищь некая отметка или обозначение. В следующем разделе будет показано, что при вычислении любого скалярного сравнения, в котором какой-либо из операндов не определен (содержит NULL), вместо значения true (истина) или false (ложь) будет получено логическое значение unknown (неизвестно). Причиной такого состояния дел является принятая нами интерпретация обозначения NULL как указателя значение неизвестно . Если значение переменной А неизвестно, то неизвестен и результат любого ее сравнения, например вида А > В, причем независимо от значения В (даже если предположить, что значение переменной В также неизвестно). В частности, следует отметить, что два неопределенных значения (NULL) нельзя считать равными одно другому, поэтому, если обе переменные, А и В, содержат неопределенные значения (NULL), результатом сравнения А = В всегда будет значение unknown, a не true. Однако эти переменные не считаются и неравными, т.е. результатом сравнения h Ф В также будет значение unknown. Концепция неопределенных значений, по крайней мере в общепринятом смысле, неизбежно приводит нас к необходимости использования логики с тремя логическими значениями: true (истина), false (ложь) и unknown (неизвестно). Прежде чем продолжить обсуждение, автор данной книги считает необходимым еще раз заявить, что он полностью разделяет мнение многих авторов о том, что неопределенные значения (NULL) и трехзначная логика являются ошибочными понятиями и им нет места в четких формальных системах, подобных реляционной модели. Однако, оставляя все на своих местах, ему не хотелось бы лишать читателя возможности обсудить неопределенные значения и трехзначную логику, поэтому в настоящее издание и включена данная глава. План главы таков. Непосредственно после введения в разделе 18.2 без излишнего недоверия и критики описываются основные идеи, на которых базируется концепция неопределенных значений и трехзначной логики. (Суть в том, что невозможно строго и справедливо критиковать любые идеи без их предварительного описания.) Затем в разделе 18.3 обсуждаются некоторые более важные следствия изложенных идей и предпринимается попытка обосновать мнение автора о том, что понятие неопределенных значений является ошибочным. В разделе 18.4 рассматриваются следствия наличия неопределенных значений в первичных и внешних ключах. Далее, в разделе 18.5, будет сделано отступление от основной темы с целью описания чаще всего встречающихся операций в контексте неопределенных значений и трехзначной логики - операций внешнего соединения. В разделе 18.6 в очень сжатой форме описывается альтернативный способ обработки отсутствующей информации с использованием специальных значений. В разделе 18.7 кратко рассматриваются аспекты языка SQL, имеющие отношение к обсуждаемой проблеме. И наконец в разделе 18.8 приводится краткое резюме. Еще одно предварительное замечание. Существует множество причин, не позволяющих поместить истинное значение в тот или иной атрибут кортежа, и неизвестность этого значения - только одна из возможных причин. Среди других причин следует назвать такие, как значение неприменимо , значения не существует и т.д. [18.5]. Действительно, в [5.2] Кодд предложил использовать в реляционной модели не одно, а два вида Например, утвер.ждение о том, что кортеж с описанием некоторой детали не содержит значения атрибута WEIGHT, эквивалентно - по определению! - утверждению, что данный кортеж вообще не является кортежем описания детали. Иначе говоря, можно утверждать, что этот кортеж не является реализацией соответствующего предиката. Суть заключается в то.ч, что саиой по себе попытки точно сформулировать назначение схемы с использованием неопределенных значений вполне достаточно, чтобы показать, почему эта идея не является логически последовательной. Одно из следствий этого факта состоит в том, что данную схему очень трудно последовательно объяснить. Имеет смысл лишь украдкой взглянуть на эту проблему и особо нело.мать над ней голову [18.19]. - Однако следует особо опшетить, что в любам из перечисленных выше случаев как таковой отсутствующей информации нет. Например, если для сотрудника Joe значение комиссионного вознаграждения неприменимо , значит, для него неприменима сама концепция выплаты комиссионных и, таким образам, здесь нет никакой отсутствующей информации. (Тем не менее, если кортеж с описание.м сотрудника Joe содержит неприменимое неопределенное значение в атрибуте ко.миссионного вознаграждения, этот кортеж вообще не является кортежем с описанием сотрудника, поскольку он не является корректнойреатзацией предиката Описание сотрудника .)
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |