Основные понятия. Операции обновления и реляционной алгебры

Основоположником теории реляционных баз данных является американский ученый Кодд. Ниже приведены основные понятия этой теории.

Домен – это множество однотипных значений данных. Например, домен целых чисел, домен имен студентов, домен символьных строк определенной длины. Несколько атрибутов одного отношения могут получать значение из одного домена. При этом с точки зрения логики значения домена по-разному интерпретируются в разных атрибутах.

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

Отношение R – это множество упорядоченных наборов данных (кортежей), являющихся подмножеством декартового произведения доменов (домены необязательно различные). Кортежи обозначаются перечислением значений доменов, заключенных в угловые скобки. Домены обозначаются заглавной латинской буквой D. Отсюда отношение R Í D1 ´ D2 ´ D3 ´ … ´ Dn. Почему в определении отношения говорится о подмножестве доменов? Рассмотрим отношение «Студент» (рисунок 2.1), включающее два атрибута «Имя» и «Возраст».

 

ИМЯ (домен символьных строк D1 длиной меньше 15) ВОЗРАСТ (домен целых чисел D2)
Галя
Ира
Света

 

Рисунок 2.1 – Отношение «Студент»

 

Операция декартового произведения кортежей включает множество кортежей вида: D1 ´ D2 = <Галя, 17>, <Галя, 18>, <Галя, 19> … <Света, 19> . На самом деле имени соответствует один возраст, то есть R Í D1 ´ D2. С другой стороны, не всё множество значений домена используется в отношении, что также подтверждает определение отношения как подмножества декартового произведения домены.

 

Схема отношения – это перечень имён атрибутов отношения. Обозначается схема как R (A1, A2, …, An), где Ai – номера или имена атрибутов. Для примера отношения «Студент», схема имеет вид R( Имя, Возраст) или R(A1,A2), где A1=Имя, A2=Возраст.

 

Мощность отношения – число кортежей отношения. Для отношения «Студент» мощность равна трем.

 

Степень отношения – число атрибутов отношения. Для отношения «Студент» степень равна двум.

 

Каждое отношение должно удовлетворять следующим требованиям:

1. Отношение имеет фиксированное число и расположение атрибутов.

2. Отношение имеет конечное множество кортежей.

3. В отношении не может быть одинаковых кортежей.

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

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

Пусть имеется отношение R(A1,A2,…An). Операция добавления кортежа в это отношение выглядит следующим образом:

ADD(R; A1=d1, A2=d2, …,An=dn) или

ADD(R; d1,d2,…dn), где

di, i=1,2,…,n – компоненты добавляемого кортежа <d1,d2,…,dn> .

 

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

1. Добавляемый кортеж не соответствует схеме указанного отношения;

2. Некоторые значения кортежа не принадлежат соответствующим доменам;

3. Добавляемый кортеж совпадает по ключу с кортежем, уже находящимся в отношении.

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

 

Операция удаления кортежа из отношения записывается в виде:

DEL(R; A1=d1, A2=d2, …,An=dn) или DEL(R; d1,d2,…dn), где

di, i=1,2,…,n – компоненты удаляемого кортежа <d1,d2,…,dn> .

Для удаления кортежа можно указать только значения ключевых атрибутов:

DEL(R; B1=l1, B2=l2, …,Bn=ln) или DEL(R; l1,l2,…ln), где

- перечень ключевых атрибутов,

lj -значения ключевых атрибутов (j=1,2,…,k).

Операция удаления всегда выполняется успешно. В случае, если удаляемого кортежа нет, то отношение остаётся без изменений.

 

Операция изменения в некотором кортеже отношения одних атрибутов на другие записывается в виде:

CH(R; A1=d1, A2=d2, …,An=dn; C1=e1,C2=e2,…,Cp=ep)

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

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

 

1.Операция объединения отношений R=R1 È R2, выполняется над совместимыми отношениями. В результирующее отношение входят кортежи первого и второго отношений. Повторяющиеся кортежи не включаются. На рисунке 2.2 показан пример выполнения операции объединения.

R1: Группа 634 (прикладная математика) R2: Группа 633 (физика)
Фамилия Возраст Фамилия Возраст
Раудин Гашников
Кайрис Дюмина
Осин Москаленко
    Осин
Фамилия Возраст
Гашников
Дюмина
Москаленко
Осин
Раудин
Кайрис

 

R1 R2 R= R1 È R2

 

Рисунок 2.2 – Операция объединения отношений

 

2.Операция пересечения над отношениями R= R1 Ç R2- также выполняется над совместимыми отношениями. В итоговое отношение включаются кортежи, принадлежащие как первому, так и второму отношениям. На рисунке 2.3 показан результат выполнения операции пересечения.

.

Фамилия Возраст
Осин

 

 

Рисунок 2.3 – Результат выполнения операции пересечения R= R1 Ç R2

 

3.Операция разности над отношениями R=R1\R2 (или R1-R2), выполняется над совместимыми отношениями. В результирующее отношение включаются только те кортежи первого отношения, которых нет во втором отношении. На рисунке 2.4 показан результат операции разности отношений

Фио Возраст
Раудин
Кайрис

 

 

Рисунок 2.4 – Результат выполнения операции разности R=R1-R2

4.Операция декартового произведения R = R1 ´ R2. Здесь R1 и R2 могут иметь разные схемы. Степень отношения R равна сумме степеней отношений R1 и R2. Мощность отношения R равна произведению мощностей отношений R1 и R2. На рисунке 2.5 показан пример выполнения операции декартового произведения над отношениями.

 

 

Рисунок 2.5 – Пример выполнения операции декартового произведения над отношениями

 

5.Операция деление над отношениями R = R1:R2. Отношение-делимое R1 должно содержать в качестве подмножества множество атрибутов отношения делителя. Частное R содержит только те атрибуты делимого, которых нет в делителе. В отношение-частное включены только те кортежи, декартовое произведение которых с отношением-делителем содержатся в отношении-делимом. На рисунке 2.6 показан пример выполнения операции деления над отношениями.

R1R2

Фамилия Предмет Оценка
Иванов Оит
Иванов Физика
Петров Оит
Петров Физика
Сидоров Оит
Сидоров Физика
Предмет Оценка
Оит
Физика

R=R1:R2

Фамилия
Сидоров

 

Рисунок 2.6 – Пример выполнения операции деления над отношениями

 

Следующие операции характерны только для отношений.

 

6.Операция проекции на некоторые атрибуты – это операция выборки из каждого кортежа отношения R значений атрибутов, входящих в некоторое множество атрибутов - A и удаление из полученного отношения повторяющихся строк. Операция проекции унарная, выполняется над одним отношением.

 

,

где i1,…,ir – номера или имена атрибутов отношения R1, входящих в результирующее отношение. На рисунке 2.7 приведен пример выполнения операции проекции над отношением R, со схемой R(фамилия, предмет, оценка).

Фамилия Предмет Оценка
Иванов Оит
Иванов Физика
Петров Оит
Петров Физика
Предмет Оценка
Оит
Физика
Физика

Отношение R Проекция

 

Рисунок 2.7 – Пример выполнения операции проекции над отношением R

 

7.Операция соединение является двухместной операцией, то есть выполняется над двумя отношениями. В каждом отношении выделяется атрибут, по которому будет производиться соединение. Эта операция отличается от декартового произведения тем, что комбинируются лишь те кортежи отношений, у которых значения совпадающих атрибутов равны. Обозначается эта операция следующим образом:R=R1►◄R2. На рисунке 2.8 приведен пример выполнения операции соединения отношений R1 и R2 по атрибуту «Код студента».

Приведенный вид операции соединения называют операцией внутреннего соединения. В результирующее отношение вошли кортежи с совпадающими значениями поля соединения. Для операции соединения существенен порядок записи отношений в операции. Кроме операции внутреннего соединения различают операции левого внешнего соединения, правого внешнего соединения и полного соединения отношений. В результате выполнения операции левого внешнего соединения получается отношение, включающее все кортежи левого отношения, при этом кортежи с неизвестными значениями поля соединения заполняются значениями Null (рисунок 2.9).

 

R1 R2

Специальность Код студента
Математика
Физика
Оит
Код студента Фамилия Курс
Иванов
Петров
Сидоров

 

R=R1►◄R2

 

Специальность Код студента Фамилия Курс
Математика Иванов
Физика Петров

 

Рисунок 2.8 - Пример выполнения операции внутреннего соединения отношений

 

 

Специальность Код студента Фамилия Курс
Математика Иванов
Физика Петров
Оит Null Null

 

Рисунок 2.9 – Пример выполнения операции левого внешнего соединения отношений

 

В результате выполнения операции правого внешнего соединения получается отношение, включающее все кортежи правого отношения, при этом кортежи с неизвестными значениями поля соединения заполняются значениями Null (рисунок 2.10).

 

Специальность Код студента Фамилия Курс
Математика Иванов
Физика Петров
Null Сидоров

 

Рисунок 2.10 – Пример выполнения операции правого внешнего соединения отношений

 

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

 

Специальность Код студента Фамилия Курс
Математика Иванов
Физика Петров
Оит Null Null
Null Сидоров

 

Рисунок 2.11 – Пример выполнения операции полного соединения отношений

 

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

 

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

,

где F – формула, включающая:

1. имена атрибутов и константы различных типов.

2. логические операции и кванторы всеобщности:

3. арифметические операции и операции сравнения:,<,>,=,

4. скобки.

Например, дано отношение R1:

Фамилия Оценка Предмет
Иванов Оит
Иванов Физика
Петров Оит

R=- отношение, включающее два кортежа: <Иванов,5,Оит>,<Петров, 5, Оит >.

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

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

10.Операция расширения исходного отношения атрибутом. Последние две операции позволяют изменять структуру отношения.

Перечисленные операции относятся к операциям реляционной алгебры. Языки реляционной алгебры – процедурные языки программирования. Существуют языки реляционного исчисления, не являющиеся процедурными, основанные на классическом исчислении предикатов – эти языки дают набор правил для записи запросов к базе данных. В запросе – информация о желаемом результате. На основании запроса СУБД автоматически, путем формирования новых отношений, выдает желаемый результат. Это непроцедурные языки (в частности, к ним относится и язык запросов SQL).