Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Логическое программирование




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

Типичным представителем языков программирования задач математической логики является Prolog. Само название Prolog есть сокращение, означающее про граммирование в терминах лог ики.

Пролог-программа состоит из предложений трех типов: факты, правила и вопросы.

Факты есть высказывания, которые заканчиваются точкой и имеют значение только “истины”. Структура такого предложения описана предикатом или n-местным отношением, все аргументы которого есть предметные постоянные. Предметные постоянные всегда начинаются со сточной буквы латинского алфавита и представляют собой последовательность букв, цифр и знака подчеркивания.

Например,

· простое_число (3).

Это - высказывание, структура которого описана предикатом

P1(x):=”x - простое число”.

· частное_от_деления(6, 2, 3).

Это - высказывание, структура которого описана предикатом

P3(x, y, z):=”z есть частное от деления числа x на y”.

· студент_университета,_обучающийся_по_специальности (Петров, КГТУ, прикладная информатика").

Это - высказывание, структура которого описана предикатом

P6(x, y, z):= "студент x университета y, обучающийся по специальности z”.

·:

отец (игорь, святослав).

отец (святослав, владимир).

отец (владимир, борис).

отец (владимир, глеб). / родословная русских

дед (игорь, владимир). князей X века /.

дед (святослав, борис).

дед (святослав, глеб).

брат (борис, глеб).

Это - высказывания, структура которых описана предикатами

P4(X, Y):=”X – отец Y”, P5(X, Y):=”X – дед Y”, P6(X, Y):=”X – брат Y”.

Структуру высказывания или функциональную зависимость между предметными постоянными описывают термы.

Множество фактов формирует базу данных о предметной области.

Правила есть суждения, истинность которых зависит от истинности условий: “если истинны условия (посылки, цели), то истинно и заключение (вывод)”. Это – известное правило m.p.

На языке Prolog правила записывают так:

<заключение>:-

<условия>”.”

Символ “:-“ соответствует символу обратной импликации ””.

Левую часть правила называют головой предложения, а правую – телом предложения. В теле предложения перечисляют условия, а в голове - заключение.

Если дано несколько условий, и они имеют между собой конъюнктивную связь, то перечень условий описывают так:

<условие>{“,”<условие>}”.”,

если дизъюнктивную, - так:

<условие>{“;”<условие>}”.”.

Голова предложения всегда сдвинута влево относительно перечня условий. Каждое условие начинается с новой строки.

На языке Prolog эти правила записывают так:

<заключение>:-

<условие_1>”,”

<условие_2>”;”

<условие_3>”.”

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

Например, в базе знаний могут быть правила:

дед(X, Y):-

отец(X, Z),

отец (Z, Y).

брат(X, Y):-

отец (Z, X),

отец(Z, Y).

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

Пример:

?-дед (святослав, Y). /“Кому Святослав является дедом?”/.

В базе знаний есть правило:

дед(X, Y):-

отец(X, Z),

отец (Z, Y).

Выполняя подстановку в условия фактов из базы данных, получим:

отец (святослав, владимир).

отец (владимир, борис).

отец (владимир, глеб).

Следовательно, ответ на поставленный вопрос:

дед (святослав, борис, глеб). /”Святослав дед Борису и Глебу”/

Пример:

?-брат(X, Y). /”Есть ли братья среди русских князей X века”/.

В базе знаний есть правило:

брат(X, Y):-

отец (Z, X),

отец(Z, Y).

Выполняя подстановку в условия фактов из базы данных, получим:

отец (владимир, борис).

отец (владимир, глеб).

Следовательно, ответ на поставленный вопрос:

брат (борис, глеб). /”Борис и Глеб – братья”/.

Рассмотренный метод обобщает механизм унификации. Аргументы вызова - это имена переменных, которые подставляют на место формальных параметров. Формальными параметрами могут быть термы.

Например, для родословной русских князей X века имеем:

· дед (игорь, владимир):-

отец (игорь, святослав),

отец (святослав, владимир).

Это - высказывание о том, что если ‘игорь’ был отцом ‘святослава’, а ‘святослав’ – отцом ‘владимира’, то ‘игорь’ был дедом ‘владимиру’.

· дед (святослав, борис), дед(святослав, глеб):-

отец (святослав, владимир),

отец (владимир, борис);

отец (святослав, владимир),

отец (владимир, глеб).

Это есть высказывание о том, что ‘святослав’ был отцом ‘владимира’ и дедом ‘борису’ и ‘глебу’.

· брат(борис, глеб):-.

родитель(владимир, борис),

родитель(владимир,глеб).

Это есть высказывание о том, что если ‘владимир’ был отцом ‘бориса’ и отцом ‘глеба’, то ‘борис’ и ‘глеб’ были братьями.

Логика реляционная

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

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

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

Между таблицей, отношением и файлом есть соответствие:

ТАБЛИЦА ® ОТНОШЕНИЕ ® ФАЙЛ

строка ® кортеж ® запись

имя столбца ® имя атрибута ® имя поля

тип атрибута ® тип домена ® тип поля

 

Верхняя строка таблицы формирует “шапку”, а остальные строки – “тело” таблицы. Ниже, как пример таблицы, дан фрагмент учебного плана.

 

дисциплина лекции (ч) лаб.зан-я (ч) практ.зан-я (ч) отчетность (зач., экз.)
физика       экз
информа-тика       зач.

...............

Эта таблица (отношение) отражает связи между наименованием учебной дисциплины, видом и числом часов аудиторных занятий и формой отчетности. Именами атрибутов отношения являются: ”дисциплина”, “лекции_(ч)”, “лаб.занятия_(ч)”, “практ.занятия_(ч)”, “отчетность_(зач., экз.)”. Значением атрибута “дисциплина” являются слова {физика, информатика,..}, “отчетность” – {зач., экз.}. Тип этих атрибутов - <слово>, а тип домена – CHAR (строковое). Значением атрибутов “лекции_(ч)”, “лабораторные занятия_(ч)” и “практические занятия_(ч)” являются целые числа {17, 34, 51, 68}. Тип этих атрибутов - <целое_число>, а тип домена –INTEGER (целое). Кортежами этого отношения являются: (физика, 34, 34, 17, экз.), (информатика 51, 34, 0, зач.).

Таким образом, если дано множество атрибутов A ={A1, A2,...An} и множество доменов D ={D1, D2,...Dm}, то кортеж отношения есть t=(d1, d2,...dn) где diÎ D.

Так как отношение есть множество совместимых кортежей, то

r={t| t=(d1, d2,...dn), diÎ D }.

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

r={t| t=(d1, d2,...dn), diÎ D 1Än D.

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

rel(r)=(A1, A2,¼, An).

Например,

rel(уч_план_1)=(дисциплина, лекции_(ч), лаб_занятия_(ч),

практ_занятия_(ч), отчетность_(зач.,экз.)).

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

REL (R)={rel(r)}.

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

Например, запись файла “уч_план_1” может быть (дисциплина=физика, лекции_(ч)=34, лаб.занятия_(ч)=34, практ.занятия_(ч)=17, отчетность_зач., экз.=экз.) или такой (практ.занятия_(ч)=17, дисциплина=физика, отчетность_ (зач., экз.)=экз., лаб.занятия_(ч)=34, лекции_(ч)=34).

Для каждого отношения должен быть задан ключ.

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

При изложении основ реляционной алгебры и реляционного исчисления будем придерживаться следующих ограничений:

1) все атрибуты кортежа должны быть элементарными (или каждое поле записи должно иметь один тип: INTEGER (целые), REAL (вещественные), CHARACTER (строковые) или BOOLEAN (булевские)) и не должны быть функционально связаны между собой;

2) все кортежи должны быть упорядоченными и иметь одинаковое число компо­нент в одном отношении (или все записи в файле должны иметь оди­наковое число полей);

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

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

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

Основные теоретико-множественные операции над отображениями были описаны в 1.6.1 и 1.6 4. В настоящем разделе дается описание алгебраических операций, употребляемых в системах управления реляционными базами данных.

Пусть дано множество отношений R ={r},

где r={t| t=(d1, d2,...dn), diÎ D }- отношение,

t=(d1, d2,...dn) – кортеж отношения,

diÎDi- значение компоненты кортежа,

Di – домен i-го атрибута,

D ={D1, D2,¼, Dm} – множество доменов,

A ={A1, A2,...Ak} - множество атрибутов,

rel(r)= (A1, A2,...An) - схема отношения,

REL (R)={rel(r)} - множество схем отношений,

множество алгебраических операторов:

S ={È, Ç, \, Ä, ù, dB(r), p rel(r), ><, > q <}, где

È - оператор объединения отношений;

Ç - оператор пересечения отношений;

\ - оператор разности отношений;

Ä - оператор прямого произведения отношений;

ù - оператор дополнения отношения;

dB(r) - оператор выбора кортежа по условию B;

p rel’(r) - оператор проекции отношения на новую схему rel;

>< - оператор естественного соединения отношений;

>q< - оператор q - соединения отношений,

: - оператор деления отношений.

множество логических операторов:

Y={&, Ú, ù}, где

& - оператор конъюнкции условий и/или отношений,

Ú - оператор дизъюнкции условий и/или отношений,

ù - оператор отрицания условий и/или отношений,

множество операторов сравнения:

q={=, ¹, >, ³, <, £}.

 

 

Множество отношений R и операторов формируют реляционную алгебру

. Ap=< R, å, Y, q >.

Рассмотрим исполнение алгебраических операций над пятью отношениями r1, r2, r3, r4 и r5. Поскольку наиболее удобно представление отношений таблицами, то исполнение операций проследим в графической форме. Имена атрибутов в таблицах обозначены прописными буквами латинского алфавита с индексами А1, А2, A3, A4, A5 и А6, а значения атрибутов - строчными буквами латинского алфавита с индексами {a1, a2, a3, a4, b1, b2, b3, b4, c1, c2, d1, d2, d3} и цифрами {1, 2, 3}.

 

r1, A1 A2 A3   r2 A1 A2 A3   r5 A1 A2 A3 A4 A5 A6
  a1 b1       a2 b3       a1 b1   c2 d3  
  ккк a2 b2       a1 b1       a2 b2   c2 d2  
  a3 b3       a2 b4       a1 b1   c3 d3  
  a4 b1       a1 b2       a2 b2   c2 d2  
                      a1 b1   c1 d1  
r3 A1 A4 A5   r4 A4 A5 A6     a3 b3   c3 d3  
  a1 c2 d3     c2 d3       a3 b3   c3 d3  
  a2 c1 d1     c1 d1       a4 b1   c2 d3  
  a3 c1 d2     c2 d2                  
  a1 c2 d1     c3 d3                  
                                   

 

Пусть даны ключи отношений: r1 – (A 1), r2 - (A 2), r3 - (A 1, A 5),

r4- (A 4, A 5, A 6). В шапках таблиц ключи выделены полужирным шрифтом.

Операторы dB(r), prel'(r) и ùr есть унарные операторы, а операторы È(r1, r2), Ç(r1, r2), \(r1, r2), Ä(r1, r2), ><(r1, r2), >q<(r1, r2) и:(r1,r2)} – бинарные.

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

 

Унарные операции

Оператор выбора dB(r) позволяет извлекать из отно­шения r кортежи, удовлетворяющие условию В, и формировать новое отношение r’. Условия выбора задаются, как правило, операторами сравнения {=, ¹, >, ³, <, £} и/или логическими связками {&, Ú, ù}. Например, B=(Аi=kdi); B=(Аi¹kdi); B=(Аi>kdi); B=(Аi<kdi); B=(Аi³kdi);

B=(Аi£kdi); B=((A1, A2,...An)=kti); B=((A1, A2,...An)¹kti); B=((A1, А2,...An)>kti); B=((A1, A2,...An)<kti); B=((A1, A2,...An)³kti); B=((A1, A2,...An)£kti); B=Bi &Bj; B=Bi ÚBj; B=ù Bj и т. п..

Результатом исполнения этой операции будет новое отношение r’, т.е.

r= dB(r)={ t’| t Í r; B, rel(r’)=rel(r)}Í r.

Пример: выбрать кортежи отношения r1 по ключу А12, т.е. r’1={t’| B:=(A1=a2}, r2 - по значению атрибута A3=1, т.е. r’2={t’| B:=(A3=1}, r5 – по значениям атрибутов {A1=a1, A2=b1, A3=1}, т.е. r’5={t’| B:=(A1=a1)&, (A2=b1)&(A3=1)}. Ниже приведены отношения в результате исполнения этих операций.

 

r’1 A1 A2 A3   r’2 A1 A2 A3   r5 A1 A2 A3 A4 A5 A6
  a2 b2       a2 b3       a1 b1   c2 d3  
            a1 b1       a1 b1   c3 d3  
                      a1 b1   c1 d1  

В нотации компьютерных языков операцию выбора запи­сывают так:

SELECT (отношение; УСЛОВИЯ).

Для данного примера это будет описано так:

r’1=SELECT(r1, A1=’a2’); r’2=SELECT(r2, A3=’1’);

r’5=SELECT(r5; A1=’a1’ AND A2=’b1’ AND A3=’1’).

Значения атрибутов заключены в апострофы. Это озна­чает, что строка символов является значением поля записи. Данное правило относится к любым одиночным символам и строкам, представляющим значение атрибута. Это делается для того, чтобы отличить значение от имени атрибута, переменных параметров и числовых констант.

При программировании на алгоритмических языках логические связки {&,Ú,ù} замещаются операторами AND, OR, NOT соответственно.

Например, необходимо выбрать кортежи отношения r1 по значению атрибута A3=ù3, т.е. r’1={t’| B:=(A3=ù3}, r2 - по значению атрибутов A3=1 или A2=b1, т.е. r’2={t’| B=(A3=1ÚA2=b1}, r5 – по значению атрибутов (A1=a1, A2=b1, A3=1и A4¹c2), т.е. r’5={t’| B=((A1=a1)&(A2=b1)&(A3=1)&(A4¹c2)}.

Ниже приведены отношения в результате исполнения этих операций.

 

r’1 A1 A2 A3   r’2 A1 A2 A3   r5 A1 A2 A3 A4 A5 A6
  a1 b1       a2 b3       a1 b1   c3 d3  
  a3 b3       a1 b1       a1 b1   c1 d1  

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

В нотации компьютерных языков оператор выбора опи­сывают так:

r’1=SELECT(r1; A3=NOT’3’); r’2=SELECT(r2; A3=’1’OR A2=’b1’);

r’5=SELECT(r5; A1=’a1’AND A2=’b1’AND A3=’1’AND A4=NOT’c2’).

При задании нескольких операторов выбора допускается их композиция, т. е.dВ1В2…Вь=.dВ1×dВ2××dВь.

Оператор проекции prel(r) позволяет формировать из данного отношения r со схемой rel(r)=(A1, A2,..An) новое отношение r’ со схемой rel(r’)=(Ai, Aj,.. Ak), где 1£i, j,k£n, путем удаления и (или) переупорядочения атрибутов.

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

r’=prel(r)={ t’| |rel(r’)|£|rel(r)|}.

Следует обратить внимание, что число атрибутов схемы формируемого отношения меньше или равно числу атрибутов схемы исходного отношения, т.е. |rel(r’)|£|rel(r)|, а число кортежей формируемого отношения равно числу кортежей исходного отношения, т.е. |r’|=|r|.

Например, необходимо выбрать значения ключей отношений r1 и r3, т.е. rel(r’1)= (A1), rel(r’3)= (A1, A5).

 

r’1 A1   r’3 A1 A5
  a1     a1 d3
  a2     a2 d1
  a3     a3 d2
  a4     a1 d1

При задании нескольких операторов проекции допускается их композиция, т. е. prel1 rel2 relь (r)= prel(r)×pre2(r)×…×pre(r).

В нотации компьютерных языков операцию проекции запи­сывают так:

PROJECT(отношение, СПИСОК AТРИБУТОВ).

Для приведенных примеров имеем:r’1=PROJECT(r1, A1); r’3=PROJECT(r3, A1, A5); r’5=PROJECT(r5, A1, A2, A3).

Оператор дополнения ùr. Для формирования дополнения отношения необходимо найти множество всех кортежей со схемой заданного отношения rel(r) на области определения D, т. е. найти размещение всех значений домена отношения | D |= n на число компонент -k схемы отношения rel(r), т.е. найти

dom(r)=(n)k=n*(n-1)*(n-2)*...*(n-k+1)

и удалить из этого множества кортежи исходного отношения r.

Множество таких кортежей очень большое. Если хотя бы один атрибут отношения счетный, но не конечный, то |dom(r)|=¥.

Например, для r3 имеем D1={a1, a2, a3}, D4={c1, c2}, D5={d1, d2, d3}, т. е. n=|D|=|D1ÈD4ÈD5|=8 и к=3. Следовательно, число кортежей дополнения равно |dom(r3)|=(8)3=8*7*6*5*4=6720.

Если значения атрибутов находятся в пределах своих доменов, то |dom(r)|=|D1|*|D2|*...*|Dm|. Например, для r3 имеем |dom(r)|=3*2*3=18, а |ùr|=14.

Чтобы получить кортежи отношенияùr3 следует из множества кортежей dom(r3) удалить кортежи r3, т. е. ùr3= dom(r3)\ r3).

Ниже двумя таблицами представлены dom(r3) и ùr3..

 

dom(r3) A1 A4 A5   ùr3 A1 A4 A5
  a1 c1 d1     a1 c1 d1
  a1 c1 d2     a1 c1 d2
  a1 c1 d3     a1 c1 d3
  a1 c2 d1     a1 c2 d2
  a1 c2 d2     a2 c1 d2
  a1 c2 d3     a2 c1 d3
  a2 c1 d1     a2 c2 d1
  a2 c1 d2     a2 c2 d2
  a2 c1 d3     a2 c2 d3
  a2 c2 d1     a3 c1 d1
  a2 c2 d2     a3 c1 d3
  a2 c2 d3     a3 c2 d1
  a3 c1 d1     a3 c2 d2
  a3 c1 d2     a3 c2 d3
  a3 c1 d3          
  a3 c2 d1          
  a3 c2 d2          
  a3 c2 d3          

Бинарные операции

Все множество бинарных операторов удобно разбить на два подмножества: основные и дополнительные. Основные - это объединения, разности и прямого произведения, а дополнительные - пересечения, соединения и деления.

Оператор объединения È(r1, r2) двух отношений, имеющих оди­наковые схемы, формирует новое отношение r’,

r1Èr2 A1 A2 A3   объединяя все кортежи первого и второго отношений. При этом одинаковые кортежи отно­шений по правилу идемпотентности "сливаются” в один кортеж. Например, r’={t’| t’=t1Î r1 или t’=t2Î r2, rel(r’)=rel(r1)=rel(r2)}. В нотации компьютерных языков это: r’= UNION(r1, r2).
  a1 b1  
  a2 b2  
  a3 b3  
  a4 b1  
  a2 b3  
  a2 b4  
  a1 b2  

Оператор прямого произведения Ä(r1, r2) формирует из двух отношений арности n1 и n2 новое отношение r’ ар­ности (n1+n2).

При этом первые n1 компонентов кортежа отношения r’ образованы отношением r1, а последние n2 - отношением r2. В результате формируется множество кортежей: r`={t`=<t1,t2>| t1Îr1; t2Îr2; rel(r’)=<rel(r1)rel(r2)>}. В нотации компьютерных языков это: PRODUCT(r1, r2). Для таблицы r’ число строк равно произведению числа строк таблиц r1 и r2, т.е. |r’|=|r1|*|r2|, а число столбцов равно сумме числа столбцов таблиц r1 и r2, т.е. rel(r’)=<rel(r1)rel(r2)>. Справа приведена таблица для (r1Är4).     r1Är4 A1 A2 A3 A4 A5 A6
  a1 b1   c2 d3  
  a1 b1   c1 d1  
  a1 b1   c2 d2  
  a1 b1   c3 d3  
  a2 b2   c2 d3  
  a2 b2   c1 d1  
  a2 b2   c2 d2  
  a2 b2   c3 d3  
  a3 b3   c2 d3  
  a3 b3   c1 d1  
  a3 b3   c2 d2  
  a3 b3   c3 d3  
  a4 b1   c2 d3  
  a4 b1   c1 d1  
  a4 b1   c2 d2  
  a4 b1   c3 d3  

Оператор разности \(r1, r2) двух отношений, имеющих одинаковые схемы, формирует новое отношение r’, выбирая из первого отно­шения только те кортежи, которых нет во втором отношении.

В результате выполнения этой операции формируется множество кортежей по правилу: r’={t’| t = t1Î r1 и t1Ïr2, rel(r1)=rel(r2)}.

 

В нотации компьютерных языков это: MINUS(r1, r2) или DIFFERENCE(r1, r2). r1\ r2 A1 A2 A3
  a2 b2  
  a3 b3  
  a4 b1  

Оператор пересечения Ç(r1, r2), имеющих одинаковые схемы, формирует новое отношение из кортежей первого и второго отношений, имеющих одинаковые значения всех одноименных атрибутов.

В результате выполнения этой операции:

r`= {t’| t’=t1Îr1 и t’=t2Îr2 , rel(r1)=rel(r2)}.

В нотации компьютерных языков оператор пересечения записывают так:

r’=INTERSECT(r1, r2).

Операция пересечения может быть реализована оператором разности: r1Çr2=r1\(r1\r2).

В таблице приведены результаты операции пересечения (r1Ç r2).     r1Ç r2 A1 A2 A3
  a1 b1 c1

Оператор естественного соединения ><(r1, r2) фqqормирует из r1 и r2, имеющих один или несколько одинаковых имен атрибутов, новое отношение r’, схема которого есть объеди­нение схем двух отношений, а кортежи формируются из кортежей первого отношения путем присоединения кортежей второго отно­шения при одинаковых значениях одноименных атрибутов.

В результате выполнения этой операции:

r’={t’=<t1t2>| t1Î r1; t2 Î r2; rel(r1)Çrel(r2)¹Æ; rel(r’)=rel(r1)È rel(r2)}.

В нотации компьютерных языков оператор соединения есть:

JOIN (r1, r2).

В таблицах приведены результаты r1><r2 и r3><r4.

r1><r2 A1 A2 A3 A4 A5   r3><r4 A1 A4 A5 A6
  a1 b1   c2 d3     a1 c2 d3  
  a1 b1   c2 d1     a2 c1 d1  
  a2 b2   c1 d1            
  a3 b3   c1 d2            

Оператор q-соединения >q<(r1, r2) формирует из r1 и r2 арности n1 и n2 новое отношение r’ арности (n1+n2) при выполнении некоторого условия В=(d1iqd2j), где q={=, ¹, >, ³, <, £}; первые n1 компо­нентов кортежа образованы кортежами, принадлежа­щими отношению r1, а последние - кортежами, принадлежащими отношению r2.

В результате исполнения этой операции:

r’={t`=<t1t2>| <t1t2>Î(r1Är2), В=(d1iqd2j), rel(r’)=<rel(r1), rel(r2)>}.

В нотации компьютерных языков это:

JOIN (r1, r2, УСЛОВИЕ).

r’ A1 A2 A3 A4 A5 A6    
    a1 b1   c1 d1   Например, q-соединение r1 и r4 при условии A6>A3, r’=JOIN (r1, r4, A6>A3). Результаты этой операции представлены таблицей.    
    a1 b1   c2 d2  
    a1 b1   c3 d3  
    a3 b3   c2 d2  
                                 

Частным случаем q-соединения является эквисоединение, когда формируется новая таблица, для которой различные атрибуты различных отношений имеют одинаковое значение. Например, <имя_порт_приписки>=<имя_порт_назначения>.

Пример: r’=JOIN (r1, r4, r1.A3=r4.A6).

r’ r1.A1 r1.A2 r1.A3 r2.A4 r2.A5 r2.A6
  a1 b1   c2 d3  
  a3 b3   c1 d1  
  a3 b3   c
Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...