Манипуляционная часть реляционной модели данных

DROP PRIMARY KEY

ON DELETE SET NULL

SET NO CYCLE

Все изменения начинают действовать со следующей, после изменения таблицы, операции вставки строки в таблицу.

Добавление ограничений целостности

Добавление новых ограничений целостности выполняется с помощью следующей операции:

ADD [ CONSTRAINT имя_ограничения ] ограничение

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

Пример 1. Предположим, что существует таблица с именем EQUIPMENT, в которой колонка Equip_owner определяет отдел, для которого выделено оборудование. Необходимо добавить в таблицу ссылочное ограничение целостности, в соответствии с которым колонка Equip_Owner должна представлять некоторый отдел из тех, которые определены в таблице DEPT. Первичным ключом таблицы DEPT является колонка с именем DeptNo. Если из таблицы DEPT удаляется некоторый отдел, которому выделено оборудование, значение колонки Equip_Owner для такого оборудования должно быть установлено как не определенное (NULL). Новому ограничению необходимо присвоить имя DeptQuip.

ALTER TABLE EQUIPMENT

ADD CONSTRAINT DeptQuip

FOREIGN KEY( Equip_Owner )

REFERENCES DEPT

Пример 2. В таблицу EMPLOYEE следует добавить ограничение с именем Revenue, проверяющее, что каждый сотрудник должен иметь суммарное значение зарплаты и комиссионных, превышающее значение 30000.

ALTER TABLE EMPLOYEE

ADD CONSTRAINT Revenue

CHECK( Salary + Comm > 30000 )

Удаление ограничений целостности

Существующие в таблице ограничения целостности могут быть удалены с помощью следующих операций:

DROP тип_ограничения имя_ограничения

В качестве типа ограничения может быть указано одно из следующих ключевых слов: FOREIGN KEY, UNIQUE, CHECK, CONSTRAINT.

Пример. Удалить из таблицы EMPLOYEE ограничение Revenue, добавленное в предыдущем примере.

ALTER TABLE EMPLOYEE

DROP CONSTRAINT Revenue

Общая характеристика

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

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

В общем случае языки запросов в реляционной модели данных разбиваются на два класса:

• алгебраические языки (реляционная алгебра), позволяющие выражать запросы с помощью специальных операторов, применяемых к отношениям;

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

Из приведенного определения следует:

• языки реляционной алгебры показывают, как получить результат;

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

Языки реляционного исчисления, в свою очередь, делятся на два класса – в зависимости от того, что является примитивными объектами исчисления: кортежи или элементы доменов, являющиеся значениями некоторых атрибутов.

Таким образом, подводя итог сказанному выше, можно определить три вида языков запросов:

• языки реляционной алгебры,

• языки реляционного исчисления с переменными – кортежами,

• языки реляционного исчисления с переменными на доменах.

Языки реляционной алгебры позволяют выражать запросы средствами специализированных операций, применяемых к отношениям.

Языки реляционного исчисления позволяют выражать запросы путем спецификации предиката, которому должны удовлетворять кортежи (исчисление с переменными – кортежами) или элементы доменов (исчисление с переменными на доменах).

Такие теоретические языки запросов являются эталоном для оценки реально существующих языков запросов. Они были предложены Э.Ф. Коддом для представления минимальных возможностей любого реляционного языка запросов для реляционной модели данных.

По своей выразительности (с точки зрения получения из реляционной базы данных необходимой информации) все три типа языков запросов эквивалентны между собой.

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

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

Общая характеристика

Реляционная алгебра предоставляет средства для записи и интерпретации выражений. Алгебраическое выражение имеет обычную структуру: совокупность операндов, разделенных знаками операций. Результат выражения определяется использованными в нем операндами и операциями. Реляционная алгебра представляет набор операций, использующих в качестве операндов отношения и возвращающих в качестве результата также отношение, то есть, представляет операции над отношениями:

R опц R дает R

Э.Ф. Кодд определил минимальный набор операций над отношениями; все операции, входящие в этот набор, можно разбить на две группы:

1. Теоретико-множественные операции – традиционные операции над множествами, определяемые теорией множеств; к ним относятся:

1. объединение

2. вычитание

3. пересечение

4. прямое (декартово) произведение

2. Специальные реляционные операции; к ним относятся:

1. выбор (селекция)

2. проекция

3. соединение

4. деление

Особо следует выделить операцию переименования, относящуюся ко второй группе операций.

Из приведенных выше рассуждений можно сделать два важных вывода:

1. Операндами реляционных операций являются отношения; результатом также является отношение. Это свойство называют свойством замкнутости. Оно позволяет результат одной операции использовать в качестве исходных данных (операнда) для другой.

Следовательно, можно записывать вложенные выражения, т.е. выражения, в которых операнды представлены не простыми именами отношений, а другими выражениями:

R1 опц1 R2 опц2 R3...

2. Используя термин отношение, следует помнить, что на самом деле мы имеем дело с двумя понятиями:

• схема отношения (интенсионал)

• экземпляр (реализация) отношения (экстенсионал)

Так как реляционная операция дает в результате отношение, следовательно, оно также будет иметь, наряду с реализацией, и схему отношения.

Так как схема отношения – это поименованная совокупность имен атрибутов, для реляционных операций определяются правила наследования имен атрибутов, на основании которых определяется схема отношения, являющегося результатом реляционной операции. Эти правила наследования позволяют предсказывать имена атрибутов на выходе операции.

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

Рассмотрим пример.

Пусть имеется некоторое отношение со схемой S(A, B, C) и реализацией

A B C
a1 b1 c1
a2 b1 c3

Можно использовать, например, следующую операцию переименования:

S: переименовать C в SC

В результате получим отношение со следующей схемой S(A, B, SC)и реализацией

A B SC
a1 b1 c1
a2 b1 c3

Операции переименования в выражениях реляционной алгебры явно использоваться не будут; но там, где это необходимо, операция переименования будет упоминаться, с тем, чтобы определить соответствующую схему отношения результата.

Теоретико-множественные операции

Как было сказано ранее, теоретико-множественные операции – это традиционные операции над множествами, определяемые теорией множеств; к ним относятся:

• объединение

• вычитание

• пересечение

• прямое (декартово) произведение

Но следует отметить, что реляционные операции имеют существенное отличие от классических, определенных в теории множеств.

Рассмотрим это отличие на примере операции объединения.

Операция объединения в теории множеств определяется следующим образом:


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  




Подборка статей по вашей теме: