Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
[конспект] Технологии баз данных [v0.8.1].pdf
Скачиваний:
79
Добавлен:
21.03.2016
Размер:
1.3 Mб
Скачать

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

вотношении вовсе нет кортежей с таким значением рассматриваемого атрибута.

Ачто будет, если совместить функцию подсчета кортежей с другой агрегирующей функцией? Например, выражение SUM(a)/COUNT(*), где a — некоторый атрибут числового домена. Если в кортежах среди значений атрибута a есть !-значения, то значение этого выражения не будет совпадать, казалось бы, с эквивалентной формулой AVG(a), зато оно совпадает со значение выражения SUM(a)/COUNT(a), поэтому в плане совмещения функции подсчета кортежей с другими агрегатными

функциями нужно работать аккуратно.

5.5. Проблема интерпретации

Проблема интерпретации в том, что возможны ситуации, когда трехзначная логика не отражает состояние реального мира, т. е. можно считать, что трехзначная логика не является адекватным инструментом для интерпретации состояния реального мира.

Пример, иллюстрирующий эту проблему, приведен в [1] на стр. 746.

5.6. ω-значения и ограничения целостности

Ограничение целостности неформально можно рассматривать как логическое выражение, результат вычисления которого не должен быть равен F. Следовательно, ограничение целостности не будет нарушено, если результат его вычисления будет равен значению U. Безусловно, в этом случае точнее было бы сказать, что ничего неизвестно о том, будет ли нарушено данное ограничение целостности. Но с известной долей приближения вполне можно утверждать, что если в условии значение U рассматривается как F, то в ограничениях целостности оно рассматривается как T.

Первичные ключи

Согласно ограничению целостности сущностей ни в каком кортеже базовых отношений атрибуты первичного ключа не могут принимать !-значение.

Если бы !-значение вводилось как равноправный элемент множества значений (домена) атрибута, то ограничение целостности сущностей противоречило бы само себе. Действительно, если некоторый ключ K является альтернативным ключом, в котором допускаются !-значения, то он не может использоваться в качестве первичного ключа, поскольку для него нарушается требование ограничения целостности сущности. Тогда в каком смысле ключ является потенциальным? И наоборот, если выдвинуть требование, что альтернативные ключи также не могут содержать !-значения, то ограничение целостности сущности будет относиться ко всем потенциальным ключам, а не только к первичным ключам. В любом из этих двух вариантов указанное правило выглядит не вполне приемлемым.

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

Заметим, что ограничение целостности сущностей является рекомендацией, а не законом. Т. е. оно может не использоваться, если на то есть веские причины.

Внешние ключи

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

29