Операции над отношениями

Реляционная алгебра

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

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

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

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

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

R1 Операции над отношениями - student2.ru R2 = { г | г Операции над отношениями - student2.ru R1 Операции над отношениями - student2.ru r Операции над отношениями - student2.ru R2 }. Здесь r — кортеж нового отношения, Операции над отношениями - student2.ru — операция логического сложения «ИЛИ».

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

R1
Шифр детали Название детали
Гаика Ml
Гайка М2
Гаика M3
Болт Ml
Болт МЗ
Шайба Ml
Шайба МЗ
R2
Шифр детали Название детали
Гайка М1
Гайка М3
Гайка М4
Гайка М2
Гайка М3
R3  
Шифр детали Название детали
Гайка Ml
Гайка М2
Гайка МЗ
Болт Ml
Болт МЗ
Шайба Ml
Шайба МЗ
Гайка М4
Болт М2

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

R3 = R1 Операции над отношениями - student2.ru R2={ г | r Операции над отношениями - student2.ru R1 ^ г Операции над отношениями - student2.ru R2 }, здесь ^ — операция логического умножения (логическое «И»).

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

R4  
Шифр детали Название детали
Гайка Ml
Гайка МЗ
Болт МЗ

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

R5 = RI \ R2 = { г | r Операции над отношениями - student2.ru R1 ^ r Операции над отношениями - student2.ru R2 }

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

R6 = R2 \ R1 = { r | r Операции над отношениями - student2.ru R2 ^ r Операции над отношениями - student2.ru R1 }

R5  
Шифр детали Название детали
Гайка М2
Болт Ml
Шайба Ml
Шайба МЗ
R6  
Шифр детали Название детали
Гайка М4
Болт М2
R3
Шифр детали Название детали
Гайка Ml
Гайка М2
Гайка МЗ
Болт Ml
Болт МЗ
Шайба Ml
Шайба МЗ
Гайка М4
Болт М2

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

R3 = R1 Операции над отношениями - student2.ru R2 ={ r | r Операции над отношениями - student2.ru R1 ^ r Операции над отношениями - student2.ru R2 }

здесь ^— операция логического умножения (логическое «И»).

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

R4
Шифр детали Название детали
Гайка M1
Гайка МЗ
Болт МЗ

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

R5 = R1 \ R2 = { r | r Операции над отношениями - student2.ru R1 ^ г Операции над отношениями - student2.ru R2 }

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

R6 = R2 \ R1 = { r | r Операции над отношениями - student2.ru R2 ^ r Операции над отношениями - student2.ru R1 }

R5
Шифр детали Название детали
Гайка М2
Бол г M1
Шайба M1
Шайба МЗ
R6
Шифр детали Название детали
Гайка М4
Болт М2

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

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

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

· R1= (ФИО, Паспорт, Школа);

· R2= (ФИО, Паспорт, Школа);

· R3= (ФИО, Паспорт, Школа).

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

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

1. Список абитуриентов, которые поступали два раза и не поступили в вуз. R = R1 Операции над отношениями - student2.ru R2 \ R3

2. Список абитуриентов, которые поступили в вуз с первого раза, то есть они сдавали экзамены только один раз и сдали их так хорошо, что сразу были зачислены в вуз. R = (R1 \ R2 Операции над отношениями - student2.ru R3 ) Операции над отношениями - student2.ru (R2 \ R1 Операции над отношениями - student2.ru R3)

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

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

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

Это прежде всего те абитуриенты; которые присутствуют в R1и не присутствуют в R2, и те, кто присутствуют в R2 и не присутствуют в R1. И разумеется, никто из них не присутствует в R3. R = (R1 \ R2) Операции над отношениями - student2.ru (R2 \ R1) \ R3

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

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

Кроме перечисленных трех теоретико-множественных операций в рамках реляционной алгебры определена еще одна теоретико-множественная операция — расширенное декартово произведение. Эта операция не накладывает никаких дополнительных условий на схемы исходных отношений, поэтому операция расширенного декартова произведения, обозначаемая R1 ® R2, допустима для любых двух отношений. Но прежде чем определить саму операцию, введем дополнительно понятие конкатенации, или сцепления, кортежей.

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

(с, q) = <с1 с2, ... , сn, q1, q2, .... qm>

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

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

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

SR1=(А12...,Аn) и отношения R2 степени m со схемой

SR2=(В12, ... , Вm) называется отношение R3 степени n+m со схемой

SR3 = (А1, А2, ... , Аn, В1, В2, ..., Вm),

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

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

R1 Операции над отношениями - student2.ru R2 = {(r, q) | r Операции над отношениями - student2.ru R1 ^ q Операции над отношениями - student2.ru R2}

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

R7  
Шифр детали Название детали
Гайка M1
Гайка М2
Гайка МЗ
Болт М1
Болт МЗ
Шайба Ml
Шайба МЗ
Гайка М4
000ll004 Болт М2
Болт М5
Болт М6
Шайба М2
R8
Цех
Цех 1
Цех 2
Цех 3

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

R9
Шифр детали Название детали Цех
Гайка Ml Цех 1
Гайка М2 Цех 1
Гайка МЗ Цех 1
Болт Ml Цех 1
Болт МЗ Цех 1
Шайба Ml Цех 1
Шайба МЗ Цех 1
Гайка М4 Цех 1
Болт М2 Цех 1
Болт М5 Цех 1
Болт Мб Цех 1
Шайба М2 Цех 1
Гайка Ml Цех 2
Ганка М2 Цех 2
R10
Шифр Название детали Цех
Гайка Ml Цех 1
(МО И 075 000 11 076 Гайка М2 Гайка МЗ Цех 1 Цех 1
000 11 003 ! Болт Ml Цех 1
0011 0006 Болт МЗ Цех 1
Шайба Ml Цех 1
000 11060 Шайба МЗ Цех 1
000 11 004 Болт М2 Цех 1
Гайка М4 Цех 1
Болт МЗ Цех2
Шайба Ml Цех 2
Шайба МЗ Цех 2
Гайка М4 Цех 2
0001 0778 Болт М2 Цех 2
Гайка МЗ Цех 2
00011U03 Болт Ml Цех 2
Болт МЗ Цех 2
Шайба Ml Цех 2
Шайба МЗ Цех 2
Гайка М4 Цех 2
Болт М'2 Цех 2
Болт М5 Цех 2
Болт Мб Цех 2
Шайба М2 Цех 2
Гайка Ml ЦсхЗ
Гайка М2 ЦехЗ
Гайка МЗ Цех 3
Болт Ml ЦехЗ
Болт МЗ ЦехЗ
Шайба Ml Цех 3
Шайба МЗ ЦехЗ
Гайка М4 ЦехЗ
Болт М2 Цех 3
Болт М5 ЦехЗ
Болт Мб ЦехЗ
Шайба М2 ЦехЗ
Болт Мб Цех 2
Шайба М2 Цех 2
Гайка Ml ЦeхЗ
Гайка М2 ЦехЗ
Гайка МЗ ЦехЗ
Болт Ml ЦехЗ
Болт МЗ Цех 3
Шайба Ml Цех 3
Шайба МЗ ЦехЗ
Гайка М4 Цeх3
Болт М5 Цех3
Болт Мб Цех3
Болт М5 Цех 1
Болт Мб Цех 1
Шайба М2 Цех1

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

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

R11 = R9 \ R10

R11
Шифр детали Название детали Цех
Гайка Ml Цех 2
Гайка М2 Цех 2
Гайка МЗ Цех 2
Болт М2 ЦехЗ
Шайба М2 ЦехЗ
Болт Ml Цех 2
Болт М5 ЦехЗ

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

(R1 Операции над отношениями - student2.ru R2) \ (R1 \ R2) \ (R2 \ R1)

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

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

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

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

Пусть а — булевское выражение, составленное из термов сравнения с помощью связок И (^), ИЛИ ( Операции над отношениями - student2.ru ), НЕ (-) и, возможно, скобок. В качестве термов сравнения допускаются:

а) терм А ос а, где А — имя некоторого атрибута, принимающего значения из домена D; а — константа, взятая из того же домена D, a Операции над отношениями - student2.ru D; ос — одна из допустимых для данного домена D операций сравнения;

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

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

R[G(r)] = {r | r Операции над отношениями - student2.ru R ^ G(r) = "Истина"}

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

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

R12    
Шифр детали Название детали Цех
000 1 1003 Болт М 1 Цех 1
Болт М 1 Цех 3

Следующей специальной операцией является операция проектирования. Пусть R — отношение, SR = (А1, ... , Аn) — схема отношения R. Обозначим через В подмножество [ Аi]; В Операции над отношениями - student2.ru { Аi } При этом пусть В1 — множество атрибутов из { Ai }, не вошедших в В. Если В = {A1j.A2j .....Akj}, В1 = {А1j,А2j,...,Аkj}и r = <а1j, а2j,...,аkj >, аkj Операции над отношениями - student2.ru Аkji, то r [В], s= < a1j, а2j, ... , аm, > ; аm, Операции над отношениями - student2.ru Аmj

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

R[B] = {r[В]}

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

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

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

R13 = R10 [ Название детали = «Болт Ml» ]

R14 = R13 [ Цех |

R13
Шифр детали детали Название Цех
Болт M1 Цех 1
Болт M1l Цех3
R14
Цех
Цех 1
Цех 3

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

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

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

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

SR = (А1, А2, ... , Ak): SQ = (В1 В2, ... , Bm),

где А,, В, — имена атрибутов в схемах отношений R и Q соответственно. При этом полагаем, что заданы наборы атрибутов А и В

А Операции над отношениями - student2.ru { Аi } ,j=1,k; В Операции над отношениями - student2.ru { Bj } j=1,m, и эти наборы состоят из Q-сравнимых атрибутов.

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

· r.Aj Qj Вi, : i=l,k, где k — число атрибутов, входящих в наборы А и В, а Qj— конкретная операция сравнения.

· Aj Qj Вi Di Qi — i-й предикат сравнения, определяемый из множества допустимых на домене Di операций сравнения.

R [ Р ] Q = { r.q) | (г. q) | r.A Qj q.Bj - «Истина», i=l,k}

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

R15
Шифр детали Название детали Материал
Гайка Ml сталь-ст1
Гайка М2 сталь-ст2
Гайка МЗ сталь-ст1
Болт М1 сталь-стЗ
Болт МЗ сталь-стЗ
Шайба Ml сталь-ст1
Шайба МЗ сталь-ст1
Гайка М4 сталь-ст2
Болт М2 сталь-стЗ
Болт М5 сталь-стЗ
Шайба М2 сталь-ст1
R16
Название детали
Гайка M1
Гайка МЗ
Шайба М1
Шайба МЗ
Шайба М2

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

R16 = (R15[(R15Шифр детали =R10.Шифр детали) ^R10.Цех = «Цех1» ^ ^ R15.Материал =«сталь-ст1»] R10)[Hазвание детали]

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

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

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

Пусть А — некоторый набор атрибутов А Операции над отношениями - student2.ru { Аi } i=l,k , А1 — набор атрибутов, не входящих в множество А.

Пересечение множеств А и А1 пусто: А Операции над отношениями - student2.ru А1 = 0; объединение множеств равно множеству всех атрибутов исходного отношения: A Операции над отношениями - student2.ru А1 = SR.

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

QA(x) = {у | у Операции над отношениями - student2.ru R[A1] ^ (х, у) Операции над отношениями - student2.ru R} - множество образов.

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

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

Дадим теперь определение операции деления. Пусть даны два отношения R и Т соответственно со схемами: SR = (А1, А2, ... , Ak); ST =-(В1, В2, ... , Вm);

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

А Операции над отношениями - student2.ru SR ; В Операции над отношениями - student2.ru ST. Атрибуты А1 — это атрибуты из R, не вошедшие в множество А.

Пересечение множеств А Операции над отношениями - student2.ru А1 = Операции над отношениями - student2.ru — пусто и A Операции над отношениями - student2.ru А1 = SR. Проекции R[A] и Т[В] совместимы по объединению, то есть имеют эквивалентные схемы: SR|A|~ ST[B|.

Тогда операция деления ставит в соответствие отношениям R и Т отношение

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

R[A:B]T = {r | r Операции над отношениями - student2.ru R[A1] ^ Т[В] Операции над отношениями - student2.ru (у | у Операции над отношениями - student2.ru R [А] ^ (r, у) Операции над отношениями - student2.ru R } }.

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

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

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

R 17
Цех
Цех1

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

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

R9 = R7 Операции над отношениями - student2.ru R8

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

R11 =R9\R10

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

R18 = R11[Цех]

R18
Цех
Цех 2
ЦeхЗ

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

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

R1 = <ФИО, Дисциплина, Оценка>;

R2 = <ФИО, Группа>;

R3 = < Группы, Дисциплина>,

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

Покажем, каким образом можно получить из этих таблиц интересующие нас

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

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

S = (R1|[Оценка = 5 ^ Дисциплина = «БД»])[ФИО];

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

R4 = (R2[R3Номер группы = R2.НомерГруппы ^ R3.Дисциплина = «БД»] R3)[ФИО];

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

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

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

S = R4 \ R5;

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

S = (R1[R1.ФИО = Rl.ФИО ^ R1Дисцинлина не равно R'1.Дисциплина ^

R1Оценка <= 2^ R'1.Оценка < 2] Rэ1,)[ФИО]

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

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

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

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

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

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

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

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

R2[ФИО] \ R6

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

Лекция 5 Язык SQL

5.1 История развития языка SQL

Ниже тезисно приведены основные вехи истории развития SQL.
SQL ( Structured Query Language ) Структурированный Язык Запросов — стан дартный язык запросов по работе с реляционными БД. Работа была начата сразу после появления статью Э.Кодда в 1970г. в лабораториях компании IBM для проверки возможностей реляционной модели.

Операции над отношениями - student2.ru

СУБД System R- экспериментальная исследовательская система с языком SEQUEL(позже SQL), созданная IBM:

· Полный реляционный язык БД

· Операторы манипулирования БД

· Средства определения и манипулирования схемой БД

· Определение ограничений целостности

· Определение представлений

· Определение индексов

· Авторизация доступа к отношениям и их полям

· Точки сохранения транзакций и откаты

SQL в коммерческих реализациях:

1979 - Oracle (Relation Software Inc.- Oracle corp.;

1981-1982 - DB2 (IBM), Ingres - CA-OpenIngres (Relation Technology Inc. - Computer Associates)

1984 - Informix (Informix Sofrware);

1986 - Sybase (Sybase Corp.)

· Реализован во всех коммерческих реляционных СУБД

· Все фирмы провозглашают соответствие стандарту SQL

· Реализованные диалекты очень близки

· Путь "сверху вниз" - уточнение и упрощение SQL System R

· Путь "снизу вверх" - от диалектов реализации различных фирм (наращивание возможностей, обычное отсутствие полного описания языка)

Стандартизация SQL:

· Все фирмы провозглашают соответствие стандарту SQL

· Реализованные диалекты очень близки

· Деятельность началась одновременно с появлением первых коммерческих реализаций

· В качестве стандарта нельзя было использовать SQL System R(не было технической проработки, слишком сложно реализовать)

· Нельзя было принять за стандарт коммерческий диалект (слишком различались)

Наши рекомендации