Популярные услуги

Все письменные КМ под ключ за 3 суток! (КМ-6 + КМ-7 + КМ-8 + КМ-9 + КМ-10)
КМ-6. Динамические массивы. Семинар - выполню любой вариант!
КМ-2. Разработка простейших консольных программ с использованием ООП + КМ-4. Более сложные элементы ООП - под ключ!
Любая задача на C/C++
Одно любое задание в mYsql
Сделаю ваше задание: Лабораторная работа на Pascal / Lazarus
Любой тест по базам данных максимально быстро на хорошую оценку - или верну деньги!
Любой реферат по объектно-ориентированному программированию (ООП)
Повышение уникальности твоей работе
Оба семинара по программированию под ключ! КМ-2. Разработка циклических алгоритмов + КМ-3. Функции и многофайловые программы в Си

Реляционная модель данных

2021-03-09СтудИзба

Тема 4. Реляционная модель данных

Основные определения

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

Теоретической основой этой модели стала теория отношений, основу которой заложили два логика — американец Чарльз Содерс Пирс (1839-1914) и немец Эрнст Шредер (1841-1902). В руководствах по теории отношений было показано, что множество отношений замкнуто относительно некоторых специальных операций, то есть образует вместе с этими операциями абстрактную алгебру. Это важнейшее свойство отношений было использовано в реляционной модели для разработки языка манипулирования данными, связанного с исходной алгеброй. Американский математик Э. Ф. Кодд в 1970 году впервые сформулировал основные понятия и ограничения реляционной модели, ограничив набор операций в ней семью основными и одной дополнительной операцией. Предложения Кодда были настолько эффективны для систем баз данных, что за эту модель он был удостоен престижной премии Тьюринга в области теоретических основ вычислительной техники.

Основной структурой данных в модели является отношение, именно поэтому модель получила название реляционной (от английского relation — отношение).

N-арным отношением R называют подмножество декартова произведения D1× D2× … ×Dn множеств D1, D2, …, Dn (n > 1), необязательно различных. Исходные множества D1, D2, …, Dn называют в модели доменами.

R Описание: http://www.intuit.ru/img/symbols/sube.gifD1 × D2 × … × Dn

где D1 × D2 × … ×Dn— полное декартово произведение.

Полное декартово произведение — это набор всевозможных сочетаний из n элементов каждое, где каждый элемент берется из своего домена. Например, имеем три домена: D1 содержит три фамилии, D2 — набор из двух учебных дисциплин и D3 — набор из трех оценок. Допустим, содержимое доменов следующее:

  • D1 = {Иванов, Крылов, Степанов};
  • D2 = {Теория автоматов, Базы данных};
  • D3 = {3, 4, 5}

Рекомендуемые материалы

Тогда полное декартово произведение содержит набор из 18 троек, где первый элемент — это одна из фамилий, второй — это название одной из учебных дисциплин, а третий — одна из оценок.

<Иванов,Теория автоматов,3>;

<Иванов,Теория автоматов,4>;

<Иванов,Теория автоматов,5>

<Крылов,Теория автоматов,3>;

<Крылов,Теория автоматов,4>;

<Крылов,Теория автоматов,5>;

<Степанов,Теория автоматов,3>;

<Степанов,Теория автоматов,4>;

<Степанов,Теория автоматов,5>;

<Иванов,Базы данных,3>;

<Иванов,Базы данных,4>;

<Иванов,Базы данных,5>;

<Крылов,Базы данных,3>;

<Крылов,Базы данных,4>;

<Крылов,Базы данных,5>;

<Степанов,Базы данных,3>;

<Степанов,Базы данных,4>;

<Степанов,Базы данных,5>;

Отношение R моделирует реальную ситуацию и оно может содержать, допустим, только 5 строк, которые соответствуют результатам сессии (Крылов экзамен по "Базам данных" еще не сдавал):

<Иванов,Теория автоматов,4>;

<Крылов,Теория автоматов,5>;

<Степанов,Теория автоматов,5>;

<Иванов,Базы данных,3>;

<Степанов,Базы данных,4>;

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

R

Фамилия

Дисциплина

Оценка

Иванов

Теория автоматов

4

Иванов

Базы данных

3

Крылов

Теория автоматов

5

Степанов

Теория автоматов

5

Степанов

Базы данных

4

Данная таблица обладает рядом специфических свойств:

1. В таблице нет двух одинаковых строк.

2. Таблица имеет столбцы, соответствующие атрибутам отношения.

3. Каждый атрибут в отношении имеет уникальное имя.

4. Порядок строк в таблице произвольный.

Вхождение домена в отношение принято называть атрибутом. Строки отношения называются кортежами.

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

Следует заметить, что в отношении не может быть одинаковых кортежей, это следует из математической модели: отношение — это подмножество декартова произведения, а в декартовом произведении все n-ки различны.

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

R1

Дисциплина

Фамилия

Оценка

Теория автоматов

Крылов

5

Теория автоматов

Степанов

5

Теория автоматов

Иванов

4

Базы данных

Иванов

3

Базы данных

Степанов

4

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

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

SR = (A1, A2, A n), Ai Описание: http://www.intuit.ru/img/symbols/sube.gifDi.

Если атрибуты принимают значения из одного и того же домена, то они называются θ-сравнимыми, где θ — множество допустимых операций сравнения, заданных для данного домена. Например, если домен содержит числовые данные , то для него допустимы все операции сравнения, тогда θ = {=, <>,>=,<=,<,>} Однако и для доменов, содержащих символьные данные, могут быть заданы не только операции сравнения по равенству и неравенству значений. Если для данного домена задано лексикографическое упорядочение, то он имеет также полный спектр операций сравнения.

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

SR1 = (A1, A2, ..., An) — схема отношения R1.

SR2 = (Bi1, Bi2,..., Bin) — схема отношения R2 после упорядочения имен атрибутов.

Тогда

Описание: &#10; &#10;S_{R1} ~ S_{R2} { 1. n = m \&#10;2. A_j, B_{ij} sube D_j&#10;

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

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

Описание: Связь между основным и подчиненным отношениями


Рис. 4.1. Связь между основным и подчиненным отношениями

PRIMARY KEY отношения Сотрудник атрибут Паспорт является FOREIGN KEY для отношения "карьера".

Операции над отношениями. Реляционная алгебра

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

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

Теоретико-множественные операции реляционной алгебры

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

Пусть заданы два отношения R1 = { r1 } , R2 = { r2}, где r1 и r2 - соответственно кортежи отношений R1 и R2, то объединение

R1 Описание: http://www.intuit.ru/img/symbols/cup.gifR2 = { r | r Описание: http://www.intuit.ru/img/symbols/isin.gifR1 Описание: http://www.intuit.ru/img/symbols/or.gifr Описание: http://www.intuit.ru/img/symbols/isin.gifR2}.

Здесь r — кортеж нового отношения, Описание: http://www.intuit.ru/img/symbols/or.gif— операция логического сложения "ИЛИ".

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

R1

Шифр детали

Название детали

00011073

Гайка M1

00011075

Гайка М2

00011076

Гайка М3

00011003

Болт М1

00011006

Болт М3

00013063

Шайба М1

00013066

Шайба М3

R2

Шифр детали

Название детали

00011073

Гайка M1

00011076

Гайка М3

00011077

Гайка М4

00011004

Болт М2

R3

Шифр детали

Название детали

00011073

Гайка M1

00011075

Гайка М2

00011076

Гайка М3

00011003

Болт М1

00011006

Болт М3

00013063

Шайба М1

00013066

Шайба М3

00011077

Гайка М4

00011004

Болт М2

Пересечением отношений называется отношение, которое содержит множество кортежей, принадлежащих одновременно и первому и второму отношениям. R1 и R2:

R3 = R1 Описание: http://www.intuit.ru/img/symbols/cap.gifR2 ={ r | r Описание: http://www.intuit.ru/img/symbols/isin.gifR1 Описание: http://www.intuit.ru/img/symbols/and.gifr Описание: http://www.intuit.ru/img/symbols/isin.gifR2 }

здесь Описание: http://www.intuit.ru/img/symbols/and.gif— операция логического умножения (логическое "И").

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

R4

Шифр детали

Название детали

00011073

Гайка M1

00011076

Гайка М3

00011006

Болт М3

Разностью отношений R1 и R2 называется отношение, содержащее множество кортежей, принадлежащих R1 и не принадлежащих R2:

R5 =R1 R2 ={r | r Описание: http://www.intuit.ru/img/symbols/isin.gifR1 Описание: http://www.intuit.ru/img/symbols/and.gifr Описание: http://www.intuit.ru/img/symbols/notin.gifR2}

Отношение R5 содержит перечень деталей, изготавливаемых только на участке 1, отношение R6 содержит перечень деталей, изготавливаемых только на участке 2.

R6 =R2 R1 ={r | r Описание: http://www.intuit.ru/img/symbols/isin.gifR2 Описание: http://www.intuit.ru/img/symbols/and.gifr Описание: http://www.intuit.ru/img/symbols/notin.gifR1 }

R2

00011006

Болт М3

R5

Шифр детали

Название детали

00011075

Гайка М2

00011003

Болт М1

00013063

Шайба М1

00013066

Шайба М3

R6

Шифр детали

Название детали

00011077

Гайка М4

00011004

Болт М2

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

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

Для демонстрации возможностей трех первых операций реляционной алгебры рассмотрим еще один пример — уже из другой предметной области. Исходными являются три отношения R1 R2 и R3. Все они имеют эквивалентные схемы.

  • R1= (ФИО, Паспорт, Школа);
  • R2= (ФИО, Паспорт, Школа);
  • R3= (ФИО, Паспорт, Школа).

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

Ответим на следующие вопросы:

1. Список абитуриентов, которые поступали два раза и не поступили в вуз.

R = R1 Описание: http://www.intuit.ru/img/symbols/cap.gifR2 R3

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

R = (R1 R2 Описание: http://www.intuit.ru/img/symbols/cap.gifR3) Описание: http://www.intuit.ru/img/symbols/cup.gif(R2 R1 Описание: http://www.intuit.ru/img/symbols/cap.gifR3)

3. Список абитуриентов, которые поступили в вуз только со второго раза.

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

R=R1 Описание: http://www.intuit.ru/img/symbols/cap.gifR2 Описание: http://www.intuit.ru/img/symbols/cap.gifR3

4. Список абитуриентов, которые поступали только один раз и не поступили.

Это прежде всего те абитуриенты, которые присутствуют в R1 и не присутствуют в R2, и те, кто присутствуют в R2 и не присутствуют в R1. И разумеется, никто из них не присутствует в R3.

R = (R1 R2) Описание: http://www.intuit.ru/img/symbols/cup.gif(R2 R1) R3

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

Операции объединения, пересечения и разности применимы только к отношениям с эквивалентными схемами.

Кроме трех перечисленных операций в рамках реляционной алгебры определена еще одна теоретико-множественная операция — расширенное декартово произведение. Эта операция не накладывает никаких дополнительных условий на схемы исходных отношений, поэтому операция расширенного декартова произведения, обозначаемая R1 Описание: http://www.intuit.ru/img/symbols/otimes.gifR2, допустима для любых двух отношений. Но прежде чем определить саму операцию, введем дополнительно понятие конкатенации, или сцепления, кортежей.

Сцеплением, или конкатенацией, кортежей c = <c1, c2, ..., cn> и q = <q1, q2, ..., qm> называется кортеж, полученный добавлением значений второго в конец первого. Сцепление кортежей c и q обозначается как (c , q).

(c, q) = <c1, c2, ... , cn, q1, q2, ..., qm>

Здесь n — число элементов в первом кортеже с, m — число элементов во втором кортеже q.

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

Расширенным декартовым произведением отношения R1 степени n со схемой

SR1 = (A1, A2, ... , An),

и отношения R2 степени m со схемой

SR2 = (B1, B2, ..., Bm),

называется отношение R3 степени n+m со схемой

SR3 = (A1, A2, ... , An, B1, B2, ..., Bm),

содержащее кортежи, полученные сцеплением каждого кортежа r отношения R1 с каждым кортежем q отношения R2.

То есть если R1 = { r }, R2 = { q }

R1 Описание: http://www.intuit.ru/img/symbols/otimes.gifR2 = {(r, q) | r Описание: http://www.intuit.ru/img/symbols/isin.gifR1 Описание: http://www.intuit.ru/img/symbols/and.gifq Описание: http://www.intuit.ru/img/symbols/isin.gifR2}

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

R7

Шифр детали

Название детали

00011073

Гайка M1

00011075

Гайка М2

00011076

Гайка М3

00011003

Болт М1

00011006

Болт М3

00013063

Шайба М1

00013066

Шайба М3

00011077

Гайка М4

00011004

Болт М2

00011005

Болт М5

00011006

Болт М6

00013062

Шайба М2

R8

Цех

Цех 1

Цех 2

Цех 3

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

R9

Шифр детали

Название детали

Цех

00011073

Гайка M1

Цех 1

00011075

Гайка М2

Цех 1

00011076

Гайка М3

Цех 1

00011003

Болт М1

Цех 1

00011006

Болт М3

Цех 1

00013063

Шайба М1

Цех 1

00013066

Шайба М3

Цех 1

00011077

Гайка М4

Цех 1

00011004

Болт М2

Цех 1

00011005

Болт М5

Цех 1

00011006

Болт М6

Цех 1

00013062

Шайба М2

Цех 1

00011073

Гайка M1

Цех 2

00011075

Гайка М2

Цех 2

00011076

Гайка М3

Цех 2

00011003

Болт М1

Цех 2

00011006

Болт М3

Цех 2

00013063

Шайба М1

Цех 2

00013066

Шайба М3

Цех 2

00011077

Гайка М4

Цех 2

00011004

Болт М2

Цех 2

00011005

Болт М5

Цех 2

00011006

Болт М6

Цех 2

00013062

Шайба М2

Цех 2

00011073

Гайка M1

Цех 3

00011075

Гайка М2

Цех 3

00011076

Гайка М3

Цех 3

00011003

Болт М1

Цех 3

00011006

Болт М3

Цех 3

00013063

Шайба М1

Цех 3

00013066

Шайба М3

Цех 3

00011077

Гайка М4

Цех 3

00011004

Болт М2

Цех 3

00011005

Болт М5

Цех 3

00011006

Болт М6

Цех 3

00013062

Шайба М2

Цех 3

R10

Шифр детали

Название детали

Цех

00011073

Гайка M1

Цех 1

00011075

Гайка М2

Цех 1

00011076

Гайка М3

Цех 1

00011003

Болт М1

Цех 1

00011006

Болт М3

Цех 1

00013063

Шайба М1

Цех 1

00013066

Шайба М3

Цех 1

00011077

Гайка М4

Цех 1

00011004

Болт М2

Цех 1

00011006

Болт М3

Цех 2

00013063

Шайба М1

Цех 2

00013066

Шайба М3

Цех 2

00011077

Гайка М4

Цех 2

00011004

Болт М2

Цех 2

00011006

Болт М6

Цех 2

00013062

Шайба М2

Цех 2

00011073

Гайка M1

Цех 3

00011075

Гайка М2

Цех 3

00011076

Гайка М3

Цех 3

00011003

Болт М1

Цех 3

00011006

Болт М3

Цех 3

00013063

Шайба М1

Цех 3

00013066

Шайба М3

Цех 3

00011077

Гайка М4

Цех 3

00011005

Болт М5

Цех 3

00011006

Болт М6

Цех 3

00011005

Болт М5

Цех 1

00011006

Болт М6

Цех 1

00013062

Шайба М2

Цех 1

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

Отношение R11, которое является результатом выполнения этой операции, имеет вид:

R11 =R9 R10

R11

Шифр детали

Название детали

Цех

00011073

Гайка M1

Цех 2

00011075

Гайка М2

Цех 2

00011076

Гайка М3

Цех 2

00011004

Болт М2

Цех 3

00013062

Шайба М2

Цех 3

00011003

Болт М1

Цех 2

00011005

Болт М5

Цех 3

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

(R1 Описание: http://www.intuit.ru/img/symbols/cup.gifR2) (R1 R2) (R2 R1)

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

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

Специальные операции реляционной алгебры

Первой специальной операцией реляционной алгебры является горизонтальный выбор, или операция фильтрации, или операция ограничения отношений. Для определения этой операции нам необходимо ввести дополнительные обозначения.

Пусть а — булевское выражение, составленное из термов сравнения с помощью связок И (Описание: http://www.intuit.ru/img/symbols/and.gif), ИЛИ (Описание: http://www.intuit.ru/img/symbols/or.gif), НЕ (¬) и, возможно, скобок. В качестве термов сравнения допускаются:

  • терм А ос а,

где А — имя некоторого атрибута, принимающего значения из домена D; a — константа, взятая из того же домена D, a Описание: http://www.intuit.ru/img/symbols/isin.gifD; oc — одна из допустимых для данного домена D операций сравнения;

  • терм А ос В,

где А, В — имена некоторых θ-сравнимых атрибутов, то есть атрибутов, принимающих значения из одного и то же домена D.

Тогда результатом операции выбора, или фильтрации, заданной на отношении R в виде булевского выражения, определенного на атрибутах отношения R, называется отношение R[Описание: http://www.intuit.ru/img/symbols/alpha.gif], включающее те кортежи из исходного отношения, для которых истинно условие выбора или фильтрации:

R[Описание: http://www.intuit.ru/img/symbols/alpha.gif(r)] = {r | r Описание: http://www.intuit.ru/img/symbols/isin.gifR Описание: http://www.intuit.ru/img/symbols/and.gifОписание: http://www.intuit.ru/img/symbols/alpha.gif(r) = "Истина"}

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

Например, выбрать из R10 детали с шифром "0011003". R12 = R10 [ Шифр детали = "0011003"]

R12

Шифр детали

Название детали

Цех

00011003

Болт М1

Цех 1

00011003

Болт М1

Цех 3

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

Пусть R — отношение, SR = (A1, ... , An) — схема отношения R.

Обозначим через B подмножество [ Ai ]; B Описание: http://www.intuit.ru/img/symbols/sube.gif{ Ai}.

При этом пусть B1 — множество атрибутов из { Ai}, не вошедших в B.

Если B = {A1i, Ai2,..., Aik}, B = {A1, A2j ,..., Akj} и r = < a1i, a2i,...,ai >, aki Описание: http://www.intuit.ru/img/symbols/isin.gifAkii,

то r [B], s = < a1j, a2j, ... , amj > ; amj Описание: http://www.intuit.ru/img/symbols/isin.gifAmj.

Проекцией отношения R на набор атрибутов В, обозначаемой R[B], называется отношение со схемой, соответствующей набору атрибутов В SR[B] = B, содержащему кортежи, получаемые из кортежей исходного отношения R путем удаления из них значений, не принадлежащих атрибутам из набора В.

R[B] = { r[B] }

По определению отношений все дублирующие кортежи удаляются из результирующего отношения.

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

Например, выберем все цеха, которые изготавливают деталь "Болт М1".

Для этого нам необходимо из отношения R10 выбрать детали с заданным названием, а потом полученное отношение спроектировать на столбец "Цех". Результатом выполнения этих операций будет отношение R14:

R13 = R10 [ Название детали = "Болт М1" ] R14 = R13 [ Цех ]

R13

Шифр детали

Название детали

Цех

00011003

Болт М1

Цех 1

00011003

Болт М1

Цех 3

R14

Цех

Цех 1

Цех 3

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

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

Пусть R = {r}, Q={q} - исходные отношения,

SR, SQ - схемы отношений R и Q соответственно.

SR = (A1, A2, ... , Ak); SQ = (B1, B2, ... , Bm), где Ai, Bj — имена атрибутов в схемах отношений R и Q соответственно. При этом полагаем, что заданы наборы атрибутов А и В

А Описание: http://www.intuit.ru/img/symbols/sube.gif{A} i=1,k ;B Описание: http://www.intuit.ru/img/symbols/sube.gif{Bj} j=1,m

и эти наборы состоят из θ-сравнимых атрибутов.

Тогда соединением отношений R и Q при условии β будет подмножество декартова произведения отношений R и Q, кортежи которого удовлетворяют условию β, рассматриваемому как одновременное выполнение условий:

  • r.Ai θi Bi: i=1,k, где k — число атрибутов, входящих в наборы А и В, а θi— конкретная операция сравнения.
  • Ai θi Bi D; θi — i-й предикат сравнения, определяемый из множества допустимых на домене Di операций сравнения.

R [ β] Q = { (r,q) | (r, q) | r.A θi q.Bi= "Истина", i=1,k}

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

R15

Шифр детали

Название детали

Материал

00011073

Гайка M1

сталь-ст1

00011075

Гайка М2

сталь-ст2

00011076

Гайка М3

сталь-ст1

00011003

Болт М1

сталь-ст3

00011006

Болт М3

сталь-ст3

00013063

Шайба М1

сталь-ст1

00013066

Шайба М3

сталь-ст1

00011077

Гайка М4

сталь-ст2

00011004

Болт М2

сталь-ст3

00011005

Болт М5

сталь-ст3

00013062

Шайба М2

сталь-ст1

R16

Название детали

Гайка M1

Гайка М3

Шайба М1

Шайба М3

Шайба М2

Получим перечень деталей, которые изготавливаются в цеху 1 из материала "сталь-ст1"

R16 = (R15[(R15.Шифр детали =R10.Шифр детали) Описание: http://www.intuit.ru/img/symbols/and.gifR10.Цех = "Цех1" Описание: http://www.intuit.ru/img/symbols/and.gifR15.Материал ="сталь-ст1"] R10)[Название детали]

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

Для определения операции деления рассмотрим сначала понятие множества образов.

Пусть R — отношение со схемой SR = (A1, A2 ,…, Ak);

Пусть A — некоторый набор атрибутов А Описание: http://www.intuit.ru/img/symbols/sube.gif{ Ai} i=1,k , A1 — набор атрибутов, не входящих в множество A.

Пересечение множеств A и A1 пусто: A Описание: http://www.intuit.ru/img/symbols/cap.gifA1 =0; объединение множеств равно множеству всех атрибутов исходного отношения: A Описание: http://www.intuit.ru/img/symbols/cup.gifA1 = SR.

Тогда множеством образов элемента у проекции R[A] называется множество таких элементов y проекции R[A ] , для которых сцепление (x, y) является кортежами отношения R, то есть

QA(x) = {y | y Описание: http://www.intuit.ru/img/symbols/isin.gifR[A ] Описание: http://www.intuit.ru/img/symbols/and.gif(x, y) Описание: http://www.intuit.ru/img/symbols/isin.gifR} - множество образов.

Например, множеством образов отношения R15 по материалу "сталь-ст2" будет множество кортежей

R15.Материал = {< 00011075, Гайка М2, "сталь-ст2">, < 00011077, Гайка М4, "сталь-ст2">}

Дадим теперь определение операции деления.

Пусть даны два отношения R и T соответственно со схемами:

SR = (A1, A2, ... , Ak); ST = (B1, B2, ... , Bm);

A и B - наборы атрибутов этих отношений, одинаковой длины (без повторений);

A Описание: http://www.intuit.ru/img/symbols/sube.gifSR ;B Описание: http://www.intuit.ru/img/symbols/sube.gifST. Атрибуты A1 — это атрибуты из R, не вошедшие в множество A.

Пересечение множеств A Описание: http://www.intuit.ru/img/symbols/cap.gifA1 = Описание: http://www.intuit.ru/img/symbols/empty.gif— пусто и A Описание: http://www.intuit.ru/img/symbols/cup.gifA1 = S. Проекции R[A] и T[B] совместимы по объединению, то есть имеют эквивалентные схемы: SR[A] ~ ST[B] .

Тогда операция деления ставит в соответствие отношениям R и T отношение Q = R[A:B]T, кортежи которого являются теми элементами проекции R[A1], для которых T[B] входит в построенные для них множество образов:

R[A:B]T = {r | r Описание: http://www.intuit.ru/img/symbols/isin.gifR[A1] Описание: http://www.intuit.ru/img/symbols/and.gifT[B] Описание: http://www.intuit.ru/img/symbols/sube.gif{y | y Описание: http://www.intuit.ru/img/symbols/isin.gifR [A] Описание: http://www.intuit.ru/img/symbols/and.gif(r, y) Описание: http://www.intuit.ru/img/symbols/isin.gifR } }.

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

Тогда решением этой задачи будет операция деления отношения R10 на отношение R7 по набору атрибутов (Шифр детали, Наименование детали).

R 17 = R10[Шифр детали, Наименование детали: Шифр детали, Наименование детали]R7

R 17

Цех

Цех1

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

1. Построим отношение, которое моделирует ситуацию, когда в каждом цеху изготавливается вся номенклатура, это уже построенное нами ранее расширенное декартово произведение отношений R7 и R8. Это отношение R9:

R9 = R7 Описание: http://www.intuit.ru/img/symbols/otimes.gifR8

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

R11= R9R10

3. Далее найдем те цеха, в которых не все детали выпускаются, для этого нам надо отношение R11 спроектировать на столбец "Цех":

R18 = R11[Цех]

R18

Цех

Цех 2

Цех 3

4. А теперь из перечня всех цехов вычтем те, кто выпускает не все детали, и получим ответ на запрос, и это будет тот же результат, что и в отношении R17.

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

R1 = <ФИО, Дисциплина, Оценка>; R2 = <ФИО, Группа>;R3 = < Группы, Дисциплина>,

где R1 — информация о попытках (как успешных, так и неуспешных) сдачи экзаменов студентами; R2 — состав групп; R3 — список дисциплин, которые надо сдавать каждой группе. Домены для атрибутов формально задавать не будем, но, ориентируясь на здравый смысл, будем считать, что доменом для атрибута Дисциплина будет множество всех дисциплин, преподающихся в ВУЗе, доменом для атрибута Группа будет множество всех групп ВУЗа и т. д.

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

  • Список студентов, которые сдали экзамен по БД на "отлично". Результат может быть получен применением операции фильтрации по сложному условию к отношению R1 и последующим проектированием на атрибут "ФИО" (нам ведь требуется только список фамилий).

S = (R1[Оценка = 5 Описание: http://www.intuit.ru/img/symbols/and.gifДисциплина = "БД"])[ФИО];

  • Список тех, кто должен был сдавать экзамен по БД, но пока еще не сдавал. Сначала найдем всех, кто должен был сдавать экзамен по БД. В отношении R3 находится список всех дисциплин, по которым каждая группа должна была сдавать экзамены, ограничим перечень дисциплин только "БД". Для того чтобы получить список студентов, нам надо соединить отношение R3 с отношением R2, в котором определен список студентов каждой группы.

R4 = (R2[R3.НомерГруппы = R2.НомерГруппы Описание: http://www.intuit.ru/img/symbols/and.gifR3.Дисциплина = "БД"] R3)[ФИО];

  • Теперь получим список всех, кто сдавал экзамен по "БД" (нас пока не интересует результат сдачи, а интересует сам факт попытки сдачи, то есть присутствие в отношении R1):

R5 = (R1 [Дисциплина = "БД"])[ФИО];

и, наконец, результат — все, кто есть в первом множестве, но не во втором:

S=R4 R5;

  • Список несчастных, имеющих несколько двоек:

S = (R1[R1.ФИО = R'1.ФИО Описание: http://www.intuit.ru/img/symbols/and.gifR1.Дисциплина Описание: http://www.intuit.ru/img/symbols/ne.gifR'1.Дисциплина Описание: http://www.intuit.ru/img/symbols/and.gifR1.Оценка < 2 Описание: http://www.intuit.ru/img/symbols/and.gifR'1.Оценка < 2] R'1)[ФИО]

Этот пример весьма интересен: для поиска строк, удовлетворяющих в совокупности условию больше одного, применяется операция соединения отношения с самим собой. Поэтому мы как бы взяли копию отношения R1 и назвали ее R'1.

  • Список круглых отличников. Строим список всех пар <студент—дисциплина>, которые в принципе должны быть сданы:

R4 = (R2[R2 Группа = R3.Группа] R3)[ФИО, Дисциплина];

Строим список пар <студент—дисциплина>, где получена оценка "отлично":

Обратите внимание на лекцию "28 - Эталонная модель взаимодействия открытых систем".

R5 = (R1[Оценка = 5])[ФИО, Дисциплина];

Строим список студентов, что-либо не сдавших на "отлично":

R6 = (R4 R5)[ФИО].

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

R2[ФИО] R6

Обратите внимание, что для получения множества студентов, что-либо не сдавших на "отлично" (R6), мы осуществили "инверсию" множества всех отлично сданных пар <студент—дисциплина> (R5) путем вычитания его из предварительного построенного универсального множества (R4). Рекомендуем очень внимательно разобрать этот пример и вникнуть в смысл каждого действия — это очень пригодится для понимания реляционной алгебры.

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5137
Авторов
на СтудИзбе
440
Средний доход
с одного платного файла
Обучение Подробнее