Операция условного соединения (бинарная операция)



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

 

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

 

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

 

Общий подход:

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

SR=(A1, A2, … ,Am); SQ = (B1 B2, ... , Bn), где Аi , Bj — имена атрибутов.

Заданы наборыq-сравнимых атрибутов А и В A Í { Ai }; B Í { Bj }, i,j=1,k (!!!)

Соединение отношений R и Q при условии b это подмножество декартова произведения отношений RÄQ, кортежи которого удовлетворяют условию b.

R[ b ]Q = { (r,q) | r.Ai b q.Bi = «Истина», i=1,k}    

 

Существуют различные типы операций соединения:

· тета-соединение R►◄FQ;

· соединение по эквивалентности R►◄=Q;

· естественное соединение R►◄Q;

· внешнее соединение R ◄Q; R► Q;

· полусоединение R►FQ.

 

Операция тета-соединения R►◄FQ определяет отношение, которое содержит кортежи из декартова произведения отношений RÄQ, удовлетворяющие предикату F. Предикат F имеет вид R.ai Θ Q.bj, где вместо Θ может быть указан один из операторов сравнения (>, >=, <, <=, =, <>).

Если предикат F содержит только оператор равенства (=), то соединение называется соединением по эквивалентности R►◄=Q.

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

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

Правое внешнее соединениеR► Q, в результирующем отношении содержатся все кортежи правого отношения Q.

Имеется и полное внешнее соединение R ◄Q; R► Q;, в его результирующее отношение помещаются все кортежи из обоих отношений, а для обозначения несовпадающих значений кортежей в нем используются определители NULL.

Операция полусоединения определяет отношение, содержащее те кортежи отношения R, которые входят в соединение отношений R и Q.

 

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

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

Пусть R — отношение со схемой SR = (А1 А2 ,..., Аk);

А —набор атрибутов А Ì { Ai } i=1,k;

A1 — набор атрибутов, не входящих в множество А,

причем, АÇА1 =Æ ;: AÈА1 = SR.

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

Q R[A1] = {у | у Î R[A1] ^ (х, у) Î R} -  множество образов.

 

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

Пусть даны два отношения R(делимое) и Т(делитель) соответственно со схемами:

SR = (А1 А2, ... , Ak); ST = (В2 В2, ... , Вm);

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

А Ì SR ; В Ì ST.

Атрибуты А1 — это атрибуты из R, не вошедшие в множество А.

АÇА1 = Æ  и AÈА1 = SR. Проекции R[A] и Т[В] совместимы по объединению, то есть имеют эквивалентные схемы: SR[A]  ~ ST[B]

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

R[A:B]T = {r | r Î R[A1] ^T[B] Í {у | у Î R [А1] Ù (x, у) Î R } }.

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

Другими словами!!!

R (делимое)

T (делитель) Частное
(A1)Job (A2)Chair (B)Chair (C)Job
Зав.каф. 22 22 Зав.каф.
Проф. 22 Проф.
Доц. 22 Доц.
Зав.каф. 23
Доц. 23
Ст.преп. 24 22 Зав.каф.
ассист 24 23 Доц

Результат операции деления R:T - набор кортежей отношения R, определенных на множестве атрибутов C, которые соответствуют комбинации всех кортежей отношения T.

R определено на множестве атрибутов A,   а отношение T - на множестве атрибутов B,

причем B A и C=A – B.

T1=R[C]; ð (Зав.каф.,Проф.,Доц.,Ст.преп.,ассист)T2=((TÄT1)-R)[C]; ð  (Ст.преп. 22,ассист 22)R[А:В]Т= T1 - T2. ð  (Зав.каф.,Проф.,Доц)

Язык SQL.

История развития SQL

SQL {Structured Query Language) — Структурированный Язык Запросов — стандартный язык запросов по работе с реляционными БД. Язык SQL появился после реляционной алгебры, и его прототип был разработан в конце 70-х годов в компании IBM Research. Он был реализован в первом прототипе реляционной СУБД фирмы IBM System R. В дальнейшем этот язык применялся во многих коммерческих СУБД и в силу своего широкого распространения постепенно стал стандартом «де-факто» для языков манипулирования данными в реляционных СУБД.

Первый международный стандарт языка SQL был принят в 1989 г. (SQL/89 или SQL1). Иногда стандарт SQL1 также называют стандартом ANSI/ISO, и подавляющее большинство доступных на рынке СУБД поддерживают этот стандарт полностью. Однако развитие информационных технологий, связанных с базами данных, и необходимость реализации переносимых приложений потребовали в скором времени доработки и расширения первого стандарта SQL.

В конце 1992 г. был принят новый международный стандарт языка SQL, который в дальнейшим будем называть SQL/92 или SQL2. И он не лишен недостатков, но в то же время является существенно более точным и полным, чем SQL/89. В настоящий момент большинство производителей СУБД внесли изменения в свои продукты так, чтобы они в большей степени удовлетворяли стандарту SQL2.

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

SQL нельзя, в полной мере, отнести к традиционным языкам программирования. Он не содержит традиционные операторы, управляющие ходом выполнения программы, операторы описания типов и многое другое. Он содержит только набор стандартных операторов доступа к данным, хранящимся в базе данных. Операторы SQL встраиваются в базовый язык программирования, которым может быть любой стандартный язык типа C++, PL, COBOL и т. д. Кроме того, операторы SQL могут выполняться непосредственно в интерактивном режиме.


Дата добавления: 2018-04-15; просмотров: 724; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!