Основные понятия. Операции обновления и реляционной алгебры
Основоположником теории реляционных баз данных является американский ученый Кодд. Ниже приведены основные понятия этой теории.
Домен – это множество однотипных значений данных. Например, домен целых чисел, домен имен студентов, домен символьных строк определенной длины. Несколько атрибутов одного отношения могут получать значение из одного домена. При этом с точки зрения логики значения домена по-разному интерпретируются в разных атрибутах.
Например, доменом целых чисел можно представить атрибуты «оценка» и «год рождения» сущности «Студент».
Отношение 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).