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

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

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

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

Добавлен: 31.03.2021

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

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

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

 

76

В

 

задаваемых

 

в

 

предложении

 

WHERE

 

условиях

 

могут

 

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

 

и

 

операторами

: = (

равно

), > 

<= (

меньше

 

или

 

равно

), <> (

не

 

огические

 

операторы

  

AND

OR

 

и

 

NOT

.  

дентов

обучающихся

 

и

 

получающих

 

стипендию

  (

размер

 

стипендии

 

больше

 

нуля

аким

 

образом

 

 

STIPEND

 

>

 

0

яционной

 

ры

 

средствами

 

языка

 SQL. 

я

 

полнота

 SQL 

 

разделах

посвященных

 

рассмотрению

 

реляционной

 

й

 

из

 

важных

 

сторон

 

наличия

 

в

 

реляционной

 

о

 

аппарата

 

является

 

возможность

 

оценки

 

и

 

 

практически

 

используемых

 

языков

 

сти

 

языка

 SQL. 

Для

 

того

чтобы

 

показать

что

 

что

 

любой

 

оператор

 

ми

 SQL. 

На

 

самом

 

деле

 

ост

NION 

SELECT 

 FROM 

B

Оператор

 

пересечения

 

Реляционная

 

алгебра

:  

A  INTERSECT  B

 

операции

 

сравнения

задаваемые

 

следующим

ньше

), >= (

больше

 

или

 

равно

), 

(

больше

), < (

ме

равно

), 

а

 

также

 

л

Например

запрос

 

для

 

получения

 

имен

 

и

 

фамилий

 

сту

на

 

третьем

 

курсе

 

будет

 

выглядеть

 

т

SELECT

NAME SURNAME 

          

 

FROM

STUDENT 

          

E E

 

KURS

 

=

 

3

 

AND

 

WH R

8.5. 

Реализация

 

операций

 

рел

алгеб
Реляционна

В

 

предыдущих

алгебры

говорилось

что

 

одно

и еског

модели

 

такого

 

математ ч

о

доказательства

 

реляционн й

 

полноты

частно

запросов

 

к

 

базам

 

данных

в

 

ио

язык

 SQL 

является

 

реляц нно

 

полным

нужно

 

показать

реляционной

 

алгебры

 

может

 

быть

 

выражен

 

средства

д

аточно

 

показать

что

 

средствами

 SQL 

можно

 

выразить

 

любой

 

из

 

примитивных

 

реляционных

 

операторов

Ниже

 

приведены

 

примеры

 

реализации

 

реляционных

 

операторов

 

с

 

помощью

 

языка

 SQL. 

Оператор

 

объединения

 

Реляционная

 

алгебра

:  

A  UNION  B

 

Оператор

 SQL:  

SELECT 

 FROM 

A

 

U


background image

 

77

Оператор

 SQL:  

SELECT 

A

.

ПОЛЕ

1

A

.

ПОЛЕ

2

, …,

  

ROM 

A

B

 

.

.

 

  .

.

 F

WHERE 

A

ПОЛЕ

1=B

ПОЛЕ

1

AND

A

ПОЛЕ

2=B

ПОЛЕ

2

 

AND

 …; 

или

 

 

SELECT

 A.*  

FROM

 A, B  

SELE

  

и

SEL

Реля
О

S
 

WHERE

 A.pk =B.pk; 

где

 

A.pk 

и

 B.pk

 

первичные

 

ключи

 

таблиц

 

A

 

и

 

B

 

Оператор

 

вычитания

 

Реляционная

 

алгебра

A  MINUS  B

 

Оператор

 SQL: 

SELECT

 *  

FROM

 A  

WHERE

 A.pk 

NOT

 

IN

 (

SELECT

 pk 

FROM

 B); 

где

 

A.pk 

и

 B.pk

 

первичные

 

ключи

 

таблиц

 

A

 

и

 

B

 

Оператор

 

декартового

 

произведения

 

Реляционная

 

алгебра

:  

A TIMES B 

Оператор

 SQL:  

CT

 

A

.

ПОЛЕ

1

A

.

ПОЛЕ

2

, …, 

B

.

ПОЛЕ

1

B

.

ПОЛЕ

2

, … 

   

FROM

 

A

B

ли

  

ECT

 

A

.

ПОЛЕ

1

A

.

ПОЛЕ

2

, …, 

B

.

ПОЛЕ

1

B

.

ПОЛЕ

2

, … 

     

FROM

 

A

 

CROSS

 

JOIN

 

B

Оператор

 

проекции

 

Реляционная

 

алгебра

 

A[X, Y, …, Z]

  

Оператор

 SQL:  

SELECT

 

DISTINCT

 

X

Y

, …, 

Z

 

    

FROM

 

A

Оператор

 

выборки

 

ционная

 

алгебра

:  

A  WHERE  

θ

 

ператор

 SQL:  

ELECT 

 

FROM 

 

WHERE

 

θ

 


background image

 

78

Оператор

 

θ

-

соединения

 

Реляционная

 

алгебра

:

 

(A TIMES B) WHERE 

θ

 

 

Оператор

 SQL:

  

SELECT 

A

.

ПОЛЕ

1

A

.

ПОЛЕ

2

, …, 

B

.

ПОЛЕ

1

B

.

ПОЛЕ

2

, …

 

    FROM 

A

    WHERE 

θ

;

 

или

  

SELECT 

A

.

ПОЛЕ

1

A

.

ПОЛЕ

2

, …, 

B

.

ПОЛЕ

1

B

.

ПОЛЕ

2

, …

 

    FROM 

A

 CROSS JOIN 

B

 

    WHERE 

θ

;

 

 

Оператор

 

деления

 

Реляционная

 

алгебра

A(X,Y) DEVIDE BY B(Y)

  

Оператор

 SQL:  

SELECT

 

DISTINCT 

A

.

X

 

  F

    

(

SELECT 

*

 

        FROM B 
        WHERE

 

NOT

 

EXIST 

          

(

SELECT 

*

 

              FROM 

A A1

 

              WHERE 
                  

A1

.

X=A

.

X

 AND 

A1

.

Y=B

.

Y

)); 

 

Таким

 

образом

приведенные

 

выражения

 

доказывают

что

 

язык

 SQL, 

как

 

и

 

реляционная

 

алгебра

является

 

реляционно

 

полным

.  

Следует

 

обратить

 

внимание

 

на

 

то

если

 

в

 

приведенных

 

запросах

 

в

 

таблицах

 

будут

 

присутствовать

 

NULL

-

значения

  (

см

ниже

 

раздел

 9.1), 

то

 

все

 

вышеперечисленные

 

запросы

 

могут

 

отработать

 

неверно

т

.

к

NULL

 <  > 

NULL

 

и

 

NULL

 = 

NULL

 – 

есть

 

ложь

Это

однако

не

 

опровергает

 

сделанного

 

вывода

 

о

 

реляционной

 

полноте

 

SQL, 

так

 

ка

ROM 

A

 

  WHERE

 

NOT

 

EXIST 

к

 

NULL

-

значения

 

реляционной

 

моделью

 

не

 

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

 


background image

9. 

ти

 

к

 

е

 

Эт

ут

 

выполняться

 

над

 

данными

и

 

ограничения

 

целостности

 

данных

Первые

 

две

 

компоненты

 

были

 

рассмотрены

 

выше

 

в

 

разделах

 6 

и

 7, 

соответственно

В

 

м

 

третью

 

составляющую

 

модели

 – 

ограничения

 

целостности

.

  

 

щих

 

к
ч

нных

в

 

си

д

 

вий

Ограничения

 

целостнос

в

 

реляционной

 

модели

 

Ка уже

 

говорилось

реляционная

 

модель

 

включает

 

в

 

себя

 

три

 

составны

части

о

 – 

описание

 

структуры

 

данных

описание

 

операций

которые

 

мог

данном

 

разделе

 

рассмотри

Очевидно

что

 

база

 

данных

 

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

 

для пользователя

 

какую

-

либо

 

ценность

 

до

 

тех

 

пор

пока

 

хранимые

 

в

 

ней

 

данные

 

будут

 

правильными

то

 

есть

 

будут

 

корректно

 

отражать

 

информацию

 

о

 

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

 

предметной

 

области

В

 

связи

 

с

 

этим

в

 

СУБД

 

желательно

 

наличие

 

средств

позволяю

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

 

корректность

 

хранимых

 

данных

Должно

 

быть

 

также

 

понятно

то

 

для

 

того

чтобы

 

можно

 

было

 

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

 

проверку

 

корректности

 

да

стеме

 

необходимо

 

наличие

 

ополнительной

 

информации

,

указывающей

,  

какие

 

данные

 

считать

 

правильными

а

 

какие

 

нет

В

 

реляционной

 

модели

 

такого

 

рода

 

информация

 

указывается

 

в

 

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

 

целостности

 

данных

Ограничения

 

целостности

 

базы

 

данных

 

определяют

 

набор

 

усло

логических

 

ограничений

которым

 

должны

 

удовлетворять

 

данные

хранимые

 

в

 

базе

 

данных

.  

Любое

 

ограничение

 

елостности

 

является

 

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

 

понятием

т

.

е

относится

 

к

 

смыслу

а

 

не

 

форме

 

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

 

данных

Оно

 

отражает

 

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

 

свойства

 

объектов

-

сущностей

 

предметной

 

области

информация

 

о

 

которых

 

не

 

может

 

быть

 

получена

 

из

 

анализа

 

самих

 

хранимых

 

в

 

базе

 

значений

 

данных

Например

из

 

анализа

 

фактически

 

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

 

в

 

отношении

 

значе

ц

ний

 

атрибута

 

нельзя

 

сделать

 

вывод

 

о

 

том

какие

 

значения

 

должны

 

считаться

 

правильными

То

что

например

значение

 

атрибута

 

Возраст

 

не

 

может

 

быть

 

отрицательным

 

числом

является

 

внешним

 

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

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

 

на

 

значения

 

атрибута

 

исходя

 

из

 

семантики

  (

смысла

предметной

 

области

.  

Говорят

что

 

база

 

данных

 

находится

 

в

 

согласованном

 

или

 

целостном

 

состоянии

если

 

все

 

находящиеся

 

в

 

ней

 

данные

 

удовлетворяют

 

заданным

 

для

 

этой

 

базы

 

данных

 

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

 

целостности

 

данных

.  

Следует

 

обратить

 

внимание

что

 

для

 

самой

 

базы

 

данных

для

 

СУБД

 

ограничения

 

целостности

 

являются

 

формальным

 

свойством

одним

 

из

 

видов

 

хранимой

 

в

 

базе

 

информации

 

о

 

предметной

 

области

СУБД

 

не

 

понимает

 

смысла

 


background image

 

80

данных

Имеющая

 

средства

 

поддержки

 

ограничений

 

целостности

 

СУБД

 

реализует

 

проверку

 

и

 

обеспечение

 

согласованности

 

и

 

целостности

 

хранимых

 

данных

 

лишь

 

в

 

той

 

мере

в

 

которой

 

эти

 

данные

 

удовлетворяют

 

заданным

   

в

 

системе

 

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

 

целостности

Поэтому

 

более

 

точно

 

следует

 

говорить

что

 

СУБ

ще

а

 

выпо

жняется

 

тем

что

 

данн

н

к

ы

 

два

 

варианта

 

реакции

 

системы

можно

 

отвергнуть

 

попытку

 

нарушения

 

целостности

а

 

можно

 

выполнить

 

какие

-

либо

 

действия

компенсирующие

 

нарушение

 

целостности

сти

 

можно

 

Д

 

обеспечивает

 

не

 

целостность

 

или

 

согласованность

 

данных

 

вооб

лнение

 

заданных

 

в

 

базе

 

данных

 

ограничений

 

целостность

 

данных

.  

Проблема

 

обеспечения

 

целостности

 

базы

 

данных

 

усло

ые

 

в

 

ней

 

не

 

являются

 

зафиксированными

неизменными

а

 

напротив

 

могут

 

изменяться

 

во

 

времени

Вследствие

 

этого

с

 

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

 

целостности

 

должен

 

быть

 

связан

 

абор

 

правил

 

и

 

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

 

действий

оторые

 

должны

 

выполняться

 

при

 

модификации

 

данных

для

 

того

чтобы

 

в

 

процессе

 

работы

 

с

 

базой

 

данных

 

обеспечивалась

 

корректность

 

хранимых

 

в

 

ней

 

данных

Другими

 

словами

чтобы

 

любые

 

действия

 

по

 

модификации

 

данных

 

переводили

 

базу

 

данных

 

из

 

одного

 

целостного

  (

согласованного

состояния

 

в

 

другое

 

целостное

 

состояние

В

 

связи

 

с

 

этим

 

возникает

 

понятие

 

реакции

 

системы

 

на

 

попытку

 

нарушения

 

целостности

 

данных

При

 

этом

 

возможн

Действия

 

системы

 

по

 

проверке

 

ограничений

 

целостно

представить

 

в

 

следующем

 

виде

 (

рисунок

 9.1). 

По ытка

 

выполнить

 

операцию

(INSERT, UPDATE, DELETE)

п

Проверка

ограничений

Операция

выполняется

Ограничения

не

 

нарушаются

Ограничения

нарушаются

Операция

 

выполняется

.

Дополнительно

 

выполняются

компенси ующие

 

операции

Операция

отвергает я

р

с

Пользователь

или

приложение

Сообщение

об

 

отк зе

операции

а

ни

 

зависит

 

от

 

вида

 

затрагиваемых

 

этими

 

дейс

 

у

 

о

 

ограничения

 

целостности

 

уровня

 

атрибута

 

Рис

.  9.1. 

Работа

 

системы

 

по

 

проверке

 

ограничений

 

целостности

 

 

Очевидно

что

 

реакция

 

системы

 

в

 

случае

 

осуществления

 

действий

 

по

 

модификации

 

данных

 

в

 

большой

 

степе

твиями

 

ограничений

 

целостности

.  

В

 

зависимости

 

от области

 

действия

 

ограничений

 

целостности

 

их

 

можно

 

разделить

 

след ющим бразом