Professional Documents
Culture Documents
SBP 11 RelacionaAlgebra
SBP 11 RelacionaAlgebra
Структури и бази на
податоци
11 Релациона алгебра
доц. д-р Митко Костов
2011/12
Релациона алгебра
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
α α 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). За да се добијат
податоци за наслови кои содржат повеќе од
еден автор се применува:
2011/12
10 М. Костов
Рестрикција (σ)
(селекција,
ограничување)
Заклучок за рестрикција:
Структурата на релацијата не се менува, шемата
на резултатот одговара на шемата на појдовната
релација
За бројот на n-торки во релација важи:
N(t) ≤ N(r)
Рестрикција, селекција → селекција n-торки
2011/12
11 М. Костов
Рестрикција (σ)
(селекција,
ограничување)
Пример: Над релацијата
student(BrInd#, Ime, Grad, Telefon,...)
Да се направи рестрикција по атрибутот Grad
Да се издвојат само оние студенти кои се од
Скопје
σGrad=‘Скопје’ (student)
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 М. Костов
Проекција (π)
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
М. Костов
Проекција (π)
2011/12
17 М. Костов
Проекција (π)
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 М. Костов
Проекција (π)
Заклучок за проекција:
Шемата на релација се менува и ја одредува
зададеното множество атрибути
За бројот на 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 М. Костов
Проекција (π)
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 М. Костов
Унија (∪)
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).
Сакаме да утврдиме кои книги се моментално
или некогаш биле кај членовите.
Заклучок за унија:
Претходно мора шемите на релација да се
ускладат
max(N(r),N(s)) ≤ N(t) ≤ N(r)+N(s)
2011/12
30 М. Костов
Унија (∪)
2011/12
33 М. Костов
Разлика (−)
2011/12
34 М. Костов
Разлика (−)
Пример:
Се разгледуваат релациите
drzi(SifK, BrInd, Datum) и
pr_iznajmuvanja (SifI, BrInd, SifK, Denovi).
Сакаме да утврдиме кои членови читаат некои
книги по прв пат
Пример:
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
2011/12
39 М. Костов
Разлика (−)
2011/12
42 М. Костов
Пресек (∩)
2011/12
45 М. Костов
Пресек (∩)
2011/12
49 М. Костов
Декартов производ (×)
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
2011/12
54 М. Костов
Декартов производ (×)
Klient × Lice
Licen_bankar
n_bankar
Зоран Гоце Делчев Битола Зоран LB1
Зоран Гоце Делчев Битола Милена LB2
Зоран Гоце Делчев Битола Петар LB3
Милена Прилепска Битола Зоран LB1
Милена Прилепска Битола Милена LB2
Милена Прилепска Битола Петар LB3
Петар 11 Октомври Велес Зоран LB1
Петар 11 Октомври Велес Милена LB2
Петар 11 Октомври Велес Петар LB3
2011/12
56 М. Костов
Спојување (><)
2011/12
57 М. Костов
θ-спојување
r> Xi θ Yi< s
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 М. Костов
Природно спојување
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 М. Костов
Природно спојување
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)
Пример 2:
Треба да се состави прашалник кој дава имиња
на автори кои напишале барем еден наслов од
областа чија шифра е ‘ПЈ’
Податоците потребни за овој прашалник се
наоѓаат во табелите: avtor, e_avtor и naslov
Решението е дадено во следните чекори:
2011/12
76 М. Костов
avtor(SifA, Ime)
e_avtor(SifA, SifN, Koj)
naslov(SifN,ImeN,SifO)
2011/12
80 М. Костов
Постапка на стебло
на прашалниците
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 М. Костов