You are on page 1of 84

Технички факултет Битола

Структури и бази на
податоци

11 Релациона алгебра
доц. д-р Митко Костов

2011/12
Релациона алгебра

 Релационата алгебра припаѓа на категоријата


формални прашални јазици од процедурален
карактер
 Составена е од множество оператори за работа
со релации, а резултатите од операциите се исто
така релации
 Релационата алгебра е основа на прашалните
јазици кои ги користат луѓето
 Секој од алгебарските изрази е прашање или
пребарување
 Прашален јазик – јазик со кој корисниците
бараат информација од БП
2011/12
2 М. Костов
Релациона алгебра
- операции -

 Составена е од множество од 8 операции кои


се нарекуваат основни (5 елементарни и 3
изведени)
 Елементарни: рестрикција (селекција),
проекција, унија, разлика, Декартов
производ
 Изведени: пресек, спојување, делење
 Класификација според бројот на операнди:
 Унарни (1 операнд)
 Бинарни (2 операнд)
 Поделба на E.F.Codd :
 Традиционални (погодни за ажурирање)
 Посебни (погодни за известување) 2011/12
3 М. Костов
Релациона алгебра
- операции -

симбол име сложеност операнди


σ рестрикција елементарна унарна
π проекција елементарна унарна
∪ унија елементарна бинарна
− разлика елементарна бинарна
∩ пресек изведена бинарна
× Дек. производ елементарна бинарна
>< спојување изведена бинарна
⁄ делење изведена бинарна
2011/12
4 М. Костов
Рестрикција (σ)
(селекција,
ограничување)
 Дефиниција: од појдовната релација по зададен
критериум се издвојува подмножество n-торки
 избор на n-торки кои задоволуваат одреден
критериум
 Критериум е некој логички израз кој е
пресметлив над секоја n-торка
 Добиената релација има иста структура како и
појдовната

2011/12
5 М. Костов
Рестрикција (σ)
(селекција,
ограничување)
 Нотација - σP(r)
 P – услов за селекција
 P се состои од членови кои се поврзани со:
∧ (and), ∨ (or), ¬ (not)
 Секој член е во следната форма:
<атрибут> op <атрибут> или <константа>
каде op е еден од: =, ≠, >, ≥, <, ≤
 Пример:
σ BrInd=‘125/2004’ (student)

2011/12
6 М. Костов
Рестрикција (σ)
(селекција,
ограничување)

• Релација r A B C D

α α 1 7
α β 5 7
β β 12 3
β β 23 10

• σA=B ^ D > 5 (r)


A B C D

α α 1 7
β β 23 10 2011/12
7 М. Костов
Рестрикција (σ)
(селекција, ограничување)
 Пример:
Од релацијата naslov(SIFN, IME, SIFO) да се
издвојат само оние наслови чија шифра на
област (SIFO) е еднаква на ПЈ
 naslov(SIFN IME SIFO)
РБП0 Релац. бази на подат. БП
КК00 Компјутер. комуник. КК
ПП00 Програмир. во Паскал ПЈ
ПЈЦ0 Програмски јазик C ПЈ
 σSIFO=‘ПЈ’ (naslov) → t(SIFN,IME,SIFO)
 Се добива нова релација t:
t (SIFN IME SIFO)
ПП00 Програмирање во Паскал ПЈ
8 ПЈЦ0 Програмски јазик C ПЈ М.2011/12
Костов
Рестрикција (σ)
(селекција,
ограничување)
 Пример:
Се разгледува релацијата
e_avtor(SIFA,SIFN,KOJ). За да се добијат
податоци за наслови кои содржат повеќе од
еден автор се применува:

 σKOJ>1 (e_avtor) → t(SIFA,SIFN,KOJ)

t (SIFA SIFN KOJ)


ЈН0 РБП0 2
ДМ0 ПП00 2
ИТ0 ПП00 3
2011/12
9 ЗП0 ПЈЦ0 2 М. Костов
Рестрикција (σ)
(селекција,
ограничување)
 Операцијата рестрикција како резултат може да
даде и празно множество ∅ n-торки.

 Пример: Да се издвојат сите автори кои имаат


повеќе од три наслови

 σKOJ>>3 (e_avtor) → t(SIFA,SIFN,KOJ)= ∅

2011/12
10 М. Костов
Рестрикција (σ)
(селекција,
ограничување)
 Заклучок за рестрикција:
 Структурата на релацијата не се менува, шемата
на резултатот одговара на шемата на појдовната
релација
 За бројот на n-торки во релација важи:
N(t) ≤ N(r)
 Рестрикција, селекција → селекција n-торки

2011/12
11 М. Костов
Рестрикција (σ)
(селекција,
ограничување)
 Пример: Над релацијата
student(BrInd#, Ime, Grad, Telefon,...)
 Да се направи рестрикција по атрибутот Grad
 Да се издвојат само оние студенти кои се од
Скопје
 σGrad=‘Скопје’ (student)

 Со претходната рестрикција од релацијата


student се добива нова релација, со ново име
 Прашалниците со кои се врши селекција мораат
12
секогаш да бидат логични и изводливи 2011/12
М. Костов
Рестрикција (σ)
(селекција,
ограничување)
 Над релацијата
kredit(BR_KRED#, IME_EXP, IME_KL, IZNOS)
 Сакаме да ги видиме сите трансакции на
кредити во експозитурата BT2
 σIME_EXP=BT2 (kredit) → kredit_BT2(...)
 Дозволено е да се користат следните оператори:
=, ≠, <, >, ≤, ≥, ∧, ∨
пр: σ(IME_EXP=BT2) ∧ (IZNOS>1000) (kredit)
 Како критериум може да се воведе и
споредување помеѓу два атрибути
2011/12
13 М. Костов
k x y рестрикција:
y>2 k x y
1 A 2
2 B 4
2 B 4
3 C 6
3 C 6

k x y рестрикција :
y > 2 and X<>'C'
1 A 2
k x y
2 B 4
3 C 6 2 B 4
2011/12
14 М. Костов
Проекција (π)

 Дефиниција: Од појдовната релација по


зададено множество атрибути се формира нова
релација како множество n-торки над тие
атрибути
 Зададеното множество атрибути мора да биде
подмножество на множеството атрибути на
појдовната релација
 Вредностите на атрибутите во n-торките на
создадената релација одговараат на оние во
појдовната релација

2011/12
15 М. Костов
Проекција (π)
 Пр: Од релацијата naslov(SIFN, IME, SIFO)
сакаме да добиеме преглед на сите имиња и
шифри на области:
naslov(SIFN IME SIFO)
РБП0 Релац. бази на подат. БП
КК00 Компјутер. комуник. КК
ПП00 Програмир. во Паскал ПЈ
ПЈЦ0 Програмски јазик C ПЈ
 πIME,SIFO(naslov) → t(IME, SIFO)
 Како резултат се добива релацијата
t ( IME SIFO)
Релациони бази на податоци БП
Компјутерски комуникации КК
Програмирање во Паскал ПЈ
16 Програмски јазик C ПЈ 2011/12
М. Костов
Проекција (π)

 Со примена на операцијата проекција можно е


повеќе n-торки на појдовната релација да дадат
исти вредности
 Бидејќи резултатот на операцијата мора да биде
релација, се зема само една резултантна
релација

2011/12
17 М. Костов
Проекција (π)

 Илустрација на случај кога повеќе n-торки на


појдовната релација даваат една n-торка во
новата:
πSIFO(naslov) → t(SIFO)
 Како резултат се добива релацијата
t ( SIFO)
БП
КК
ПЈ
 Вредноста ПЈ се појавува еднаш, додека во
појдовната релација naslov таа вредност се
појавува два пати
2011/12
18 М. Костов
Проекција (π)

A B C
• Релација r:
α 10 1
α 20 1
β 30 1
β 40 2

• π A,C (r) A C A C

α 1 α 1
α 1 = β 1
β 1 β 2
β 2

2011/12
19 М. Костов
Проекција (π)

 Една од намените на операцијата проекција е


промена на редоследот на атрибутите:
 naslov(SIFN, IME, SIFO)
πIME,SIFN,SIFO(naslov) → t(IME, SIFN, SIFO)

 Како резултат се добива релацијата

t ( IME SIFN SIFO)


Релациони бази на податоциРБП0 БП
Компјутерски комуникации КК00 КМ
Програмирање во Паскал PP00 ПЈ
Програмски јазик C ПЈЦ0 ПЈ 2011/12
20 М. Костов
Проекција (π)

 Операциите на релациона алгебра може да се


комбинираат
 Пример: Сложена операција
πNAZIV(σ
σSIFO=‘ПЈ’(naslov))→
→pj_naslov(NAZIV)
 naslov(SIFN IME SIFO)
РБП0 Релац. бази на подат. БП
КК00 Компјутер. комуник. КК
ПП00 Програмир. во Паскал ПЈ
ПЈЦ0 Програмски јазик C ПЈ
 Како резултат се добиваат имиња на сите наслови за
кои шифрата на област е еднаква на ‘ПЈ’:
pj_naslov ( IME)
Програмирање во Паскал
Програмски јазик C 2011/12
21 М. Костов
Проекција (π)

 Заклучок за проекција:
 Шемата на релација се менува и ја одредува
зададеното множество атрибути
 За бројот на n-торки во релацијата важи:
N(t) ≤ N(r)
 Проекција → селекција по атрибути

2011/12
22 М. Костов
Проекција (π)

 Пример:
proizvodi(SIFRA#, IME, PROIZVODITEL, DATUM,
ADRESA, ...)
 Со проекција на релацијата proizvodi по атрибутите:
SIFRA#, IME и ADRESA би добиле нова релација:
proizvodi1(SIFRA#,IME,ADRESA)
која има ист број n-торки како и појдовната
 Пример:
student(BRIND#, IME, PREZIME, RODITEL, DATRAG,…)
 Со проекцијата по BRIND#, се задржува бројот на n-
торки
 Со проекцијата по IME, се смалува бројот на n-торки
(можни се грешки, бидејќи се бришат сите останати
студенти) 2011/12
23 М. Костов
Проекција (π)

 Пример: Над релацијата


kredit(BR_KRED#, IME_EXP, IME_KL, IZNOS)
 Сакаме да ги видиме клиентите и
експозитурите од кои клиентите зедоа кредит
 Не нè интересира ниту износот на кредитот
ниту бројот на кредити
 π IME_EXP, IME_KL(kredit) →
kredit_lista(IME_EXP, IME_KL)

2011/12
24 М. Костов
Проекција (π)

 Резултатот од примената е подмножество од


колоните на релацијата, со отстранување
дупликати

k x y проекции по x y
1 A 2 колоните x и y A 2
2 B 4 B 4
3 C 6 C 6
4 A 2
2011/12
25 М. Костов
Унија (∪)

 Дефиниција: Од две појдовни релации се


формира нова која ги содржи сите n-торки од
двете релации
 Оваа операција не е можна помеѓу било кои две
релации, т.е. мора да биде задоволено:
 Шемите на релации мора да имаат ист број
аргументи
 Атрибутите на шемата на релација по ред
одговараат по значење и тип (не мора по името)
 Наведените услови се нарекуваат:
униска компатибилност
2011/12
26 М. Костов
Унија (∪)

 Секоја n-торка која е присутна во двете релации


се појавува само еднаш во резултантната

 Пример: Се разгледуваат релациите clen и


avtor. Ако сакаме податоци за сите лица во
евиденцијата, тоа се постигнува со примена на
операцијата унија:

 clen ∪ avtor → lice(SIFx,IME)

2011/12
27 М. Костов
Унија (∪)

• Релации r, s: A B A B

α 1 α 2
α 2 β 3
β 1 s
r

A B
r ∪ s:
α 1
α 2
β 1
β 3
2011/12
28 М. Костов
Унија (∪)
 Пример:
Се разгледуваат релациите
drzi(SifK, BrInd, Datum) и
pr_iznajmuvanja (SifI, BrInd, SifK, Denovi).
Сакаме да утврдиме кои книги се моментално
или некогаш биле кај членовите.

 Пред операцијата Унија прво мораат да се


ускладат шемите на релации:
πSIFK(drzi) → t1(SIFK)
πSIFK(pr_iznajmuvanja) → t2(SIFK)

 Потоа се применува операцијата Унија:


t1 ∪ t2 → kniga_vo_promet(SIFK) 2011/12
29 М. Костов
Унија (∪)

 Заклучок за унија:
 Претходно мора шемите на релација да се
ускладат
 max(N(r),N(s)) ≤ N(t) ≤ N(r)+N(s)

2011/12
30 М. Костов
Унија (∪)

SIFRA# PREZIME IME TEL_BROJ


A 3244 Аневски Петар 02 2 334 952
1772 Марковски Илија 02 3 723 543

SIFRA# PREZIME IME TEL_BROJ


B 3244 Аневски Петар 02 2 334 952
2345 Петровска Марија 02 3 247 946

A∪B SIFRA# PREZIME IME TEL_BROJ


3244 Аневски Петар 02 2 334 952
1772 Марковски Илија 02 3 723 543
2345 Петровска Марија 02 3 247 946
2011/12
31 М. Костов
Унија (∪)

 Пример: Над релациите


kredit(BR_KRED#, IME_EXP, IME_KL, IZNOS)
smetka(IME_EXP, BR_SMET#, IME_KL#, SOST)
да се најдат сите клиенти кои во експозитурата
BT2 имаат или сметка или кредит
 Да се најдат сите клиенти кои имаат кредит
во BT2
π IME_KL (σ
σIME_EXP=BT2(kredit)) → t1
 Да се најдат сите клиенти кои имаат сметка
во BT2
π IME_KL (σ
σIME_EXP=BT2(smetka)) → t2
 Резултатот е: t1 ∪ t2 2011/12
32 М. Костов
Унија (∪)

2011/12
33 М. Костов
Разлика (−)

 Дефиниција: од две појдовни релации се


формира нова која ги содржи сите n-торки од
првата релација, а кои не се наоѓаат во втората

 Оваа операција е можна само помеѓу униски


компатибилни релации.

2011/12
34 М. Костов
Разлика (−)

 Пример:
Се разгледуваат релациите
drzi(SifK, BrInd, Datum) и
pr_iznajmuvanja (SifI, BrInd, SifK, Denovi).
Сакаме да утврдиме кои членови читаат некои
книги по прв пат

 Пред операцијата разлика прво мораат да се


ускладат шемите на релација:
πSIFC,SIFK(drzi) → t1(SIFC,SIFK)
πSIFC,SIFK(pr_iznajmuvanja) → t2(SIFC,SIFK)

 Потоа се применува операцијата разлика:


t1 − t2 → cita_1(SIFC,SIFK)
2011/12
35 М. Костов
Разлика (−)
t2 ( SIFC SIFK )
ЈЈ0 004
t1 ( SIFC SIFK ) ПП0 007
ЈЈ0 001 ЈЈ1 005
ПП0 002 ЈЈ0 008
ЈЈ0 004 ПП0 002
ЈЈ1 009

−t2 = cita_1 ( SIFC SIFK )


t1−
ЈЈ0 001
2011/12
36 М. Костов
Разлика (−)

 Пример:
drzi(SifK, SifC, Datum)
clen(SifC, Ime)
Ако сакаме увид во шифрите на членовите кои
моментно не држат ниту една книга кај себе, мора
да се изврши следната секвенца на операции:

πSIFC(clen) → t1(SIFC)
πSIFC(drzi) → t2(SIFC)

t1 − t2 → ne_drzi(SIFC)

2011/12
37 М. Костов
Разлика (−)

t1 ( SIFC ) t2 ( SIFC )
ЈЈ0 JJ0
JJ1 ПП0
ПП0 JJ0
ММ0

−t2 = ne_drzi ( SIFK )


t1−
JJ1
MM0
2011/12
38 М. Костов
Разлика (−)

 Заклучок за операцијата разлика:


 Шемите на релација претходно мора да се
ускладат
 Бројот на n-торки во резултатот 0 ≤ N(t) ≤ N(r)

2011/12
39 М. Костов
Разлика (−)

SIFRA# PREZIME IME TEL_BROJ


A 3244 Аневски Петар 02 2 334 952
1772 Марковски Илија 02 3 723 543
SIFRA# PREZIME IME TEL_BROJ
B
3244 Аневски Петар 02 2 334 952
2345 Петровска Марија 02 3 247 946

SIFRA# PREZIME IME TEL_BROJ


A−B
1772 Марковски Илија 02 3 723 543

SIFRA# PREZIME IME TEL_BROJ


B−A
2345 Петровска Марија 02 3 247 946
2011/12
40 М. Костов
Разлика (−)

 Пример: Над релациите


kredit(BR_KRED#, IME_EXP, IME_KL, IZNOS)
smetka(IME_EXP, BR_SMET#, IME_KL#, SOST)
да се најдат сите клиенти кои во експозитурата
BT2 имаат сметка, но сè уште немаат кредит
 Да се најдат сите клиенти кои имаат сметка
во BT2
π IME_KL (σIME_EXP=BT2(smetka)) → t1
 Да се најдат сите клиенти кои имаат кредит
во BT2
π IME_KL (σIME_EXP=BT2(kredit)) → t2
 Резултатот е: t1 − t2
2011/12
41 М. Костов
Разлика (−)

2011/12
42 М. Костов
Пресек (∩)

 Дефиниција: Од две појдовни релации се


формира нова која ги содржи сите n-торки од
првата релација кои се наоѓаат и во втората
релација

 Оваа операција е можна само помеѓу униски


компатибилни релации.
 Пресек е изведена операција, може да се изведе
од:
r ∩ s = r – (r – s)
2011/12
43 М. Костов
Пресек (∩)
 Пример:
Се разгледуваат релациите
drzi(SifK, BrInd, Datum) и
pr_iznajmuvanja (SifI, BrInd, SifK, Denovi).
Сакаме да одредиме кои членови повторно читаат
некоја книга.
 Пред операцијата Пресек прво мора да се
ускладат шемите на релација:

πSIFC,SIFK(drzi) → t1(SIFC, SIFK)


πSIFC,SIFK(pr_iznajmuvanja) → t2(SIFC, SIFK)

 Потоа се применува операцијата Пресек:


t1 ∩ t2 → cita_pak(SIFC,SIFK) 2011/12
44 М. Костов
Пресек (∩)
 Заклучок за операцијата Пресек:
 Шемите на релација претходно мора да се
ускладат
 Бројот на n-торки во резултатот
0 ≤ N(t) ≤ min(N(r),N(s)

2011/12
45 М. Костов
Пресек (∩)

t1 ( SIFC SIFK ) t2 ( SIFC SIFK )


JJ0 001 JJ0 004
ПП0 002 ПП0 007
JJ0 004 JJ1 005
JJ0 008
ПП0 002
JJ1 009

t1 ∩ t2 = cita_pak ( SIFC SIFK )


ПП0 002
JJ0 004 2011/12
46 М. Костов
Пресек (∩)

SIFRA# PREZIME IME TEL_BROJ


A 3244 Аневски Петар 02 2 334 952
1772 Марковски Илија 02 3 723 543

SIFRA# PREZIME IME TEL_BROJ


B 3244 Аневски Петар 02 2 334 952
2345 Петровска Марија 02 3 247 946

SIFRA# PREZIME IME TEL_BROJ


A∩B
3244 Аневски Петар 02 2 334 952
2011/12
47 М. Костов
Пресек (∩)

 Пример: Над релациите


kredit(BR_KRED#, IME_EXP, IME_KL, IZNOS)
smetka(IME_EXP, BR_SMET#, IME_KL#, SOST)
Да се најдат сите клиенти кои во експозитурата
BT2 имаат и сметка и кредит
 Да се најдат сите клиенти кои имаат сметка
во BT2
π IME_KL (σIME_EXP=BT2(smetka)) → t1
 Да се најдат сите клиенти кои имаат кредит
во BT2
π IME_KL (σIME_EXP=BT2(kredit)) → t2
 Резултатот е: t1 ∩ t2
2011/12
48 М. Костов
Пресек (∩)

2011/12
49 М. Костов
Декартов производ (×)

 Дефиниција: Од две појдовни релации се


формира нова со n-торки добиени така што
секоја n-торка од првата релација се спојува со
секоја од другата

 Шемата на формираната релација ги содржи


сите атрибути на појдовните релации
 Означување: за целосно име на атрибутите
може да се користи релација.атрибут

2011/12
50 М. Костов
Декартов производ (×)

A B C D E

Релации r, s: α 1 α 10 a
β 10 a
β 2
β 20 b
r γ 10 b
s
A B C D E
r x s:
α 1 α 10 a
α 1 β 10 a
α 1 β 20 b
α 1 γ 10 b
β 2 α 10 a
β 2 β 10 a
β 2 β 20 b
β 2 γ 10 b
2011/12
51 М. Костов
Декартов производ (×)

 Пример:
Се разгледуваат релациите
naslov(SIFN, IME, SIFO) и oblast(SIFO, IME).
РБП0 Релациони бази на податоци БП Бази на податоци
КК00 Компјутерски комуникации КМ Компјутерски мрежи
ПП00 Програмирање во Паскал ПЈ Програмски јазици
ПЈЦ0 Програмски јазик C

 Ако извршиме операција Декартов производ:


 naslov × oblast →
t(SIFN, N.IME, N.SIFO, O.SIFO, O.IME)
 Добиената релација како целина нема смисла,
меѓутоа поедините n-торки имаат јасно значење
2011/12
52 М. Костов
Декартов производ (×)

t (SIFN, IME N.SIFO O.SIFO O.IME )


РБП0 Релациони бази на податоци БП БП Бази на податоци
РБП0 Релациони бази на податоци БП КМ Компјутерски мрежи
РБП0 Релациони бази на податоци БП ПЈ Програмски јазици
КК00 Компјутерски комуникации КК БП Бази на податоци
КК00 Компјутерски комуникации КК КМ Компјутерски мрежи
КК00 Компјутерски комуникации КК ПЈ Програмски јазици
ПП00 Програмирање во Паскал ПЈ БП Бази на податоци
ПП00 Програмирање во Паскал ПЈ КМ Компјутерски мрежи
ПП00 Програмирање во Паскал ПЈ ПЈ Програмски јазици
ПЈЦ0 Програмски јазик C ПЈ БП Бази на податоци
ПЈЦ0 Програмски јазик C ПЈ КМ Компјутерски мрежи
ПЈЦ0 Програмски јазик C ПЈ ПЈ Програмски јазици

Во означените n-торки, во секој дел од релацијата


naslov се наоѓа соодветниот дел од релацијата oblast
2011/12
53 М. Костов
Декартов производ (×)

 Заклучок за операцијата Декартов производ:


 Шемата на резултантната релација ги содржи
сите атрибути на појдовните релации
 Бројот на n-торки во резултатот:

N(t) = N(r)· N(s)

2011/12
54 М. Костов
Декартов производ (×)

 Пример: Над релациите


klient(IME_KL, UL_BR, GRAD),
licen_bankar(IME_KL, IME_LB)
да се најдат сите клиенти со личен банкар LB1 и
градовите во кои клиентите живеат
 licen_bankar × klient →
t(LB.IME_KL, LB.IME_LB, K.IME_KL, K.UL_BR,
K.GRAD)
 Бројот на n-торки
 во klient е N1, во licen_bankar e N2
 во t e N1·N2
 Некои од n-торките во t се неважечки
2011/12
55 М. Костов
Licen_bankar
Klient Зоран Гоце Делчев Битола Зоран LB1
Милена Прилепска Битола Милена LB2
Петар 11 Октомври Велес Петар LB3

Klient × Lice
Licen_bankar
n_bankar
Зоран Гоце Делчев Битола Зоран LB1
Зоран Гоце Делчев Битола Милена LB2
Зоран Гоце Делчев Битола Петар LB3
Милена Прилепска Битола Зоран LB1
Милена Прилепска Битола Милена LB2
Милена Прилепска Битола Петар LB3
Петар 11 Октомври Велес Зоран LB1
Петар 11 Октомври Велес Милена LB2
Петар 11 Октомври Велес Петар LB3
2011/12
56 М. Костов
Спојување (><)

 Дефиниција: Од две појдовни релации се


формира нова релација со n-торки добиени во
два чекори:
 Секоја n-торка од првата релација по ред се
спојува со сите n-торки од другата релација
 Од така добиените n-торки се издвојуваат оние
кои задоволуваат зададен услов P

2011/12
57 М. Костов
θ-спојување

 Претходната дефиниција дозволува произволен


услов P, под услов да е пресметлив за секоја n-
торка после Декартовиот производ

 Нека r и s се релации над шемите R(X) и S(Y).


Нека Xi и Yk се атрибути за кои важи Xi∈X и
Yi∈Y. Под θ спојување

r> Xi θ Yi< s

се подразбира спојување кај кое операторот θ


означува било кој оператор на споредување:
(=,≤,<,>,≥,≠)
2011/12
58 М. Костов
Екви-спојување
 Претходното θ спојување ја ограничува формата
на условот на спојување, меѓутоа и понатаму
добиениот резултат нема практична примена.
 Специјален случај каде θ претставува еднаквост
(=) е чест случај во праксата.
 Во примерот за Декартов производ над
релациите naslov и oblast, со екви-спојување
под услов еднаквост на атрибутите SIFO, би
добиле издвоени n-торки (кои имаат смисла).

Зоран Гоце Делчев Битола Зоран LB1


Зоран Гоце Делчев Битола Милена LB2
Зоран Гоце Делчев Битола Петар LB3
Милена Прилепска Битола Зоран LB1
Милена Прилепска Битола Милена LB2 2011/12
59 Милена Прилепска Битола Петар LB3
М. Костов
Екви-спојување

A B C D E

α 1 α 10 a
Релации r, s: β 2
β 10 a
β 20 b
r γ 10 b
s

σA=C(r x s) A B C D E

α 1 α 10 a
β 2 β 10 a
β 2 β 20 b

2011/12
60 М. Костов
Природно спојување

 Претходното спојување дава еден вишок


атрибут, затоа што вредностите на атрибутите по
кои се врши спојувањето секогаш се исти
 Непотребниот атрибут се елиминира со
дополнителна операција проекција
 Наведениот случај е чест во праксата, па е
воведена специјална операција на природно
спојување:
 Подразбира секвенца од три елементарни операц.
 Декартов производ на релации
 Рестрикција по услов еднаквост на атрибутите
 Проекција по разликата на унијата од сите
атрибути и множеството на спојни атрибути од
61 било која од релациите 2011/12
М. Костов
Природно спојување

 Природно спојување на две релации по еден


атрибут се означува со:
r > Xi * Yk < s
 Во случај на повеќе спојни атрибути
r > (X1, X2, ..., Xn) * (Y1, Y2, ..., Yn) < s
 Специјален случај на означување:
r > *< s
подразбира природно спојување по сите
атрибути кои имаат еднакви називи во обете
релации

2011/12
62 М. Костов
Природно спојување

Релации r, s: A B C D E

α 1 α 10 a
β 10 a
β 2
β 20 b
r γ 10 b
s

A B D E
r >*< s
α 1 10 a
β 2 10 a
β 2 20 b
2011/12
63 М. Костов
Природно спојување

ALFA SIFRAD# IME MESTO


d001 Comex Toronto
d002 Unita Vancuver
d003 Dual Skopje
SIFRAD# SIFRAP# BROJ
BETA
d001 p991 123
d002 p678 23
d003 p007 12564
SIFRAD# IME MESTO SIFRAP# BROJ
d001 Comex Toronto p991 123
GAMA d002 Unita Vancuver p678 23
d003 Dual Skopje p007 12564
2011/12
64 М. Костов
Делење (/)

 Најсложена операција на релациона алгебра


 Операцијата делење ги дава оние вредности X во
r кои во комбинација со Y “покриваат” множество
вредности зададено со релацијата s.

2011/12
65 М. Костов
 Делење не може да се изведе со произволни табели
 За A/B потребно е сите атрибути на релацијата B да
се наоѓаат во релацијата A
 Пр: Делење е можно за:
a (X1,X2,...,Xn,Y1,Y2,...,Ym)
b (Y1,Y2,...,Ym)
 Пример:
Комплетирани
Студент Задача
Никола Бази 1
Комплетиран/Проект Бази
Никола Бази 2 Проект Бази
Студент
Никола C++ Задача
Никола
Марија Бази 1 Бази 1
Сара
Марија C++ Бази 2
Сара Бази 1
2011/12
Сара Бази 2 М. Костов
66
Делење
(division)

2011/12
67 М. Костов
Делење
(division)

2011/12
68 М. Костов
Делење
(division)

A B B

α 1 1
α 2 2 r/s: A
α 3
β 1 s α
γ 1
β
δ 1
Релации r, s: δ 3
δ 4
∈ 6
∈ 1
β 2
r

2011/12
69 М. Костов
Делење
(division)

Релации r, s: A B C D E D E

α a α a 1 a 1
α a γ a 1 b 1
α a γ b 1 s
β a γ a 1
β a γ b 3
γ a γ a 1
γ a γ b 1
γ a β b 1
r

r/s:
A B C

α a γ
γ a γ
2011/12
70 М. Костов
Прашалници во
релациона алгебра
 Прашалници – изрази со операции на релациона
алгебра, кои се составуваат со цел добивање на
саканите податоци од РБП
 Важно:
 На табелите кои се формираат како
меѓурезултати да им се даваат имиња кои го
асоцираат нивното значење
 Запишување на структурата на
меѓурезултатот (кои атрибути ги содржи
неговата шема на релација)
 Сложени прашалници
 Тешко е да се напише решение во форма на
еден израз
2011/12
71  Постепено решавање на проблемите М. Костов
Постапка на секвенца на
операции

 Секој сложен прашалник може да се претстави


како секвенца од поедноставни изрази над
појдовните релации и меѓурезултатите
(релациите кои се формираат)

 Пример 1:
Треба да се состави прашалник кој дава имиња
на сите членови кои држат или позајмувале
барем една книга
 На почеток: да се воочи во кои релации се
наоѓаат податоците потребни за решавање
2011/12
72 М. Костов
clen(SifC, Ime)
drzi(SifK, SifC, Datum)
pr_iznajmuvanja(SifI,SifC,SifK,Denovi)

 clen, со шифри и имиња на сите членови


 drzi, со шифри на членови кои моментално
држат книги кај себе
 pr_iznajmuvanja, со шифри на членови кои
претходно позајмувале книги

 Пред започнувањето на постапното решавање,


да се создаде општа претстава за тоа што сè
треба да се направи

 За почеток: Постапката на решавање на


проблемот да се формулира со зборови 2011/12
73 М. Костов
clen(SifC, Ime)
drzi(SifK, SifC, Datum)
pr_iznajmuvanja(SifI,SifC,SifK,Denovi)
 Со проекција на drzi по SIFC се добива релација
со шифри на членовите кои моментно држат книги
 Со проекција на pr_iznajmuvanja по SIFC се
добива релација со шифри на членови кои
претходно позајмувале книги
 Со унија на претходните две релации се добива
релација со шифрите на членовите кои моментно
држат или претходно позајмувале книги
 Со природно спојување (по SIFC) на претходната
релација со clen се добива релација која содржи
податоци само за членовите кои моментно држат
или претходно позајмувале книги
 Со проекција на претходните релации по IME се
добиваат имиња на членови кои држат или
позајмувале книги
2011/12
74 М. Костов
clen(SifC, Ime)
drzi(SifK, SifC, Datum)
pr_iznajmuvanja(SifI,SifC,SifK,Denovi)

 Се формира следната секвенца на операции:


 πSIFC (drzi) → drz(SIFC)
– оние кои моментно држат книга
 πSIFC (pr_iznajmuvanja) → izn(SIFC)
– оние кои претходно изнајмувале книги
 drz ∪ izn → drzizn(SIFC)
– оние кои моментно држат или прет. изнајмувале
 clen > * < drzizn → sedrzizn(SIFC,IME)
– сè за оние кои мом. држат или прет. изнајмувале
 πIME (sedrzizn) → resenie(IME)
– имиња на оние кои мом.држат или изнајмувале
 Сложениот израз би бил:
πIME(clen>* <(ππSIFC(drzi) ∪ πSIFC(pr_iznamuvanja)))
2011/12
75 М. Костов
avtor(SifA, Ime)
e_avtor(SifA, SifN, Koj)
naslov(SifN,ImeN,SifO)

 Пример 2:
Треба да се состави прашалник кој дава имиња
на автори кои напишале барем еден наслов од
областа чија шифра е ‘ПЈ’
 Податоците потребни за овој прашалник се
наоѓаат во табелите: avtor, e_avtor и naslov
 Решението е дадено во следните чекори:

2011/12
76 М. Костов
avtor(SifA, Ime)
e_avtor(SifA, SifN, Koj)
naslov(SifN,ImeN,SifO)

 σSIFO=‘ПЈ’ (naslov) → t1(SIFN,IMEN,SIFO)


– наслови од областа ‘ПЈ’
 πSIFN (t1) → t2(SIFN)
– шифри на тие наслови
 e_avtor > * < t2 → t3(SIFA,SIFN,KOJ)
– авторства на тие наслови
 πSIFA (t3) → t4(SIFA)
– шифри на тие автори
 avtor > * < t4 → t5(SIFA,IME)
– сè за тие автори
 πIME (t5) → resenie(IME)
– имиња на тие автори 2011/12
77 М. Костов
clen(SifC, Ime), drzi(SifK,SifC,Datum)
pr_iznajmuvanja(SifI,SifC,SifK,Denovi)
kniga(SifK,SifN), naslov(SifN,ImeN,SifO)
 Пример 3:
Треба да се состави прашалник кој ги дава
имињата на членовите кои ги прочитале
сите наслови од областа со шифра ‘ПЈ’ и
ниту еден наслов од областа ‘БП’
 Напомена: за членовите кои држат книги се
смета дека ги прочитале
 Податоците потребни за овој прашалник се
во табелите:
 drzi и pr_iznajmuvanja шифри на
членови и шифри на книги кои ги
прочитале
 kniga: врска kniga – naslov
 naslov: врска naslov – oblast
2011/12
78  Решението е во следните чекори: М. Костов
clen(SifC, Ime), drzi(SifK,SifC,Datum)
pr_iznajmuvanja(SifI,SifC,SifK,Denovi)
kniga(SifK,SifN), naslov(SifN,ImeN,SifO)
 πSIFC,SIFK(drzi) ∪ πSIFC,SIFK(pr_iznajmuvanja)
→ t1(SIFC,SIFK)
– кои членови прочитаа кои книги
 πSIFC,SIFN(kniga > * < t1) → t2(SIFC,SIFN)
– кои членови прочитаа кои наслови
 πSIFN(σσSIFO=‘ПЈ’(naslov)) → t3(SIFN)
– сите наслови од областа ‘ПЈ’
 t2/t3 → t4(SIFC)
– сите членови кои ги прочитале сите
наслови од областа ‘ПЈ’
 πSIFN(σσSIFO=‘БП’(naslov)) → t5(SIFN)
– сите наслови од областа ‘БП’
 πSIFK(kniga > * < t5) → t6(SIFK)
– сите книги од областа ‘БП’ 2011/12
79 М. Костов
clen(SifC, Ime), drzi(SifK,SifC,Datum)
pr_iznajmuvanja(SifI,SifC,SifK,Denovi)
kniga(SifK,SifN), naslov(SifN,ImeN,SifO)

 t1 > * < t6 → t2(SIFC,SIFK)


– кои членови читале кои книги од областа
‘БП’
 t4 − πSIFC,SIFK(t7) → t8(SIFC)
– членови кои ги читале сите книги од
областа ‘ПЈ’ и ниту една од областа ‘БП’
 πIME(clen > * < t8) → resenie(IME)
– имиња на членови кои ги читале сите
книги од областа ‘ПЈ’ и ниту една од
областа ‘БП’

2011/12
80 М. Костов
Постапка на стебло
на прашалниците

 Се базира на конструирање стебло при


пресметувањето на вредноста на релациониот
израз
 Елементарните изрази се над изворните релации
(листови на стеблото), а бараното решение –
корен на стеблото
 Пример:
Да се состави прашалник кој дава шифри на
наслови кои членовите ги резервирале, а во
библиотеката има слободни книги со нив
 Неопходните податоци се во:
rezervacija, kniga и drzi 2011/12
81 М. Костов
drzi(SifK,SifC,Datum)
kniga(SifK,SifN,...) kniga drzi
rezervacija((SifN,SifC,Datum)) (SIFK,SIFN) (SIFC,SIFK)
πSIFK πSIFK
rezervacija t2(SIFK) Сите книги t3(SIFK)
(SIFN,SIFC,DATUM) Земени
πSIFN книги

t4(SIFK) Слободни kniga


t1(SIFN) Резервирани книги (SIFK,SIFN)
наслови
>*<
t5(SIFK,SIFN) Слободни
Книги-наслови
πSIFN
t6(SIFN) Слободни наслови

resenie(SIFN) Резервирани и слободни наслови
2011/12
82 М. Костов
Пр. на прашања
• Што е релациона алгебра?
• Што е прашален јазик?
• Што е унарна/бинарна операција кај релациона алгебра?
• Што е операција рестрикција / проекција / разлика /
пресек / унија кај релациона алгебра?
• За кои операции на релациона алгебра е неопходна
униска компатибилност?
• После операцијата селекција / проекција, во новата
релација бројот на n-торки е ...
• После операцијата селекција / проекција, во новата
релација бројот на атрибути е...
• Ако за релацијата STUDENT (BrInd, Ime, Prezime, Adresa,
Fakultet) се изврши πBrInd(σAdresa=’11 Октомври’(STUDENT)) се
добива...
• Ако за релацијата STUDENT (BrInd, Ime, Prezime, Adresa,
Fakultet) се изврши σFakultet=ТФБ(STUDENT) се добива...

2011/12
83 М. Костов
Пр. на прашања (прод.)
• Ако за релацијата STUDENT (BrInd, Ime, Prezime, Adresa,
Fakultet) се изврши πBrInd,Ime (STUDENT) се добива …
• Ако за релацијата STUDENT (BrInd, Ime, Prezime, Adresa,
Fakultet) се изврши πIme (STUDENT) бројот на записи во
новата релација е...
• Ако за релацијата STUDENT (BrInd, Ime, Prezime, Adresa,
Fakultet) се изврши σBrInd≤100(STUDENT) се добива ...
• Ако за релацијата STUDENT (BrInd, Ime, Prezime, Adresa,
Fakultet) се изврши σ(BrInd≥100) ∨ (Ime = ‘Мирко’) (STUDENT) се
добива...
• Ако за релацијата STUDENT (BrInd, Ime, Prezime, Adresa,
Fakultet) се изврши σ(BrInd≥100) ∧ (Ime = ‘Мирко’) (STUDENT) се
добива...
• Ако за релацијата STUDENT (BrInd, Ime, Prezime, Adresa,
Fakultet) и ISPITEN_ROK (SifP, BrInd, Sala, Datum, Ocena) се
изврши: (πBrInd(STUDENT) - πBrInd(ISPITEN_ROK)) се
добива...
• сè останато ... ☺ 2011/12
84 М. Костов

You might also like