ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 31.03.2021
Просмотров: 1595
Скачиваний: 23
81
•
ограничения
целостности
уровня
кортежа
,
•
ограничения
целостности
уровня
отношения
,
•
ограничения
целостности
уровня
базы
данных
.
Рассмотрим
эти
виды
ограничений
целостности
более
подробно
.
9.1.
Ограничения
целостности
уровня
атрибута
Домены
отношений
Ограничения
целостности
уровня
атрибута
являются
ограничениями
,
накладываемыми
на
допустимые
значения
атрибута
.
Эти
ограничения
исходят
из
того
,
что
каждый
атрибут
определен
на
каком
-
либо
конкретном
домене
.
Под
доменом
понимается
именованное
множество
скалярных
(
атомарных
)
значений
,
из
котор
могут
б ться
значения
конкретного
атрибута
.
ых
ра
Понятие
домена
играет
в
реляционной
модели
очень
важную
роль
.
Описание
для
атрибута
его
домена
позволяет
осуществлять
контроль
правильности
вводимых
в
базу
значений
атрибутов
.
Ограничение
целостности
атрибутов
выглядит
следующим
образом
:
Значение
каждого
атрибута
берутся
из
соответствующего
домена
.
Домены
ограничивают
также
операции
сравнения
зна
В
процессе
работы
с
базой
данных
,
построения
возникает
необходимость
сравнения
меж
атрибутов
.
При
этом
,
естественн
сравнение
будет
корректным
?»
Так
чений
атрибутов
.
запросов
к
данным
,
ду
собой
значений
различных
о
,
встает
вопрос
: «
В
каком
случае
такое
вот
–
сравнивать
между
собой
можно
только
значения
атрибутов
,
определенных
на
общих
доменах
.
о
ля т
о
е
к
с
и
х
о
з
п
Действительн
,
абсурдно
выг ди запрос
: «
П лучить
список
студентов
,
у
которых
полученная
на
экзамене
оценка
больш
номера
курса
,
на
котором
учится
студент
»,
требующий
выполнения
операции
сравнения
между
собой
значения
урса
,
на
котором
учится
тудент
,
и
полученной
м
оценки
(
отя
и
то
,
и
другое
значение
выражается
целым
положительным
числом
).
Очевидно
,
что
значения
атрибутов
курс
и
оценка
,
соответствующих
свойствам сущности
студент
,
должны
быть
определены
на
разных
доменах
и
,
следовательно
,
не
могут
сравниваться
между
собой
.
Следует
заметить
,
однако
,
что
из
вышесказанного
не
следует
,
что
значения
атрибутов
,
пределенных
на
разных
доменах
,
вообще
нель я
ис ользовать
в
общих
скалярных
выражениях
.
Например
,
если
в
отношении
присутствуют
82
атри
одном
общем
арифметическом
выра
.
смыслу
понятие
домена
оказывается
фактически
совпадающим
с
п
данных
(
как
это
понимается
в
современных
языках
программирования
).
Действительно
,
домен
,
являющийся
математическим
мно
и
тип
данных
,
определяет
допустимое
множество
значений
данн
операций
над
ними
.
Если
говорить
,
однако
,
о
реальных
совр
ционных
СУБД
,
то
в
них
концепция
доменов
поддерживается
в
ог
.
В
СУБД
фактически
предоставлены
встроенные
(
т
.
е
.
опре
темой
)
примитивные
типы
данных
,
такие
как
целые
числа
,
числ
й
точкой
,
символьные
строки
и
т
.
д
.
Отс
т
аких
ситуаций
,
при
построении
модели
предметной
области
желательно
иметь
средст
о
N
ь
з
ует
обратить
внимание
на
то
,
что
NULL
не
является
одним
из
возможных
значений
атрибута
,
NULL
вообще
не
является
значением
,
а
представляет
собой
обозначение
факта
отсутствия
,
действительного
буты
,
КОЛИЧЕСТВО
_
ЕДИНИЦ
_
ТОВАРА
и
ЦЕНА
_
ЕДИНИЦЫ
_
ТОВАРА
,
то
,
очевидно
,
что
,
не
смотря
на
явную
принадлежность
этих
атрибутов
к
разным
доменам
,
их
значения
могут
использоваться
в
жении
А
= (
КОЛИЧЕСТВО
_
ЕДИНИЦ
_
ТОВАРА
*
ЦЕНА
_
ЕДИНИЦЫ
_
ТОВАРА
)
для
расчета
,
например
,
общей
стоимости
всех
единиц
товара
По
своему
онятием
типа
жеством
,
как
ых
и
набор
еменных
реля
раниченном
смысле
деленные
сис
а
с
плавающе
утствующая
информация
или
NULL-
значения
.
Говоря
в
контексте
понятие
доменов
о
значениях
,
которые
может
принимать
тот
или
иной
атрибут
следует
обратить
внимание
еще
на
одну
ситуацию
,
которую
в
реальной
жизни
исключит
нельзя
.
А
именно
,
ситуацию
,
когда
конкретные
значения
атрибута
могут
отсутствовать
.
Например
,
в
базе
данных
в
записи
о
конкретном
студенте
может
отсутствовать
информация
о
его
дате
рождения
или
месте
жительства
.
Сейчас
не
важно
,
по
каким
причинам
информация
о
значении
атрибута
может
от утс вовать
,
однако
,
в
силу
реальности
т
с
во
для
их
представления
.
Коддом
было
предложено
использовать
для
бозначения
отсутствующей
информации
о
значении
атрибута
специальный
маркер
–
NULL
,
обычно
называемый
ULL
-
значение
.
Введение
маркера
NULL
означает
следующее
.
При
определении
(
описании
)
конкретного
атрибута
(
например
,
в
отношении
СТУДЕНТ
атрибута
ГОРОД
,
означающего
город
,
в
котором
живет
студент
),
помимо
задания
домена
допустимых
для
этого
атрибута
значений
(
список
допустимых названий
городов
)
должен
быт
ука ано
,
что
в
случае
,
если
по
каким
-
либо
причинам
истинное
значение
этого
атрибута
не
известно
,
то
вместо
него
устанавливается
маркер
NULL
.
Сразу
же
след
83
знач
ых
значений
,
определяемое
доменом
,
не
может
быть
расширенно
включением
в
него
NULL
-
значения
,
так
как
это
не
еще
о
о
им
до
зн чен
н ых
н м
,
но
на
данный
.
т
м
,
е
,
оо ще
р
а
го
ри
отношения
может
быть
до
им
су ств
го
ч
,
азани
к
вместо
ни
о
с в
о
к
ев
р бут
н
ия
и
б
о
датьс
ол о
е
в
усложнению
модели
.
Проблемы
возн
очным
,
рассматриваемым
как
фактор
,
нарушающий
целостность
этой
модели
,
и
неопр вданн
сл жняющи
.
Тем
современные
СУБД
,
как
правил
поддерживают
NULL
-
з
е
Поэтому
специалисту
,
работающему
в
обл
б
нных
обходим
нать
особенности
,
возникающие
при
их использовании
.
Ска
N
и
значени
.
к
к
о
объекты
,
свойствам
кото
значения
этих
атрибутов
могут
быть
н
о
п
ения
этого
атрибута
,
которое
на
самом
деле
,
конечно
же
,
существует
,
но
является
в
данный
момент
неизвестным
или
неопределенным
.
По
этой
же
причине
,
множество
допустим
атрибута
дно
д пуст
ое
в
мене
а
ие
,
а
одно из
уже
зада н
доме о
момент
мети
неизвестно
такж
м
что
,
в
О
б
гово я
,
не для
к ждо
ат бута
пуст
ым
от т
ие
е
зна ения т
.
е
.
ук
е
мар ера
NULL
значе я
.
Эт
будет
касает
бсуж
я
,
частн
я
неск
сти
,
ьк
люч
позже
ых
ат
.
и
ов
от ошен
олее
подробно
Приведенны выше
соображения
в
пользу ведения
в
реляционную
модель
маркера
NULL
,
выглядят
вполне
обоснованными
.
На
практике
,
однако
,
введение
NULL
приводит
к
существенному
икают
при
определении
операций
сравнивания
значений
различных
атрибутов
,
определении
потенциальных
и
внешних
ключей
отношений
,
определении
групповых
(
агрегатных
)
операций
над
значениями
атрибутов
(
сумма
,
среднее
значение
и
др
.).
По
этой
причине
,
в
частности
,
некоторыми
работающими
в
области
баз
данных
учеными
,
в
частности
Дейтом
введение
в
реляционную
модель
NULL
-
значений
считается
ошиб
а
о
ее
у о
й
не
менее
,
о
,
нач ния
.
асти
аз
да
не
о
хорошо
з
лярные
выражения
с
использованием
отсутствующих
значений
(NULL).
Трехзначная
(3VL)
логика
Рассмотрим
особенности
,
к
которым
приводит
использование
ULL
-
значен й
при
выполнении
различных
скалярных операций
над
ями
атрибутов
,
т
.
е проблемы
,
возникающие
при
использовании
в
ачестве
операндов
какой
-
либо
скалярной
операции
атрибута
,
значения
оторого
могут
быть
неизвестны
или
не
определены
.
Например
,
рассмотрим
тношение
,
кортежи
которого
описывают
некоторые
рых
в
свою
очередь
соответствуют
атрибуты
отношения
ДЛИНА
и
ШИРИНА
.
Пусть
для
каких
-
то
объектов
конкретные
еизвестными
.
Значения
этих
атрибутов
могут
использоваться
в
качестве
перандов
различных
скалярных
операций
,
например
,
при
вычислении
лощади
объекта
путем
перемножения
значений
атрибутов
ДЛИНА
и
ШИРИНА
.
84
Аспект
,
который
сразу
же
возникает
в
этом
случае
,
состоит
в
том
,
что
если
акой
-
либо
операнд
скалярного
выражения
не
определен
,
то
результат
этого
ыражения
также
может
быть
не
известен
.
Если
не
известны
зн
к
в
ачения
какого
-
либо
из
операндов
ДЛИНА
или
ШИРИНА
,
т
н
с
,
а
=b
,
а
≠
b
,
a>b
,
a<b
,
a
≥
b
,
a
≤
b
.
В
обычном
случае
результатом
операции
сравнивания
,
является
два
дов
их
выходное
значение
неизвестно
,
приводит
к
необходимости
дополнения
двух
логических
состояний
true
и
false
третьим
логическим
состоянием
,
которое
мож
н
д
r
о
и
вычисляемое
значение
площади
(
ДЛИНА
×
ШИРИНА
)
также
неизвестно
.
При
еизвестном
значении
операнда
ДЛИНА
,
неизвестным
будут
также
значения
ледующих
скалярных
арифметических
выражений
:
–
ДЛИНА
,
+
ДЛИНА
,
ДЛИНА
+
10
,
10
+
ДЛИНА
,
ДЛИНА
–
10
10
–
ДЛИНА
,
ДЛИНА
×
10
,
10
×
ДЛИНА
,
ДЛИНА
/
10
,
10
/
ДЛИНА
.
Сложность
,
однако
,
в
том
,
что
не
всегда
значение
выражения
с
неизвестным
значением
операнда
будет
само
не
определенным
.
Так
,
очевидно
,
специального
определения
требуют
выражение
типа
ДЛИНА
–
ДЛИНА
,
результат
которого
известен
и
должен
быть
0
(
нуль
)
в
любом
случае
,
независимо
от
того
известно
или
неизвестно
значение
операнда
.
Неоднозначна
также
интерпретация
выражения
ДЛИНА
/
0
при
неопределенном
значении
операнда
ДЛИНА
(
вместо
обычной
индикации
ошибки
деления
на
нуль
).
Еще
большие
особенности
вызывает
допущение
использования
в
атрибутах
отсутствующих
(
NULL
)
значений
со
скалярными
операциями
сравнивания
возможных
значения
true
–
истина
и
false
–
ложь
.
Допущение
у
операн
выражений
,
использующих
операторы
сравнивания
,
состояний
,
когда
но
назвать
unk
(
от
англ
.
unknown
–
неизвестно
).
Другими
словами
,
допущение
у
атрибутов
отсутствующих
или
неопределенных
значений
приводит
к
еобходимости
перехода
от
вузначной
логики
(
t ue
,
false
)
к
трехзначной
(
true
,
false
,
unk
),
называемой
еще
3VL-
логикой
(
от
английского
three values logic).
85
Соотве ствующим
образом
должны
быть
модифицированы
и
базовые
скалярные
логические
операции
AND
,
OR
т
и
NOT
.
Их
таблицы
истинности
прин
AND
unk false
NOT
имают
следующий
вид
.
true unk false
OR
true
true
true unk false
true
true true true
true
false
unk
unk unk false
unk
true unk unk
unk
unk
false
false false false
false
true unk false
false
true
Появляется
необходимость
введения
дополнительных
операторов
,
например
,
операторов
,
позволяющих
проверять
–
определено
или
не
определено
конкретное
значение
атрибута
.
Логическое
выражение
типа
A=
NULL
не
является
корректным
,
так
как
NULL
не
является
значением
и
сравнивать
что
-
либо
с
ним
бессмысленно
.
Для
ено
конкретное
е
IS UNK
IS NOT UNK
.
В
языке
SQL
их
аналогам
ы
IS
NULL
и
IS
NOT
NULL
.
Эти
операторы
всегда
возвращают
значения
true
и
false
и
их
таблицы
истинности
имеют
вид
.
получения
информации
о
том
,
определено
или
не
определ
значени
,
вводятся
новые
операторы
и
и
являются
оператор
IS
UNK
IS NOT UNK
A
false
A
true
unk
true
unk
false
где
А
–
это
какое
-
либо
обычное
,
точно
определенное
значение
.
В
логических
выражениях
двузначной
логики
используются
также
кванторы
EXISTS
и
FORALL
.
В
качестве
их
операндов
выступает
множество
переменных
х
1
,
х
2
, …,
х
n
,
принимающих
значение
true
или
false
.
Выражение
EXISTS
(
х
1
,
х
2
, …,
х
n
)
принимает
значение
true
,
если
хотя
бы
один
из
эле ентов
множества
х
,
х
, …,
х
>
находится
в
состоян и
true
,
и
м
<
1
2
n
и
принимает
значение
false
,
сли
все
элементы
множества
имеют
значение
е
false
.
Выражение
FORALL
(
х
1
,
х
2
, …,
х
n
)
принимает
значение
true
,
в
случае
,
когда
все
элементы
множества
<
х
1
,
х
2
, …,
х
n
>
находятся
в
остоянии
true
,
и
с
принимают
значение
false
во
всех
остальных
случаях
.
Допущение
использования
неопределенных
значений
,
также
заставляет
расширять
определение
этих
операторов
.
Выражение
EXISTS
(
х
1
,
х
2
, …,
х
n
)
принимает
значение
true
если
,
хотя
бы
один
элемент
множества
<
х
1
,
х
2
, …,
х
n
>
равен
true
,
принимает
значение
false
,
если
все
элементы
этого
множества
равны
false
,
в
остальных
случаях
,