• 1. Унарная операция выборки
  • 2. Унарная операция проекции
  • 3. Унарная операция переименования
  • 4. Свойства унарных операций
  • Лекция № 4. Реляционная алгебра. Унарные операции

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Оператор проекции обозначается [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)|a ? def(t) ? S’}, S' ?S.

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

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

    ?<S'>r(S) ? ?<S’>r ? r(S) [S’] ? r [S' ] = {t(S) [S’] | t ? r };

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

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

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

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

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

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

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

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

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

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

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

    3. Унарная операция переименования

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

    Оператор переименования выглядит следующим образом: ?<?>, здесь ? — функция переименования.

    Эта функция устанавливает взаимно-однозначное соответствие между именами атрибутов схем S и S, где соответственно S — схема исходного отношения, а S схема отношения с переименованными атрибутами. Таким образом, оператор ?<?> в применении к отношению r(S) дает новое отношение со схемой S, состоящее из кортежей исходного отношения только с переименованными атрибутами.

    Запишем операцию переименования атрибутов в терминах систем управления базами данных:

    ?<?> r(S) ? ?<?>r = {?<?> t(S)| t ? r};

    Приведем пример использования этой операции:

    Рассмотрим уже знакомое нам отношение Сессия, со схемой:

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

    Введем новую схему отношения S, с другими именами атрибутов, которые мы бы хотели видеть вместо имеющихся:

    S : (№ ЗК, Фамилия, Предмет, Балл);

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

    ? : (№ зачетной книжки, Фамилия, Предмет, Оценка) > (№ ЗК, Фамилия, Предмет, Балл);

    Фактически, требуется поменять имя только у двух атрибутов, поэтому законно будет записать следующую функцию переименования вместо имеющейся:

    ? : (№ зачетной книжки, Оценка) > (№ ЗК, Балл);

    Далее, пусть дан также уже знакомый нам кортеж принадлежащий отношению Сессия:

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

    Применим оператор переименования к этому кортежу:

    ?<?> t0(S): {(№ ЗК: 100), (Фамилия: ‘Иванов’), (Предмет: ‘Базы данных’), (Балл: 5)};

    Итак, это один из кортежей нашего отношения, у которого переименовали атрибуты.

    В табличных терминах отношение

    ? < № зачетной книжки, Оценка > «№ ЗК, Балл > Сессия —

    это новая таблица, полученная из таблицы отношения «Сессия», переименованием указанных атрибутов.

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

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

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

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

    Итак:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    а) для операции выборки: r1 ? r2 ? ?<P> r1 ? ? <P>r2;

    б) для операции проекции: r1 ? r2 ? r1[S'] ? r2 [S'];

    в) для операции переименования: r1 ? r2 ? ?<?>r1 ? ? <?>r2;

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







     


    Главная | В избранное | Наш E-MAIL | Добавить материал | Нашёл ошибку | Другие сайты | Наверх