Базы данных

Формализация реляционной модели

Разбить на страницы
Показывать лекцию целиком

Цель лекции: рассмотреть формализованное описание реляционной модели и операций манипулирования данными как основу для использования математических методов проектирования баз данных и основу создания языков запросов к базе данных.

7.1. Формализованное описание отношений и схемы отношений

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

Пусть A1, A2, ..., An имена атрибутов. Каждому имени атрибута Ai соответствует допустимое множество значений, которые может принимать атрибут Ai. Это множество значений Di называется доменом атрибута Ai, i=1,n. По определению, домены являются непустыми конечными или счетными множествами. Уточним, что в теории реляционных баз данных домен рассматривается как множество значений одного (причем простого) типа данных. Понятию домена Di соответствует множество значений, стоящих в столбце Ai рассматриваемой таблицы.

Схемой отношения R {A1, A2, ..., An} называется конечное множество имен атрибутов {A1, A2, ..., An}, причем атрибут Ai принимает значение из множества Di (i=1, 2, ..., n), где nарность отношения.

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

Пусть $$D = D_{1}\cup D_{2}\cup \dots \cup D_{n}$$.

Отношением r со схемой R называется конечное множество отображений {t1, t2, ..., tp} из множества R: {A1, A2, ..., An} в множество $$D:\{ D_{1}\cup D2\cup \dots \cup D_{n}\}$$, таких, что $$t_{k}(A_{i}) \in D_{i}, k=\overline{1,p}; i=\overline{1,n}$$.

Отображение tk называется k -м кортежем, nразмерность кортежа.

Понятию k -го кортежа соответствует множество значений, стоящих в k -й строке рассматриваемой таблицы.

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

Ключом отношения r со схемой R называется минимальное подмножество $$K = \{ A_{i1}, A_{i2}, \dots , A_{im}\} \subseteq \{ A_{1}, A_{2}, \dots , A_{n}\}$$, где $$\{ i_{1}, i_{2}, \dots ,i_{m}\} \subseteq \{ 1, 2, \dots , n\}$$, такое, что любые два различных кортежа $$t_{1}, t_{2} \in r (t_{1} \ne t_{2})$$ не совпадают по значениям множества K ={Ai1, Ai2, ..., Aim}.

Возможны случаи, когда отношение r имеет несколько ключей. Такие ключи называются потенциальными (возможными). Выбранный из них ключ для идентификации кортежей называется первичным ключом. Таким образом, достаточно знать значение кортежа на множестве K, чтобы однозначно его идентифицировать. Ключ используется для представления связей между отношениями. С этой целью первичный ключ одного отношения включается в структуру (набор атрибутов) связанного с ним отношения. Для второго отношения соответствующий ключ называется внешним ключом.

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

Выпишем реляционную модель данных примера из .). Введем обозначения атрибутов всех соответствующих сущностей. Пусть A1 – код студента, A2 – фамилия, A3 – дата рождения, A4 – место рождения, A5 – номер факультета, A6 – название факультета, A7 – номер специальности, A8 – название специальности. Обозначим схему отношения СТУДЕНТ как R1, ФАКУЛЬТЕТ как R2, СПЕЦИАЛЬНОСТЬ как R3, СТУДЕНТ УЧИТСЯ НА ФАКУЛЬТЕТЕ как R4, СТУДЕНТ УЧИТСЯ ПО СПЕЦИАЛЬНОСТИ как R5, НА ФАКУЛЬТЕТЕ ИМЕЮТСЯ СПЕЦИАЛЬНОСТИ как R6.

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

R1(A1, A2, A3, A4)
R2(A5, A6)
R3(A7, A8)
R4(A1, A5)
R5(A1, A7)
R6(A5, A7)

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

r1, r2, r3, r4, r5, r6,

Отметим следующие свойства отношения:

  • Отношение имеет имя, которое отличается от имен всех других отношений.
  • Каждое значение элементов кортежей представляется простым (атомарным) типом данных.
  • Каждый атрибут имеет уникальное имя.
  • Значения всех атрибутов являются атомарными (неделимыми). Это следует из определения домена как множества значений простого типа данных, т.е. среди значений домена не могут содержаться множества.
  • Порядок рассмотрения атрибутов в схеме отношения (отношении) не имеет значения, т.к. для ссылки на значение атрибута в кортеже отношения всегда используется имя атрибута.
  • Порядок рассмотрения кортежей в отношении не имеет значения, т.к. отношение представляет собой множество кортежей, а элементы множества, по определению теории множеств, неупорядочены.
  • 7.2. Манипулирование данными в реляционной модели

    Для манипулирования данными в реляционной модели используются два формальных аппарата:

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

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

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

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

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

    Заметим, что крайне редко алгебра или исчисление принимаются в качестве полной основы какого-либо языка БД. Обычно (как, например, в случае языка SQL) язык основывается на некоторой смеси алгебраических и логических конструкций. Тем не менее знание алгебраических и логических основ языков баз данных часто бывает полезно на практике.

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

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

    Объединение $$r \cup s$$

    Объединением отношений r и s называется множество кортежей, которые принадлежат или r, или s, или им обоим. Для операции объединения требуется одинаковая арность отношений.

    Для примера, пусть

    r s
    a b a b g a
    d a f d a f
    c b d

    тогда

    $$r \cup s$$
    a b a
    d a f
    c b d
    b g a

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

    Разность r – s

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

    r - s
    a b a
    c b d

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

    Декартово произведение r x s

    Пусть r и s – отношения арности k1 и k2 соответственно. Декартовым произведением r x s называется множество кортежей длины k1+k2, первые k1 компонентов которых образуют кортежи, принадлежащие r, а последние k2 – кортежи, принадлежащие s.

    r x s
    a b a b g a
    a b a d a f
    d a f b g a
    d a f d a f
    c b d b g a
    c b d d a f

    Проекция $$\pi _{Ai1,Ai2,\dots Aim}(r)$$

    Проекция $$\pi _{Ai1,Ai2,\dots Aim}(r)$$ есть множество кортежей, получаемых из кортежей отношения r выбором столбцов с именами Ai1, Ai2, ..., Aim.

    Другими словами, это операция построения "вертикального" подмножества, получаемого путем выбора определенных атрибутов и исключения остальных. Повторяющиеся кортежи исключаются.

    $$\pi _{1,3}(r)$$
    a a
    d f
    c d

    Выбор ( селекция ) $$\sigma _{F}(r)$$

    Пусть F – формула, образованная: операндами, являющимися константами или именами атрибутов, арифметическими операторами сравнения, логическими операторами (и, или, не), тогда выбором (селекцией) $$\sigma _{F}$$ называется множество кортежей, компоненты которого удовлетворяют условию, заданному формулой F.

    $$\sigma _{(1)=(3)}(r)=$$ a b a

    Здесь F:(1)=(3) – содержимое первого столбца равно содержимому третьего столбца.

    Приведем ряд примеров представления запросов с помощью формальных операций для реляционной модели (СТУДЕНТ, ФАКУЛЬТЕТ, СПЕЦИАЛЬНОСТЬ), рассмотренной выше.

    Пример 1.

    Сформировать список студентов (фамилия).

    Рассмотрим схему отношения СТУДЕНТ.

    Атрибут "Фамилия" обозначен здесь А2 Для ответа на запрос необходимо взять проекцию отношения r1 на столбец А2.

    $$\pi _{A2}(r1)$$

    Пример 2.

    Выдать список фамилий и дат рождений студентов, которым на текущую дату (date) больше 35 лет.

    Рассмотрим то же отношение r1. Сначала выбираем студентов, которым больше 35 лет:

    $$\sigma _{(A3)+35<date}(r1)$$

    Затем берем проекцию полученного отношения на столбцы

    $$\pi _{A1,A3}(\sigma _{(A3)+35<date}(r1))$$

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

    Пример 3.

    Выдать список фамилий студентов, обучающихся по специальности "Информационные технологии". Название специальности является атрибутом отношения r3. Если бы в этом отношении присутствовал атрибут "фамилия", то задача решалась бы аналогично примеру 2. В отношении r5 присутствует атрибут "код студента", а "фамилия" присутствует в отношении r1. Для ответа на этот запрос необходимо связывать по "код студента" отношение r3 и отношение r1.

    Сначала выберем из отношения r3 кортежи с названием специальности "Информационные технологии". Обозначим полученное отношение rp1. (Дальнейшие промежуточные отношения будем обозначать последовательно rp1, rp2, rp3 и т.д.).

    $$rp1=\sigma _{(A8)="Информационныетехнологии"}(r3)$$

    Далее нас будет интересовать только атрибут A1 – "код студента". Поэтому возьмем проекцию на эти столбцы.

    $$rp2\pi _{A1}(rp1)$$.

    Далее необходимо связать отношения r1 и rp2 (склеить таблицы). Для склейки таблиц используется операция "декартово произведение":

    rp3=r1xrp2

    В отношении r3 присутствуют два одинаковых столбца: A1 из отношения r1 и A1 из отношения rp2. Выбирая из отношения rp3 строки, в которых значения в соответствующих столбцах совпадают, получим сведения о студентах, обучающихся по специальности "Информационные технологии"

    $$rp4=\sigma _{(A1*r1)=(A1*rp2)}(rp3)$$,

    где A1 * r1 и A1 * rp2 обозначают соответственно столбец A1 соответствующей первой и второй составной части декартова произведения. Теперь осталось только выбрать фамилии соответствующих студентов

    $$rp5=\pi _{A1}(rp4)$$

    Получаем требуемый результат. Заметим, что для экономии действий и памяти, перед тем как склеивать таблицы, целесообразно было сделать операцию проекции отношения r1 на столбцы A1, A2. (чтобы не включать в декартово произведение лишние столбцы).

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

    Пересечение $$r \cap s$$

    Пересечением отношений r и s называется множество кортежей, принадлежащих как r, так и s. Пересечение может быть выражено через операции разности

    $$r \cap s = r – (r – s).$$

    $$\theta$$

    $$\theta$$ -соединение r и s по столбцам Ai и Aj представляет собой множество таких кортежей в декартовом произведении r и s, что i -й компонент r находится в отношении $$\theta$$ c j -м компонентом s, где $$\theta$$ – арифметический оператор сравнения. Если $$\theta$$ является оператором равенства, то эта операция называется эквисоединением

    где l – арность отношения r.

    Пример.

    r s
    1 2 3 3 1
    4 5 6 6 2
    7 8 9
    1 2 3 3 1
    1 2 3 6 2
    4 5 6 6 2

    Заметим, что в примере 3 две последовательно идущие операции ( декартово произведение и селекция ) вместе как раз представляют операцию соединения. Причем использование декартова произведения для соединения таблиц обязательно обусловливает использование селекции как следующей операции для установления связи между таблицами. Поэтому целесообразно использовать такую объединенную операцию и программно реализовывать в СУБД именно операцию соединения.

    Естественное соединение

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

    Пусть

    r = (A1, ..., Ak, B1,..., Bn), s = (A1, ..., Ak, C1,..., Cm),

    имена A1, ..., Ak совпадают.

    Тогдаопределяется следующим образом

    Для подчеркивания важности приведенных операций реляционной алгебры, а также для уточнения понятия реляционной СУБД приведем следующее определение одного из ведущих специалистов в области реляционных баз данных К.Дж. Дейта: " Будем называть систему реляционной, если она поддерживает, по крайней мере, реляционные базы данных, т.е. базы данных, которые могут восприниматься пользователем как таблицы и только как таблицы, операции селекции, проекции и соединения реляционной алгебры, не требуя при этом, чтобы каким-то образом были предопределены физические пути доступа для поддержки этих операций ".

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

    Вопросы, рассматриваемые в данной лекции, более подробно описаны в [-].

    Страницы:

    Цель лекции: рассмотреть формализованное описание реляционной модели и операций манипулирования данными как основу для использования математических методов проектирования баз данных и основу создания языков запросов к базе данных.

    7.1. Формализованное описание отношений и схемы отношений

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

    Пусть A1, A2, ..., An имена атрибутов. Каждому имени атрибута Ai соответствует допустимое множество значений, которые может принимать атрибут Ai. Это множество значений Di называется доменом атрибута Ai, i=1,n. По определению, домены являются непустыми конечными или счетными множествами. Уточним, что в теории реляционных баз данных домен рассматривается как множество значений одного (причем простого) типа данных. Понятию домена Di соответствует множество значений, стоящих в столбце Ai рассматриваемой таблицы.

    Схемой отношения R {A1, A2, ..., An} называется конечное множество имен атрибутов {A1, A2, ..., An}, причем атрибут Ai принимает значение из множества Di (i=1, 2, ..., n), где nарность отношения.

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

    Пусть $$D = D_{1}\cup D_{2}\cup \dots \cup D_{n}$$.

    Отношением r со схемой R называется конечное множество отображений {t1, t2, ..., tp} из множества R: {A1, A2, ..., An} в множество $$D:\{ D_{1}\cup D2\cup \dots \cup D_{n}\}$$, таких, что $$t_{k}(A_{i}) \in D_{i}, k=\overline{1,p}; i=\overline{1,n}$$.

    Отображение tk называется k -м кортежем, nразмерность кортежа.

    Понятию k -го кортежа соответствует множество значений, стоящих в k -й строке рассматриваемой таблицы.

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

    Ключом отношения r со схемой R называется минимальное подмножество $$K = \{ A_{i1}, A_{i2}, \dots , A_{im}\} \subseteq \{ A_{1}, A_{2}, \dots , A_{n}\}$$, где $$\{ i_{1}, i_{2}, \dots ,i_{m}\} \subseteq \{ 1, 2, \dots , n\}$$, такое, что любые два различных кортежа $$t_{1}, t_{2} \in r (t_{1} \ne t_{2})$$ не совпадают по значениям множества K ={Ai1, Ai2, ..., Aim}.

    Возможны случаи, когда отношение r имеет несколько ключей. Такие ключи называются потенциальными (возможными). Выбранный из них ключ для идентификации кортежей называется первичным ключом. Таким образом, достаточно знать значение кортежа на множестве K, чтобы однозначно его идентифицировать. Ключ используется для представления связей между отношениями. С этой целью первичный ключ одного отношения включается в структуру (набор атрибутов) связанного с ним отношения. Для второго отношения соответствующий ключ называется внешним ключом.

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

    Выпишем реляционную модель данных примера из .). Введем обозначения атрибутов всех соответствующих сущностей. Пусть A1 – код студента, A2 – фамилия, A3 – дата рождения, A4 – место рождения, A5 – номер факультета, A6 – название факультета, A7 – номер специальности, A8 – название специальности. Обозначим схему отношения СТУДЕНТ как R1, ФАКУЛЬТЕТ как R2, СПЕЦИАЛЬНОСТЬ как R3, СТУДЕНТ УЧИТСЯ НА ФАКУЛЬТЕТЕ как R4, СТУДЕНТ УЧИТСЯ ПО СПЕЦИАЛЬНОСТИ как R5, НА ФАКУЛЬТЕТЕ ИМЕЮТСЯ СПЕЦИАЛЬНОСТИ как R6.

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

    R1(A1, A2, A3, A4)
    R2(A5, A6)
    R3(A7, A8)
    R4(A1, A5)
    R5(A1, A7)
    R6(A5, A7)

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

    r1, r2, r3, r4, r5, r6,

    Отметим следующие свойства отношения:

  • Отношение имеет имя, которое отличается от имен всех других отношений.
  • Каждое значение элементов кортежей представляется простым (атомарным) типом данных.
  • Каждый атрибут имеет уникальное имя.
  • Значения всех атрибутов являются атомарными (неделимыми). Это следует из определения домена как множества значений простого типа данных, т.е. среди значений домена не могут содержаться множества.
  • Порядок рассмотрения атрибутов в схеме отношения (отношении) не имеет значения, т.к. для ссылки на значение атрибута в кортеже отношения всегда используется имя атрибута.
  • Порядок рассмотрения кортежей в отношении не имеет значения, т.к. отношение представляет собой множество кортежей, а элементы множества, по определению теории множеств, неупорядочены.
  • 7.2. Манипулирование данными в реляционной модели

    Для манипулирования данными в реляционной модели используются два формальных аппарата:

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

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

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

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

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

    Заметим, что крайне редко алгебра или исчисление принимаются в качестве полной основы какого-либо языка БД. Обычно (как, например, в случае языка SQL) язык основывается на некоторой смеси алгебраических и логических конструкций. Тем не менее знание алгебраических и логических основ языков баз данных часто бывает полезно на практике.

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

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

    Объединение $$r \cup s$$

    Объединением отношений r и s называется множество кортежей, которые принадлежат или r, или s, или им обоим. Для операции объединения требуется одинаковая арность отношений.

    Для примера, пусть

    r s
    a b a b g a
    d a f d a f
    c b d

    тогда

    $$r \cup s$$
    a b a
    d a f
    c b d
    b g a

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

    Разность r – s

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

    r - s
    a b a
    c b d

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

    Декартово произведение r x s

    Пусть r и s – отношения арности k1 и k2 соответственно. Декартовым произведением r x s называется множество кортежей длины k1+k2, первые k1 компонентов которых образуют кортежи, принадлежащие r, а последние k2 – кортежи, принадлежащие s.

    r x s
    a b a b g a
    a b a d a f
    d a f b g a
    d a f d a f
    c b d b g a
    c b d d a f

    Проекция $$\pi _{Ai1,Ai2,\dots Aim}(r)$$

    Проекция $$\pi _{Ai1,Ai2,\dots Aim}(r)$$ есть множество кортежей, получаемых из кортежей отношения r выбором столбцов с именами Ai1, Ai2, ..., Aim.

    Другими словами, это операция построения "вертикального" подмножества, получаемого путем выбора определенных атрибутов и исключения остальных. Повторяющиеся кортежи исключаются.

    $$\pi _{1,3}(r)$$
    a a
    d f
    c d

    Выбор ( селекция ) $$\sigma _{F}(r)$$

    Пусть F – формула, образованная: операндами, являющимися константами или именами атрибутов, арифметическими операторами сравнения, логическими операторами (и, или, не), тогда выбором (селекцией) $$\sigma _{F}$$ называется множество кортежей, компоненты которого удовлетворяют условию, заданному формулой F.

    $$\sigma _{(1)=(3)}(r)=$$ a b a

    Здесь F:(1)=(3) – содержимое первого столбца равно содержимому третьего столбца.

    Приведем ряд примеров представления запросов с помощью формальных операций для реляционной модели (СТУДЕНТ, ФАКУЛЬТЕТ, СПЕЦИАЛЬНОСТЬ), рассмотренной выше.

    Пример 1.

    Сформировать список студентов (фамилия).

    Рассмотрим схему отношения СТУДЕНТ.

    Атрибут "Фамилия" обозначен здесь А2 Для ответа на запрос необходимо взять проекцию отношения r1 на столбец А2.

    $$\pi _{A2}(r1)$$

    Пример 2.

    Выдать список фамилий и дат рождений студентов, которым на текущую дату (date) больше 35 лет.

    Рассмотрим то же отношение r1. Сначала выбираем студентов, которым больше 35 лет:

    $$\sigma _{(A3)+35<date}(r1)$$

    Затем берем проекцию полученного отношения на столбцы

    $$\pi _{A1,A3}(\sigma _{(A3)+35<date}(r1))$$

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

    Пример 3.

    Выдать список фамилий студентов, обучающихся по специальности "Информационные технологии". Название специальности является атрибутом отношения r3. Если бы в этом отношении присутствовал атрибут "фамилия", то задача решалась бы аналогично примеру 2. В отношении r5 присутствует атрибут "код студента", а "фамилия" присутствует в отношении r1. Для ответа на этот запрос необходимо связывать по "код студента" отношение r3 и отношение r1.

    Сначала выберем из отношения r3 кортежи с названием специальности "Информационные технологии". Обозначим полученное отношение rp1. (Дальнейшие промежуточные отношения будем обозначать последовательно rp1, rp2, rp3 и т.д.).

    $$rp1=\sigma _{(A8)="Информационныетехнологии"}(r3)$$

    Далее нас будет интересовать только атрибут A1 – "код студента". Поэтому возьмем проекцию на эти столбцы.

    $$rp2\pi _{A1}(rp1)$$.

    Далее необходимо связать отношения r1 и rp2 (склеить таблицы). Для склейки таблиц используется операция "декартово произведение":

    rp3=r1xrp2

    В отношении r3 присутствуют два одинаковых столбца: A1 из отношения r1 и A1 из отношения rp2. Выбирая из отношения rp3 строки, в которых значения в соответствующих столбцах совпадают, получим сведения о студентах, обучающихся по специальности "Информационные технологии"

    $$rp4=\sigma _{(A1*r1)=(A1*rp2)}(rp3)$$,

    где A1 * r1 и A1 * rp2 обозначают соответственно столбец A1 соответствующей первой и второй составной части декартова произведения. Теперь осталось только выбрать фамилии соответствующих студентов

    $$rp5=\pi _{A1}(rp4)$$

    Получаем требуемый результат. Заметим, что для экономии действий и памяти, перед тем как склеивать таблицы, целесообразно было сделать операцию проекции отношения r1 на столбцы A1, A2. (чтобы не включать в декартово произведение лишние столбцы).

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

    Пересечение $$r \cap s$$

    Пересечением отношений r и s называется множество кортежей, принадлежащих как r, так и s. Пересечение может быть выражено через операции разности

    $$r \cap s = r – (r – s).$$

    $$\theta$$

    $$\theta$$ -соединение r и s по столбцам Ai и Aj представляет собой множество таких кортежей в декартовом произведении r и s, что i -й компонент r находится в отношении $$\theta$$ c j -м компонентом s, где $$\theta$$ – арифметический оператор сравнения. Если $$\theta$$ является оператором равенства, то эта операция называется эквисоединением

    где l – арность отношения r.

    Пример.

    r s
    1 2 3 3 1
    4 5 6 6 2
    7 8 9
    1 2 3 3 1
    1 2 3 6 2
    4 5 6 6 2

    Заметим, что в примере 3 две последовательно идущие операции ( декартово произведение и селекция ) вместе как раз представляют операцию соединения. Причем использование декартова произведения для соединения таблиц обязательно обусловливает использование селекции как следующей операции для установления связи между таблицами. Поэтому целесообразно использовать такую объединенную операцию и программно реализовывать в СУБД именно операцию соединения.

    Естественное соединение

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

    Пусть

    r = (A1, ..., Ak, B1,..., Bn), s = (A1, ..., Ak, C1,..., Cm),

    имена A1, ..., Ak совпадают.

    Тогдаопределяется следующим образом

    Для подчеркивания важности приведенных операций реляционной алгебры, а также для уточнения понятия реляционной СУБД приведем следующее определение одного из ведущих специалистов в области реляционных баз данных К.Дж. Дейта: " Будем называть систему реляционной, если она поддерживает, по крайней мере, реляционные базы данных, т.е. базы данных, которые могут восприниматься пользователем как таблицы и только как таблицы, операции селекции, проекции и соединения реляционной алгебры, не требуя при этом, чтобы каким-то образом были предопределены физические пути доступа для поддержки этих операций ".

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

    Вопросы, рассматриваемые в данной лекции, более подробно описаны в [-].

    Вернуться к учебному плану