Файл: Управление данными (пособие).pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 31.03.2021

Просмотров: 1595

Скачиваний: 23

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

 

81

 

ограничения

 

целостности

 

уровня

 

кортежа

 

ограничения

 

целостности

 

уровня

 

отношения

 

ограничения

 

целостности

 

уровня

 

базы

 

данных

Рассмотрим

 

эти

 

виды

 

ограничений

 

целостности

 

более

 

подробно

9.1. 

Ограничения

 

целостности

 

уровня

 

атрибута

 

Домены

 

отношений

 

Ограничения

 

целостности

 

уровня

 

атрибута

 

являются

 

ограничениями

накладываемыми

 

на

 

допустимые

 

значения

 

атрибута

Эти

 

ограничения

 

исходят

 

из

 

того

что

 

каждый

 

атрибут

 

определен

 

на

 

каком

-

либо

 

конкретном

 

домене

Под

 

доменом

 

понимается

 

именованное

 

множество

 

скалярных

 (

атомарных

значений

из

 

котор

 

могут

 

б ться

 

значения

 

конкретного

 

атрибута

ых

ра

Понятие

 

домена

 

играет

 

в

 

реляционной

 

модели

 

очень

 

важную

 

роль

Описание

 

для

 

атрибута

 

его

 

домена

 

позволяет

 

осуществлять

 

контроль

 

правильности

 

вводимых

 

в

 

базу

 

значений

 

атрибутов

.  

Ограничение

 

целостности

 

атрибутов

 

выглядит

 

следующим

 

образом

:  

Значение

 

каждого

 

атрибута

 

берутся

 

из

 

соответствующего

 

домена

Домены

 

ограничивают

 

также

 

операции

 

сравнения

 

зна

В

 

процессе

 

работы

 

с

 

базой

 

данных

построения

возникает

 

необходимость

 

сравнения

 

меж

атрибутов

При

 

этом

естественн

сравнение

 

будет

 

корректным

?» 

Так

чений

 

атрибутов

.  

 

запросов

 

к

 

данным

ду

 

собой

 

значений

 

различных

 

о

встает

 

вопрос

: «

В

 

каком

 

случае

 

такое

 

 

вот

 – 

сравнивать

 

между

 

собой

 

можно

 

только

 

значения

 

атрибутов

определенных

 

на

 

общих

 

доменах

.  

о

ля т

 

о

е

к

с

и

х

 

о

з

п

 

Действительн

абсурдно

 

выг ди запрос

: «

П лучить

 

список

 

студентов

у

 

которых

 

полученная

 

на

 

экзамене

 

оценка

 

больш

 

номера

 

курса

на

 

котором

 

учится

 

студент

», 

требующий

 

выполнения

 

операции

 

сравнения

 

между

 

собой

 

значения

 

урса

на

 

котором

 

учится

 

тудент

и

 

полученной

 

м

 

оценки

 (

отя

 

и

 

то

и

 

другое

 

значение

 

выражается

 

целым

 

положительным

 

числом

). 

Очевидно

что

 

значения

 

атрибутов

 

курс

 

и

 

оценка

соответствующих

 

свойствам сущности

 

студент

должны

 

быть

 

определены

 

на

 

разных

 

доменах

 

и

следовательно

не

 

могут

 

сравниваться

 

между

 

собой

Следует

 

заметить

однако

что

 

из

 

вышесказанного

 

не

 

следует

что

 

значения

 

атрибутов

пределенных

 

на

 

разных

 

доменах

вообще

 

нель я

 

ис ользовать

 

в

 

общих

 

скалярных

 

выражениях

Например

если

 

в

 

отношении

 

присутствуют


background image

 

82

атри

одном

 

общем

 

арифметическом

 

выра

 

смыслу

 

понятие

 

домена

 

оказывается

 

фактически

 

совпадающим

 

с

 

п

 

данных

  (

как

 

это

 

понимается

 

в

 

современных

 

языках

 

программирования

). 

Действительно

домен

являющийся

 

математическим

 

мно

и

 

тип

 

данных

определяет

 

допустимое

 

множество

 

значений

 

данн

операций

 

над

 

ними

Если

 

говорить

однако

о

 

реальных

 

совр

ционных

 

СУБД

то

 

в

 

них

 

концепция

 

доменов

 

поддерживается

 

в

 

ог

В

 

СУБД

 

фактически

 

предоставлены

 

встроенные

  (

т

.

е

опре

темой

примитивные

 

типы

 

данных

такие

 

как

 

целые

 

числа

числ

й

 

точкой

символьные

 

строки

 

и

 

т

.

д

Отс

т

аких

 

ситуаций

при

 

построении

 

модели

 

предметной

 

области

 

желательно

 

иметь

 

средст

о

N

 

ь

з

ует

 

обратить

 

внимание

 

на

 

то

что

 

NULL

 

не

 

является

 

одним

 

из

 

возможных

 

значений

 

атрибута

NULL

 

вообще

 

не

 

является

 

значением

а

 

представляет

 

собой

 

обозначение

 

факта

 

отсутствия

действительного

 

буты

КОЛИЧЕСТВО

_

ЕДИНИЦ

_

ТОВАРА

 

и

 

ЦЕНА

_

ЕДИНИЦЫ

_

ТОВАРА

то

очевидно

что

не

 

смотря

 

на

 

явную

 

принадлежность

 

этих

 

атрибутов

 

к

 

разным

 

доменам

их

 

значения

 

могут

 

использоваться

 

в

 

жении

 

А

 = (

КОЛИЧЕСТВО

_

ЕДИНИЦ

_

ТОВАРА

 * 

ЦЕНА

_

ЕДИНИЦЫ

_

ТОВАРА

)

  

для

 

расчета

например

общей

 

стоимости

 

всех

 

единиц

 

товара

По

 

своему

онятием

 

типа

жеством

как

 

ых

 

и

 

набор

 

еменных

 

реля

раниченном

 

смысле

деленные

 

сис

а

 

с

 

плавающе

утствующая

 

информация

 

или

 NULL-

значения

Говоря

 

в

 

контексте

 

понятие

 

доменов

 

о

 

значениях

которые

 

может

 

принимать

 

тот

 

или

 

иной

 

атрибут

 

следует

 

обратить

 

внимание

 

еще

 

на

 

одну

 

ситуацию

которую

 

в

 

реальной

 

жизни

 

исключит

 

нельзя

А

 

именно

ситуацию

когда

 

конкретные

 

значения

 

атрибута

 

могут

 

отсутствовать

Например

в

 

базе

 

данных

 

в

 

записи

 

о

 

конкретном

 

студенте

 

может

 

отсутствовать

 

информация

 

о

 

его

 

дате

 

рождения

 

или

 

месте

 

жительства

Сейчас

 

не

 

важно

по

 

каким

 

причинам

 

информация

 

о

 

значении

 

атрибута

 

может

 

от утс вовать

однако

в

 

силу

 

реальности

 

т

с

во

 

для

 

их

 

представления

Коддом

 

было

 

предложено

 

использовать

 

для

 

бозначения

 

отсутствующей

 

информации

 

о

 

значении

 

атрибута

 

специальный

 

маркер

 – 

NULL

обычно

 

называемый

 

ULL

-

значение

Введение

 

маркера

 

NULL

 

означает

 

следующее

При

 

определении

  (

описании

конкретного

 

атрибута

  (

например

в

 

отношении

 

СТУДЕНТ

 

атрибута

 

ГОРОД

означающего

 

город

в

 

котором

 

живет

 

студент

), 

помимо

 

задания

 

домена

 

допустимых

 

для

 

этого

 

атрибута

 

значений

  (

список

 

допустимых названий

 

городов

должен

 

быт

 

ука ано

что

 

в

 

случае

если

 

по

 

каким

-

либо

 

причинам

 

истинное

 

значение

 

этого

 

атрибута

 

не

 

известно

то

 

вместо

 

него

 

устанавливается

 

маркер

 

NULL

.     

Сразу

 

же

 

след


background image

 

83

знач

ых

 

значений

определяемое

 

доменом

не

 

может

 

быть

 

расширенно

 

включением

 

в

 

него

 

NULL

-

значения

так

 

как

 

это

 

не

 

еще

 

о

о

им

до

зн чен

 

 

н ых

н м

но

 

на

 

данный

т

м

е

оо ще

р

 

а

го

 

ри

отношения

 

может

 

быть

 

до

им

су ств

го

ч

азани

к

 

вместо

 

ни

о

 

с в

о

к

ев

р бут

н

ия

 

и

 

б

 

о

датьс

ол о

 

е

 

 

в

 

усложнению

 

модели

Проблемы

 

возн

очным

рассматриваемым

 

как

 

фактор

нарушающий

 

целостность

 

этой

 

модели

и

 

неопр вданн

сл жняющи

Тем

современные

 

СУБД

как

 

правил

поддерживают

 NULL

-

з

е

Поэтому

 

специалисту

работающему

 

в

 

обл

б

нных

 

обходим

нать

 

особенности

возникающие

 

при

 

их использовании

Ска

N

и

 

 

значени

 

к
к
о

 

объекты

свойствам

 

кото

значения

 

этих

 

атрибутов

 

могут

 

быть

 

н
о
п

ения

 

этого

 

атрибута

которое

 

на

 

самом

 

деле

конечно

 

же

существует

но

 

является

 

в

 

данный

 

момент

 

неизвестным

 

или

 

неопределенным

По

 

этой

 

же

 

причине

множество

 

допустим

 

атрибута

дно

 

д пуст

ое

 

в

 

мене

 

а

ие

а

одно из

 

уже

 

зада н

 

доме о

 

момент

мети

 

неизвестно

такж

м

что

в

О

б

 

гово я

не для

 

к ждо

ат бута

 

пуст

ым

 

от т

ие

 

е

 

зна ения т

.

е

ук

е

 

мар ера

 

NULL

значе я

Эт

 

будет

касает

бсуж

я

,   

частн

я

 

неск

сти

ьк

люч

позже

ых

 

ат

и

ов

 

от ошен

олее

 

подробно

Приведенны выше

 

соображения

 

в

 

пользу ведения

 

в

 

реляционную

 

модель

 

маркера

 

NULL

выглядят

 

вполне

 

обоснованными

На

 

практике

однако

введение

 

NULL

 

приводит

 

к

 

существенному

икают

 

при

 

определении

 

операций

 

сравнивания

 

значений

 

различных

 

атрибутов

определении

 

потенциальных

 

и

 

внешних

 

ключей

 

отношений

определении

 

групповых

  (

агрегатных

операций

 

над

 

значениями

 

атрибутов

 

(

сумма

среднее

 

значение

 

и

 

др

.). 

По

 

этой

 

причине

в

 

частности

некоторыми

 

работающими

 

в

 

области

 

баз

 

данных

 

учеными

в

 

частности

 

Дейтом

 [1], 

введение

 

в

 

реляционную

 

модель

 

NULL

-

значений

 

считается

 

ошиб

а

о

 

ее

 

у о

й

 

не

 

менее

о

нач ния

асти

 

аз

 

да

не

о

 

хорошо

 

з

 

лярные

 

выражения

 

с

 

использованием

 

отсутствующих

 

значений

 (NULL). 

Трехзначная

 (3VL) 

логика

 

Рассмотрим

 

особенности

к

 

которым

 

приводит

 

использование

 

ULL

-

значен й

 

при

 

выполнении

 

различных

 

скалярных операций

 

над

ями

 

атрибутов

т

.

е проблемы

возникающие

 

при

 

использовании

 

в

ачестве

 

операндов

 

какой

-

либо

 

скалярной

 

операции

 

атрибута

значения

 

оторого

 

могут

 

быть

 

неизвестны

 

или

 

не

 

определены

Например

рассмотрим

 

тношение

кортежи

 

которого

 

описывают

 

некоторые

рых

 

в

 

свою

 

очередь

 

соответствуют

 

атрибуты

 

отношения

 

ДЛИНА

 

и

 

ШИРИНА

Пусть

 

для

 

каких

-

то

 

объектов

 

конкретные

 

еизвестными

Значения

 

этих

 

атрибутов

 

могут

 

использоваться

 

в

 

качестве

 

перандов

 

различных

 

скалярных

 

операций

например

при

 

вычислении

 

лощади

 

объекта

 

путем

 

перемножения

 

значений

 

атрибутов

 

ДЛИНА

 

и

 

ШИРИНА

.  


background image

 

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). 


background image

 

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 

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

в

 

остальных

 

случаях