5. algjebra dhe llogaritjet relacionale · 2018-10-13 · 5.1. algjebra relacionale algjebra...
TRANSCRIPT
1
5. Algjebra dhe llogaritjet relacionale
Algjebra dhe llogaritjet relacionale paraqesin gjuhë formale për përzgjedhës
(ang. Query languages) të shoqëruara me modelin relacional të database-it.
Përzgjedhësi në algjebrën relacionale kompozohet duke shfrytëzuar
operacione dhe operandë të cilët janë instanca relacionale dhe çdo përzgjedhës
paraqet një procedure hapë-për-hapi për realizimin e përgjigjes së përzgjedhësit e cila
poashtu është një instancë relacionale. Algjebra relacionale është gjuhë formale
procedurale.
Në llogaritjet relacionale përzgjedhësi përshkruan përgjigjen e dëshiruar pa
treguar procedurën e llogaritjes së përgjigjes, pranda, kjo gjuhë formale është
joprocedurale. Llogaritjet relacionale kanë pasur ndikim të madh në zhvillimin e
gjuhëve komerciale për përzgjedhës (pyetsor) siç është SQL dhe veçanërisht QBE
(Query-By-Example).
Përzgjedhës do të thotë të zgjedhësh (selektosh) të dhënat për kërkesën e
parashtruar për të dhëna nga relacionet (database-i). Algjebrën relacionale dhe
llogaritjet relacionale, respektivisht operacionet në shprehjet algjebrike dhe llogaritjet
relacionale do t’i sqarojmë nëpërmjet database-it për Fakultetin (database i
normalizuar), database-i është
Studenti(s#, emri_st, viti_st)
Kursi(k#, titulli, emri_ar)
Raporti(s#, k#, nota);
Arsimtari(emri_ar, dh#)
dhe instancat relacionale le të jenë:
Studenti Kursi
s# emri_st viti_st k# titulli emri_ar
970001 Arta 1 037 Bazat e inf. Fatmir
950879 Petrit 3 124 Programim Bujar
961269 Blerim 2 102 Hardveri Gjergj
950127 Vjollca 3 215 Kompajlerët Lindita
Raporti Arsimtari
s# k# nota emri_ar dh#
950879 037 9 Fatmir 17
950127 037 10 Bujar 11
950127 124 8 Gjergj 21
950127 102 9 Lindita 15
961269 037 10
961269 124 7
961269 215 6
970001 037 8
970001 102 7
2
5.1. Algjebra relacionale
Algjebra relacionale bënë vlersimin e shprehjeve algjebrike të ndërtuara prej
relacioneve, operacionet unare dhe binare, operandët e të cilëve janë relacione dhe
rezultatet e fituara përsëri janë relacione. Çdo shprehje algjebrike paraqet një
përzgjedhës (një pyetje, një kërkim, ang. query). Algjebra relacionale është gjuhë
formale procedurale, kështu në shprehjen e përzgjedhësit e kemi edhe procedurën hap
pas hapi si duhet të vijmë deri në instancën relacionale rezultat.
Në algjebrën relacionale dallojmë dy lloje të operacionave, operacionet
themelore dhe operacionet të cilët mund të derivohen (nxjeren) nga operacionet
themelore. Operacione themolore janë:
i. Selektimi (ang. Selection, shënohet me σ),
ii. Projekcioni (ang. Projection, shënohet me π), iii. Unioni (ang. Union, shënohet me U ),
iv. Diferenca e bashkësive (ang. Set difference, shënohet me –),
v. Prodhimi Cartesian (ang. Cross Product, shënohet me X) dhe
vi. Riemërtimi (ang. Rename, shënohet me ρ).
Selektimi. Operacion unar i cili nga relacioni i nxjer ata n-she të cilat
plotësojnë kushtin logjik (kushtin Boolean) të dhënë. Rezultati i këtij operacioni është
poashtu relacion me shkallë të njejtë (numër të njejtë të atributeve) me relacionin ndaj
të cilit kryhet operacioni. Operacioni i këtillë shënohet si vijon
σC(R)
ku R është relacion ndërsa C është formulë logjike (kusht logjik) i cili formohet prej
operandëve (konstanta ose atribute), operacioneve të krahësimit (= < > ≤ ≥ ≠, , , , , ) dhe
operacioneve logjike ( ¬∨∧ ,, ).
Shembull.
1023ββ
312ββ
75βα
71ααdcba
Relacioni R
1023ββ
312ββ
75βα
71ααdcba
Relacioni R
1023ββ71ααdcba
1023ββ71ααdcba
σσσσa=b d>5d>5d>5d>5 ( R )( R )( R )( R )∧σσσσa=b d>5d>5d>5d>5 ( R )( R )( R )( R )∧
Pyetja 1. “ Të gjenden të gjithë studentët në vitin e parë”.
Gjejmë relacionin e ri sipas shprehjes
RESULT=σviti_st=1(Studenti)
RESULT
s# emri_st viti_st
970001 Arta 1
Pyetje 2: “Të gjenden të gjitha lëndët me emrin ‘Programim’”.
3
RESULT=σtitulli=’Programim’(Kursi)
RESULT
k# titulli emri_ar
124 Programim Bujar
Pyetja 3: “Të gjenden të gjithë studentët të cilët nga lënda me numër 037 kanë
fituar notë më të lartë se tetë”.
RESULT=σ(k#=037) ∧ (nota>8)(Raporti)
RESULT
s# k# nota
950879 037 9
950127 037 10
961269 037 10
Projekcioni. Operacion unar i cili prej relacionit nxjer (ekstrakton) atributet e
dhëna. Projekcionin e relacionit R në atributet e tija A1, A2, …, An e shënojmë me
ππππA1, A2, …, An(R).
Relacioni rezultat posedon vetëm atributet e specifikuara në operacionin e
projekcionit dhe gjithashtu eleminohen n-shet duplikate. Me marrëveshtje caktojmë
që projekcioni të ketë përparësi më të madhe në krahësim me operacionet tjera. Me
ndihmën e projekcionit mundësohen disa lloje përzgjedhësish.
Shembull.
Relacioni R
240β
130β
120α110α
cba
2β
1β
1α
1α
ca
2β
1β1α
ca
π a,c ( R )
Eliminimi irreshtaveduplikat
Relacioni R
240β
130β
120α110α
cba
Relacioni R
240β
130β
120α110α
cba
2β
1β
1α
1α
ca
2β
1β
1α
1α
ca
2β
1β1α
ca
2β
1β1α
ca
π a,c ( R )
Eliminimi irreshtaveduplikat
Eliminimi irreshtaveduplikat
Pyetje 1: “Gjej numrat e dhomave të gjithë arsimtarëve”.
RESULT=πdh#(Arsimtari)
RESULT
dh#
17
11
21
15
Pyetje 2: “ Gjeje emrin e mësimdhënësit i cili mbanë lëndën numër 102”.
RESULT=πemri_ar(σk#=102(Kursi))
4
RESULT
emri_ar
Gjergj
Operacionet e bashkësive: Relacionet janë bashkësi të n-sheve, prandaj, ndaj
relacioneve mund të zbatohen operacionet e bashkësive (unioni, prerja, ndryshimi dhe
prodhimi Cartesian). Gjatë operacioneve me bashkësi, relacionet operanda duhet të
jenë union kompotibile (përjashtim bënë operacioni i prodhimit Cartesian). Union
kompatibil do të thotë që relacionet të kenë
� shkallë të njejtë (pra numër të njejtë të atributeve) dhe
� atributet gjegjëse (nga e majta në të djathtë) të kenë domenë të njejtë (pra
vlerat e atributeve gjegjëse të jenë të tipit të njejtë).
Sa i përket emrimit të atributeve gjegjëse, emrimi mund të dallohet.
Le të jetë R dhe S dy relacione union kompotibile, kemi:
Unioni. Unioni i relacionit R dhe S është bashkësia e n-sheve të cilët janë në
relacionin R ose relacionin S ose në të dy relacionet. Unioni shënohet
SR U
dhe rezultati trashëgon emrat e atributeve nga relacioni R, pra, rezultati është relacion
identik (për nga emrat e atributeve) me relacionin R. Në relacionin rezultat n-shet
duplikat eliminohen. Unioni është operacion komutativ, pra, vlenë
RSSR UU = .
Shembull.
1β
2α
1α
ba
R
3β2α
baS
3β
1β
2α
1α
ba
R U S
1β
2α
1α
ba
R
3β2α
baS
3β
1β
2α
1α
ba
R U S
Shembull. Marrim relacionin Studenti_ri i cili është union kompotibil me
relacionin Studenti
Studenti_ri
s# emri_st Viti_st
950342 Mimoza 1
961698 Linda 2
950879 Petrit 3
973472 Berat 3
950127 Vjollca 3
950326 Flora 3
Unioni i relacionit Studenti dhe Studenti_ri është
5
iStudenti_rStudenti U
s# emri_st viti_st
970001 Arta 1
950879 Petrit 3
961269 Blerim 2
950127 Vjollca 3
950342 Mimoza 1
961698 Linda 2
973472 Berat 1
950326 Flora 3
Diferenca e bashkësive (set defference). Diferenca e bashkësive për relacionin
R dhe S, shënohet R–S dhe për rezultat jep bashkësinë e n-sheve të cilat janë në R dhe
nuk janë në S. Operacioni i diferencës së bashkësive nuk është komutativ, pra,
RSSR −≠− .
Rezultati trashëgon emrat e atributeve nga relacioni R, pra, rezultati është
relacion identik (për nga emrat e atributeve) me relacionin R.
Shembull.
1β
2α1α
ba
R
3β2α
baS R - S
1β1α
ba
1β
2α1α
ba
R
3β2α
baS R - S
1β1α
ba
Shembull. Ndryshimi i relacionit Studenti dhe Studenti_ri
Studenti–Studenti_ri
s# emri_st viti_st
970001 Arta 1
961269 Blerim 2
Prerja (intersect). Operacioni i prerjes për relacionet R dhe S shënohet SR I
dhe për rezultat jep bashkësinë e n-sheve të cilët janë në R dhe S. Operacioni i prerjes
është komutativ
RSSR II = .
Relacioni rezultat trashëgon emrat e atributeve nga relacioni R, respektivisht
rezultati merret që të jetë identik (për nga emrat e atributeve) me relacionin R.
Shembull.
1β
2α1α
ba
R
3β2α
baS R ∩∩∩∩ S 2α
ba
1β
2α1α
ba
R
3β2α
baS R ∩∩∩∩ S 2α
ba
Operacioni i prerjes nuk është operacion themelor sepse mund të derivohet
(nxjerret) nga operacionet themelore respektivisht nga operacioni i diferencës së
bashkësive, vlenë
)( SRRSR −−=I .
6
Shembull. Prerja e relacionit Studenti dhe Studenti_ri
iStudenti_rStudenti I
s# emri_st viti_st
950879 Petrit 3
950127 Vjollca 3
Prodhimi Cartesian. Le të jenë R dhe S relacione me shkallët n dhe m
respektivisht. Prodhimi Cartesian i R dhe S, shënohet SR× dhe për rezultat jep
shemën relacionale që përmbanë të gjithë atributet nga R të ndjekura me të gjithë
atributet nga S. Relacioni rezultat përbëhet nga n-shet e formës sr, për çdo çiftë të
n-sheve Rr∈ dhe Ss∈ . Pra, rezultat është bashkësia e të gjitha (n+m)-sheve ku n
komponentat e para janë n-shet nga relacioni R dhe m komponentat e dyta janë m-shet
nga relacioni S. Atributet në relacioni SR× kanë emra të njejtë sikurse atributet
përgjrgjës në R respektivisht në S dhe nëse ndodh që të kemi përputhje të emrave
atëherë emrat e njejtë shënohen bashkë me emrin e relacionit nga i cili vjenë të ndarë
me pike, p.sh. sipas formës emir_i_relacionit.emri_i_atributit.
Shembull.
2β1α
ba
R
-10γ
-20β
+10β
+10α
edc
S
γ1α
β1α
β1α
α1α
cba
R ×××× S
-10-20+10+10ed
γ2β
β2β
β2β
α2β
-10-20+10+10
2β1α
ba
R
-10γ
-20β
+10β
+10α
edc
S
γ1α
β1α
β1α
α1α
cba
R ×××× S
-10-20+10+10ed
γ2β
β2β
β2β
α2β
-10-20+10+10
Shembull. Për çdo student të shkruhen lista e provimeve të cilat ai nuk i ka
regjistruar.
Së pari i gjejmë të gjitha kombinimet në mes shifrave të studentëve dhe
shifrave të lëndëve
( ) ( )KursiStudenticombAll ks ##_ ππ ×=
dhe tani prej relacionit të fituar e minusojmë relacionin Raporti
( )RaporticombAllrRegjistruaKaNuk ks #,#___ π−=
Rezultati është
7
rRegjistruaKaNuk __
s# k#
970001 124
970001 215
950879 124
950879 102
950879 215
961269 102
961269 215
Riemërimi. Le të jetë E një relacion arbitrar. Operacioni i riemërimit të
relacionit E në relacion R shënohet ),( ERρ dhe rezultati i këtij operacioni do të jetë
relacioni (i ri) R i cili është plotësisht identik me relacionin E. Operacioni i këtillë
shpeshherë quhet operacioni aliases (i cili relacionit në të cilin vepron i ngjit një
pseudonim). Forma e përgjithshme e këtij operacioni është )),(( EFRρ ku F paraqet
listën e riemërimeve të atributeve të relacionit E në relacionin R. Elementet në listen F
mund të jepen si vijon (2→b, e→c) që do të thotë:
2→b, atributi i dytë me rradhë (nga e majta në të djathtë) nga relacioni E në
relacionin R do të riemërohet në b dhe
e→c, atributi e nga relacioni E në relacionin R do të riemërohet në c.
Shembull.
-10γ
-20β
+10β
+10α
eda
E
-10γ
-20β
+10β
+10αcba
ρ(R(2 →→→→b, e →→→→c),E)
R
-10γ
-20β
+10β
+10α
eda
E
-10γ
-20β
+10β
+10αcba
ρ(R(2 →→→→b, e →→→→c),E)
R
Pyetje: “Të gjenden të gjitha çiftet e studentëve të cilët gjenden në vit të
njejtë”.
Pasi duhet të përdoret relacioni i njejtë në vend të të dy operandëve, këtu
përdoret operatori i riemërimit
),( StudentiTempρ
ku relacionit Studenti i shoqëron pseodonimin Temp (respektivisht krijojm relacionin
Temp i cili është identik me relacionin Studenti) tani përgjigja në pyetjen është
( ))()#.#.()_._.(_.,_. StudentTempResult sStudentisTempstvitiStudentistvitiTempstEmriStudentistemriTemp ×= <∧=σπ
dhe relacioni i fituar është
Result
Temp.emri_st Studenti.emri_st
Vjollca Petrit
Forma më e qartë e përgjigjes, respektivisht ndarjen e përgjigjes në
nënrezultatet:
8
),( StudentiTempρ
StudentTempTemp ×=2
)2(3 )#.#.()_._.( TempTemp sStudentisTempstvitiStudentistvitiTemp <∧== σ
( )3_.,_. TempResult stEmriStudentistemriTempπ=
Lidhja (Join). Operacioni i lidhjes është operacion mjaft i fuqishëm në
algjebrën relacionale, i kombinon dhe nxjer të dhënat nga dy relacione. Lidhja mund
të definohet si prodhim Cartesian i ndjekur me operacionin e selektimit dhe
ndonjëherë edhe me operacionin e projektim. Operacioni i prodhimit Cartesian
zakonisht është më i gjërë se operacioni i lidhjes, prandaj, me rendësi është
identifikimi i lidhjes pa ndërthurjen e prodhimit Cartesian. Lidhja e dy relacioneve R
dhe S shënohet SR <> . Operacioni i lidhjes paraqitet në tri variante:
i. Lidhja e kushtëzuar,
ii. Lidhja – barazi dhe
iii. Lidhja natyrale.
Lidhja e kushtëzuar (Condition Join). Operacioni i lidhjes së kushtëzuar
paraqet formën e përgjithshme të operacionit të lidhjes dhe për relacionet R dhe S
shënohet SR C<> . Operacioni lidhja e kushtëzuar definohet si vijon
)( SRSR CC ×= σ<>
ku C paraqet kushtin e lidhjes dhe kushti është i njejtë sikurse kushti tek operacioni i
selektimit. Operacioni i lidhjes së kushtëzuar njihet edhe si operacioni i lidhjes theta
(θ).
Shembull.
d3c3b358
d2c2b231
d1c1b122
dcba
d3c3b358
d2c2b231
d1c1b122
dcba
f2e258
f1e122
fea
f2e258
f1e122
fea
RS
f2e258d2c2b231
f2e258d1c1b122
feR.adcbS.a
f2e258d2c2b231
f2e258d1c1b122
feR.adcbS.a
RS aRaS .. <<>
Lidhja – barazi (Equi – Join). Operacioni lidhja–barazi parqet rast special të
lidhjes së kushtëzuar ku kushti përbëhet nga barazia e vlerave të dy atributeve, njëri
nga relacioni R dhe tjetri nga relacioni S. Operacioni i lidhjes-barazi kërkon që
operandat të kenë të paktën një atribut të përbashkët sipas domenës, pra, me domenë
të njejtë. Rezultat është relacioni i cili përbëhet nga të gjitha n-shet të fituara me
ngjitjen e një n-sheje prej R me një n-she prej S e cila ka vlerë të njejtë të atributit të
përbashkët me n-shen nga R. Në relacionin rezultat atributi i përbashkët nga relacioni
i dytë, relacioni S nuk paraqitet (pra fshihet).
9
Shembull.
γ1α
β4γ
γ5βα1α
cba
R
βδδY2γX1
βX3
αX1
feb
S
εY3 γ1α
γ1α
α1αα1α
cbaR R.b=S.b S
β2δγXαXγXαX
fe
δY2
Operacioni i lidhjes barazi mund të përbëhet nga më tepër çifte barazi të lidhur
me operacionin logjik ∧ , si p.sh. SR dcba )()( =∧=<> .
Lidhja natyrale. Lidhja natyrale (natural join) është operacion binar i cili
vepron në dy relacione R dhe S të cilët kanë të paktën një atribut të përbashkët.
Operacioni i lidhjes natyrale shënohet SR <> . Lidhja natyrale paraqet rast special të
lidhjes–barazi ku kërkohet barazi në mes të gjithë atributeve të përbashkëta, pra,
rezultat është relacioni i cili përbëhet nga të gjitha n-shet të fituara me ngjitjen e një
n-sheje prej R me një n-she prej S e cila ka vlerë të njejtë të atributeve gjegjëse të
përbashkëta me n-shen nga R. Në relacionin rezultat atributet e përbashkëta paraqiten
vetëm një herë.
Shembull. Për shembull le të jetë R(A,B,C) dhe S(B,C,D) të dhënë në instancat
relacionale:
c3b2a4
c2b2a3
c1b1a2
c1b1a1
CBA
c3b2a4
c2b2a3
c1b1a2
c1b1a1
CBA
d3c3b2
d2c1b1
d1c1b1
DCB
d3c3b2
d2c1b1
d1c1b1
DCB
R S
relacioni SR <> është
d3c3b2a4
d2c1b1a2
d1c1b1a2
d2c1b1a1
d1c1b1a1
DCBA
d3c3b2a4
d2c1b1a2
d1c1b1a2
d2c1b1a1
d1c1b1a1
DCBA
SR <>
Nëse relacionet nuk kanë attribute të përbashkëta atëherë definohet që rezultat
i lidhjes natyrale të jetë prodhimi Cartesian i relacioneve.
Pyetje 1. “ Të gjenden emrat e të gjithë studentëve që kanë regjistruar lëndën
me numër 124”.
( )( )StudentiRaportiResult kstemri <>124#_ == σπ
Pyetje 2. “ Të gjendet numri i dhomës së arsimtarit i cili ligjëron lëndëm me
shifrën 037”.
( )( )ArsimtariKursiResult kdh <>037## == σπ
10
Pyetja 3. “ Gjej emrat e arsimtarëve të cilët ligjërojn lëndën të cilën e ka
regjistruar të paktën një student në vitin e tretë”.
( )( )( )KursiRaportiStudentiResult stvitiaremri <><>3__ == σπ
3Vjollca950127
3Petrit950879
viti_stemri_sts#
( )Studentistviti 3_ =σ
3Vjollca950127
3Petrit950879
viti_stemri_sts#
( )Studentistviti 3_ =σ
91023Vjollca950127
81243Vjollca950127
100373Vjollca950127
90373Petrit950879
notak#viti_stemri_sts#
( ) RaportiStudentistviti <>3_ =σ
91023Vjollca950127
81243Vjollca950127
100373Vjollca950127
90373Petrit950879
notak#viti_stemri_sts#
( ) RaportiStudentistviti <>3_ =σ
GjergjHardveri91023Vjollca950127
BujarProgramim81243Vjollca950127
FatmirBazat e inf.100373Vjollca950127
FatmirBazat e inf.90373Petrit950879
emri_artitullinotak#viti_stemri_sts#
( )( ) KursiRaportiStudentistviti <><>3_ =σ
GjergjHardveri91023Vjollca950127
BujarProgramim81243Vjollca950127
FatmirBazat e inf.100373Vjollca950127
FatmirBazat e inf.90373Petrit950879
emri_artitullinotak#viti_stemri_sts#
( )( ) KursiRaportiStudentistviti <><>3_ =σ ( )( ) KursiRaportiStudentistviti <><>3_ =σ
Gjergj
Bujar
Result
Fatmir
emri_ar
Gjergj
Bujar
Result
Fatmir
emri_ar
Lidhja çdo herë mund të shprehet nëpërmjrt operacioneve tjerë, p.sh. le të jenë
relacionet R(A,B,C,D) dhe S(C,D,E), për lidhjen natyrale vlenë
( ) ( )( )( )SRSR DSDRCSCREDRCRBA ×= =∧= ....,.,.,, σπ<>
Pjestimi. Le të jetë R relacion i shkallës n dhe S relacion i shkallës m dhe të
gjithë atributet e S le të paraqiten edhe te relacioni R. Rezultati i pjestimit të R me S, i
cili shënohet SR / është bashkësia e të gjithë (n-m)-sheve (x) ashtu që n-shet (x,y)
paraqiten në R për të gjitha m-shet (y) që paraqiten në S. Këtu x dhe y janë grupe prej
një ose më tepër atribute. Pra, pjestimi SR / është bashkësia e të gjithë x vlerave nga
R (pjesa x e n-shes nga R) ashtu që për çdo y vlerë n-she nga S ekziston n-sheja
yx, në R.
Shembuj:
c1
K#
c4s4
c1s3
c2s2
c1s2
c3s1
c2s1
c1s1
K#S#
R1 R2
c3
c2
c1
K#
R3
s3
s2
s1
S#
R1/R2
s1
S#
R1/R3
c1
K#
c4s4
c1s3
c2s2
c1s2
c3s1
c2s1
c1s1
K#S#
R1 R2
c3
c2
c1
K#
R3
s3
s2
s1
S#
R1/R2
s1
S#
R1/R3
2 α 1 α y x
1 β 3 α
1 δ 1 γ
4 δ 3 δ
2 ε 1 ε
2 1 y
ε α x
R S R/S
Një definicion alternative i pjestimit është: për çdo x vlerë nga R shiqohet
bashkësia e y vlerave të cilët paraqiten në n-shet në R sëbashku me x dhe nëse kjo
bashkësi përmban të gjithë y vlerat n-she nga S atëherë x vlera paraqet n-she në
rezultatin e pjestimit SR / .
Gjithashtu mund të bëhet analogji në mes pjestimit të numrave të plotë dhe
pjestimit të instancave relacionale. Për shembull pjestimi i numrit R me numrin S
11
është numri Q ashtu që RSQ ≤* . Ndërsa për instancat relacionale kemi: pjestimi i
instancës relacionale R me instancën relacionale S është instance relacionale Q ashtu
që RSQ ⊆× .
Operacioni i pjestimit nuk është operacion themelor, prandaj, mund të
shprehet me ndihmën e operacioneve tjera
)))((()(/ RSRRSR xxx −×−= πππ .
Shembull.
Temp1←πR-S(R) ku R-S=(x,y)–y=x
Temp2←πR-S((Temp1×S)–R) Result=Temp1–Temp2
γ
α
β
δ
ε
xTemp1
ε
α
x
R / Sβ 2
γ 2
δ 2
x y
( Temp1 × S ) – R
Temp2
2
1
y
S
2α
1α
yx
1β
3α
1δ
1
4δ
3δ
2ε
1ε
γ
R
γ
α
β
δ
ε
xTemp1
γ
α
β
δ
ε
xTemp1
ε
α
x
R / S
ε
α
x
R / Sβ 2
γ 2
δ 2
x y
( Temp1 × S ) – R
β 2
γ 2
δ 2
x y
β 2
γ 2
δ 2
x y
( Temp1 × S ) – R
Temp2
2
1
y
S
2α
1α
yx
1β
3α
1δ
1
4δ
3δ
2ε
1ε
γ
R
2
1
y
S
2α
1α
yx
1β
3α
1δ
1
4δ
3δ
2ε
1ε
γ
R
Pyetje 1. “Të gjenden emrat e të gjithë studentëve të cilët kanë regjistruar
lëndën me shifrën 102”.
( )( )( )( )StudentiKursiRaportiResult kksstemri <>102###_ / == σπππ
e njejta pyetje mund të zgjidhet edhe si vijon
( )( )( )RaportiStudentiResult ksstemri 102##_ == σππ <>
relacioni rezultat është
Vjollca
Arta
EMRI_ST
Vjollca
Arta
EMRI_ST
Pyetja 2. “Të gjenden emrat e studentëve të cilët i kanë regjistruar të gjithë
lëndët”.
( )( )( )StudentiKursiRaportiResult kstemri <>#_ / ππ=
relacioni Result është i zbrazët sepse asnjë n-she nuk plotësok kërkesën e shprehur me
shprehjen në të djathtë.
Pyetja 3. “Të gjenden numrat e studentëve të cilët kanë regjistruar të paktën
ata lëndë të cilat i ka regjistruar studenti me numër 970001 (dhe ndonjë lëndë tjetër)”.
( )( )( )RaportiRaportiResult sks 970001### / == σππ
Rezultati është: studentët me numrat 970001 dhe 950127.
12
Shembull. Pjestimi mund të shprehet me ndihmën e operacioneve të
mëparshme, p.sh. për relacionet R(A, B, C, D) dhe S(C, D) kemi
)))((()(/ ,,, RSRRSR BABABA −×−= πππ
Funkcionet agregate. Funksione matematike për kolekcionimin e të dhënave
nga database-i. Funksione të tilla janë:
- SUM(…) – llogaritja e shumës së vlerave të atributit (kolonës) të dhënë,
- AVERAGE(…) – llogaritja e vlerës mesatare të vlerave të atributit të
dhënë,
- MAX(…), MIN(…) – maksimumi, minimumi i vlerave të atributit të
dhënë,
- COUNT(…) – numërimi i n-sheve,
- etj.
Tre pika në klapa do të thotë atributi sipas të cilit kryhet funksioni, te disa
funksione është pjesë opcionale dhe mund të mos përdoret, p.sh. COUNT mund të
përdoret edhe pa argumentin respektivisht pjesën në kllapa.
Funksionet agregate përdoren si vijon
F<lista e funksioneve>(R)
Pyetje 1. “Të gjendet numri i studentëve të cilët kanë regjistruar lëndën me
shifrën 102”.
FCOUNT ( )( )Raportik 102#=σ
Zakonisht funksionet agregate përdoren me klauzulën për grupim, për
shembull nëse kërkojmë numrin e studentëve të ndarë sipas gjinisë, përdorimi i
funksionit COUNT pa grupimin sipas gjinisë nuk do të na japë zgjidhjen e kërkuar.
Përdorimi i klauzulës për grupim (GROUP BY) bëhet si vijon:
<atributet e grupimit>F<lista e funksioneve>(R)
Pyetje 2. “Të gjendet numri i studentëve nëpër gjenerata, p.sh. sa janë në vitë
të parë, në vitë të dytë, etj.”.
Viti_stFCOUNT(s#)(Studenti) dhe rezultati është
Viti_st n#
1 1
2 1
3 2
Pyetje 3. “Të gjendet nota mesatare e çdo studenti”.
s#FAVERAGE(nota)(Raporti).
13
5.2. Algjebra relacionale – Ushtrime
Analizojmë database-in e të dhënave për gurmanët (adhuruesit, provuesit e
gjellrave), restoranet dhe gjellat të cilat i servojnë ata. Database-i është dhënë me ER
shemën
GURMANET
GJELLARESTORANI
PELQEN
SERVON
FREKUENCA
N
M
N M
N
M
Relacionet janë:
GURMANET(G#, …)
GJELLA(GJ#, …)
RESTORANT(R#, …)
FREKUENCA(G#, R#)
SERVON(R#, GJ#)
PELQEN(G#, GJ#)
Detyra 1: Për database-in për gurmanët, gjellat dhe restoranet pyetjet e
ardhshme të shprehen në algjebrën relacionale:
Pyetja 1. Paraqite listën e restoreneve të cilët servojn gjellën të cilën e pëlqen
‘Joe’.
))((_ ''## PELQENJOESGJELLAT JoeGGJ == σπ
)_(T_JOESRESTORANTE # SERVONJOESGJELLATR <>π=
Pyetja 2. Paraqite listën e gurmanëve të cilët vizitojnë të paktën njërin nga
restoranet të cilët servojnë gjellën që ai e pëlqen.
))((RESULT # FREKUENCASERVONPELQENG <><>π=
Pyetja 3. Paraqite listën e të gjithë restoraneve të cilët servojnë të gjitha gjellat
të cilat i pëlqen Joe.
))((_ ''## PELQENJOESGJELLAT JoeGGJ == σπ
JOESGJELLATSERVONRESULT _/=
Pyetja mund të zgjidhet edhe pa përdorimin e operacionit të pjestimit
))((_ ''## PELQENJOESGJELLAT JoeGGJ == σπ
)(_ # SERVONRESTORANTALL Rπ=
JOESGJELLATRESTORANTALLCOMALL ___ ×=
)_(_ # SERVONCOMALLJOESNOT R −= π
JOESNOTRESTORANTALLJOESRESTORANET ___ −=
14
Analizojmë database-in e të dhënave për huazimin e librave:
LIBRI(SH_L#, TITULLI, AUTORI, BOTUESI)
ANTARI(SH_A#, EMRI, ADRESA)
HUAZIMI(SH_L#, SH_A#, DATA_HUAZIMIT)
Detyra 2. Për database-in e huazimeve të librave pyetjet në vazhdim të
shprehen në algjebrën relacionale.
Pyetja 1. Gjej të gjithë autorët dhe titujt e librave të botuar prej ‘Prentice Hall’.
))(( '', LIBRIResult HallPrenticeBOTUESIAUTORITITULLI == σπ
Pyetja 2. Gjej titujt e të gjitha librave të cilët janë huazuar 15. Shkurt. 2003.
))((_ '200315'_#_ HUAZIMIHuazuaritTe FebHUAZIMITDATALSH −−== σπ
)_( HuazuaritTeLIBRIResult TITULLI <>π=
Pyetja 3. Gjej emrin e antarit i cili në 15 Mars 2003 ka huazuar librin “Për kë
bien kombanat”.
)('' LIBRIResult1 kombanatbienkëPërTITULLI == σ
)('200315'_ HUAZIMIResult2 MarHUAZIMITDATA −−== σ
))(( ANTARIResult2Result1Result EMRI <><>π=
Pyetja 4. Shkruaj titullin dhe autorin e cilit do libër të botuar nga botuesi
‘Prentice Hall’ të cilin e ka huazuar antari me emrin ‘John Smith’ para datës 21.
Korik. 2003.
))()(( '200321'_''#_ HUAZIMIANTARIResult1 JulHUAZIMITDATASmithJohnEMRILSH −−<== σσπ <>
))(( '', Results1LIBRIResult HallPrenticeBOTUESIAUTORITITULLI <>== σπ
Pyetja 5. Gjej emrat dhe adresat e të gjithë antarëve të cilët i kanë huazuar të
gjitha librat e autorit Ernest Heminguay.
))(( ''#_ LIBRIResult1 HeminguayErnestAUTORILSH == σπ
Result1HUAZIMIResult2 ASHLSH /)(#_,#_π=
)(, Results2ANTARIResult ADRESAEMRI <>π=
Pa operacionin e pjestimit:
))(( ''#_ LIBRIResult1 HeminguayErnestAUTORILSH == σπ
)(_ #_ ANTARIResult1COMBALL ASHπ×=
))(_(_ #_,#_#_ HUAZIMICOMBALLHUAZUARAJO ASHLSHASH ππ −=
HUAZUARAJOANTARIResult2 ASH _)(#_ −= π
)(, Results2ANTARIResult ADRESAEMRI <>π=
15
Pyetja 6. Shkruaj titujt dhe autorët e librave të cilët asnjëher nuk janë huazuar.
)()( #_#_ HUAZIMILIBRIResult1 LSHLSH ππ −=
)(, LIBRIResult1Result AUTORITITULLI <>π=
Pyetja 7. Shkruaj të dhënat për librat të cilat asnjëherë nuk i ka huazuar antari
me shifër 67542.
))(( 67542#_#_ HUAZIMIResult1 ASHLSH == σπ
Result1LIBRIResult2 LSH −= )(#_π
Results2LIBRIResult <>=
Pyetje 8. Shkruaj emrat e të gjithëve të cilët kanë huazuar të gjithë librat të
cilat i ka huazuar anëtari me shifrën 67542.
))(( 67542#_#_ HUAZIMIResult1 ASHLSH == σπ
Result1HUAZIMIResult2 ASHLSH /)(#_,#_π=
)( Results2ANTARIResult EMRI <>π=
Zgjidhja e detyrës pa përdorimin e operacionit e pjestimit
))(( 67542#_#_ HUAZIMIResult1 ASHLSH == σπ
)(_ #_ ANTARIResult1COMBALL ASHπ×=
))(_((_ #_,#_#_ HUAZIMICOMBALLHUAZUARAJO ASHLSHASH ππ −=
HUAZUARAJOANTARIResult2 ASH _)(#_ −= π
)( Results2ANTARIResult EMRI <>π=
Analizojmë database-in e të dhënave për huazimin e anijeve:
Sailors ( sid, sname, age, rating)
Boats ( bid, bname, color )
Reserves ( sid, bid, date )
Detyra 3. Për database-in e huazimeve të anijeve pyetjet në vazhdim të
shprehen në algjebrën relacionale.
Pyetje 1. Gjej emrat e marinarëve të cilët kanë huazuar anijen me shifër 103.
- Zgjidhja 1:
Result=πsname((σbid=103(Reserves) Sailors)
- Zgjidhja 2:
ρ(Temp1,σbid=103(Reserves )) ρ(Temp2,Temp1 Sailors)
Result=πsname(Temp2) - Zgjidhja 3:
Result=πsname(,σbid=103(Reserves Sailors))
16
Pyetje 2. Gjej emrat e marinarëve të cilët kanë huazuar të paktën anije me
ngjyrë të kuqe.
- Zgjidhja 1:
Result=πsname((σbid=’red’(Boats) Reserves) Sailors)
- Zgjidhja 2:
Result=πsname(πsid((πbid(σcolor=‘red’(Boats)) Reserves) Sailors)
Pyetje 3. Të gjenden emrat e marinarëve të cilët kanë rezervuar të paktën
anijen e kuqe ose të gjelbërt.
Identifikojmë anijet e keqe dhe të gjelbërta dhe pastaj gjejm marinarët të cilët
kanë rezervuar ndonjë nga ata.
- Zgjidhja 1:
ρ(Tempboats, (σcolor=‘red’ V color=‘green’(Boats))) Result=πsname(Tempboats Reserves Sailors)
− Zgjidhje 2:
Result=πsname((σcolor=‘red’(Boats) Reserves) Sailors) U
πsname((σcolor=‘green’(Boats) Reserves) Sailors)
Pyetje 4. Gjej emrat e marinarëve të cilët kanë rezervuar të paktën anije të
kuqe dhe anije të gjelbërt.
Zgjidhja 1 më lartë nuk do të funksionoj. Duhet të gjejmë marinarët të cilët
kanë rezervuar anije të kuqe dhe marinarët që kanë rezervuar anije të gjelbërt dhe
pastaj gjejmë prerjen.
ρ(Tempred, πsid((σcolor=‘red’(Boats) Reserves))
ρ(Tempgreen, πsid((σcolor=‘green’(Boats) Reserves))
Result=πsname((Tempred∩Tempgreen) Sailors)
Pyetje 5. Emrat e marinarëve të cilët kanë rezervuar të gjithë anijet.
ρ(Tempsids, (πsid,bid(Reserves) / (πbidBoats)) Result=πsname(Tempsids Sailors)
Pyetje 6. Gjej marinarët të cilët kanë rezervuar të gjithë anijet e kuqe:
ρ(Tempsids, (πsid,bid(Reserves) / (πbid(σcolor=‘red’(Boats)) Result=πsname(Tempsids Sailors)
17
5.3. Llogaritjet relacionale (Relational Calculus)
Llogaritja relacionale është propozuan nga E. F. Codd-i si alternativë e
algjebrës relacionale. Këtu bëhet fjalë për shënimin matematik të bazuar në llogaritjet
me predikatë. Pyetjet këtu janë predikate të cilët n-shet duhet patjetër t’i plotësojnë.
Dallojmë dy lloje të llogaritjeve relacionale:
� llogaritjet e orientuara në n-shet (objektet bazë janë n-shet) dhe
� llogaritjet e orientuara në domenën (objektet bazë janë elementet e domenës së
atributit).
Llogaritjet e orientuara në n-shet. Në shprehjet e këtilla paraqiten këta
elemente:
1. Variablat n-she marrin vlera nga relacioni i shënuar (i dhënë). Nëse t është
variabël që kalon nëpër relacionin R, atëherë t.A shënon komponentën A të t-së ku A
është atribut prej R.
2. Kushtet e formës xθy, ku θ është operacion për krahësim ( ≠>≥≤<= ,,,,, ).
Të paktën njëri nga x ose y duhet të jetë i formës t.A ndërsa tjetri mund të jetë edhe
konstantë. Kushti gjithashtu mund të jetë edhe i formës R(t) që do të thotë se t është
n-she në relacionin R. Kushti paraqet një formulë e cila quhet formulë atom.
3. Formula e formualuar (formuar) mirë (ang. Well–Formed–Formula, WFF),
është e ndërtuar nga lidhëset logjike (∧ (and), ∨ (or), ¬ (not), ⇒ ) dhe
kuantifikatorët ∃ (ekziston), ∀ (për çfarëdo) në përputhshmëri me rregullat në
vazhdim:
(i) çdo atom (çdo kusht) është formulë e formuluar mirë,
(ii) nëse f1 dhe f2 janë formula të formuluara mirë atëherë edhe f1∧ f2, f1∨ f2, ¬ f1, ¬ f2, f1⇒ f2 dhe f2⇒ f1 gjithashtu janë formula të formuluara mirë,
(iii) nëse f është formulë e formuluar mirë në të cilën t paraqitet si variabël
e lirë (variabla e paraqitur në formulën të formuluar mirë është e lidhur nëse ajo
variabël është paraqitur me kuantifikator, përndryshe është e lirë) atëherë edhe
)( ft∃ dhe )( ft∀ janë formula të formuluara mirë,
(iv) asnjë formulë tjetër (përveç këtyre të dhënë) nuk është formulë e
formuluar mirë.
Shprehja e llogaritjes të orientuar në n-shet është e formës
{t.A, u.B, v.C, … | f}
ku t, u, v, … janë variabla n-she, A, B, C, … janë atributet e relacioneve gjegjëse dhe f
është formulë e formuluar mirë e cila përmban t, u, v, … si variabla të lira.
Për një variabël themi se është e lidhur (bind) nëse në formulë paraqitet me
kuntifikator, përndryshe variabla është e lirë (free).
Pyetje 1. “Gjej shifrat e të gjithë lëndëve”.
{c.k# | Kursi(c)}
18
Pyetje 2. “Gjej shifrat e studentëve në vitin e parë”.
{s.s# | Studenti(s) ∧ s.viti_st=1}
Pyetje 3. “Gjej shifrat dhe emrat e studentëve të cilët kanë regjistruar lëndën
me shifër 121”
{s.s#, s.emri_st | Studenti(s) ∧ r∃ (Raporti(r) ∧ r.s# = s.s# ∧ r.k# = 121)}
Pyetje 4. “Gjej shifrat e atyre lëndëve të cilat i ka regjistruar të paktën një
student në vitin e parë”.
{c.s#|Kursi(c)∧ r∃ (Raporti(r)∧ r.k#=c.k#∧ s∃ (Studenti(s)∧ s.s#=r.s#∧ s.viti_st = 1))}
Pyetje 5. “Gjej emrat e të gjithë studentëve të cilët i kanë regjistruar të gjitha
lëndët”.
{s.emri_st|Studenti(s)∧ rc∃∀ (Kursi(c)∧Raporti(r)∧ c.k#=r.k#∧ r.s#=s.s#)}
Pyetje 6. Të gjenden marinarët me kueficientin mbi 7.
{s|Sailors(s)∧ s.rating>7}
Pyetje 7. Të gjendet emri dhe mosha e marinarëve me kueficientin mbi 7.
{s.name, s.age|Sailors(s)∧ s.rating>7}
Pyetje 8. Të gjendet emri i marinarit, shifra (id) e anijes dhe data e rezervimit
për çdo rezervim të bërë.
{s.name, r.bid, r.date|Sailors(s) ∧ r∃ (Reserves(r)∧ s.sid=r.sid)}
Pyetje 9. Të gjendet emri i marinarit i cili ka rezervuar anien me 103.
{s.name|Sailors(s) ∧ r∃ (Reserve(r)∧ s.sid=r.sid∧ r.bid=103)}
Pyetje 10. Të gjendet emri i marinarit i cili ka rezervuar anien me ngjyrë të
kuqe.
{s.name|Sailors(s)∧ r∃ (Reserves(r)∧ s.sid=r.sid∧ b∃ (Boats(b)∧ r.bid=b.sid∧ b.color=’red’))}
Pyetje 11. Të gjendet emri i marinarit i cili ka rezervuar të paktën dy anie.
{s.name|Sailors(s)∧ r∃ (Reserves(r)∧ 1r∃ (Reserves(r1)∧ s.sid=r.sid∧ r.sid=r1.sid∧
r.bid≠r1.bid))}
Pyetje 12. Të gjenden emrat e marinarëve të cilët i kanë rezervuar të gjithë
aniet.
19
{s.name|Sailors(s)∧ b∀ (Boats(b)∧ r∃ (Reserves(r)∧ s.sid=r.sid∧ r.bid=b.sid))}
Pyetje 13. Të gjenden marinarët të cilët i kanë rezervuar të gjithë aniet me
ngjyrë të kuqe.
{s|Sailors(s)∧ b∀ (Boats(b)∧ b.color=’Red’⇒ r∃ (Reserves(r)∧ s.sid=r.sid∧ r.bid=b.sid))}
Llogaritja e orientuar në domonë. Variablat “kalojnë” nëpër domenë,
gjithashtu kemi kushte “kushte të anëtarësisë” (është element) në formën:
R(A:v1, B:v2, C:v3, …)
ku A, B, C, … janë atribute të relacionit R dhe v1, v2, v3, … janë variabla ose konstanta.
Për shembull kushti Studenti(s#:87251, viti_st:1) është i saktë nëse dhe vetëm nëse në
relacionin Studenti ekziston n-she ashtu që s#=87251 dhe viti_st=1.
Rregullat për WFF (formulë e formuluar mirë) janë të njejta sikurse te
llogaritja e orientuar në n-shet.
Pyetje 1. “Gjej shifrat e të gjithë lëndëve”.
{c | Kursi(K# : c)}
Pyetje 2. “Gjej shifrat e të gjithë studentëve në vitin e parë të studimeve”.
{s|Studenti(s# : s, viti_st : 1)}
Pyetje 3. “ Gjej shifrat dhe emrat e studentëve të cilët kanë regjistruar lëndën
me shifër 121”.
{s, n|Studenti(s#: s, emri_st : n) ∧ Raporti(s#: s, k#: 121)}
Pyetje 4. “Gjej shifrat dhe titujt e lëndëve të cilat i ka regjistruar të paktën një
student në vitin e parë”.
{k, t|Kursi(k#:k, titulli:t) ∧ ∃ s(Raporti(k#:k, s#:s) ∧ Studenti(s#:s, viti_st:1))}
Pyetje 5. “Gjej emrat e atyre studentëve të cilët kanë regjistruar të gjitha
lëndët”.
{n|∃ s(Studenti(s#:s, emri_st:n) ∧ ∀ k(Kursi(k#:k) ⇒ Raporti(s#:s, k#:k)))}
Llogaritja relacionale është jo procedurale në krahësim me algjebrën
relacionale. Bazuar në llogaritjen e orientuar në n-she ekziston gjuha programore për
përshkrim, manipulim dhe parashtrim të pyetjeve për database-et, gjuha SQL, ndërsa
bazuar në llogaritjet e orientuara në domanë gjuha QBE (Query By Example).
20
5.4.Optimizimi i pyetjeve
Që pyetjet e parashtruara të kryhen (ekzekutohen) më me sukse është e
nevojshme të bëhet edhe optimizimi i pyetjeve. Optimizimin e pyetjeve e bën DBMS-
ja. DBMS-ja optimizimin e pyetjeve e bënë në dy mënyra:
- në nivelin e lartë (nivelin logjik), duke e riformuluar shprehjen algjebrike në
formën ekuivalente me atë të fillimit por më të përshtatshme në aspektin e vlerësimit
(llogaritjes) të shpejtë,
- në nivelin e ulët (nivelin fizik), duke zgjedhur algoritëm më të mirë për
vlerësim (llogaritje) të çdo operacioni themelor në shprehjen algjebrike. Gjithashtu
shfrytëzon prezencën e strukturatve ndihmëse eventuale (si p.sh. indeksat dhe
ngjashëm).
Raporti në mes algjebrës relacionale dhe llogaritjes relacionale: Çdo pyetje e
shprehur në algjebrën relacionale mund të zëvendësohet me pyetjen ekuivalente të
shprehur në llogaritjen relacionale (Pohimi i këtillë është dhënë nga Ullman J. D.
‘Principles of Database Systems’, 1980). Për shembull:
R1U R2 {t|R1(t) ∨R2(t)}
R1–R2 {t|R1(t) ¬∧ R2(t)}
R1×R2 {<t,r>|R1(t) ∧ R2(r)} σf(X)(R1) {t|R1(t) ∧ f(t.x)}
πX(R1) {t.x|R1(t)}
Çdo pyetje e shprehur me ndihmën e llogaritjes relacionale mund të
formulohet edhe me ndihmën e algjebrës relacionale (Pohimi i këtillë është dhënë nga
Codd E. F. ‘Database Systems’, 1972). Codd ka shprehur edhe algoritmin e reduktuar
me ndihmën e të cilit shprehja e dhënë në llogaritjen relacionale mund të kalohet në
shprehje të algjebrës relacionale.
Kështu në vazhdim pa e humbur kuptimin e përgjithësisë mund të marrim një
pyetje të shprehur në algjebrën relacionale dhe atë do ta shprehim (diskutojmë) sipas
llogaritjes relacionale.
Pyetje . Të gjendet emri i marinarit me kueficient më të madh se 7 dhe i cili ka
rezervuar anien me ngjyrë të kuqe.
Përgjigja e pyetjes në algjebër relacionale
Result= πsname((πsid(Reserves σcolor=’red’(Boats)) (πsid,sname(Sailors))
ndërsa në llogaritjet relacionale (të bazuara në n-shet) është
{s.name|Sailors(s) ∧ s.rating>7 ∧ r∃ (Reserves(r)∧ s.sid=r.sid ∧ b∃ (Boats(b) ∧ r.bid=b.sid∧ b.color=’red’))}
Rregullat themelore për optimizim.
i. Kombinimi i selekcionit (operacionit të selektimit):
σB1(σB2(R))= σB1∧ B2(R)
21
Me këtë arrijmë që të zvoglojmë kohën e nevojshme për kryerje nëse të dy
selekcionet kryhen në mënyrë të barabartë ngadalë (d.m.th. shiqimin e krejtë
relacionit). Nëse njëra nga selekcionet kryhet shpejtë (duke falemenderuar prezencën
e strukturave fizike të të dhënave) ndërsa tjetra ngadalë atëherë kombinimi nuk ka
llogari sepse selekcioni përfundimtar gjithashtu do të kryhet ngadal. Vendimi se cila
është më e përshtatshme varet nga ndërtimi fizik i database-it.
ii. Nxjerja e selekcionit përpara lidhjes respektivisht prodhimit: Nëse B
përmban atribute nga R dhe jo nga S atëherë vlenë:
σB(R S)= σB(R) S
σB(R×S)= σB(R)×S
Nëpërgjithësi nëse B mund të zbërthehet në B=BR∧BS∧BRS∧B’ ku BR përmban vetëm atributet nga R, BS përmban atributet nga S, BRS përmban atributet e
përbashkëta nga R dhe S dhe B’ përmban atributet tjera nga B atëherë vlenë
σB(R S)=σB’ (σBR∧ BRS(R) σBS∧ BRS(S))
Shembull: Gjej shifrat e të gjithë studentëve në vitin e parë të cilët kanë
regjistruar ndonjë lëndë të cilën e ligjeron arsimtari ‘Fatmir’ dhe në atë lëndë kanë
fituar notë më të madhe se 7.
Result:=πs#(σviti_st=1∧ nota>7∧ emri_ar=’Fatmir’(Studenti Rraporti Kursi))
Zgjidhja e optimizuar:
Result=πs#(σviti_st=1(Studenti ) σnota>7(Rraporti) σemri_ar=’Fatmir’(Kursi))
iii. Nxjerja e selekcionit para projekcionit: Nëse kushti B përmban vetëm
atributin X i cili projektohet atëherë vlenë
σB(πX (R)=πX(σB(R))
iv. Kombinimi i projekcioneve: Nëse X, Y dhe Z janë atribute nga R atëherë
vlenë:
πX(πX,Y(πX,Y,Z(R))=πX(R)
v. Nxjerja e projekcionit para lidhjes: Nëse X paraqet atributet e përbashkëta
të R dhe S atëherë vlenë
πX (R S)=πX(R) πX(S)
Kjo rregull nuk vlenë për çfarëdo bashkësie X të atributeve. Le të jetë AR
bashkësia e atributeve nga R, AS bashkësia e atributeve nga S dhe ARS=ARI AS
bashkësia e atributeve të përbashkëta të R dhe S atëherë vlenë
22
πX(R S)=πX( )()( RARSARX UIπ )()( SARSASX UIπ )
Përfundimisht vendimi se cila formë është më e përshtatshme varet nga
ndërtimi fizik i bazës së të dhënave.
vi. Optimizimi i operacioneve të bashkësive:
( ) ( ) ( )SRSR BBB σσσ UU =
( ) ( ) ( )SRSR BBB σσσ −=−
( ) ( ) ( )SRSR XXX πππ UU =
( ) ( ) ( )SRSR XXX πππ −=− (vlenë nën supozimin se X përmban atributet çelës
të relacionit R (edhe të relacionit S))
( )( ) ( )( ) ( )( )RRR BBXBXBX 2121 ∨= σπσπσπ U
( )( ) ( )( ) ( )( )RRR BBXBXBX 2121 ¬∧=− σπσπσπ
Kështu insistohet që të zvoglohet numri i n-sheve të cilat do të marin pjesë në
realizimin e unionit ose zbritjes.