Сдам Сам

ПОЛЕЗНОЕ


КАТЕГОРИИ







БАЗЫ ДАННЫХ. КОНСПЕКТ ЛЕКЦИЙ.





БАЗЫ ДАННЫХ. КОНСПЕКТ ЛЕКЦИЙ.

Лекция № 1. Введение

 

Системы управления базами данных

 

Системы управления базами данных (СУБД) – это специализированные программные продукты, позволяющие:

1) постоянно хранить сколь угодно большие (но не бесконечные) объемы данных;

2) извлекать и изменять эти хранящиеся данные в том или ином аспекте, используя при этом так называемые запросы;

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

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

Соответственно, базы данных – это наборы данных, находящиеся под контролем систем управления.

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

Изначально СУБД были основаны на иерархических и сетевых моделях данных, т. е. позволяли работать только с древовидными и графовыми структурами. В процессе развития в 1970 г. появились системы управления базами данных, предложенные Коддом (Codd), основанные на реляционной модели данных.

 

Реляционные базы данных

 

Термин «реляционный» произошел от английского слова «relation» – «отношение».

В самом общем математическом смысле (как можно помнить из классического курса алгебры множеств) отношение – это множество

 

R = {(x 1, …, x n) | x 1 ∈ A 1 ,…,x n A n },

 

где A 1, …, A n множества, образующие декартово произведение. Декартово произведение — Прямое или декартово произведение множеств множество, элементами которого являются всевозможные упорядоченные пары элементов исходных двух множеств.

Если каждому элементу из множества A сопоставлен в соответствие определенный элемент из множества B, то возникает множество, составленное из пар элементов множеств A и B, - декартово произведение множеств.

Записывают декартово произведение множеств так:

A × B = {(a; b) | a ∈ A, b ∈ B}.

Это значит, что если например дано множество A = {1,2,3} и множество B = {15,25}, то их декартово произведение будет состоять из пар:

A × B = {(1;15), (1;25), (2;15), (2;25), (3;15), (3;25)}

Если во множестве A количество элементов равно m, а во множестве B — n, то их декартово произведение будет состоять из m×n элементов.

Следует иметь в виду что A×B и B×A разные множества, так как пары типа (a; b) отличаются от пар тип (b; a).

Примером декартова произведения множеств могут служить

· таблица умножения, где умножаются два множества, содержащие натуральные числа,

· множество точек плоскости с координатами (x; y), где x ∈ A, y ∈ B,

· множество дробей, в которых числитель принадлежит одному множеству, а знаменатель другому.

 

 

Таким образом, отношение R это подмножество декартова произведения множеств: A 1 × × A n:

 

RA 1 × × A n.

L ⊆ R означает L содержится в R ('является подмножеством')

 

Например, рассмотрим бинарные отношения строгого порядка «больше» и «меньше» на множестве упорядоченных пар чисел A 1 = A2 = {3, 4, 5}:

 

R > = {(3, 4), (4, 5), (3, 5)} A 1 × A 2; строго включено

R < = {(5, 4), (4, 3), (5, 3)} ⊂ A 1 × A 2.

 

Эти же отношения можно представить в виде таблиц.

Отношение «больше» R >:

 

Отношение «меньше» R <:

 

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

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

Итак, формы представления данных в реляционных БД могут быть разными. В чем проявляется эта возможность различного представления в нашем случае? Отношения R > и R < – это множества, а множество – структура неупорядоченная, значит, в таблицах, соответствующих этим отношениям, строки можно менять между собой местами. Но в то же время элементы этих множеств – это упорядоченные наборы, в нашем случае – упорядоченные пары чисел 3, 4, 5, значит, столбцы менять местами нельзя. Таким образом, мы показали, что представление отношения (в математическом смысле) в виде таблицы с произвольным порядком строк и фиксированным числом столбцов является приемлемой, правильной формой представления отношений.

Но если рассматривать отношения R > и R < с точки зрения заложенной в них информации, то понятно, что они эквивалентны. Поэтому в реляционных базах данных понятие «отношение» имеет несколько другой смысл, нежели отношение в общей математике. А именно оно не связано с упорядоченностью по столбцам в табличной форме представления. Вместо этого вводятся так называемые схемы отношений «строка – заголовок столбцов», т. е. каждому столбцу дается заголовок, после чего их можно беспрепятственно менять местами.

Вот как будут выглядеть наши отношения R > и R < в реляционной базе данных.

Отношение строгого порядка (вместо отношения R >):

 

Отношение строгого порядка (вместо отношения R <):

 

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

Итак, мы видим, что при помощи такого несложного приема, как дополнение таблиц необходимыми заголовками, мы приходим к тому, что отношения R > и R < становятся эквивалентными друг другу.

Таким образом, делаем вывод, что понятие «отношение» в общем математическом и в реляционном смысле совпадают не полностью, не являются тождественными.

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

 

 

Домены и атрибуты

 

Домены и атрибуты – базовые понятия в теории создания баз данных и управления ими. Поясним, что же это такое.

Формально, домен атрибута (обозначается dom(a)), где а – некий атрибут, определяется как множество допустимых значений одного и того же типа соответствующего атрибута а. Этот тип должен быть простым, т. е:

 

dom(a) ⊆ {x | type(x) = type(a)};

 

Атрибут (обозначается а), в свою очередь, определяется как упорядоченная пара, состоящая из имени атрибута name(a) и домена атрибута dom(a), т. е.:

 

a = (name(a): dom(a));

 

В этом определении вместо привычного знака «,» (как в стандартных определениях упорядоченных пар) используется «:». Это делается для того, чтобы подчеркнуть ассоциацию домена атрибута и типа данных атрибута.

Приведем несколько примеров различных атрибутов:

 

а1 = (Курс: {1, 2, 3, 4, 5});

а2 = (МассаКг: {x | type(x) = real, x 0});

а3 = (ДлинаСм: {x | type(x) = real, x 0});

 

Заметим, что у атрибутов а2 и а3 домены формально совпадают. Но семантическое значение этих атрибутов различно, ведь сравнивать значения массы и длины бессмысленно. Поэтому домен атрибута ассоциируется не только с типом допустимых значений, но и семантическим значением.

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

 

Нетрудно заметить, что здесь каждый из заголовков a1, a2, a3 столбцов таблицы, представляющей какое‑то отношение, является отдельным атрибутом.

 

Кортежи. Типы кортежей

 

Понятие кортежа в системах управления базами данных может быть интуитивно найдено уже из предыдущего пункта, когда мы говорили об именованном значении кортежа на различных атрибутах. Итак, кортеж (обозначается t, от англ. tuple – «кортеж») со схемой отношения S определяется как множество именованных значений этого кортежа на всех атрибутах, входящих в данную схему отношений S. Другими словами, атрибуты берутся из области определения кортежа, def(t), т. е.:

 

t t (S) = { t (a) | adef (t) ⊆ S;.

 

Важно, что одному имени атрибута обязательно должно соответствовать не более одного значения атрибута.

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

 

Здесь t1(S) = {t(a1), t(a2), t(a3), t(a4)} и t2(S) = {t(a5), t(a6), t(a7), t(a8)} – кортежи.

 

Кортежи в СУБД различаются по типам в зависимости от своей области определения. Кортежи называются:

1) частичными, если их область определения включается или совпадает со схемой отношения, т. е. def(t) ⊆ S.

Это общий случай в практике баз данных;

2) полными, в том случае если их область определения полностью совпадает, равна схеме отношения, т. е. def(t) = S;

3) неполными, если область определения полностью включается в схему отношений, т. е. def(t) ⊂ S;

4) нигде не определенными, если их область определения равна пустому множеству, т. е. def(t) = ∅.

Поясним на примере. Пусть у нас имеется отношение, заданное следующей таблицей.

 

Пусть здесь t1 = {10, 20, 30}, t2 = {10, 20, Null}, t3 = {Null, Null, Null}. Тогда легко заметить, что кортеж t1 – полный, так как его область определения def(t1) = { a, b, c} = S.

Кортеж t2 – неполный, def(t2) = { a, b} ⊂ S. И, наконец, кортеж t3 – нигде не определенный, так как его def(t3) = ∅.

Надо заметить, что нигде не определенный кортеж – это пустое множество, тем не менее ассоциируемое со схемой отношений. Иногда нигде не определенный кортеж обозначается: ∅(S). Как мы уже видели в приведенном примере, такой кортеж представляет собой строку таблицы, состоящую только из Null‑значений.

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

 

Отношения. Типы отношений

 

И наконец дадим определение отношению, как некой вершине пирамиды, состоящей из всех предыдущих понятий. Итак, отношение (обозначается r, от англ. relation – «отношение») со схемой отношений S определяется как обязательно конечное множество кортежей, имеющих ту же схему отношения S. Таким образом:

 

r ≡ r(S) = {t(S) | t ∈r};

 

По аналогии со схемами отношений количество кортежей в отношении называют мощностью отношений и обозначают как мощность множества: | r |.

Отношения, как и кортежи, различаются по типам. Итак, отношения называются:

1) частичными, если для любого входящего в отношение кортежа выполняется следующее условие: [def(t) ⊆ S].

Это (как и с кортежами) общий случай;

2) полными, в том случае если t ∈ r(S) выполняется: [def(t) = S];

3) неполными, если ∃t ∈ r(S) def(t) ⊂ S;

4) нигде не определенными, если ∀t ∈ r(S) [def(t) = ∅].

 

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

Сравнимыми (по аналогии с кортежами), т. е., возможно равными, являются лишь отношения с одной и той же схемой отношения. Поэтому отношения с различными схемами отношений являются различными.

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

 

 

Унарная операция выборки

 

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

Оператор выборки обозначается σ < P >, условие выборкиP < S >, т. е., оператор σ берется всегда с определенным условием на кортежи P, а само условие P записывается зависящим от схемы отношения S. С учетом всего этого сама операция выборки над схемой отношения S применительно к отношению r будет выглядеть следующим образом:

 

σ < P > r (S) σ < P > r = { t (S) | tr & P < S > t } = { t (S) | tr & IfNull (P < S > t, False };

 

Результатом этой операции будет новое отношение с той же схемой отношения S, состоящее из тех кортежей t (S) исходного отношения‑операнда, которые удовлетворяют условию выборки P<S>t. Понятно, что для того, чтобы применить какое‑то условие к кортежу, необходимо подставить значения атрибутов кортежа вместо имен атрибутов.

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

 

S: Сессия (№ зачетной книжки, Фамилия, Предмет, Оценка).

 

Условие выборки возьмем такое:

 

P < S > = (Предмет = ‘Информатика’ and Оценка > 3).

 

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

Пусть также дан следующий кортеж из этого отношения:

 

t 0(S) ∈ r (S): {(№ зачетной книжки: 100), (Фамилия: ‘Иванов’), (Предмет: ‘Базы данных’), (Оценка: 5)};

 

Применяем наше условие выборки к кортежу t 0, получаем:

 

P<S>t 0 = (‘Базы данных’ = ‘Информатика’ and 5 > 3);

 

На данном конкретном кортеже условие выборки не выполняется.

А вообще результатом этой конкретной выборки

 

σ <Предмет = 'Информатика' and Оценка > 3 > Сессия

 

будет таблица «Сессия», в которой оставлены строки, удовлетворяющие условию выборки.

 

Унарная операция проекции

 

Еще одна стандартная унарная операция, которую мы изучим, – это операция проекции. Операция проекции – это операция выбора столбцов из таблицы, представляющей отношение, по какому‑либо признаку. А именно машина выбирает те атрибуты (т. е. буквально те столбцы) исходного отношения‑операнда, которые были указаны в проекции.

Оператор проекции обозначается [ S' ] или π<S'>. Здесь S' – подсхема исходной схемы отношения S, т. е. ее некоторые столбцы. Что это означает? Это означает, что у S’ атрибутов меньше, чем у S, потому что в S' остались только те из них, для которых выполнилось условие проекции. А в таблице, представляющей отношение r (S'), строк столько же, сколько их у таблицы r (S), а столбцов – меньше, так как остались только соответствующие оставшимся атрибутам. Таким образом, оператор проекции π< S'> применительно к отношению r (S) дает в результате новое отношение с другой схемой отношения r (S'), состоящее из проекций t (S) [ S' ] кортежей исходного отношения. Как определяются эти проекции кортежей? Проекция любого кортежа t (S) исходного отношения r (S) на подсхему S' определяется следующей формулой:

 

t (S) [ S’ ] = { t (a)| adef (t) ∩ S ’}, S ' ⊆ S.

 

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

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

 

π < S' > r (S) ≡ π < S’ > rr (S) [ S ’] ≡ r [ S' ] = { t (S) [ S’ ] | tr };

 

Рассмотрим пример, иллюстрирующий принцип работы операции выборки.

Пусть дано отношение «Сессия» и схема этого отношения:

 

S: Сессия (№ зачетной книжки, Фамилия, Предмет, Оценка);

 

Нас будут интересовать только два атрибута из этой схемы, а именно «№ зачетной книжки» и «Фамилия» студента, поэтому подсхема S' будет выглядеть следующим образом:

 

S': (№ зачетной книжки, Фамилия).

 

Нужно исходное отношение r (S) спроецировать на подсхему S'.

Далее, пусть нам дан кортеж t 0(S) из исходного отношения:

 

t 0(S) ∈ r (S): {(№ зачетной книжки: 100), (Фамилия: ‘Иванов’), (Предмет: ‘Базы данных’), (Оценка: 5)};

 

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

 

t 0(S) S': {(№ зачетной книжки: 100), (Фамилия: ‘Иванов’)};

 

Если говорить об операции проекции в терминах таблиц, то проекция Сессия [№ зачетной книжки, Фамилия] исходного отношения – это таблица Сессия, из которой вычеркнуты все столбцы, кроме двух: № зачетной книжки и Фамилия. Кроме того, все дублирующиеся строки также удалены.

 

Свойства унарных операций

 

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

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

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

Итак:

1) соотношение мощностей:

а) для операции выборки: | σ < P > r |≤ | r |;

б) для операции проекции: | r [ S' ] | ≤ | r |;

в) для операции переименования: | ρ < φ > r | = | r |;

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

В случае же операции переименования, мощность отношения не изменяется, за счет того, что при смене имен никакие кортежи из отношения не исключаются;

2) свойство идемпотентности:

а) для операции выборки: σ < P > σ < P > r = σ < P >;

б) для операции проекции: r [ S’ ] [ S’ ] = r [ S' ];

в) для операции переименования в общем случае свойство идемпотентности неприменимо.

Это свойство означает, что двойное последовательное применение одного и того же оператора к какому‑либо отношению равносильно его однократному применению.

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

Свойство идемпотентности очень часто используется для упрощения вида выражения и приведения его к более экономичному, актуальному виду.

И последнее свойство, которое мы рассмотрим, – это свойство монотонности. Интересно заметить, что при любых условиях все три оператора монотонны;

3) свойство монотонности:

а) для операции выборки: r 1 r 2σ < P > r 1 σ < P > r 2;

б) для операции проекции: r 1 r 2 r 1[ S' ] r 2 [ S' ];

в) для операции переименования: r 1 r 2 ρ < φ > r 1ρ < φ > r 2;

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

 

 

Свойства бинарных операций

 

Из приведенных выше определений бинарных операций объединения, пересечения, разности, декартового произведения и естественного соединения следуют свойства.

1. Первое свойство, как и в случае унарных операций, иллюстрирует соотношение мощностей отношений:

1) для операции объединения:

 

| r 1r 2| | r 1| + | r 2|;

 

2) для операции пересечения:

 

| r 1r 2 | min (| r 1|, | r 2|);

 

3) для операции разности:

 

| r 1 \ r 2| ≤ | r 1|;

 

4) для операции декартового произведения:

 

| r 1 × r 2| = | r 1| · | r 2|;

 

5) для операции естественного соединения:

 

| r 1 × r 2| ≤ | r 1| · | r 2|.

 

Соотношение мощностей, как мы помним, характеризует, как меняется количество кортежей в отношениях после применения той или иной операции. Итак, что мы видим? Мощность объединения двух отношений r 1 и r 2 меньше суммы мощностей исходных отношений‑операндов. Почему это происходит? Все дело в том, что при объединении совпадающие кортежи исчезают, накладываясь друг на друга. Так, обратившись к примеру, который мы рассматривали по прохождении этой операции, можно заметить, что в первом отношении было два кортежа, во втором – три, а в результирующем – четыре, т. е. меньше, чем пять (сумма мощностей отношений‑операндов). По совпадающему кортежу {b, 2} эти отношения «склеились».

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

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

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

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

2. Свойство идемпотентности:

1) для операции объединения: rr = r;

2) для операции пересечения: rr = r;

3) для операции разности: r \ rr;

4) для операции декартового произведения (в общем случае, свойство не применимо);

5) для операции естественного соединения: r × r = r.

Интересно, что свойство идемпотентности верно не для всех операций из приведенных, а для операции декартового произведения оно и вовсе не применимо. Действительно, если объединить, пересечь или естественно соединить какое‑либо отношение само с собой, оно не изменится. А вот если отнять от отношения точно равное ему отношение, в результате получится пустое отношение.

3. Свойство коммутативности:

1) для операции объединения:

 

r 1r 2 = r 2r 1;

 

2) для операции пересечения:

 

rr = rr;

 

3) для операции разности:

 

r 1 \ r 2r 2 \ r 1;

 

4) для операции декартового произведения:

 

r 1 × r 2 = r 2 × r 1;

 

5) для операции естественного соединения:

 

r 1 × r 2 = r 2 × r 1.

 

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

4. Свойство ассоциативности:

1) для операции объединения:

 

(r 1r 2) ∪ r 3 = r 1 ∪(r 2r 3);

 

2) для операции пересечения:

 

(r 1r 2) ∩ r 3 = r 1 ∩ (r 2r 3);

 

3) для операции разности:

 

(r 1 \ r 2) \ r 3r 1 \ (r 2 \ r 3);

 

4) для операции декартового произведения:

 

(r 1 × r 2) × r 3 = r 1 × (r 2 × r 3);

 

5) для операции естественного соединения:

 

(r 1 × r 2) × r 3 = r 1 × (r 2 × r 3).

 

И снова мы видим, что свойство выполняется для всех операций, кроме операции разности. Объясняется это таким же образом, как и в случае применения свойства коммутативности. По большому счету, операциям объединения, пересечения, разности и естественного соединения все равно в каком порядке стоят отношения‑операнды. Но при «отнимании» отношений друг от друга порядок играет главенствующую роль.

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

 

Варианты операций соединения

 

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

Первым таким вариантом операций соединения является операция внутреннего соединения по заданному условию соединения.

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

Запишем формульное определение этой операции:

 

r 1(S 1) × P r 2(S 2) = σ < P > (r 1 × r 2), S 1S 2 = ∅;

 

Здесь P = P < S 1S 2> – условие, накладываемое на объединение двух схем исходных отношений‑операндов. Именно по этому условию и происходит отбор кортежей из отношений r 1 и r 2 в результирующее отношение.

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

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

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

Пусть нам даны два отношения r 1(S 1) и r 2(S 2) с различными схемами отношения:

r 1(S 1):

 

r 2(S 2):

 

Следующая таблица даст результат применения операции внутреннего соединения по условию P = (b1 = b2).

r 1(S 1) × P r 2(S 2):

 

Итак, мы видим, что действительно «слипание» двух таблиц, представляющих отношения, произошло именно по тем кортежам, в которых выполняется условие операции внутреннего соединения P = (b1 = b2).

Теперь на основании уже введенной операции внутреннего соединения мы можем ввести операцию левого внешнего соединения и правого внешнего соединения. Поясним.

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

Вопрос, чем же пополняются результирующие отношения операций левого и правого внешнего соединения, вполне ожидаем. Кортежи одного отношения‑операнда дополняются на схеме другого отношения‑операнда Null‑значениями.

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

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

Пусть нам даны два отношения r 1(S 1) и r 2(S 2) с различными схемами отношений S 1 и S 2, не пересекающимися друг с другом.

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

 

1) r 3 (S 2S 1) ≔ r 1(S 1) × P r 2(S 2);

 

r 3 (S 2S 1) это просто результат внутреннего соединения отношений r 1(S 1) и r 2(S 2). Левое внешнее соединение является производной операцией именно от операции внутреннего соединения, поэтому мы и начинаем наши построения с нее;

 

2) r 4(S 1) ≔ r 3(S 2 S 1) [ S 1];

 

Таким образом, с помощью унарной операции проекции, мы выделили все соединимые кортежи левого исходного отношения‑операнда r 1(S 1). Результат обозначили r 4(S 1) для удобства применения;

 

3) r 5 (S 1) ≔ r 1(S 1) \ r 4(S 1);

 

Здесь r 1(S 1) все кортежи левого исходного отношения‑операнда, а r 4(S 1) – его же кортежи, только соединимые. Таким образом, при помощи бинарной операции разности, в отношении r 5(S 1) у нас получились все несоединимые кортежи левого отношения‑операнда;

 

4) r 6(S 2)≔ {∅(S 2)};

 

{∅(S 2)} это новое отношение со схемой (S 2), содержащее всего один кортеж, причем составленный из Null‑значений. Для удобства мы обозначили это отношение r 6(S 2);

 

5) r 7 (S 2S 1) ≔ r 5(S 1) × r 6(S 2);

 

Здесь мы взяли полученные в пункте три, несоединимые кортежи левого отношения‑операнда (r 5(S 1)) и дополнили их на схеме второго отношения‑операнда S 2 Null‑значениями, т. е. декартово умножили отношение, состоящее из этих самых несоединимых кортежей на отношение r 6(S 2), определенное в пункте четыре;

 

6) r 1(S1) →× P r 2(S 2) ≔ (r 1 × P r 2) ∪ r 7 (S 2S 1);

 

Это и есть левое внешнее соединение, полученное, как можно видеть, объединением декартового произведения исходных отношений‑операндов r 1 и r 2 и отношения r 7 (S 2 S 1), определенного в пункте пятом.

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

1) операция левого внешнего соединения в строгом формулярном виде выглядит следующим образом:

 

r 1(S 1) →× P r 2(S 2) ≔ (r 1 × P r 2) ∪ [(r 1 \ (r 1 × P r 2) [ S 1]) × {∅(S 2)}];

 

2) операция правого внешнего соединения определяется подобным образом операции левого внешнего соединения и имеет следующий вид:

 

r







Система охраняемых территорий в США Изучение особо охраняемых природных территорий(ООПТ) США представляет особый интерес по многим причинам...

Что делать, если нет взаимности? А теперь спустимся с небес на землю. Приземлились? Продолжаем разговор...

Что делает отдел по эксплуатации и сопровождению ИС? Отвечает за сохранность данных (расписания копирования, копирование и пр.)...

ЧТО ТАКОЕ УВЕРЕННОЕ ПОВЕДЕНИЕ В МЕЖЛИЧНОСТНЫХ ОТНОШЕНИЯХ? Исторически существует три основных модели различий, существующих между...





Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:


©2015- 2024 zdamsam.ru Размещенные материалы защищены законодательством РФ.