You are on page 1of 437

Plani dhe programi i

bazave te te dhenave me
zbatim ne MYSQL
Bazat e punes ne access (ketu
permenden elementet themelore
dhe puna me to )
Urdherat themelore ne
SQL(structural query language)
(ketu mesohen urdherat themelore
dhe manipulimet me to ne SQL( te
pergjithshem) ,ndersa ushtrimet
organizohen ne MYSQL)

nbraha-bazat e te dhenave 1
Menyra e vleresimit

10% nga vijueshmeria .


25% nga seminari i cili punohet
kryesisht ne ushtrime laboratorike
(d.m.th ne laborator ), punohet ne
access dhe dorezohet me se largu nje
jave pa perfundu ligjeratat e
semestrit III .
65 % nga provimi perfundimtare (i cili
mbahet ne fund te semestrit ).

nbraha-bazat e te dhenave 2
Literatura
Literatura :
1.Mastering access , Autore:Alan
Simpson,Celeste Robinson ,Botimi
1999
2.Database system concepts
Autore :Abraham Silberschatz,Henry
F.Korth,S.Sudarshan,Botimi 2001
3.Microsoft server 2000
4.Database modeling and design
autore:Toby .J.Teorey,botimi 1999
(gjindet ne biblioteke)

nbraha-bazat e te dhenave 3
Literatura
5. Mannual-sql (manual I mysql-
se ne web ne adresen
www.mysql.com)
6.Database process,autore :David
Kroenke(gjindet ne biblioteke)
7.Access bible 2002 ,autore
Michael Irwin ,Cary Prague
8.Teach yourself sql (botim nga
SAMS)

nbraha-bazat e te dhenave 4
Bazat e te dhenave

Ç’eshte baza e te
dhenave
Per cfare sherben
Si ndertohet

nbraha-bazat e te dhenave 5
Funksionet e bazave te te
dhenave

Vendosja e te dhenave
Pershtatja
Modifikimi
Kerkimi
Printimi
Qasja e me teper se nje shfrytezuesi
Qasja nga intraneti dhe interneti etj

nbraha-bazat e te dhenave 6
Kriteret qe merren parasysh
ne nje baze
“Data Redudancy“(perseritja e te
dhenave )Gjate ndertimit te bazes
se te dhenave ,nga disa persona
mundet qe nje fajlle (tani e
tutje tabela) i njejte te
perseritet p.sh nje e dhene
“emri”.Keshtu ne bazen e te
dhenave fitojme perseritje te te
dhenave ,kjo njihet me emrin
“redudancy”.

nbraha-bazat e te dhenave 7
Data redudancy
Nje redudance e te dhenave eshte
bere ne shembullin qe do te
shohim ne vijim ,ku e dhena e
emrit ne nje lidhmeri te
entiteteve eshte perseritur dhe
si e tille eshte e palejueshme.
Kjo shihet ne diagramin e
paraqitur me poshte dhe kjo
perseritje eshte bere ne tere
tabelat e shqyrtuara (atributi
emri) .

nbraha-bazat e te dhenave 8
Data redudancy(vazh.)

nbraha-bazat e te dhenave 9
“Veshtirsia ne qasje”
Nese merret nje shembull I ndertimit te
nje programi per pune bankare ,sic
dihet ne te duhet te kemi nje aplikim per
vendosje te klienteve ,per balance te
te ardhurave etj dhe kerkohet nje e
dhene qe te kihet regjistri I te dhenave
te klienteve qe jane nga “tirana” .Nese
ne ate program nuk eshte aplikacioni i
kerkesave nje gje te tille nuk mundemi
me e pase d.m.th kemi nje veshtiresi ne
qasje te te dhenave .Kete e ilustron ky
diagram i meposhtem.

nbraha-bazat e te dhenave 10
Veshtirsia ne qasje(vazh.)

nbraha-bazat e te dhenave 11
Veshtirsia ne qasje(vazh.)
Siq shihet me siper mundesia e
kerkimit te te dhenave nuk eshte
e mundur pasi nje gje e tille nuk
eshte parapare ne kuader te asaj
forme kerkuese,qe d.m.th se kemi
veshtiresi ne qasje

nbraha-bazat e te dhenave 12
“Data isolation”

Nese kemi te dhenat nga disa


fajlla me forma te ndryshme
ateher nje qasje e te dhenave ne
ate baze do te ishte e veshtire
pasi kemi informata te izoluara

nbraha-bazat e te dhenave 13
“integrity problem”
Nese kemi te bejme me nje kliente
te bankes dhe per ate dhe klientet
tjere kemi vendose qe ne llogarine e
tije te kete me se paku 30 euro
gjate terheqjes se parave nga
llogaria ateher kemi te bejme me nje
pjese te programit e cila mundeson
nje te dhene te tille ,tani venja e
largimi i nje kushti te tille na paraqet
problem ,keto paraqesin nje integritet
referencial te te dhenave

nbraha-bazat e te dhenave 14
“Atomicity of data”
Problemi I tille ne kuader te nje baze te
te dhenave paraqitet nese kemi te bejme
me dergim te nje llogaria nga klienti 1 ne
ate te klientit 2 dhe nese gjate ketij
transferi na largohet shuma nga klienti1
por nuk paraqitet te klienti 2,d.m.th
humben te dhenat .Gjate bartjes se te
dhenave duhet ajo te jete “atomike “d.m.th
qe bartja te behet brenda atij entiteti.

nbraha-bazat e te dhenave 15
“concurrent access anomalies”
Nese ne kuader te nje banke kemi
shumen prej 80 eurove ne nje llogari dhe
njekohesisht nga e njejta llogari dy
persona (klient) terheqin ne te njejten
kohe shumat p.sh 50 dhe 40 nga po e
njejta shume ,ateher llogaria e tille e
larte shenuare mbetet ne nje pozite
inekzistente ,per kete sistemi duhet te
kete nje supervision i cili bene nje
kontrolle te tille .Kjo na paraqet nje
anomali gjate qasje paralele te te
dhenave

nbraha-bazat e te dhenave 16
“security problem”
Nese meret shembulli I bankes ateher
programi te cilin e kemi duhet qe ti
mundesoje klienteve vetem te kene
qasje ne gjendjen e llogarise se tyre
dhe parashtrimit te kerkesave ne
lidhje me te por jo edhe te nderhyrjes
se tyre ne vet gjendje ,kjo arrihet me
ane te sigurimit te te dhenave ne
kuader te asaj baze te te dhenave

nbraha-bazat e te dhenave 17
Siguria e te dhenave(vazh.)
Nje gje e tille do te ishte e
realizueshme nese ne shembullin
e shikimit te te dhenave nga
forma e paraqitur me pare te mos
kishim mundesi te nderhyrjes ne
vet programin e ndertimit te
bazes .

nbraha-bazat e te dhenave 18
“shikimi i te dhenave ”

Abstrakcioni i te dhenave
Qasja dhe skema e te dhenave
Pavaresia e te dhenave

nbraha-bazat e te dhenave 19
Abstrakcioni i te dhenave
Shfrytezuesit e bazes se te dhenave
duhet ti paraqitet baza ne ate menyre
qe ai ta kete me te lehte per me
perdore kjo arrihet permes disa
niveleve te organizimit te te dhenave
Niveli fizike I te dhenave –ky eshte
niveli I pare I shikim te te dhenave
dhe ketu jane te dhenat e pershkuara
ne detale se si jane te vendosura
Niveli logjike-ketu pershkruhen
lidhmerite dhe rrolet e te dhenave ,ne
veqanti nga administratori I bazes se
te dhenave

nbraha-bazat e te dhenave 20
Abstakcioni i te dhenave (1)
Niveli i shikimit –ky ne radhe te pare na
mundeson nje shikim te nje aplikacioni te
programit por jo edhe detalet e tipeve
te te dhenave dhe te dhenave ne
pergjithesi .P.sh nje puntore banke i cili
punon ne kabine per dhenie dhe marrjen
e te hollave ka mundesin e shikimit te te
dhenave por jo edhe te te dhenave detale
,perkatesisht per modifikim te vet
bazes se te dhenave .Nje ilustrim I
kesaj do te ishte

nbraha-bazat e te dhenave 21
Abstrakcioni i te dhenave(2)

nbraha-bazat e te dhenave 22
Qasja dhe skema e te
dhenave
Skema e te dhenave-eshte realizimi
logjike I bazes se te dhenave ,p.sh si
ne gjuhe programuese qe behet
definimi dhe tipi i variblave etj.
Qasja e te dhenave –eshte nje
permbajtje e momentit e bazes se te
dhenave p.sh ne shembullin e bankes ne
nje moment kemi 300 kliente dhe me
shume te teresishme 300000 euro
,kjo do te ishte nje qasje

nbraha-bazat e te dhenave 23
Pavaresia e te dhenave
Aftesia e ndrrimit te skemes se
te dhenave nga nje nivel dhe I cili
nuk ndikon ne skemen e te dhenave
ne nivelin tjeter ,paraqet pavaresin
e te dhenave .Jane dy nivele te
pavaresise se te dhenave
1.niveli fizike dhe
2.niveli logjike

nbraha-bazat e te dhenave 24
Modelet e bazave te te
dhenave
Me model te te dhenave
nenkuptojme teresine e veglave
per pershkrim te :
1. Te te dhenave
2. Te lidhjeve te tyre
3. Semantiken e te dhenes
4. kushtezimet
Ne varesi nga pershkrimi i
mesiperm kemi keto lloje te
bazave te te dhenave

nbraha-bazat e te dhenave 25
“entity relation model”
Nje modele I tille do te pershkruhej
me pershkrim reale te te dhenave i cili
pershkruhet me ,objekte bazike te
quajtura entitete , lidhmerise se tyre
si dhe atributet p.sh nje entitet mund
te jete personi qe punon ne banke dhe
keto jane te pershkruara me atribute
p.sh ai te punoje ne kabine,ndersa
lidhmeria e tyre do te ishte mes disa
entiteteve .Keto modele shkurt do ti
shenojme me E-R.Pershkrimi i te
dhenave ne kuader te nje E-R do te
paraqitej ne keto pika kryesore

nbraha-bazat e te dhenave 26
E-R modeli
Bashkesia e entiteve
Lidhmeria e tyre
Paraqitja e Dizajnit
Kufizimi i te dhenave
Qelesat
E-R Diagrami
Veglerit e zgjeruara te E-R
Dizajni i nje E-R baze
Kthimi i nje E-R modeli ne forme
tabele

nbraha-bazat e te dhenave 27
Objektet (entitetet)
Nje baze mund te modelohet si :
Bashkesi e entiteteve ,
Relacionet ne mes tyre.
Nje objekt eshte nje objekt ekzistues dhe i
cili dallon nga nje tjeter.
Psh nje person i caktuare ,fabrika etj
Keto objekte kane vetite e tyre ( atributet)
Psh :njerzit kane emer dhe mbiemer etj
Nje bashkesi e entiteteve eshte ajo
bashkesi e cila ka tipe te njejte dhe qe
ndajne veti (atribute) te njejta ne mes
vete.
Psh : bashkesia e te gjithe njerezve (kane te
gjithe emra,mbiemra etj),bashkesia e te gjitha
fabrikave etj nbraha-bazat e te dhenave 28
Bashkesia e entitetit”loan”
customer-id customer- customer- customer-
loan- amount
name street city
number

nbraha-bazat e te dhenave 29
Atributet
Pershkrimi i nje objekti mundesohet permes
shume vetive (atributeve)
Psh :
bleresi (customer) = (customer-id,
customer-name, customer-street,
customer-city)
huaja (loan) = (loan-number, amount)
Domeni i atributit – bashkesia e vlerave te
mundeshme te atributeve
Tipet e atributeve :
Atributet e drejtperdrejta (thjeshta) dhe ato te
derivueme (ato qe rrjedhin nga ato te parat).
Ato te parat jane te njevlershme dhe te
shumevlershme
Psh shumevlershme :numrat e kartelave te bankes etj
Ato te derivueshme
Merren nga ato te parat
Psh mosha e marre nga data e lindjes

nbraha-bazat e te dhenave 30
Atributet e derivueme

nbraha-bazat e te dhenave 31
Lidhmeria e te dhenave
Lidhmeria e te dhenave realizohet per disa
objekte
Psh :
Hayes depositor A-102
me kete behet lidhmeria e bleresit
(customer) dhe llogarise se tije .
Lidhmeria ndermjet e objekteve eshte nje
relacion matematike i me teper se 2
objekteve ,i marre si nenbashkesi e {(e1,
e2, … en) | e1  E1, e2  E2, …, en  En}

ku (e1, e2, …, en) eshte nje qifte i atributeve


psh :
(Hayes, A-102)  depositor

nbraha-bazat e te dhenave 32
Nje lidhje ne mes te marresit
dhe huadhenesit

nbraha-bazat e te dhenave 33
Lidhmeria e objekteve
Nje paraqitje e nje lidhje ne mes te objekteve
eshte paraqitur edhe ne kete skeme ,dhe objekti
depozitor mund te ket edhe atributin “data-access”

nbraha-bazat e te dhenave 34
Shkalla e lidhjes se objekteve
Kjo paraqet numrin e entiteteve qe
marrim pjese ne nje lidhje.
Relacioni ne te cilin marrin pjese dy
entitete quhet binar ,tri ternar etj.
Ne nje lidhje mund te futen me teper
se dy entitete .
Psh nje i punesuar ne banke mund te
kete pune ne disa filialla, atehere kemi
nje lidhje ternare ne mes te entiteteve te
punesuar ,punet dhe fillialle
Lidhjet ne mes te me shume se 2
entiteteve jane te rralla

nbraha-bazat e te dhenave 35
Tipet e lidhjeve ne mes te
entiteteve
Meqe shumica e lidhjeve ne mes te
entiteteve eshte lidhje binare ateher
me poshte do te pershkojme tipet e
lidhjes ne mes tyre.
Tipet themelore te lidhjes ne mes te
entiteteve jane keto :
Nje me nje (One to one)
Nje me shume (One to many)
Shume me nje (Many to one)
Dhe shume me shume (Many to many )

nbraha-bazat e te dhenave 36
Tipet e lidhjes- nje me nje dhe
nje me shume

Lidhja nje me Lidhja nje me shume


nje

shenim:disa nga elementet ne A dhe B mund te mos jene te perfsh


Lidhje
nbraha-bazat e te dhenave 37
Tipet e lidhjes–shume me nje
dhe shume me shume

Shume me nje Shume me shume

nbraha-bazat e te dhenave 38
Diagrami i nje E-R-je

 Drejtekendeshi –paraqet nje entitet .


 Paralelogrami –nje lidhje ne mes te entiteteve .
 Vizat –lidhjet ne mese te entitetit dhe atributit si
dhe ne mes te entiteteve permes lidhjes .
 Elipsat -paraqesin atribute
 Elipsat e dyfishta-paraqesin atribute te
shumfishta .
 Elipsat e nderprera –atributet e derivuara .
 Te nenvizuara –atributet kryesore
nbraha-bazat e te dhenave (qelesat ) 39
Pershkrimi i elementeve te
nje ER-je

nbraha-bazat e te dhenave 40
Nje E-R me i komlikuar

nbraha-bazat e te dhenave 41
Lidhmerite me atribute

nbraha-bazat e te dhenave 42
Rrolet e objekteve
Entitetet e nje lidhje nuk duhet te jen me veti
te ndryshme
Ne vizat e meposhtme “manager” dhe “worker”
paraqesin rrolet;ata specifikojne se si entiteti
“employee” komunikon me “ works-for” ne ate lidhje.
Rrolet ne nje E-R shenohen me shkronja ne vizat qe i
lidhin entitetet dhe kushtit te lidhjes .
Rrolet me labela zgjedhen sipas deshires dhe merren
vetem per kjartesi te semantikes

nbraha-bazat e te dhenave 43
Menyrat e shenimit te lidhjes
Lidhja nje me shume do te shenohet me (), ku njeshin
e paraqet fillimi i vizes ndersa shumicen mbarimi ,viza
(—) e pa orientuare paraqet lidhjen shume me shume e
orientuare nga kushti i lidhjes ne drejtim te entitetit.
Psh : nje me nje :
Bleresi eshte i shoqeruare me se paku nje hua (loan) permes
huadhenesin (borrower)
Njesoj huaja eshte e lidhur me te pakten nje bleres permes
te huadhenesit (borrower)

nbraha-bazat e te dhenave 44
Nje me shume
Ne lidhjen nje me shume huaja( loan)
eshte lidhur me te pakten nje bleres
permes “borrower”,ndersa bleresi
eshte i lidhur me disa huaja permes te
“borrower”

nbraha-bazat e te dhenave 45
Shume me nje
Ne kete raste kemi mundesin e
kundert me ate te mare ne rastin e
mesiperm.

nbraha-bazat e te dhenave 46
Shume me shume

Ne kete raste ana e bleresit eshte e


lidhur me shume hua permes te
“borrower” dhe anasjelltas huaja ka
shume bleres

nbraha-bazat e te dhenave 47
Realizimet e lidhjeve
Ne lidhjet e mesiperme duhet
cekur se kusht themelore eshte
qe ato te dhena te cilat
deshirojme ti lidhim te kene tipe
te njejte te te dhenave (ku tipi i
te dhenave do te permendet
edhe ne vazhdim )

nbraha-bazat e te dhenave 48
Pjesemarrja e nje entiteti ne
nje lidhje
 Pjesemarrja totale ne nje lidhje (e shenuar e me viza te
dyfishta ): kjo merret ne ate raste kur secili entitet merr pjese
ne te pakten nje lidhje ne ate lidhmeri te entiteteve
 Psh pjesemarrja e huase (loan) ne “borrower” eshte totale
 secila hua duhet te kete nje bleres(costumer) permes te
“borrower”
 Pjesemarrja e pjesshme : disa entitete mund te mos marrin
pjese ne te gjitha lidhjet ne ate baze
 Psh pjesemarrja e “customer” ne “ borrower” eshte e
pjesshme

nbraha-bazat e te dhenave 49
Qelesat (Keys)
Le te jete K  R
K eshte nje “superkey” i relacionit R nese
vlerat e K jane te mjaftueshme per identifikim
te nje qifti te mundshem nga relacioni r(R)
Ku me relacion te mundshme nenkuptojme nje qift i
cili mund te krijohet ne ate model.
Psh : {customer-name, customer-street} dhe
{customer-name}
jane “superkeys” te “Customer”,nese dy “customer”
nuk kane emra te njejte.
K eshte “candidate key “ nese K eshte
minimal
psh : {customer-name} eshte “candidate key”
per “Customer”,perderisa ai do te jete
“superkey” (nen supozimin se dy “customers”
nuk kane emer te njejte ) dhe nese
nenbashkesit e tije nuk jane “superkey”.
nbraha-bazat e te dhenave 50
Fushat kryesore dhe rroli i tyre
ne lidhjen e entiteteve
Kombinimi i qelesave kryesore te entiteteve me
pjesemarrje te pjesshme ne nje lidhje formojne
nje “super key”.
Psh (customer-id, account-number) eshte nje “super
key” per tabelen “depositor”
Shenim: kjo nenkupton se qiftet e entiteteve kane
te pakten nje lidhje ne bashkesine epjesshme te
lidhjes.
Psh nese percjellim te gjitha qasjet e te dhenave ne secilin
llogari (account) nga secili “customer”, ne nuk mund te
supozojme lidhje per secilen qasje.Edhe pse ne mund te
marrim atribute me shumevlera
Gjithashtu gjate percaktimit te “candidate key”-ve duhet
te kihet parasysh edhe lidhmeria e te dhenave ne ato
entitete
Gjate percaktimit te “primary key ” ne
bashkesine e lidhjeve me me shume se nje
“candidate key ” ne kuader te nje pyetsore kjo
duhet edhe te ceketnbraha-bazat
ne semantiken
e te dhenave e tij. 51
Realizimi i lidhjeve ne access
Me nje shembull shohim ne
vazhdim lidhjet e tipeve te
permendura
1.nje me nje
Kjo realizohet ndermjete fushave
kryesore te atyre dy entiteteve

nbraha-bazat e te dhenave 52
Lidhja nje me nje

nbraha-bazat e te dhenave 53
Lidhja nje me nje (vazh.)

nbraha-bazat e te dhenave 54
Lidhja nje me nje(vazh)

nbraha-bazat e te dhenave 55
Lidhja nje me nje (vazh.)

nbraha-bazat e te dhenave 56
Lidhja nje me nje (vazh.)

nbraha-bazat e te dhenave 57
Lidhja nje me shume
Kjo lidhje ne access realizohet
per dy entitete ashtu qe ne
tabelen e pare ku deshirojme te
kemi lidhjen nje duhet te kemi
fushen kryesore ,ndersa ne te
dyten ku deshirojme te kemi
lidhjen shume duhet te jete fushe
jokryesore,kjo shihet me kete
shembull,ndermjet tabelave 1 dhe
tabeles 2. gjithashtu duhet te
ceket se tipet e te dhenave duhet
te jen te njejta
nbraha-bazat e te dhenave 58
Lidhja nje me shume

nbraha-bazat e te dhenave 59
Lidhja shume me shume
Kjo lidhje ne access realizohet ne
mes te dy atributeve jo kryesore
duke ndertuare nje tabele ndihmese
e cila perbehet nga atributet
kryesore te dy tabelave ne lidhje
dhe i ka qe te dy ato si atribute
kryesore,sic shihet ne shembullin e
meposhtem ,ku behet realizimi i
lidhjes ne mes te tab1 dhe tab2.

nbraha-bazat e te dhenave 60
Lidhja shume me shume(vazh.)

nbraha-bazat e te dhenave 61
Lidhjet jo binare

Me siper u pa se si behet lidhja e


entiteve dhe realizimi i tyre ne
Access per ato entitete te cilat
jane ne lidhmeri binare ne mes
veti .Ne vazhdim shohim se cka
ndodhe me ato entitete te cilat
kane lidhje te rendeve tjera .

nbraha-bazat e te dhenave 62
Shembull i diagramit E-R me
nje lidhje ternare

nbraha-bazat e te dhenave 63
Shembull i diagramit E-R me
nje lidhje ternare
Sic shihet nga shembulli i mesiperm
lidhja ternare eshte realizuare ne
mes te entiteteve “job”,”employ” dhe
“branch”.E gjithe kjo eshte realizuare
permes “works on”.

nbraha-bazat e te dhenave 64
Lidhmeria ne nje relacion
ternare
Ne nje relacion ternare (ose n-are) se
paku nje lidhje ne mes te tyre lihet
anash per te percaktuare lidhjen ne
mes te dy entiteteve qe marrin pjese
ne ate lidhje
Psh nje lidhje ne mes te “works-on “
dhe “job” paraqet faktin se secili
“employee” punon se paku ne nje “job”
ne cilendo “branch”
Nese aty merren me shume se nje
lidhje ateherë kemi dy menyra te
percaktimit te kuptimit ne mes tyre.

nbraha-bazat e te dhenave 65
Lidhmeria ne nje relacion
ternare(vazh)
Psh nje relacion ternare R ne mes te entiteteve
lidhese A, B dhe C me lidhje ne B dhe C mund
te kuptohet si
1.secili entitet ne kete rast A eshte i
percaktuare ne menyre te vetme me entitet B
dhe C ose
2.secilit qift te entiteteve nga (A, B) i
pergjigjet nje i vetem C dhe secilit qift nga (A,
C) nje i vetem B
Secila alternative eshte marre ne menyra te
ndryshme
Per kete arsye ne largojme nje ose me shume
lidhje ne relacionet ternare (n-are) gjate
realizimit te lidhjes .

nbraha-bazat e te dhenave 66
Paraqitja binare e lidhjeve qe
nuk jane binare
Ato relacione qe nuk jane binare eshte mire
me i paraqite ne trajte binare
Psh nje lidhje familjare ne mes te prinderve
dhe femijes paraqet nje lidhje ternare ,si
relacion ternare me mire eshte me e paraqite
me dy relacione binare permes femijes dhe
nenes si dhe permes te babait dhe femijes.
Duke mare dy relacione binare ne lidhje lejohen
informata te pjesshme ne ate lidhje (psh vetem baba
dihet )
Mirepo ka disa relacione te cilat per nga natyra e
tyre jane jo binare
Psh “works-on”
nbraha-bazat e te dhenave 67
Paraqitja binare e lidhjeve qe
nuk jane binare
Ne pergjithesi secili relacion jo binare mund te
shprehet permes atyre binare duke krijuare nje
entitet artificial.Kjo behet keshtu
Zevendesohet R ne mes te entiteteve A, B dhe C me
nje entitet E, ateher merren keto lidhje te reja:
1. RA, per E dhe A 2.RB, per E dhe B
3. RC, per E dhe C
Duhet krijuar edhe disa atribute lidhese ne E
Se pari duhet te shtohen ter atributet e R ne E
Per cdo relacion lidhje (ai , bi , ci) ne R, krijohet
1.Nje entitet i ri ei ne bashkesine e entiteteve E

2.Shtohet (ei , ai ) ne RA 3.Shtohet (ei , bi ) ne RB


4.shtohet (ei e,tecdhenave
nbraha-bazat
i ) ne RC 68
Paraqitja binare e lidhjeve qe
nuk jane binare me nje ‘E-R’
diagram

nbraha-bazat e te dhenave 69
Paraqitja binare e lidhjeve
qe nuk jane binare

Gjithashtu duhet te pershtaten


kufizimet ne lidhjen e re
Pershtatja e te gjitha kufizimeve mund
te jete e pamundur
Ne paraqitjen e re mund te kemi asi raste
kur ne skemen e vjeter mos ti pergjigjet
asnje,mirepo per kete duhet te veprohet
keshtu:
Psh : me i shtue kushtet e reja ne RA, RB dhe
RC qe te sigurohemi se entiteti i ri ti pergjigjet
njerit nga entitetet ne A, B dhe C

nbraha-bazat e te dhenave 70
Modelet relacionale(3)
Struktura e nje baze relacionale
Algjebra relacionale
Domeni i njehsimeve Relacionale
Veprimet e zgjeruara me Algebra-
relacionale
Modifikimi i bazes
Shikimet (Views)

nbraha-bazat e te dhenave 71
Shembulli i nje
relacioni,tabela “account”

nbraha-bazat e te dhenave 72
Struktura baze
Per bashkesite e dhena D1, D2, …. Dn nje
relacion r eshte nenbashkesi e
D1 x D2 x … x Dn
d.m.th relacioni i gjatesise n eshte nje qift i
renditur (a1, a2, …, an) ku secila ai  Di
Psh :nese customer-name = {Jones, Smith, Curry,
Lindsay}
customer-street = {Main, North, Park}
customer-city = {Harrison, Rye, Pittsfield}
ateher r = { (Jones, Main, Harrison),
(Smith, North, Rye),
(Curry, North, Rye),
(Lindsay, Park, Pittsfield)}
eshte relacion i gjatesise 3 me atributet
customer-name x customer-street x customer-
city
nbraha-bazat e te dhenave 73
Tipet e atributeve
Secili atribute eshte i emeruare
Bashkesia e vlerave te lejuara te atributit
paraqet domenine e atributit
Vlerat e atributeve kerkohet te jene atomike,
kjo do te thote te pandashme
Psh atribute me shume vlera nuk jane atomike
Psh vlerat e atributeve te kompozuara nuk jane
atomike
Ndersa vlera zerro eshte pjese e secilit
domene
Vlera zerro sjell komplikime ne definimin e
shume operatoreve
ne vijim do te injorojme vlerat zerro dhe do ti
shohim me vone .
nbraha-bazat e te dhenave 74
Skema Relacionale

Nese A1, A2, …, An jane atribute


,ateher
R = (A1, A2, …, An ) paraqet nje skeme
relacionale
psh Customer-schema =
(customer-name,
customer-street, customer-city)
Me r(R) do te shenojme nje relacion
ne skemen relacionale
psh customer (Customer-schema)

nbraha-bazat e te dhenave 75
Shembull i nje relacioni
Vlerat e nje relacioni jane te
specifikuara permes te tabelave
Ku nje element (t) nga r eshte nje
cifte i paraqitu me nje
rresht(record) ne kuader te tabeles
atributet
(ne kolona)
customer-name
customer-street
customer-city

Jones Main Harrison Ciftet


Smith North Rye ne rreshta
Curry North Rye
Lindsay Park Pittsfield

customer

nbraha-bazat e te dhenave 76
Relacionet jane jo te renditura
 renditja e cifteve ne kuader te nje tabele eshte e
parendesishme dhe per kete mund te jene ne nje
renditje te cfardoshme
 psh relacioni ne account i paraqitur ne cifte te
cfardoshme

nbraha-bazat e te dhenave 77
Baza e te dhenave
Bdh perbehet prej disa relacioneve
Informatat per nje fabrike ndahen ne pjese ne
disa relacione ku secili nga ta paraqet nje
informate
Psh : account :paraqet informata ne lidhje me
llogarite ne ate firme
depositor : paraqet te dhenat ne
lidhje me depozituesit
customer : paraqet informatat ne
lidhje me klientet
Paraqitja e te dhenave ne nje relacion si ne
bank(account-number, balance, customer-
name, ..)
rezulton ne
Perseritjen e te dhenave (psh dy kliente me nje
llogari)
Paraqitja e vlerave zerro (psh paraqet klientin qe
nuk ka llogari)

nbraha-bazat e te dhenave 78
Pershtatja e bdh

Ne gjithe problemet e paraqitura


me larte ,zgjidhjen e tyre do ta
marrim me normalizimin e bdh qe
do te shihet me vone .

nbraha-bazat e te dhenave 79
Relacioni “customer”

nbraha-bazat e te dhenave 80
Relacioni “depositor”

nbraha-bazat e te dhenave 81
E-R Diagrami per nje banke

nbraha-bazat e te dhenave 82
Skema e Diagramit per banke

nbraha-bazat e te dhenave 83
Gjuha e pyetsoreve (Query
Languages)
Kjo eshte gjuha me te cilen ipen dhe
merren te dhenat nga bdh.
Kategorite e gjuheve
procedurale
Dhe jo-procedurale
Gjuhet e pastra (“Pure” languages):
Algjebra relacionale
Njehsimet me ciftet relacionale
Domeni i njehsimeve relacionale

nbraha-bazat e te dhenave 84
Algjebra Relacionale
Eshte gjuhe procedurale
Keto jane operacionet themelore
Select
project
union
set difference
Cartesian product
rename
Veqori e ketyre operacioneve eshte se
marrin si te dhena hyrese disa relacione
dhe japim vetem nje relacion ne dalje si
rezultate.

nbraha-bazat e te dhenave 85
Shembull i operacionit Select

• Relacioni 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

nbraha-bazat e te dhenave 86
Shembull i operacionit
Select(vazh.)
 A=B ^ D > 5 (r) me ane te relacionit te
mesiperm eshte mundesue te behet
zgjedhja e te dhenave nga relacioni r
me kushte qe ato te dhena te
plotesojne keto kushte:
• 1.qe A te jete sikurse B
• 2.dhe qe ne ate relacion r kushti D te
jete me i madhe se sa numri 5 dhe
sic u pa me larte nje gje te tille e
plotesojne rreshti i pare dhe i fundit
ne relacionin r.

nbraha-bazat e te dhenave 87
Operacioni “Select”
Shenimi :  p(r) do te thote :
p paraqet predikatin zgjedhes ne ate relacion
Definohet si me poshte :
p(r) = {t | t  r dhe p(t)}
ku p eshte nje formule me kushtet e
zgjedhjes qe permbane ne vete shprehjet e
lidhura me relacionet :  (dhe (and)),  (ose
(or)),  (mohimin (not))
secili nga termet eshte njeri nga :
<attribute> dicka <attribute> ose <constant>
ku dicka paraqet : =, , >, . <. 
Shembull i operacionit “select” eshte ky :
 branch-name=“Perryridge”(account)
nbraha-bazat e te dhenave 88
Operacioni “select”

Ne shembullin e fundit
mundesohet shikimi i te dhenave
te llogarive(account) nga filialla
me emer (branch) “Perryridge”

nbraha-bazat e te dhenave 89
Operacioni “Project”
A B C

Relacioni r :
 10 1
 20 1
 30 1
 40 2

A,C (r)
A C A C

 1  1
 1 =  1
 1  2
 2

nbraha-bazat e te dhenave 90
Operacioni “Project”
shenim:
me relacioni A1, A2, …, Ak (r)
ku A1, A2 jane emrat e atributeve jane marre
atributet e cekura ne relacionin r .
Veprimi qe kryhet eshte ky merren k kolona
te cekura duke i perjashtuare te tjerat
Vlerat e njejta (te shumfishta ) ne kuader te
rreshtave gjithashtu perjashtohen
Psh per te eliminuare emrin e filialles ( branch-
name) nga llogaria (account) marrim si me
poshte
account-number, balance (account)

nbraha-bazat e te dhenave 91
Operacioni “Union”
A B A B
Relacionetr, s:
 1  2
 2  3
 1
s
r

r  s: A B

 1
 2
 1
 3

nbraha-bazat e te dhenave 92
Operacioni “Union”
Shenimi : r  s
Definohet sikurse :
r  s = {t | t  r ose t  s}
r  s eshte i vertete (i realizueshem) kur
1. r, s kane numer te njejte te atributeve
2. Domenet e atributeve duhet te jene
kompatibile ne mes veti (psh , kolona e 2-te
nga relacioni ka tipe te njejte te vlerave me
kolonen 2 nga s)
Psh . Gjeni te gjithe “customers” me llogari
(account) ose hua (loan)
customer-name (depositor)  customer-name
(borrower)
nbraha-bazat e te dhenave 93
Ndryshimi ne mes te
bashkesive
A B A B
Relacionet r, s:
 1  2
 2  3
 1
s
r

r – s: A B

 1
 1

nbraha-bazat e te dhenave 94
Ndryshimi ne mes te
bashkesive
Shenimi r – s
Definohet si :
r – s = {t | t  r dhe t  s}
Ndryshimi ne mes te bashkesive duhet te
merret ne mes te relacioneve kompatibile
dhe pershkrimi i shembullit larte eshte
ky:jane marre ato cifte te relacionit r dhe
jane larguare nga r ato qe jane edhe ne s.
r dhe s duhet te kene te njejten gjatesi
Domenet e atributeve duhet te jene
kompatibile

nbraha-bazat e te dhenave 95
Produlti kartezian
Relacionet r, s: A B C D E

 1  10 a
 10 a
 2
 20 b
r  10 b

s
r x s:
A B C D E

 1  10 a
 1  10 a
 1  20 b
 1  10 b
 2  10 a
 2  10 a
 2  20 b
 2  10 b

nbraha-bazat e te dhenave 96
Produkti kartezian
Shenimi r x s
Definimi eshte :
r x s = {t q | t  r dhe q  s}
Supozohte se atributet nga r(R) dhe
s(S) jane disjunkte. (d.m.th
R  S = ).
Nese atributet e r(R) dhe s(S) nuk jane
disjunkte ,ateher ato qe mbesin duhet te
merren.Pershkrimi i shmbullit te
mesiperm eshte ky:secili cifte i anes se
majte ne relacioni r eshte marre me
secilin cifte te anes se djathte nga
relacioni s nbraha-bazat e te dhenave 97
Kompozimi i operacioneve
Me kombinimin e operacioneve te mesiperme mund
te behet krijimi i shprehjeve operacionale,psh :
A=C(r x s)
rxs
A B C D E

 1  10 a
 1  10 a
 1  20 b
 1  10 b
 2  10 a
 2  10 a
 2  20 b
 2  10 b
A=C(r x s)

A B C D E

 1  1 a
 2  0 a
 2  2 b
0
nbraha-bazat e te dhenave 98
2
Kompozimi i relacioneve
Me shembullin e mesiperm shihet
se eshte marre fillimisht produkti
kartezian i bashkesive dhe ne
kuader te tije kushti qe
bashkesite A dhe C me qene te
barabarta.

nbraha-bazat e te dhenave 99
Riemrimi i Operacioneve
Lejon emerim dhe me kete mund ti
qasemi nje rezultati te shprehjes
relacionale algjebrike.
Lejon referim te nje relacioni me me
shume se nje emer.psh : x (E)
Kjo na mundeson shikim e te dhenes nga
shprehja E me emrin X.
Nese shprehja algjebrike E ka nje gjatesi
n,atehere x (A1, A2, …, An) (E)
Na jepe rezultatin e shprehjes E me emer
X dhe me atribute e riemruara A1, A2,
…., An.
nbraha-bazat e te dhenave 100
Shembuj te relacioneve
branch (branch-name, branch-city, assets)

customer (customer-name, customer-street,


customer-only)

account (account-number, branch-name,


balance)

loan (loan-number, branch-name, amount)

depositor (customer-name, account-number)

borrower (customer-name, loan-number)

nbraha-bazat e te dhenave 101


Shembull i pyetsorit
Gjeni te gjitha huate me te medha se sa $1200.kjo pershkohet me kete relacion

amount > 1200 (loan)

Gjeni numrin e huase per secilen hua me sasi


me te madhe se sa $1200

loan-number (amount > 1200 (loan))

nbraha-bazat e te dhenave 102


Shembuj te metejme te
pyetsoreve
Gjeni emrat e te gjithe klienteve (“customer”)te
cilet kane hua, nje llogari ose qe te dyja nga banka

customer-name (borrower)  customer-name (depositor)

Gjeni emrat e te gjithe klienteve te cilet kane


hua dhe nje llogari bankare.

customer-name (borrower)  customer-name (depositor)

nbraha-bazat e te dhenave 103


Shembuj pyetsoresh (vazh)
Gjeni emrat e te gjithe klienteve te cilet
kane hua ne filialllen “Perryridge”.
customer-name (branch-name=“Perryridge”

(borrower.loan-number = loan.loan-number(borrower x loan))


 Gjeni emrat e te gjithe klienteve te cilet kane hua
ne filiallen
“ Perryridge” dhe te cilet nuk kane asnje llogari ne
ndonje filialle te bankes.
customer-name (branch-name = “Perryridge”

(borrower.loan-number = loan.loan-number(borrower x
loan))) –
customer-name(depositor)
nbraha-bazat e te dhenave 104
Shembuj pyetsoresh (vazh)
Gjeni emrat e te gjithe klienteve te cilet kane hua
ne filiallen “Perryridge”.
Pyetsori 1

 customer-name(branch-name = “Perryridge” (
borrower.loan-number = loan.loan-number(borrower
x loan)))
 pyetsori 2

customer-name(loan.loan-number = borrower.loan-number(

(branch-name = “Perryridge”(loan)) x borrower

nbraha-bazat e te dhenave 105


Shembuj pyetsoresh (vazh)
Gjeni llogarine e ballancuare me te madhe (account
balance)
Riemroje relacionine ellogarise si d

Zgjidhja :

balance(account) - account.balance

(account.balance < d.balance (account x d


(account)))

nbraha-bazat e te dhenave 106


Definimi formal i nje shprehje
Nje shprehje relacionale ne algjeber
relacionale perbehet nga keto dy elemente
themelore :
Relacioni eshte ne BDH(baze te te dhenave)
Dhe nga nje relacion konstant
Le te jene E1 dhe E2 dy shprehje algjebrike
relacionale ; keto jane te gjitha shprehjet
relacionale algjebrike per to :
E1  E2
E 1 - E2
E 1 x E2
p (E1), P eshte nj epredikat i atributeve ne E1
s(E1), S eshte nje liste e cila permbane disa nga
atributet e E1
 x (E1), x eshte nje emer i ri per rezultatin e E1-se
nbraha-bazat e te dhenave 107
Operacionet shtese
Ne mund te definojme operacione
shtese te cilet nuk e bejne fuqizimin
e algjebres relacionale por bejne
thjeshtesin e pyetsoreve.

Prerja e bashkesive(Set intersection)


Lidhja e bashkesive (Natural join)
Pjestimi (Division)
Ndarja (Assignment)

nbraha-bazat e te dhenave 108


Prerja e bashkesive
Shenimi : r  s
Definohet me ane te relacionit:
r  s ={ t | t  r dhe t  s }
Supozojme se :
r, s kane te njejten gjatesi
atributet e r dhe s jane kompatibile
Ateher dihet matematikisht se
A  B =A\(A\B),keshtu mund te
marrim se: r  s = r - (r - s)

nbraha-bazat e te dhenave 109


Prerja e bashkesive-shembull
Le te jene dhene relacionet r, s:
A B A B
 1  2
 2  3
 1

r s

Ateher me prerje r  s marrim:


A B
 2

nbraha-bazat e te dhenave 110


Operacioni i lidhjes natyrale
 shenimi i ketij operacioni do te jete : r s
Le te jene r dhe s relacione ne skemat R dhe S
perkatesisht.
Ateher r s eshte relacion nga skema R  S e
marre si me poshte:
Merret ne konsiderate secili cift tr nga r dhe ts nga s.
Nese tr dhe ts kane te njejten vlere ne secilin nga
atributet ne R  S, shtohet cifti t ne rezultat,ku
t ka vlere te njejte sikurse tr ne r
t ka vlere te njejte sikurse ts ne s Psh :
R = (A, B, C, D)
S = (E, B, D)
Skema e rezulatit = (A, B, C, D, E)
r s eshte definuare sikurse :
r.A, r.B, r.C, r.D, s.E (r.B = s.B  r.D = s.D (r x s))

nbraha-bazat e te dhenave 111


Operacioni i lidhjes natyrore
Me perkufizim te operacionit te
lidhjes natyrore shihet se kjo
realizohet per dy relacionet e
shqyrtuara R dhe S te marra nga
unioni i tyre ashtu qe rekordet e
atributeve te cilat jane ne te dy
shprehjet merren sipas produktit
kartezian te tyre.kjo shihet me
kete shembull

nbraha-bazat e te dhenave 112


Shembull i lidhje natyrore
Jane dhene relacionet r, s:

A B C D B D E

 1  a 1 a 
 2  a 3 a 
 4  b 1 a 
 1  a 2 b 
 2  b 3 b 

r s
r s

A B C D E

 1  a 
 1  a 
 1  a 
 1  a 
 2  b 

nbraha-bazat e te dhenave 113


Operacioni i
pjestimit(division) rs
Le te jene r dhe s relacione ne skemat
R dhe S te dhena me
R = (A1, …, Am, B1, …, Bn)
S = (B1, …, Bn)
Rezultati i shprehjes r  s eshte nje relacion
ne skemen
R – S = (A1, …, Am)
Te definuare me shprehjen

r  s = { t | t   R-S(r)   u  s ( tu 
r)}
nbraha-bazat e te dhenave 114
Shembull i operacionit te
pjestimit
A B
B
Relacionet r, s:
 1 1
 2 2
 3
 1 s
 1
 1
 3
 4
 6
 1
 2

r  s: A r


nbraha-bazat e te dhenave 115


Another Division Example
Relations r,
A B C D E D E
s:
a 1
 a  a 1
b 1
 a  a 1
 a  b 1 s
 a  a 1
 a  b 3
 a  a 1
 a  b 1
 a  b 1

r  s: A B C

 a 
 a 

nbraha-bazat e te dhenave 116


Division Operation (Cont.)
Property
Let q – r  s
Then q is the largest relation satisfying q x s  r
Definition in terms of the basic algebra
operation
Let r(R) and s(S) be relations, and let S  R

r  s = R-S (r) –R-S ( (R-S (r) x s) – R-S,S(r))

To see why
R-S,S(r) simply reorders attributes of r

R-S(R-S (r) x s) – R-S,S(r)) gives those tuples t in

R-S (r) such that for some tuple u  s, tu  r.

nbraha-bazat e te dhenave 117


Assignment Operation
The assignment operation () provides a
convenient way to express complex queries.
Write query as a sequential program consisting of
a series of assignments
followed by an expression whose value is displayed as a result
of the query.
Assignment must always be made to a temporary
relation variable.
Example: Write r  s as
temp1  R-S (r)
temp2  R-S ((temp1 x s) – R-S,S (r))
result = temp1 – temp2
The result to the right of the  is assigned to the
relation variable on the left of the .
May use variable in subsequent expressions.

nbraha-bazat e te dhenave 118


Example Queries

Query 1
Find all customers who have an account from at
leastthe
CN(“Downtown” and the Uptown”
BN=“Downtown”(depositor branches.
account ))

CN(BN=“Uptown”(depositor
account
where ))
CN denotes customer-name and BN
denotes
branch-name.
Query 2

customer-name, branch-name (depositor


account)
 temp(branch-name) ({(“Downtown”),
(“Uptown”)})

nbraha-bazat e te dhenave 119


Example Queries
Find all customers who have an account
at all branches located in Brooklyn city.
customer-name, branch-name (depositor
account)
 branch-name (branch-city = “Brooklyn”
(branch))

nbraha-bazat e te dhenave 120


Extended Relational-
Algebra-Operations

Generalized Projection
Outer Join
Aggregate Functions

nbraha-bazat e te dhenave 121


Generalized Projection

Extends the projection operation by allowing


arithmetic functions to be used in the
projection list.

 F1, F2, …, Fn(E)


E is any relational-algebra expression
Each of F1, F2, …, Fn are are arithmetic
expressions involving constants and attributes in
the schema of E.
Given relation credit-info(customer-name, limit,
credit-balance), find how much more each
person can spend:
customer-name, limit – credit-balance (credit-info)

nbraha-bazat e te dhenave 122


Aggregate Functions and
Operations

Aggregation function takes a collection of values


and returns a single value as a result.
avg: average value
min: minimum value
max: maximum value
sum: sum of values
count: number of values
Aggregate operation in relational algebra
G1, G2, …, Gn g F1( A1), F2( A2),…, Fn( An) (E)
E is any relational-algebra expression
G1, G2 …, Gn is a list of attributes on which to group (can be
empty)
Each Fi is an aggregate function
Each Ai is an attribute name

nbraha-bazat e te dhenave 123


Aggregate Operation –
Example
A B C

Relation r:
  7
  7
  3
  10

sum-C
g sum(c) (r)
27

nbraha-bazat e te dhenave 124


Aggregate Operation –
Example

branch-name
account-number balance
Relation account grouped by branch-name:
Perryridge A-102 400
Perryridge A-201 900
Brighton A-217 750
Brighton A-215 750
Redwood A-222 700

branch-name g sum(balance) (account)

branch-name balance
Perryridge 1300
Brighton 1500
Redwood 700

nbraha-bazat e te dhenave 125


Aggregate Functions (Cont.)

Result of aggregation does not


have a gname (account)
branch-name sum(balance) as sum-balance
Can use rename operation to give it a
name
For convenience, we permit renaming
as part of aggregate operation

nbraha-bazat e te dhenave 126


Outer Join

An extension of the join operation that


avoids loss of information.
Computes the join and then adds tuples
form one relation that does not match
tuples in the other relation to the result of
the join.
Uses null values:
null signifies that the value is unknown or does
not exist
All comparisons involving null are (roughly
speaking) false by definition.
Will study precise meaning of comparisons with nulls
later

nbraha-bazat e te dhenave 127


Outer Join – Example

branch-nameamount
loan-number
L-170 loan
Relation Downtown 3000
L-230 Redwood 4000
L-260 Perryridge 1700

 Relation borrower

customer-name
loan-number
Jones L-170
Smith L-230
Hayes L-155

nbraha-bazat e te dhenave 128


Outer Join – Example

Inner Join branch-nameamount


loan-number customer-name
loan Borrower
L-170 Downtown 3000 Jones
L-230 Redwood 4000 Smith

 Left Outer Join


loan Borrower

loan-numberbranch-nameamount
customer-name
L-170 Downtown 3000 Jones
L-230 Redwood 4000 Smith
L-260 Perryridge 1700 null

nbraha-bazat e te dhenave 129


Outer Join – Example

Right Outer
loan-number Join
branch-nameamount
customer-name
L-170
loan borrower
Downtown 3000 Jones
L-230 Redwood 4000 Smith
L-155 null null Hayes

 Full Outer Join


loan borrower

loan-numberbranch-nameamount
customer-name

L-170 Downtown 3000 Jones


L-230 Redwood 4000 Smith
L-260 Perryridge 1700 null
L-155 null null Hayes

nbraha-bazat e te dhenave 130


Null Values

It is possible for tuples to have a null value, denoted


by null, for some of their attributes
null signifies an unknown value or that a value does not
exist.
The result of any arithmetic expression involving null is
null.
Aggregate functions simply ignore null values
Is an arbitrary decision. Could have returned null as result
instead.
We follow the semantics of SQL in its handling of null values
For duplicate elimination and grouping, null is treated
like any other value, and two nulls are assumed to be
the same
Alternative: assume each null is different from each other
Both are arbitrary decisions, so we simply follow SQL

nbraha-bazat e te dhenave 131


Null Values
Comparisons with null values return the special
truth value unknown
If false was used instead of unknown, then not (A < 5)

would not be equivalent to A >= 5


Three-valued logic using the truth value unknown:
OR: (unknown or true) = true,
(unknown or false) = unknown
(unknown or unknown) = unknown
AND: (true and unknown) = unknown,
(false and unknown) = false,
(unknown and unknown) = unknown
NOT: (not unknown) = unknown
In SQL “P is unknown” evaluates to true if predicate P
evaluates to unknown
Result of select predicate is treated as false if
it evaluates to unknown

nbraha-bazat e te dhenave 132


Modification of the Database

The content of the database may


be modified using the following
operations:
Deletion
Insertion
Updating
All these operations are
expressed using the assignment
operator.

nbraha-bazat e te dhenave 133


Deletion

A delete request is expressed similarly to


a query, except instead of displaying
tuples to the user, the selected tuples
are removed from the database.
Can delete only whole tuples; cannot
delete values on only particular attributes
A deletion is expressed in relational
algebra by:
rr–E
where r is a relation and E is a relational
algebra query.

nbraha-bazat e te dhenave 134


Deletion Examples
Delete all account records in the Perryridge branch.

account  account – branch-name = “Perryridge” (account)

ete all loan records with amount in the range of 0 to 50

loan  loan – amount 0and amount  50 (loan)

Delete all accounts at branches located in Needham.

r1  branch-city = “Needham” (account


branch)
r2  branch-name, account-number, balance (r1)

r3   customer-name, account-number (r2


depositor)
account  account – r2
depositor  depositor – r3 e te dhenave
nbraha-bazat 135
Insertion

To insert data into a relation, we either:


specify a tuple to be inserted
write a query whose result is a set of tuples to
be inserted
in relational algebra, an insertion is
expressed by:
r r  E
where r is a relation and E is a relational
algebra expression.
The insertion of a single tuple is expressed
by letting E be a constant relation
containing one tuple.

nbraha-bazat e te dhenave 136


Insertion Examples

account  account
Insert {(“Perryridge”,
 in
information A-973, 1200)}
the database specifying that Smith
has 
depositor $1200 in accountA-973
depositor at the A-973)}
{(“Smith”, Perryridge branch.

 Provide as a gift for all loan customers in


the Perryridge
branch, a $200 savings account. Let the
loan number serve
r1  (as the account
branch-name (borrower
number
= “Perryridge” loan
for the )) savings
new
account.
account  account  branch-name, account-number,200 (r1)
depositor  depositor  customer-name, loan-number(r1)

nbraha-bazat e te dhenave 137


Updating

A mechanism to change a value in a tuple


without charging all values in the tuple
Use the generalized projection operator
to do this task
r   F1, F2, …, FI, (r)
Each Fi is either
the ith attribute of r, if the ith attribute is
not updated, or,
if the attribute is to be updated Fi is an
expression, involving only constants and the
attributes of r, which gives the new value for
the attribute

nbraha-bazat e te dhenave 138


Update Examples
Make interest payments by increasing all balances
by 5 percent.
account   AN, BN, BAL * 1.05 (account)

where AN, BN and BAL stand for account-


number, branch-name and balance,
respectively.
 Pay all accounts with balances over $10,000
6 percent interest
and pay all others 5 percent

account   AN, BN, BAL * 1.06 (  BAL  10000


(account))
 AN, BN, BAL * 1.05 (BAL  10000
(account))

nbraha-bazat e te dhenave 139


Views
In some cases, it is not desirable for all
users to see the entire logical model (i.e.,
all the actual relations stored in the
database.)
Consider a person who needs to know a
customer’s loan number but has no need
to see the loan amount. This person
should see a relation described, in the
relational algebra, by
customer-name, loan-number (borrower loan)
Any relation that is not of the conceptual
model but is made visible to a user as a
“virtual relation” is called a view.

nbraha-bazat e te dhenave 140


View Definition

A view is defined using the create view statement


which has the form

create view v as <query expression


where <query expression> is any legal relational
algebra query expression. The view name is
represented by v.
Once a view is defined, the view name can be used to
refer to the virtual relation that the view generates.
View definition is not the same as creating a new
relation by evaluating the query expression
Rather, a view definition causes the saving of an expression;
the expression is substituted into queries using the view.

nbraha-bazat e te dhenave 141


View Examples

create
Considerview all-customer
the view as
(named all-customer ) consisting of
branches and their customers.
branch-name, customer-name (depositor
account)
 branch-name, customer-name (borrower
loan)
e can find all customers of the Perryridge branch by writing:

branch-name

(branch-name = “Perryridge” (all-


customer))

nbraha-bazat e te dhenave 142


Updates Through View

Database modifications expressed as views must


be translated to modifications of the actual
relations in the database.
Consider the person who needs to see all loan data
in the loan relation except amount. The view given
to the person, branch-loan, is defined as:
create view branch-loan as
branch-name, loan-number (loan)
Since we allow a view name to appear wherever a
relation name is allowed, the person may write:

branch-loan  branch-loan  {(“Perryridge”, L-37)}

nbraha-bazat e te dhenave 143


Updates Through Views
(Cont.)
The previous insertion must be represented by an
insertion into the actual relation loan from which
the view branch-loan is constructed.
An insertion into loan requires a value for amount.
The insertion can be dealt with by either.
rejecting the insertion and returning an error message
to the user.
inserting a tuple (“L-37”, “Perryridge”, null) into the
loan relation
Some updates through views are impossible to
translate into database relation updates
create view v as branch-name = “Perryridge” (account))
v  v  (L-99, Downtown, 23)
Others cannot be translated uniquely
all-customer  all-customer  {(“Perryridge”, “John”)}
Have to choose loan or account, and
create a new loan/account number!

nbraha-bazat e te dhenave 144


Views Defined Using Other
Views
One view may be used in the expression
defining another view
A view relation v1 is said to depend
directly on a view relation v2 if v2 is used
in the expression defining v1
A view relation v1 is said to depend on
view relation v2 if either v1 depends
directly to v2 or there is a path of
dependencies from v1 to v2
A view relation v is said to be recursive
if it depends on itself.

nbraha-bazat e te dhenave 145


View Expansion

A way to define the meaning of views defined in


terms of other views.
Let view v1 be defined by an expression e1 that
may itself contain uses of view relations.
View expansion of an expression repeats the
following replacement step:
repeat
Find any view relation vi in e1
Replace the view relation vi by the expression
defining vi
until no more view relations are present in e1
As long as the view definitions are not recursive,
this loop will terminate

nbraha-bazat e te dhenave 146


Tuple Relational Calculus
A nonprocedural query language, where each query
is of the form
{ t | P (t ) }
It is the set of all tuples t such that predicate P is
true for t
t is a tuple variable, t[A] denotes the value of tuple
t on attribute A
t  r denotes that tuple t is in relation r
P is a formula similar to that of the predicate
calculus

nbraha-bazat e te dhenave 147


Predicate Calculus Formula

1. Set of attributes and constants


2.Set of comparison operators: (e.g., , , , ,
, )
3.Set of connectives: and (), or (v)‚ not ()
4.Implication (): x  y, if x if true, then y is
true
x  y x v y
5.Set of quantifiers:
 t r (Q(t)) ”there exists” a tuple in t in relation
r
such that predicate Q(t) is true
 t r (Q(t)) Q is true “for all” tuples t in relation
r

nbraha-bazat e te dhenave 148


Banking Example

branch (branch-name, branch-city,


assets)
customer (customer-name, customer-
street, customer-city)
account (account-number, branch-name,
balance)
loan (loan-number, branch-name, amount)
depositor (customer-name, account-
number)
borrower (customer-name, loan-number)

nbraha-bazat e te dhenave 149


Example Queries

{t | t  loan  t [amount]  1200}


Find the loan-number, branch-name, and
amount for loans of over $1200
Find the loan number for each loan of an amount
greater than $1200
{t |  s loan (t[loan-number] = s[loan-number]  s
[amount]  1200)}

Notice that a relation on schema [loan-number]


is implicitly defined by the query

nbraha-bazat e te dhenave 150


Example Queries

{t | s  Find
borrower( t[customer-name
the names of all customers s[customer-name
] =having a loan, an ])
 u account, or both
 depositor at the bank
( t[customer-name ] = u[customer-name

 Find the names of all customers who have a


loan and an account
at the bank
{t | s  borrower( t[customer-name] =
s[customer-name])
 u  depositor( t[customer-name] =
u[customer-name])

nbraha-bazat e te dhenave 151


Example Queries

Find the names


{t | s  borrower(t of all customers
[customer-name having a
] = s[customer-name ]
 u loan
loanat
(u[the
branch-name ] = “Perryridge”
Perryridge branch
 u[loan-number] = s[loan-number]))}

 Find the names of all customers who have a loan


at the
Perryridge branch, but no account at any
branch
{t | of
sthe bank
borrower( t[customer-name] =
s[customer-name]
 u  loan(u[branch-name] =
“Perryridge”
 u[loan-number] = s[loan-
number]))
 not v  depositor (v[customer-name]
=
nbraha-bazat e te dhenave
t[customer- 152
name]) }
Example Queries

Find
| s  loan(s the names of] all
[branch-name customers having a loan from
= “Perryridge”
the Perryridge
 u  borrower branch, and] the
(u[loan-number = s[cities they live] in
loan-number
 t [customer-name] = u[customer-name])
  v  customer (u[customer-name] = v[customer-nam
 t[customer-city] = v[customer-cit

nbraha-bazat e te dhenave 153


Example Queries

Find the(tnames
t |  c  customer of all customers
[customer.name] who have an 
= c[customer-name])
account at all[branches
s  branch(s located
branch-city in Brooklyn:
] = “Brooklyn” 
 u  account ( s[branch-name] = u[branch-name]
  s  depositor ( t[customer-name] = s[customer-nam
 s[account-number] = u[account-number]

nbraha-bazat e te dhenave 154


Safety of Expressions

It is possible to write tuple calculus expressions


that generate infinite relations.
For example, {t |  t r} results in an infinite
relation if the domain of any attribute of relation r
is infinite
To guard against the problem, we restrict the set
of allowable expressions to safe expressions.
An expression {t | P(t)} in the tuple relational
calculus is safe if every component of t appears in
one of the relations, tuples, or constants that
appear in P
NOTE: this is more than just a syntax condition.
E.g. { t | t[A]=5  true } is not safe --- it defines an infinite set
with attribute values that do not appear in any relation or tuples
or constants in P.

nbraha-bazat e te dhenave 155


Domain Relational Calculus

A nonprocedural query language


equivalent in power to the tuple
relational calculus
Each query is an expression of the form:

{  x1, x2, …, xn  | P(x1, x2, …, xn)}

x1, x2, …, xn represent domain variables


P represents a formula similar to that of the
predicate calculus

nbraha-bazat e te dhenave 156


Example Queries
Find the loan-number, branch-name, and
amount for loans of over $1200
{ l, b, a  |  l, b, a   loan  a > 1200}

ind the names of all customers who have a loan of over $120

{ c  |  l, b, a ( c, l   borrower   l, b, a   loan  a > 12

 Find the names of all customers who have a loan


from the
Perryridge branch and the loan amount:
 c, a  |  l ( c, l   borrower  b( l, b, a   loan 
b = “Perryridge”))}
 c, a  |  l ( c, l   borrower   l, “Perryridge”, a   loan)

nbraha-bazat e te dhenave 157


Example Queries

{ c  |  Find
l ({the
c, lnames
  borrower
of all customers having a loan, an account,
or 
both at (
 b,a thel,Perryridge branch:
b, a   loan  b = “Perryridge”))
  a( c, a   depositor
  b,n( a, b, n   account  b = “Perryridge”))}

 Find the names of all customers who have an


account at all
branches located in Brooklyn:
{ c  |  s, n ( c, s, n   customer) 
 x,y,z( x, y, z   branch  y = “Brooklyn”) 
 a,b( x, y, z   account   c,a   depositor)}

nbraha-bazat e te dhenave 158


Safety of Expressions

{  x1, x2, …, xn  | P(x1, x2, …, xn)}

is safe if all of the following hold:


1.All values that appear in tuples of the
expression are values from dom(P) (that is,
the values appear either in P or in a tuple of a
relation mentioned in P).
2.For every “there exists” subformula of the
form  x (P1(x)), the subformula is true if an only
if P1(x) is true for all values x from dom(P1).
3. For every “for all” subformula of the form x
(P1 (x)), the subformula is true if and only if
P1(x) is true for all values x from dom (P1).

nbraha-bazat e te dhenave 159


End of Chapter 3

nbraha-bazat e te dhenave 160


Result of  branch-name = “Perryridge”
(loan)

nbraha-bazat e te dhenave 161


Loan Number and the Amount
of the Loan

nbraha-bazat e te dhenave 162


Names of All Customers
Who Have Either a Loan or
an Account

nbraha-bazat e te dhenave 163


Customers With An Account
But No Loan

nbraha-bazat e te dhenave 164


Result of borrower  loan

nbraha-bazat e te dhenave 165


Result of  branch-name = “Perryridge”
(borrower  loan)

nbraha-bazat e te dhenave 166


Result of customer-name

nbraha-bazat e te dhenave 167


Result of the Subexpression

nbraha-bazat e te dhenave 168


Largest Account Balance in
the Bank

nbraha-bazat e te dhenave 169


Customers Who Live on the Same
Street and In the Same City as
Smith

nbraha-bazat e te dhenave 170


Customers With Both an
Account and a Loan at the
Bank

nbraha-bazat e te dhenave 171


Result of customer-name, loan-number,
amount (borrower loan)

nbraha-bazat e te dhenave 172


Result of branch-name(customer-
city = “Harrison”(customer account
depositor))

nbraha-bazat e te dhenave 173


Result of branch-name(branch-city =
“Brooklyn” (branch))

nbraha-bazat e te dhenave 174


Result of customer-name, branch-
name(depositor account)

nbraha-bazat e te dhenave 175


The credit-info Relation

nbraha-bazat e te dhenave 176


Result of customer-name, (limit –
credit-balance) as credit-available(credit-
info).

nbraha-bazat e te dhenave 177


The pt-works Relation

nbraha-bazat e te dhenave 178


The pt-works Relation
After Grouping

nbraha-bazat e te dhenave 179


Result of branch-name  sum(salary)
(pt-works)

nbraha-bazat e te dhenave 180


Result of branch-name  sum salary,
max(salary) as max-salary (pt-works)

nbraha-bazat e te dhenave 181


The employee and ft-works
Relations

nbraha-bazat e te dhenave 182


The Result of employee ft-
works

nbraha-bazat e te dhenave 183


The Result of employee
ft-works

nbraha-bazat e te dhenave 184


Result of employee ft-
works

nbraha-bazat e te dhenave 185


Result of employee ft-
works

nbraha-bazat e te dhenave 186


Tuples Inserted Into loan and
borrower

nbraha-bazat e te dhenave 187


Names of All Customers
Who Have a Loan at the
Perryridge Branch

nbraha-bazat e te dhenave 188


E-R Diagram

nbraha-bazat e te dhenave 189


The branch Relation

nbraha-bazat e te dhenave 190


The loan Relation

nbraha-bazat e te dhenave 191


The borrower Relation

nbraha-bazat e te dhenave 192


Chapter 4: SQL

Basic Structure
Set Operations
Aggregate Functions
Null Values
Nested Subqueries
Derived Relations
Views
Modification of the Database
Joined Relations
Data Definition Language
Embedded SQL, ODBC and JDBC

nbraha-bazat e te dhenave 193


Schema Used in Examples

nbraha-bazat e te dhenave 194


Basic Structure
SQL is based on set and relational operations
with certain modifications and enhancements
A typical SQL query has the form:
select A1, A2, ..., An
from r1, r2, ..., rm
where P
Ais represent attributes
ris represent relations
P is a predicate.
This query is equivalent to the relational
algebra expression.
A1, A2, ..., An(P (r1 x r2 x ... x rm))
The result of an SQL query is a relation.

nbraha-bazat e te dhenave 195


The select Clause
The select clause list the attributes desired in the
result of a query
corresponds to the projection operation of the relational
algebra
E.g. find the names of all branches in the loan relation
select branch-name
from loan
In the “pure” relational algebra syntax, the query
would be:
branch-name(loan)
NOTE: SQL does not permit the ‘-’ character in
names,
Use, e.g., branch_name instead of branch-name in a real
implementation.
We use ‘-’ since it looks nicer!
NOTE: SQL names are case insensitive, i.e. you can
use capital or small letters.
You may wish to use upper case where-ever we use bold font.

nbraha-bazat e te dhenave 196


The select Clause (Cont.)

SQL allows duplicates in relations as well as


in query results.
To force the elimination of duplicates, insert
the keyword distinct after select.
Find the names of all branches in the loan
relations, and remove duplicates
select distinct branch-name
from loan
The keyword all specifies that duplicates
not be removed.
select all branch-name
from loan

nbraha-bazat e te dhenave 197


The select Clause (Cont.)

An asterisk in the select clause denotes “all


attributes”
select *
from loan
The select clause can contain arithmetic
expressions involving the operation, +, –, , and /,
and operating on constants or attributes of tuples.
The query:
select loan-number, branch-name, amount  100
from loan
would return a relation which is the same as the
loan relations, except that the attribute amount is
multiplied by 100.

nbraha-bazat e te dhenave 198


The where Clause

The where clause specifies conditions that the


result must satisfy
corresponds to the selection predicate of the relational
algebra.
To find all loan number for loans made at the
Perryridge branch with loan amounts greater than
$1200.
select loan-number
from loan
where branch-name = ‘Perryridge’ and amount >
1200
Comparison results can be combined using the logical
connectives and, or, and not.
Comparisons can be applied to results of arithmetic
expressions.

nbraha-bazat e te dhenave 199


The where Clause (Cont.)
SQL includes a between comparison operator
E.g. Find the loan number of those loans with
loan amounts between $90,000 and $100,000
(that is, $90,000 and $100,000)
select loan-number
from loan
where amount between 90000 and
100000

nbraha-bazat e te dhenave 200


The from Clause
The from clause lists the relations involved in the
query
corresponds to the Cartesian product operation of the
relational algebra.
Find the Cartesian product borrower x loan select

from borrower, loan
 Find the name, loan number and loan amount of
all customers
having a loan at the Perryridge branch.
select customer-name, borrower.loan-number, amount
from borrower, loan
where borrower.loan-number = loan.loan-number an
branch-name = ‘Perryridge’

nbraha-bazat e te dhenave 201


The Rename Operation
The SQL allows renaming relations and attributes
using the as clause:
old-name as new-name

Find the name, loan number and loan amount of all


customers; rename the column name loan-number
as loan-id.
select customer-name, borrower.loan-number
as loan-id, amount
from borrower, loan
where borrower.loan-number = loan.loan-
number

nbraha-bazat e te dhenave 202


Tuple Variables

Tuple variables are defined in the from clause via


the use of the as clause.
select customer-name,
Find T.loan-number,
the customer names S.amount
and their loan numbers
from
for borrower as
all customers T, loan
having S some branch.
as at
a loan
where T.loan-number = S.loan-number

 Find the names of all branches that have


greater assets than
some branch located in Brooklyn.
select distinct T.branch-name
from branch as T, branch as S
where T.assets > S.assets and S.branch-city = ‘Brooklyn’

nbraha-bazat e te dhenave 203


String Operations
SQL includes a string-matching operator for
comparisons on character strings. Patterns are
described using two special characters:
percent (%). The % character matches any substring.
underscore (_). The _ character matches any character.
Find the names of all customers whose street
includes the substring “Main”.
select customer-name
from customer
where customer-street like ‘%Main%’
Match the name “Main%”
like ‘Main\%’ escape ‘\’
SQL supports a variety of string operations such
as
concatenation (using “||”)
converting from upper to lower case (and vice versa)
finding string length, extracting substrings, etc.

nbraha-bazat e te dhenave 204


Ordering the Display of
Tuples
List in alphabetic order the names of all
customers having a loan in Perryridge branch
select distinct customer-name
from borrower, loan
where borrower loan-number - loan.loan-number
and
branch-name = ‘Perryridge’
order by customer-name
We may specify desc for descending order or asc
for ascending order, for each attribute; ascending
order is the default.
E.g. order by customer-name desc

nbraha-bazat e te dhenave 205


Duplicates

In relations with duplicates, SQL can define how


many copies of tuples appear in the result.
Multiset versions of some of the relational
algebra operators – given multiset relations r1 and
r2:
1.  (r1): If there are c1 copies of tuple t1 in r1, and t1
satisfies selections ,, then there are c1 copies of t1 in
 (r1).
2. A(r): For each copy of tuple t1 in r1, there is a copy of
tuple A(t1) in A(r1) where A(t1) denotes the
projection of the single tuple t1.
3. r1 x r2 : If there are c1 copies of tuple t1 in r1 and c2
copies of tuple t2 in r2, there are c1 x c2 copies of the
tuple t1. t2 in r1 x r2

nbraha-bazat e te dhenave 206


Duplicates (Cont.)
Example: Suppose multiset relations r (A,
1
B) and r2 (C) are as follows:
r1 = {(1, a) (2,a)} r2 = {(2), (3), (3)}
Then B(r1) would be {(a), (a)}, while B(r1) x
r2 would be
{(a,2), (a,2), (a,3), (a,3), (a,3), (a,3)}
SQL duplicate semantics:
select A1,, A2, ..., An
from r1, r2, ..., rm
where P
is equivalent to the multiset version of the
expression:
 A1,, A2, ..., An(P (r1 x r2 x ... x rm))

nbraha-bazat e te dhenave 207


Set Operations

The set operations union, intersect, and


except operate on relations and correspond
to the relational algebra operations 
Each of the above operations automatically
eliminates duplicates; to retain all duplicates
use the corresponding multiset versions
union all, intersect all and except all.

Suppose a tuple occurs m times in r and n


times in s, then, it occurs:
m + n times in r union all s
min(m,n) times in r intersect all s
max(0, m – n) times in r except all s

nbraha-bazat e te dhenave 208


Set Operations
(select customer-name from depositor)
union
Find(select
all customers who have a loan,
customer-name fromanborrower)
account, or both:

Find all customers who have both a loan and an account.

(select customer-name from depositor)


intersect
(select customer-name from borrower)

Find all customers who have an account but no loan.

(select customer-name from depositor)


except
(select customer-name from
borrower)

nbraha-bazat e te dhenave 209


Aggregate Functions

These functions operate on the


multiset of values of a column of a
relation, and return a value
avg: average value
min: minimum value
max: maximum value
sum: sum of values
count: number of values

nbraha-bazat e te dhenave 210


Aggregate Functions (Cont.)
select avg (balance)
from account
Find the average account balance at the Perryridge branch.
where branch-name = ‘Perryridge’

 Find the number of tuples in the


customer relation.
select count (*)
from customer

Find the number of depositors in the bank.

select count (distinct customer-name)


from depositor

nbraha-bazat e te dhenave 211


Aggregate Functions – Group
By
Find the number of depositors for each branch.

elect branch-name, count (distinct customer-name)


from depositor, account
where depositor.account-number = account.account-nu
group by branch-name

Note: Attributes in select clause outside of


aggregate functions must
appear in group by list

nbraha-bazat e te dhenave 212


Aggregate Functions –
Having Clause

Find the branch-name,


select avg (balance)
names of all branches where the
from account
average account balance is more than $1,200.
group by branch-name
having avg (balance) > 1200

Note: predicates in the having clause are


applied after the
formation of groups whereas predicates
in the where
clause are applied before forming groups

nbraha-bazat e te dhenave 213


Null Values
It is possible for tuples to have a null value,
denoted by null, for some of their attributes
null signifies an unknown value or that a value
does not exist.
The predicate is null can be used to check for
null values.
E.g. Find all loan number which appear in the loan
relation with null values for amount.
select loan-number
from loan
where amount is null
The result of any arithmetic expression involving
null is null
E.g. 5 + null returns null
However, aggregate functions simply ignore nulls
more on this shortly

nbraha-bazat e te dhenave 214


Null Values and Three
Valued Logic

Any comparison with null returns unknown


E.g. 5 < null or null <> null or null = null
Three-valued logic using the truth value unknown:
OR: (unknown or true) = true, (unknown or false) =
unknown
(unknown or unknown) = unknown
AND: (true and unknown) = unknown, (false and
unknown) = false,
(unknown and unknown) = unknown
NOT: (not unknown) = unknown
“P is unknown” evaluates to true if predicate P
evaluates to unknown
Result of where clause predicate is treated as
false if it evaluates to unknown

nbraha-bazat e te dhenave 215


Null Values and Aggregates

Total all loan amounts


select sum (amount)
from loan
Above statement ignores null amounts
result is null if there is no non-null amount,
that is the
All aggregate operations except
count(*) ignore tuples with null values
on the aggregated attributes.

nbraha-bazat e te dhenave 216


Nested Subqueries

SQL provides a mechanism for


the nesting of subqueries.
A subquery is a select-from-
where expression that is nested
within another query.
A common use of subqueries is to
perform tests for set
membership, set comparisons, and
set cardinality.

nbraha-bazat e te dhenave 217


Example Query

select distinct customer-name


Find
fromall customers who have both an
borrower
account and a loan atinthe
where customer-name bank.
(select customer-name
from depositor)

 Find all customers who have a loan at the


bank but do not have
an account at the bank
select distinct customer-name
from borrower
where customer-name not in (select customer-name
from depositor)

nbraha-bazat e te dhenave 218


Example Query

Find all customers


select distinct who have both an account and a
customer-name
loan at
from the Perryridge
borrower, loan branch
where borrower.loan-number = loan.loan-number an
branch-name = “Perryridge” and
(branch-name, customer-name) in
(select branch-name, customer-name
from depositor, account
where depositor.account-number =
account.account-number)

 Note: Above query can be written in a much


simpler manner. The
formulation above is simply to illustrate
SQL features.
(Schema used in this example)
nbraha-bazat e te dhenave 219
Set Comparison

select distinct T.branch-name


Find all branches that have greater assets
from branch as T, branch
than some branch located in Brooklyn.
as S
where T.assets >
S.assets and
 Same query using > S.branch-city
some clause
=
‘Brooklyn’
select branch-name
from branch
where assets > some
(select assets
from branch
where branch-city = ‘Brooklyn’)

nbraha-bazat e te dhenave 220


Definition of Some Clause

0 some r t r s.t. (F <comp> t)


F <comp>
(5<Where )=
5 <comp> can be: 
some true (read: 5 < some tuple in the
6 relation)

0
(5< 5 )=
some false
0
(5 = some5 ) = true

0
(5  ) = true (since 0
5
some  5)
(= some)  in
However, ( some)  not in
nbraha-bazat e te dhenave 221
Definition of all Clause

0
F <comp> all5 r 
(5< all ) = t r (F <comp> t)
false
6
6
(5< all10 ) = true

4
(5 = all 5 )=
false
4
(5  all 6 ) = true (since 5  4 and 5  6)
( all)  not in
However, (= all)  in
nbraha-bazat e te dhenave 222
Example Query

Find branch-name
select the names of all branches that have greater
from
assets branch
than all branches located in Brooklyn.
where assets > all
(select assets
from branch
where branch-city = ‘Brooklyn’)

nbraha-bazat e te dhenave 223


Test for Empty Relations

The exists construct returns the


value true if the argument
subquery is nonempty.
exists r  r  Ø
not exists r  r = Ø

nbraha-bazat e te dhenave 224


Example Query

select distinct S.customer-name


Find
from all customers
depositor as S who have an account at
all branches
where not exists ( located in Brooklyn.
(select branch-name
from branch
where branch-city = ‘Brooklyn’)
except
(select R.branch-name
from depositor as T, account as R
where T.account-number = R.account-number and
S.customer-name = T.customer-name))

(Schema used in this example)


Note that X – Y = Ø  X Y
Note: Cannot write this query using = all and its variants

nbraha-bazat e te dhenave 225


Test for Absence of
Duplicate Tuples
The unique construct tests whether a subquery
has any duplicate tuples in its result.
Find all customers who have at most one account
at the Perryridge branch.
select T.customer-name
from depositor as T
where unique (
select R.customer-name
from account, depositor as R
where T.customer-name = R.customer-name
and
R.account-number = account.account-number
and
account.branch-name = ‘Perryridge’)
(Schema used in this example)

nbraha-bazat e te dhenave 226


Example Query

Find all
select distinct T.customer-name
customers who have at least two
from depositor T
accounts at the
where not unique (
Perryridge branch.
select R.customer-name
from account, depositor as R
where T.customer-name = R.customer-
name
and
R.account-number = account.account-
number
and
account.branch-name = ‘Perryridge’)
(Schema used in this example)

nbraha-bazat e te dhenave 227


Views

create view v as <query expression>


Provide a mechanism to hide certain data from
the view of certain users. To create a view we
where:
use the command:
<query expression> is any legal
expression
The view name is represented by v

nbraha-bazat e te dhenave 228


Example Queries
A view consisting of branches and their customers

create view all-customer as


(select branch-name, customer-name
from depositor, account
where depositor.account-number = account.account-numb
union
(select branch-name, customer-name
from borrower, loan
where borrower.loan-number = loan.loan-number)

 Find all customers of the Perryridge


branch
select customer-name
from all-customer
where branch-name = ‘Perryridge’

nbraha-bazat e te dhenave 229


Derived Relations

Find the average account balance of those


branches where the average account balance is
greater than $1200.
select branch-name, avg-balance
from (select branch-name, avg (balance)
from account
group by branch-name)
as result (branch-name, avg-balance)
where avg-balance > 1200
Note that we do not need to use the having
clause, since we compute the temporary (view)
relation result in the from clause, and the
attributes of result can be used directly in the
where clause.

nbraha-bazat e te dhenave 230


With Clause

With clause allows views to be defined locally


to a query, rather than globally. Analogous
to procedures in a programming language.
Find all accounts with the maximum balance

with max-balance(value) as
select max (balance)
from account
select account-number
from account, max-balance
where account.balance = max-
balance.value

nbraha-bazat e te dhenave 231


Complex Query using With
Clause
Find branch-total
with all branches where the-name
(branch total account
, value)deposit
as is
greater than the average of the total account
select branch-name, sum (balance)
deposits at all branches.
from account
group by branch-name
with branch-total-avg(value) as
select avg (value)
from branch-total
select branch-name
from branch-total, branch-total-avg
where branch-total.value >= branch-total-
avg.value

nbraha-bazat e te dhenave 232


Modification of the
Database – Deletion
Delete all account records at the Perryridge
branch
delete from account
where branch-name = ‘Perryridge’
Delete all accounts at every branch located in
Needham city.
delete from account
where branch-name in (select branch-name
from branch
where branch-city = ‘Needham’)
delete from depositor
where account-number in
(select account-number
from branch, account
where branch-city = ‘Needham’
and branch.branch-name = account.branch-name)
(Schema used in this example)

nbraha-bazat e te dhenave 233


Example Query

Deletefrom
delete theaccount
record of all accounts with
balances below the
where balance average
< (select at the bank.
avg (balance)
from account)

 Problem: as we delete tuples from deposit, the


average balance
changes
 Solution used in SQL:
1. First, compute avg balance and find all tuples to
delete
2. Next, delete all tuples found above (without
recomputing avg or
retesting the tuples)

nbraha-bazat e te dhenave 234


Modification of the
Database – Insertion

Add a new tuple to account


insert into account
values (‘A-9732’, ‘Perryridge’,1200)
or equivalently

insert into account (branch-name, balance,


account-number)
values (‘Perryridge’, 1200, ‘A-9732’)
Add a new tuple to account with balance set
to null
insert into account
values (‘A-777’,‘Perryridge’, null)

nbraha-bazat e te dhenave 235


Modification of the
Database – Insertion
Provide as a gift for all loan customers of the
Perryridge branch, a $200 savings account. Let the
loan number serve as the account number for the new
savings account
insert into account
select loan-number, branch-name, 200
from loan
where branch-name = ‘Perryridge’
insert into depositor
select customer-name, loan-number
from loan, borrower
where branch-name = ‘Perryridge’
and loan.account-number =
borrower.account-number
The select from where statement is fully evaluated
before any of its results are inserted into the
relation (otherwise queries like
insert into table1 select * from table1
would cause problems
nbraha-bazat e te dhenave 236
Modification of the
Database – Updates

Increase all accounts with balances over


$10,000 by 6%, all other accounts receive 5%.
Write two update statements:
update account
set balance = balance  1.06
where balance > 10000

update account
set balance = balance  1.05
where balance  10000
The order is important
Can be done better using the case statement (next
slide)

nbraha-bazat e te dhenave 237


Case Statement for
Conditional Updates

Same query as before: Increase all


accounts with balances over $10,000
by 6%, all other accounts receive 5%.

update account
set balance = case
when balance <=
10000 then balance *1.05
else balance *
1.06
end

nbraha-bazat e te dhenave 238


Update
Create a viewof
of allaloan
View
data in loan relation, hiding
the amount attribute
create view branch-loan as
select branch-name, loan-number
from loan
Add a new tuple to branch-loan
insert into branch-loan
values (‘Perryridge’, ‘L-307’)
This insertion must be represented by the
insertion of the tuple
(‘L-307’, ‘Perryridge’, null)
into the loan relation
Updates on more complex views are difficult or
impossible to translate, and hence are disallowed.
Most SQL implementations allow updates only on
simple views (without aggregates) defined on a
single relation

nbraha-bazat e te dhenave 239


Transactions
A transaction is a sequence of queries and update
statements executed as a single unit
Transactions are started implicitly and terminated by one of
commit work: makes all updates of the transaction permanent in
the database
rollback work: undoes all updates performed by the transaction.
Motivating example
Transfer of money from one account to another involves two
steps:
deduct from one account and credit to another
If one steps succeeds and the other fails, database is in an
inconsistent state
Therefore, either both steps should succeed or neither
should
If any step of a transaction fails, all work done by
the transaction can be undone by rollback work.
Rollback of incomplete transactions is done
automatically, in case of system failures

nbraha-bazat e te dhenave 240


Transactions (Cont.)

In most database systems, each SQL


statement that executes successfully is
automatically committed.
Each transaction would then consist of only a
single statement
Automatic commit can usually be turned off,
allowing multi-statement transactions, but
how to do so depends on the database system
Another option in SQL:1999: enclose
statements within
begin atomic

end

nbraha-bazat e te dhenave 241


Joined Relations

Join operations take two relations and return as a


result another relation.
These additional operations are typically used as
subquery expressions in the from clause
Join condition – defines which tuples in the two
relations match, and what attributes are present
in the result of the join.
Join type – defines how tuples in each relation
that do not match any
Join Types Jointuple in the other relation
Conditions
(based on the join condition)
natural
are treated.
inner join
left outer join on <predicate>
right outer join using (A1, A2, ..., An)
full outer join

nbraha-bazat e te dhenave 242


Joined Relations – Datasets
for Examples
Relation loan
loan-number branch-name amount

L-170 Downtown 3000


L-230 Redwood 4000
L-260 Perryridge 1700

 Relation borrower

customer-name
loan-number

Jones L-170
Smith L-230
Hayes L-155
 Note: borrower information missing for
L-260 and loan information missing for
L-155

nbraha-bazat e te dhenave 243


Joined Relations – Examples

loan-number branch-name amount customer-name


loan-number
loan inner join borrower on
loan.loan-number = borrower.loan-number
L-170 Downtown 3000 Jones L-170
L-230 Redwood 4000 Smith L-230

 loan left outer join borrower on


loan.loan-number = borrower.loan-
number
loan-number branch-name amount customer-name
loan-number

L-170 Downtown 3000 Jones L-170


L-230 Redwood 4000 Smith L-230
L-260 Perryridge 1700 null null

nbraha-bazat e te dhenave 244


Joined Relations – Examples

loan-number branch-name amount customer-name


loan natural inner join borrower
L-170 Downtown 3000 Jones
L-230 Redwood 4000 Smith

 loan natural right outer join borrower

loan-number branch-name amount customer-name

L-170 Downtown 3000 Jones


L-230 Redwood 4000 Smith
L-155 null null Hayes

nbraha-bazat e te dhenave 245


Joined Relations – Examples
loan full outer join borrower using (loan-number)

loan-number branch-name amount customer-name

L-170 Downtown 3000 Jones


L-230 Redwood 4000 Smith
L-260 Perryridge 1700 null
L-155 null null Hayes

 Find all customers who have either an


account or a loan (but not both) at the bank.

select customer-name
from (depositor natural full outer join borrower)
where account-number is null or loan-number is nu

nbraha-bazat e te dhenave 246


Data Definition Language
(DDL)
Allows the specification of not only a set of
relations but also information about each
relation, including:

The schema for each relation.


The domain of values associated with each attribute.
Integrity constraints
The set of indices to be maintained for each relations.
Security and authorization information for each
relation.
The physical storage structure of each relation on disk.

nbraha-bazat e te dhenave 247


Domain Types in SQL
char(n). Fixed length character string, with user-specified
length n.
varchar(n). Variable length character strings, with user-
specified maximum length n.
int. Integer (a finite subset of the integers that is machine-
dependent).
smallint. Small integer (a machine-dependent subset of the
integer domain type).
numeric(p,d). Fixed point number, with user-specified precision
of p digits, with n digits to the right of decimal point.
real, double precision. Floating point and double-precision
floating point numbers, with machine-dependent precision.
float(n). Floating point number, with user-specified precision of
at least n digits.
Null values are allowed in all the domain types. Declaring an
attribute to be not null prohibits null values for that attribute.
create domain construct in SQL-92 creates user-defined domain
types
create domain person-name char(20) not null

nbraha-bazat e te dhenave 248


Date/Time Types in SQL
(Cont.)
date. Dates, containing a (4 digit) year, month and date
E.g. date ‘2001-7-27’
time. Time of day, in hours, minutes and seconds.
E.g. time ’09:00:30’ time ’09:00:30.75’
timestamp: date plus time of day
E.g. timestamp ‘2001-7-27 09:00:30.75’
Interval: period of time
E.g. Interval ‘1’ day
Subtracting a date/time/timestamp value from another gives an
interval value
Interval values can be added to date/time/timestamp values
Can extract values of individual fields from
date/time/timestamp
E.g. extract (year from r.starttime)
Can cast string types to date/time/timestamp
E.g. cast <string-valued-expression> as date

nbraha-bazat e te dhenave 249


Create Table Construct

An SQL relation is defined using the create table


command:
create table r (A1 D1, A2 D2, ..., An Dn,
(integrity-constraint1),
...,
(integrity-constraintk))
r is the name of the relation
each Ai is an attribute name in the schema of relation r
Di is the data type of values in the domain of attribute
Ai
Example:
create table branch
(branch-name char(15) not null,
branch-city char(30),
assets integer)

nbraha-bazat e te dhenave 250


Integrity Constraints in
Create
not null Table
primary key (A1, ..., An)
check (P), where P is a predicate
Example: Declare branch-name as the
primary key for branch and ensure that the
values of assets are non-negative.
create table branch
(branch-name char(15),
branch-city char(30)
assets integer,
primary key (branch-name),
check (assets >= 0))

primary key declaration on an attribute


automatically ensures not null in SQL-
92 onwards, needs to be explicitly
stated in SQL-89nbraha-bazat e te dhenave 251
Drop and Alter Table
Constructs
The drop table command deletes all
information about the dropped relation from
the database.
The alter table command is used to add
attributes to an existing relation.
alter table r add A D
where A is the name of the attribute to be
added to relation r and D is the domain of A.
All tuples in the relation are assigned null as the
value for the new attribute.
The alter table command can also be used to
drop attributes of a relation
alter table r drop A
where A is the name of an attribute of
relation r
Dropping of attributes not supported by many
databases

nbraha-bazat e te dhenave 252


Embedded SQL

The SQL standard defines embeddings of SQL in a


variety of programming languages such as Pascal, PL/I,
Fortran, C, and Cobol.
A language to which SQL queries are embedded is
referred to as a host language, and the SQL
structures permitted in the host language comprise
embedded SQL.
The basic form of these languages follows that of the
System R embedding of SQL into PL/I.
EXEC SQL statement is used to identify embedded
SQL request to the preprocessor
EXEC SQL <embedded SQL statement > END-EXEC
Note: this varies by language. E.g. the Java embedding
uses
# SQL { …. } ;

nbraha-bazat e te dhenave 253


Example Query
From within a host language, find the names
and cities of customers with more than the
variable amount dollars in some account.

Specify the query in SQL and declare a cursor for it


EXEC SQL
declare c cursor for
select customer-name, customer-city
from depositor, customer, account
where depositor.customer-name =
customer.customer-name
and depositor account-number =
account.account-number
and account.balance > :amount
END-EXEC

nbraha-bazat e te dhenave 254


Embedded SQL (Cont.)

The open statement causes the query to be evaluated


EXEC SQL open c END-EXEC
The fetch statement causes the values of one tuple in the
query result to be placed on host language variables.
EXEC SQL fetch c into :cn, :cc END-EXEC
Repeated calls to fetch get successive tuples in the query
result
A variable called SQLSTATE in the SQL communication area
(SQLCA) gets set to ‘02000’ to indicate no more data is
available
The close statement causes the database system to delete
the temporary relation that holds the result of the query.
EXEC SQL close c END-EXEC
Note: above details vary with language. E.g. the Java
embedding defines Java iterators to step through result
tuples.

nbraha-bazat e te dhenave 255


Updates Through Cursors
 Can update tuples fetched by cursor by
declaring that the cursor is for update
declare c cursor for
select *
from account
where branch-name = ‘Perryridge’
for update
 To update tuple at the current location of
cursor
update account
set balance = balance + 100
where current of c

nbraha-bazat e te dhenave 256


Dynamic SQL
Allows programs to construct and submit SQL
queries at run time.
Example of the use of dynamic SQL from within a
C program.

char * sqlprog = “update account


set balance = balance * 1.05
where account-number = ?”
EXEC SQL prepare dynprog from :sqlprog;
char account [10] = “A-101”;
EXEC SQL execute dynprog using :account;
The dynamic SQL program contains a ?, which is a
place holder for a value that is provided when the
SQL program is executed.

nbraha-bazat e te dhenave 257


ODBC

Open DataBase Connectivity(ODBC)


standard
standard for application program to
communicate with a database server.
application program interface (API) to
open a connection with a database,
send queries and updates,
get back results.
Applications such as GUI,
spreadsheets, etc. can use ODBC

nbraha-bazat e te dhenave 258


ODBC (Cont.)
Each database system supporting ODBC provides a
"driver" library that must be linked with the client
program.
When client program makes an ODBC API call, the
code in the library communicates with the server to
carry out the requested action, and fetch results.
ODBC program first allocates an SQL environment,
then a database connection handle.
Opens database connection using SQLConnect().
Parameters for SQLConnect:
connection handle,
the server to which to connect
the user identifier,
password
Must also specify types of arguments:
SQL_NTS denotes previous argument is a null-terminated
string.

nbraha-bazat e te dhenave 259


ODBC Code
int ODBCexample()
{
RETCODE error;
HENV env; /* environment */
HDBC conn; /* database connection */
SQLAllocEnv(&env);
SQLAllocConnect(env, &conn);
SQLConnect(conn, "aura.bell-labs.com", SQL_NTS,
"avi", SQL_NTS, "avipasswd", SQL_NTS);
{ …. Do actual work … }

SQLDisconnect(conn);
SQLFreeConnect(conn);
SQLFreeEnv(env);
}

nbraha-bazat e te dhenave 260


ODBC Code (Cont.)
Program sends SQL commands to the database
by using SQLExecDirect
Result tuples are fetched using SQLFetch()
SQLBindCol() binds C language variables to
attributes of the query result
When a tuple is fetched, its attribute values are
automatically stored in corresponding C variables.
Arguments to SQLBindCol()
ODBC stmt variable, attribute position in query result
The type conversion from SQL to C.
The address of the variable.
For variable-length types like character arrays,
The maximum length of the variable
Location to store actual length when a tuple is fetched.
Note: A negative value returned for the length field indicates null value

Good programming requires checking results of


every function call for errors; we have omitted
most checks for brevity.

nbraha-bazat e te dhenave 261


ODBC
Main bodyCode (Cont.)
of program
char branchname[80];
float balance;
int lenOut1, lenOut2;
HSTMT stmt;
SQLAllocStmt(conn, &stmt);
char * sqlquery = "select branch_name, sum (balance)
from account
group by branch_name";
error = SQLExecDirect(stmt, sqlquery, SQL_NTS);
if (error == SQL_SUCCESS) {
SQLBindCol(stmt, 1, SQL_C_CHAR, branchname ,
80, &lenOut1);
SQLBindCol(stmt, 2, SQL_C_FLOAT, &balance,
0 , &lenOut2);
while (SQLFetch(stmt) >= SQL_SUCCESS) {
printf (" %s %g\n", branchname, balance);
}
}
SQLFreeStmt(stmt, SQL_DROP);
nbraha-bazat e te dhenave 262
More ODBC Features
Prepared Statement
SQL statement prepared: compiled at the database
Can have placeholders: E.g. insert into account
values(?,?,?)
Repeatedly executed with actual values for the
placeholders
Metadata features
finding all the relations in the database and
finding the names and types of columns of a query result
or a relation in the database.
By default, each SQL statement is treated as a
separate transaction that is committed
automatically.
Can turn off automatic commit on a connection
SQLSetConnectOption(conn, SQL_AUTOCOMMIT, 0)}
transactions must then be committed or rolled back
explicitly by
SQLTransact(conn, SQL_COMMIT) or
SQLTransact(conn, SQL_ROLLBACK)
nbraha-bazat e te dhenave 263
ODBC Conformance Levels

Conformance levels specify subsets of


the functionality defined by the
standard.
Core
Level 1 requires support for metadata
querying
Level 2 requires ability to send and retrieve
arrays of parameter values and more
detailed catalog information.
SQL Call Level Interface (CLI)
standard similar to ODBC interface, but
with some minor differences.

nbraha-bazat e te dhenave 264


JDBC

JDBC is a Java API for communicating with


database systems supporting SQL
JDBC supports a variety of features for querying
and updating data, and for retrieving query
results
JDBC also supports metadata retrieval, such as
querying about relations present in the database
and the names and types of relation attributes
Model for communicating with the database:
Open a connection
Create a “statement” object
Execute queries using the Statement object to send
queries and fetch results
Exception mechanism to handle errors

nbraha-bazat e te dhenave 265


JDBC
public staticCode
void JDBCexample(String dbid, String
userid, String passwd)
{
try {
Class.forName ("oracle.jdbc.driver.OracleDriver");
Connection conn =
DriverManager.getConnection( "jdbc:oracle:thin:@aura.bell-
labs.com:2000:bankdb", userid, passwd);
Statement stmt = conn.createStatement();
… Do Actual Work ….
stmt.close();
conn.close();
}
catch (SQLException sqle) {
System.out.println("SQLException : " + sqle);
}
}

nbraha-bazat e te dhenave 266


JDBC Code (Cont.)
Update to database
try {
stmt.executeUpdate( "insert into account values
('A-9732', 'Perryridge',
1200)");
} catch (SQLException sqle) {
System.out.println("Could not insert tuple. " + sqle);
}
Execute query and fetch and print results
ResultSet rset = stmt.executeQuery( "select
branch_name, avg(balance)
from account
group by
branch_name");
while (rset.next()) {
System.out.println(
rset.getString("branch_name") + " " +
rset.getFloat(2));
}
nbraha-bazat e te dhenave 267
JDBC Code Details

Getting result fields:


rs.getString(“branchname”) and
rs.getString(1) equivalent if
branchname is the first argument of
select result.
Dealing with Null values
int a = rs.getInt(“a”);
if (rs.wasNull())
Systems.out.println(“Got null value”);

nbraha-bazat e te dhenave 268


Prepared Statement
Prepared statement allows queries to be compiled
and executed multiple times with different
arguments
PreparedStatement pStmt = conn.prepareStatement(
“insert into account
values(?,?,?)”); pStmt.setString(1, "A-9732");
pStmt.setString(2, "Perryridge");
pStmt.setInt(3, 1200);
pStmt.executeUpdate();

pStmt.setString(1, "A-9733");
pStmt.executeUpdate();
Beware: If value to be stored in database contains
a single quote or other special character, prepared
statements work fine, but creating a query string
and executing it directly would result in a syntax
error!

nbraha-bazat e te dhenave 269


Other SQL Features
SQL sessions
client connects to an SQL server,
establishing a session
executes a series of statements
disconnects the session
can commit or rollback the work
carried out in the session
An SQL environment contains
several components, including a
user identifier, and a schema,
which identifies which of several
schemas a session is using.

nbraha-bazat e te dhenave 270


Schemas, Catalogs, and
Environments

Three-level hierarchy for naming relations.


Database contains multiple catalogs
each catalog can contain multiple schemas
SQL objects such as relations and views are contained
within a schema
e.g. catalog5.bank-schema.account
Each user has a default catalog and schema, and the
combination is unique to the user.
Default catalog and schema are set up for a
connection
Catalog and schema can be omitted, defaults are
assumed
Multiple versions of an application (e.g. production
and test) can run under separate schemas

nbraha-bazat e te dhenave 271


Procedural Extensions and
Stored Procedures
SQL provides a module language
permits definition of procedures in SQL, with
if-then-else statements, for and while loops,
etc.
more in Chapter 9
Stored Procedures
Can store procedures in the database
then execute them using the call statement
permit external applications to operate on the
database without knowing about internal
details
These features are covered in Chapter 9
(Object Relational Databases)

nbraha-bazat e te dhenave 272


Extra Material on JDBC
and Application
Architectures

nbraha-bazat e te dhenave 273


Transactions in JDBC

As with ODBC, each statement gets


committed automatically in JDBC
To turn off auto commit use
conn.setAutoCommit(false);
To commit or abort transactions use
conn.commit() or
conn.rollback()
To turn auto commit on again, use
conn.setAutoCommit(true);

nbraha-bazat e te dhenave 274


Procedure and Function Calls
in JDBC
JDBC provides a class
CallableStatement which allows SQL
stored procedures/functions to be
invoked.
CallableStatement cs1 =
conn.prepareCall( “{call proc (?,?)}” ) ;
CallableStatement cs2 =
conn.prepareCall( “{? = call func
(?,?)}” );

nbraha-bazat e te dhenave 275


Result Set MetaData

The class ResultSetMetaData provides information


about all the columns of the ResultSet.
Instance of this class is obtained by getMetaData(
) function of ResultSet.
Provides Functions for getting number of columns,
column name, type, precision, scale, table from
which the column is derived etc.
ResultSetMetaData rsmd = rs.getMetaData ( );
for ( int i = 1; i <= rsmd.getColumnCount( ); i++ ) {
String name = rsmd.getColumnName(i);
String typeName =
rsmd.getColumnTypeName(i);
}

nbraha-bazat e te dhenave 276


Database Meta Data
The class DatabaseMetaData provides information about database
relations
Has functions for getting all tables, all columns of the table,
primary keys etc.
E.g. to print column names and types of a relation
DatabaseMetaData dbmd = conn.getMetaData( );
ResultSet rs = dbmd.getColumns( null, “BANK-DB”, “account”, “%” );
//Arguments: catalog, schema-pattern, table-pattern,
column-pattern
// Returns: 1 row for each column, with several
attributes such as
// COLUMN_NAME, TYPE_NAME, etc.
while ( rs.next( ) ) {
System.out.println( rs.getString(“COLUMN_NAME”) ,

rs.getString(“TYPE_NAME”);
}
There are also functions for getting information such as
Foreign key references in the schema
Database limits like maximum row size, maximum no. of connections, etc

nbraha-bazat e te dhenave 277


Application Architectures

Applications can be built using one


of two architectures
Two tier model
Application program running at user
site directly uses JDBC/ODBC to
communicate with the database
Three tier model
Users/programs running at user sites
communicate with an application server.
The application server in turn
communicates with the database

nbraha-bazat e te dhenave 278


Two-tier Model

E.g. Java code runs at client site and


uses JDBC to communicate with the
backend server
Benefits:
flexible, need not be restricted to
predefined queries
Problems:
Security: passwords available at client site,
all database operation possible
More code shipped to client
Not appropriate across organizations, or in
large ones like universities

nbraha-bazat e te dhenave 279


Three Tier Model
CGI Program

Application/HTTP JDBC Database


Servlets Server
Server

HTTP/Application Specific Protocol

Network

Client Client Client

nbraha-bazat e te dhenave 280


Three-tier Model (Cont.)

E.g. Web client + Java Servlet using JDBC


to talk with database server
Client sends request over http or
application-specific protocol
Application or Web server receives request
Request handled by CGI program or servlets
Security handled by application at server
Better security
Fine granularity security
Simple client, but only packaged
transactions

nbraha-bazat e te dhenave 281


End of Chapter

nbraha-bazat e te dhenave 282


The loan and borrower
Relations

nbraha-bazat e te dhenave 283


The Result of loan inner
join borrower on loan.loan-
number = borrower.loan-
number

nbraha-bazat e te dhenave 284


The Result of loan left
outer join borrower on
loan-number

nbraha-bazat e te dhenave 285


The Result of loan natural
inner join borrower

nbraha-bazat e te dhenave 286


Join Types and Join
Conditions

nbraha-bazat e te dhenave 287


The Result of loan natural
right outer join borrower

nbraha-bazat e te dhenave 288


The Result of loan full
outer join borrower
using(loan-number)

nbraha-bazat e te dhenave 289


SQL Data Definition for Part of
the Bank Database

nbraha-bazat e te dhenave 290


“record based logical model”
Ky model mundeson shikim dhe pershkrimin
e te dhenave ne nivelin logjike dhe
shikues.Quhet keshtu se te dhenat na ipen
ne forme te fiksuare .Dallojme disa modele
te kesaj trajte si
1. Modeli racional(rational model)
2. Modeli I rrjetes(network model)
3. Modeli hirearkik(hierarchical model)
4. Ndryshimet ne mes te modeleve(differences
among the models)

nbraha-bazat e te dhenave 291


Nje shembull tjeter I
modelit relacional Atributet

customer- customer- customer- account-


Customer-id name street city number

192-83-7465 Johnson
Alma Palo Alto A-101
019-28-3746 Smith
North Rye A-215
192-83-7465 Johnson
Alma Palo Alto A-201
321-12-3123 Jones
Main Harrison A-217
019-28-3746 Smith
North Rye A-201

nbraha-bazat e te dhenave 292


Shembull i nje baze relacionale

nbraha-bazat e te dhenave 293


“network model”
Modeli I rrjetes eshte I paraqitur si nje
teresi e recordeve dhe lidhmerite e te
dhenave jane te paraqitura permes te
“linkeve” te cilat mund te shihen si
“pointer”.Nje paraqitje e tille e te
dhenave te tabeles b nga rasti i kaluare
do te dukej keshtu
A- 500
Johnson 192-83- Alma Palo
101
7465 alto
A- 900
Smith 019-28- North Rye
201
3746

nbraha-bazat e te dhenave 294


“modeli hierarchical”
Ky model eshte i ngjashem sikurse ai i
rrjetes me dallim te vetem ku organizimi i
te dhenave behet ne forme te rrenjes
d.m.th fillohet nga nje trung dhe
vazhdohet me tej me te ,si ne figuren e
paraqitur me poshte
RRENJA

Jonhson
Smith
Hayes

A-101 A-201

nbraha-bazat e te dhenave 295


“Differenca ne mes te
modeleve”
Modeli relacional dallon nga ai i
rrjetes dhe hirearkik ne ate pasi
nuk perdore “linke ” dhe
“pointera”,perderisa modeli
relational i lidhe te dhenat ne baze
te vlerave te tyre qe i permbajne.

nbraha-bazat e te dhenave 296


Transformimi i modeleve
relacionale ne SQL
Ne vazhdim do te shohim se si
nje model e ne veqanti modeli E-R
shprehet ne gjuhen e SQL-se.Para
se gjithash le te marrim nje model
logjike te bazes se te dhenave te
paraqitur si me pare (te modeli
fizike dhe logjike ).

nbraha-bazat e te dhenave 297


Paraqitja e nje modeli logjike

nbraha-bazat e te dhenave 298


Paraqitja e ER-se ne SQL
Nje paraqitje e tille e modelit logjike te
bazes relacionale do te kishte kete
paraqitje
Per entitetin e pare behet pershkrimi i
atributeve te tije qe e pershkojne e per
kete behet ndertimi I nje tabele
Create table studentat
(emrist,
Mbiemrist
Fotografiast
adresast);
Me pas ndertohet paraqitja e tabeles se
kurseve
nbraha-bazat e te dhenave 299
Paraqitja e ER-se ne SQL(1)
Pershkrimi I atributeve tjera per
entitetin e kurseve do te ishte disi
keshtu :
Create table kurset
(emrikursit
Kohakursit
Nivelikursit
Klasakursit
);

nbraha-bazat e te dhenave 300


Paraqitja e ER-se ne SQL
Ne paraqitjen e diagramit te mesem
eshte bere lidhmeria e te dhenave
nga ato dy entitete te shqyrtura e
te cilat do te jen te disa llojta edhe
do te ceken me vone.

nbraha-bazat e te dhenave 301


Modeli relacional i te dhenave
Per ilustrim te ketij modeli le te marrim dy
bashkesi te te dhenave (qe paraqesin
entitete)te shprehura me A={1,2,3} dhe
B={a,b,c,d}.Ku elementet e bashkesive
paraqesin atribute.Nje raport i tyre mund te
jete edhe produkti kartezian (matematike ) i
ketyre dy bashkesive:
AxB={
(1,a),(1,b),(1,c),(1,d),
(2,a),(2,b)(2,c)(2,d),
(3,a),(3,b),(3,c),(3,d)}
Qdo nenbashkesi e AxB paraqet nje relacion
matematike te atyre bashkesive .Ne baze te
kesaj modelet e marra ne kete menyre per
atributet e entiteve quhen modele
relacionale te bazave te te dhenave
nbraha-bazat e te dhenave 302
Modeli relacional
Siq shihet nga larte modeli i tille
dallohet per nga paraqitja e formes
se tije ,sipas trajtes horizontale dhe
vertikale te te dhenave .Ku ne secilin
rresht paraqitet vetem nje atribut I
entitetit te pare ,ndersa ne secilen
shtylle vetem nje atribute I
entitetit te dyte .

nbraha-bazat e te dhenave 303


“relation model”
Praktikisht modeli I dhene mund te
paraqitet ne forme te tabelave te te
dhenave dhe lidhjet e tyre jane te
organizuara ne ate menyre qe te dhenat
jane te paraqitura ne kuader te nje
tabele permes te kolonave dhe
rreshtave ,nje paraqitje e tille do te
dukej keshtu ATRIBUTET

Emri Mbiemri gjinia id mosha

emri1 mbiemri1 gjinia1 id1 mosha1

nbraha-bazat e te dhenave 304


“Database language”
Sistemet e bazave te te dhenave
pershkruhen me ane te dy tipeve
te gjuheve dhe njera per
specifikim te skemave te te
dhenave dhe tjetra per ndertim
dhe ndryshim te pyetsoreve,keto
ndryshe njihen me emrin
“Data definition language(DDL)”
“Data manipulation language(DML)”

nbraha-bazat e te dhenave 305


“data definition language(DDL)”
Me keta urdhera mundesohet definimi i
te dhenave themelore ne forme te
tabelave ,keto te dhena vendosen ne
fajlle te quajtura “data dictionary”,ku
keto te fundit permbajne “metadata”(te
dhena mbi te dhenat ne ate baze),nje
shembull i tille do te ishte ky ne vazhdim:
Create table studenti(
Emri char(30),
Mbiemri char(20),
Mosha integer)

nbraha-bazat e te dhenave 306


“Data manipulation
language(DML)”
Me ane te ketyre urdherave na mundesohet
qe ne kuader te te dhenave te krijuara me
pare te bejme Venjen e vlerave te reja
,Fshirjen e tyre ,Ndryshimin etj.
Na mundesohet edhe kerkimi i te dhenave dhe
plotesimi I kushteve te ndryshme qe arrihet
me ane te pyetsoreve.Dallojme dy tipe te
“DML” urdherave ,ato procedurale dhe jo
procedurale.Keto te parat kerkojne te dine
se cfare te dhena duhen dhe si te merren ato
,ndersa te dytat kerkojn te dine se cfare te
dhena te duhen pa e specifikue se si me I
marre ato.

nbraha-bazat e te dhenave 307


Disa te dhena te entiteteve
Ne vazhdim per ilustrim te
manipulimit dhe punes me urdherat
SQL marrim disa entitete dhe
atribute te tyre te dhena permes
tabelave te meposhtme .

nbraha-bazat e te dhenave 308


Tabela “account”

nbraha-bazat e te dhenave 309


Tabela “deposite”

nbraha-bazat e te dhenave 310


Tabela “loan”

nbraha-bazat e te dhenave 311


Tabela “borrower”

nbraha-bazat e te dhenave 312


Tabela “branch”

nbraha-bazat e te dhenave 313


Tabela “payment”

nbraha-bazat e te dhenave 314


DML-SQL
Nje shembull se si te merren te dhenat nga
baza eshte ky qe rekordi “customer-id”
kerkohet te jet ”192-83-7465”
select customer.customer-name
from customer
where customer.customer-id = ‘192-83-
7465’
Sqarimet ne lidhje me te dhenat e mesiperme
te cilat jane marre :
Me ane te urdherit “select” behet zgjedhja e
te dhenave qe deshirojme me I pa me emer te
fushes dhe tabeles,me urdherin “from ”
tregohet vendi se ku ato duhet te shihen(pra
tabela),me urdherin “where ” ipet kushti qe
ato duhet te plotesojne.
nbraha-bazat e te dhenave 315
DML-SQL
Shembull tjeter i veprimeve me urdherat
SQL eshte dhene si me poshte :
Te gjindet “account balances”nga te gjithe
“ customer” me “customer-id=192-83-7465”
select account.balance
from depositor, account
where depositor.customer-id = ‘192-83-
7465’
and
depositor.account-number =
account.account-number
Urdherat e ketij pyetsori jane te njejte me
ate te meparshmin ,dallimi qendron ne
faktin se ketu jane perdorur dy kushte te
kerkimit te te dhenave dhe ate permes te
operatorit “and”(dhe ) I cili do te
permendet me vone .

nbraha-bazat e te dhenave 316


Shfrytezuesit e bazave te
te dhenave
Shfrytezuesit jane me menyra te
ndryshme te shikimit te te dhenave p.sh
Aplikuesit e programit – I shohin te
dhenat permes urdherave DML
Shfrytezuesit e avancuare – punojne me
pyetsore e keshtu me radhe ,varesisht
nga niveli I njohurive kemi edhe menyra
te ndryshme te qasjes se te dhenave ne
nje baze te te dhenave

nbraha-bazat e te dhenave 317


Elementet themelore ne SQL
Struktura bazike
Operatoret e bashkesive
Funksionet Aggregate
Vlerat zerro
Nenpyetsoret (nested subquerys)
Relacionet e perfituara
Shikimet (Views)
Modifikimi I bazes
Relacionet e lidhjes (Joined Relations)
Data Definition Language
Embedded SQL, ODBC and JDBC

nbraha-bazat e te dhenave 318


Struktura baze
Le te marrim nje shembull te te
dhenave per nje baze relacionale me
ane te tabelave te meposhtme dhe
shqyrtojme lidhjen e te dhenave me
relacionet algjebrike (matematike).

nbraha-bazat e te dhenave 319


Skema e marre ne shembull

nbraha-bazat e te dhenave 320


Structura baze
SQL eshte e bazuare ne bashkesi dhe relac-
ione operacionale me modifikime dhe
trashegime
Skema e pergjithshme do te kishte nje
pamje te ketille sipas shembullit te
dhene.Nje shembull I tille do te kishte kete
forme:
select A1, A2, ..., An
from r1, r2, ..., rm
where P
Ai paraqesin atributet
ri paraqesin relacionet
P eshte predikate
Ky pyetsore eshte ekuivalent me kete shprehje
relacionale algjebrike.
A1, A2, ..., An(P (r1 x r2 x ... x rm))
Rezultati i nje pyetsori eshte nje relacione.
nbraha-bazat e te dhenave 321
Urdheri “select”
Urdheri select paraqet atributet e nje (apo
disa ) entiteti ne kuader te nje pyetsori
P.sh te gjinden emrat e te gjitha fillialave
(branches) ne tabelen huaja (loan)
select branch-name
from loan
Kjo do te kishte nje paraqitje ne algjebren
relacionale si vijon:
branch-name(loan)
shenim: SQL nuk e dallon simbolin ‘-’ ne
mes te karaktereve
p,.sh ne vend te branch_name merret branch-
name
Ne vijim do te marrim ‘-’ .
Shenim : ne SQL shenimi I komandave nuk
ka rrole nga forma e shenimit te shkronjave
te vogla apo te medha por I te
nbraha-bazat e te dhenave
dhenave po.
322
Urdheri “select” (vazh.)
SQL lejon vlerat e shumefishta ne kuader te
nje pyetsori.
Per te bere eliminimin e tille urdheri
“select”perdoret ne kombinim me urdherin
distinct dhe ate pas urdherit select.
Te gjinden emrat ne te gjitha filliallat e huase
(loan) dhe eliminoj te shumefishtat
select distinct branch-name
from loan
Ndersa per shikim te te dhenave te
teresishme pa perjashtim edhe atyre te
shumefishta perdoret urdheri “select” ne
kombinim me all .
select all branch-name
from loan

nbraha-bazat e te dhenave 323


Urdheri “ select” (vazhd.)
Zgjedhja e pernjehershme e te gjitha
atributeve ne nje tabele behet me
perdorim te urdherit select si ne vijim

select *from loan


Urdheri select mund te permban ne
vete operator aritmetike, +, –, , dhe /.
P.sh nese merret pyetsori :
select loan-number,branch-name,
amount  100
from loan
Ateher ky do te na jep rezultatin I cili
eshte I njejte me ate te huase (loan )
por te shumezuare me 100
nbraha-bazat e te dhenave 324
Urdheri “ where “
Urdheri where na specifikon kushtet te
cilat duhet ti plotesojne atributet e
entiteteve te cilat shqyrtohen ne ate raste
Funksion ne lidhmeri me urdherin select.
P.sh me gjete te gjithe numrat e huase nga
huaja (loan) dhe filiala Perryridge me numer
te huase me te madhe se sa $1200.
select loan-number
from loan
where branch-name = ‘Perryridge’ and
amount > 1200
Te dhenat ne kuader te nje pyetsori mund te
kerkohen edhe me ane te operatoreve logjike
and, or dhe not.
Ne te dhena mund te aplikohen edhe
operatoret aritmetike.
nbraha-bazat e te dhenave 325
Pershkrimi i rrolit te
pyetsoreve
Pyetsoret formohen me ane te ketyre
kritereve te pershkruara me poshte:
Emrin e tabeles (table)
Radhitjen e informates (sortim)
Kushtezimin e marrjes ne konsiderim
te informates
Kriterin e zgjedhjes sipas operatorit
logjike ,aritmetike,te bashkesive.
Edhe ndonje elemente tjeter shtese

nbraha-bazat e te dhenave 326


Rolet e operatoreve ne
organizimin e pyetsoreve
Ne funksion te pyetsoreve dallojme disa
tipe te operatoreve te cilet perdoren
per ndertim te pyetsoreve :
1.Operatoret logjike :“and”(operatori dhe),
“or”(ose),”eqv”(ekuivalent),”imp”(implikacion
),”xor”(ekslusiv ose),”not”(jo).
2.Operatoret artimetike:+(mbl.),-
(zbr.),*(shum.),/(pjes.),\(pjes.i
plote),^(fuqi),mod(modulo).
3.Operatoret krahasues(racional):=(bara.)
<(vog.),>(madh.),<>(!=)(ndrysh.),<=(!<)(vog.ose
bara.),>=(!>)(madhe ose baraz.).

nbraha-bazat e te dhenave 327


Operatoret
4.Operatoret tekstual(string):
&(operatori i bashkimit),”like”(operatori
sikurse),”not like”(operatori i cili
perjashton vlerat sikurse ato te
zgjedhurat).
5.Operatoret e perzier jane:
“between”(ndermjet),”in”(ne),”is”(nga).
Ne vijim shohim format e paraqitjes se
operatoreve te tille veq e veq.

nbraha-bazat e te dhenave 328


Perdorimi i operatoreve
logjike
Perdorimi i operatorit logjike “and” ne
pyetsore (ne trajten konstruktive )
realizohet sipas funksionit te tij qe
paraqitet me tabelen vijuese
p q pq
E vertet E vertet E vertet
E vertet E pavertet E pavertet
E pavertet E vertet E pavertet
E pavertet E pavertet E pavertet

nbraha-bazat e te dhenave 329


Perdorimi i operatoreve
logjike(v-1)
Rroli i operatorit logjike “or ”
realizohet sipas vetive te tij te
paraqitur ne trajten e meposhtme
p q pq

T T T

T  T

 T T

  

nbraha-bazat e te dhenave 330


Vecorite e operatoreve
logjike
Operatoret logjike funksionojne per
veqim ,zgjedhje , perjashtim te
informatave etj
Operatori “and” funksionon ne ato
raste kur te dy (apo me teper ) te
dhenat te cilat shqyrtohen
plotesohen.
Operatori “or” funksionon ne ato raste
kur te pakten njera nga te dhenat e
marra ne shqyrtim plotesohet.

nbraha-bazat e te dhenave 331


Forma paraqitese e
operatoreve logjike
Operatoret logjike ,perveq operatorit
“not”, jane operator binar(dyshe) ,ndersa
“not” eshte unar(njesh). forma paraqitese
e tyre eshte e njejte ,ndersa e operatorit
“not” dallon.Kete do ta japim me posht.
Operatori “and”-paraqitet si me poshte
[shprehja1] and [shprehja2]
Ngjashem paraqitet “or”.
Operatori “not” ka kete forme te
paraqitjes :p.sh
Not [shprehja e dhene ]<188

nbraha-bazat e te dhenave 332


Forma paraqitese e
operatoreve aritmetike
Operatori “+” ka kete trajte
[shprehja1] + [shprehja2]
Ne menyre analoge behet edhe
paraqitja e operatoreve te tjere p.sh
[shprehja1] - ([shprehja2] *
[shprehja3])
Me cka se pari eshte kryer shumzimi i
shprehjes2 me ate 3 dhe me pas jane
zbritur nga shprehja1

nbraha-bazat e te dhenave 333


Vecorite e operatoreve

Operatoret aritmetike ne radhe te pare


sherbejne per llogaritje te te dhenave
(nese tipi i te dhenave na lejon nje gje
te tille)
Sipas tipeve ata punojne si ne modelin
matematike dhe ate si vijon : operatorin
+ (-) realizon mbledhjen(zbritjen ) e te
dhenave ,operatori <(>) sherben per
kufizim te informates nga lart
(posht),<=(>=) sherben per kufizim te
informates nga posht (lart) duke e marre
parasysh edhe vete ate informate

nbraha-bazat e te dhenave 334


Vecorite e operatoreve (v-1)

Operatori <> ka funksionin e


kerkimit te informates te
ndryshme nga ajo ne shqyrtim ,
“between” na mundeson kerkimin
e informatave ndermjet vlerave
te cekura ,”like” na mundeson
kerkimin e informatave te
ngjashme me ate te shqyrtuar .

nbraha-bazat e te dhenave 335


Forma paraqitese e
operatoreve krahasues
Operatori “=” ka kete paraqitje te
meposhtme:
[shprehja] =“dicka”.
Ngjashem paraqiten edhe operatoret e
tjere te krahasimit e nje shembull i
tille eshte edhe ky:
[shprehja1] !< “e dhena”.

nbraha-bazat e te dhenave 336


Forma paraqitese e
operatoreve tekstual
Nje trajte e paraqitjes se operatorit “&” do te
ishte
[emri] & [mbiemri] , si rezultat do te kishim :
Emrimbiemri.
Ndersa forme tjeter e ndarjes se te dhenave
eshte kur operatori perdoret ne kete menyre:
[numri i shtepise] & “” &[emri i rruges]
Nese numri do te ishte 6 dhe emri i rruges
A.Jashari ,ateher do te kishim rezultatin
6 A.Jashari,d.m.th me zbraztesi ne mes te tyre.
Operatori “like”-perdoret ne formen e
meposhtme
[shprehja] Like “A[bc]”
Operatori tjeter perdoret njejte.

nbraha-bazat e te dhenave 337


Forma paraqitese e
operatoreve te perzier
Paraqitja e operatorit “between” eshte
si me poshte
[shprehja] between A and B
Operatori “in” ka paraqitje te
meposhtme
[shprehja] in (vlera1,vlera2)
[shprehja] is Null

nbraha-bazat e te dhenave 338


Perdorimi i “wildcards”-ve

nbraha-bazat e te dhenave 339


Urdheri where (vazh.)
Ne vazhdim shohim nje shembull te perdorimit te
operatorit te krahasimit between me urdherin “where”
P.sh te gjindet numri I huase nga huaja me vlere ne
mes te $90,000 dhe $100,000 (kjo eshte , $90,000
dhe $100,000)
Nje gje e tille ipet permes pyetsorit te meposhtem

select loan-number
from loan
where amount between 90000 and
100000

nbraha-bazat e te dhenave 340


Urdheri “from”
Urdheri from ben radhitjen e relacioneve te
perfshira ne nje pyetsore
Dhe I korespondon produktit kartezian
P.sh te gjindet produkti kartezian ne mes te
tabeles borrower dhe loan
select 
from borrower, loan

 Shembull: te gjindet emri ,numri I huase dhe sasia


e huase per te gjithe klientet te cilet kane hua ne
filiallen Perryridge .
elect customer-name, borrower.loan-number, amoun
from borrower, loan
where borrower.loan-number = loan.loan-number a
branch-name = ‘Perryridge’

nbraha-bazat e te dhenave 341


Riemrimi i operacionit
Permes urdherave te SQL lejohet riemrimi I
relacioneve dhe atributeve permes urdherit as :
emri I vjeter as emri I ri
Te gjindet emri ,numri I huase dhe sasia e huase
e te gjithe klienteve; te riemrohet emri I
kolones loan-number(numri I huase ) si loan-id.

select customer-name, borrower.loan-


number as loan-id, amount
from borrower, loan
where borrower.loan-number = loan.loan-
number
nbraha-bazat e te dhenave 342
Qiftet e variablave (nga ketu
permireso)
Keto tipe te variablave jane te definuara ne
urdherin from permes te urdherit as .
Gjeni emrat e klienetve dhe numrat e tyre te huase
per te gjithe kliente qe kane hua ne ndonje filialle.

select customer-name, T.loan-number, S.amount


from borrower as T, loan as S
where T.loan-number = S.loan-number

gjeni emrat e te gjitha filiallave te cilat
kane gjendje(assets) me te mire se sa
nje filialle ne Brooklyn.
select distinct T.branch-name
from branch as T, branch as S
where T.assets > S.assets and S.branch-city =
‘Brooklyn’
nbraha-bazat e te dhenave 343
Operatoret e karaktereve
SQL lejon edhe perdorim te operatoreve te
karaktereve.keto pershkohen me ane te
ketyre dy operatoreve : Peqindja (%),E cila
zevendeson qdo nenvarge te karaktereve
underscore (_). Perdoret per zevendesim te nje
karakteri opa edhe te disa nese merret disa here.
Gjeni emrat e te gjithe klienteve qe permbajne
ne vete emrin e rruges “Main”.
Select customer-name
from customer
where customer-street like ‘%Main%’
SQL mbeshtet edhe operatore tjere siq jane
concatenation (bashkimi I stringjeve “||”)
kthimi nga shkronjat e medha ne te vogla dhe
anasjelltas gjetjen e gjatesise se stringut,
extraktimin e nenstringut etj.

nbraha-bazat e te dhenave 344


Radhitja e te dhenave
Te radhiten ne menyre alfabetike emrat e klienteve (me
emra te ndryshem) qe kane hua ne filiallen Perryridge
select distinct customer-name
from borrower, loan
where borrower.loan-number = loan.loan-number
and
branch-name = ‘Perryridge’
order by customer-name
Ne mund te specifikojme desc (z-a) per radhe nga e
madhja kah e vogla dhe me asc (a-z) per radhitje te
kundert, per secilin atribute; radha asc eshte e
nenkuptuare.
P.sh te radhiten emrat e klienteve me radhen desc

nbraha-bazat e te dhenave 345


Vlerat e shumefishta
Ne raste te perseritjes se te dhenave ,
SQL mund te definon se sa kopje jane ne
rezultate.
Format shumevepruese te operatoreve
algjebrike – jane dhene relacionet qe
veprojne ne shumebashkesi r1 dhe r2:
1.  (r1): nese jane c1 kopje te qiftit t1 ne
r1, dhe t1 e ploteson zgjedhjen ,, ateher
jane c1 kopje nga t1 ne  (r1).
2. A(r): per qdo kopje te qiftit t1 ne r1, ekziston
kopja e qiftit A(t1) ne A(r1) ateher A(t1)
shenon projeksionin e qiftit te vetem t1.
3. r1 x r2 : nese jane c1 kopje te qiftit t1 ne r1
dhe c2 kopje te qiftit t2 ne r2, ateher jane c1 x
c2 kopje te qiftit t1. t2 ne r1 x r2
nbraha-bazat e te dhenave 346
Vlerat e shumefishta (vazh.)
P.sh : Supozojme nje relacion ne mes te
dy bashkesive r1 (A, B) dhe r2 (C) si me
poshte :
r1 = {(1, a) (2,a)} r2 = {(2), (3), (3)}
Ateher B(r1) do te jet {(a), (a)}, ku
B(r1) x r2 do te jet
{(a,2), (a,2), (a,3), (a,3), (a,3), (a,3)}
SQL semantika per vlera te
shumefishta eshte :
select A1,, A2, ..., An
from r1, r2, ..., rm
where P
ekuivalente me kete shprehje
relacionale algjebrike:
 A1,, A2, ..., An(P (nbraha-bazat
r1 x r2e texdhenave
... x rm)) 347
Operatoret e bashkesive
Operacionet e bashkesive union, intersect
dhe except operojne ne relacione dhe I
pergjigjen operacioneve algjebrike si 
Secili nga operatoret e mesiperm
automatikisht eliminon vlerat e
shumefishta; per shikim te te gjitha te
dhenave edhe qe perseriten perdoren
operatoret union all, intersect all dhe
except all.
Supposojme se nje qifte perseritet m here
ne r dhe n here ne s, ateher , do te kishim :
m + n here ne r union all s
min(m,n) here ne r intersect all s
max(0, m – n) here ne r except all s

nbraha-bazat e te dhenave 348


Operatoret e bashkesive
(vazh.)
Gjeni te gjithe klientet te cilet kane hua ,nje llogari apo edhe qe te dyja :

(select customer-name from depositor)


union
(select customer-name from borrower)
gjeni te gjithe klientet te cilet kane edhe hua dhe llogari

(select customer-name from depositor)


intersect
(select customer-name from borrower)
gjeni te gjithe klientet qe kane llogari por jo edhe hua

(select customer-name from


depositor)
except
(select customer-name from
borrower) nbraha-bazat e te dhenave 349
Funksionet Agregate
Keto funksione veprojne ne kuader te
nje bashkesie te vlerave ne kuader te
nje kolone dhe japim nje vlere te
caktuare
avg: vleren mesatare
min: vleren minimale
max: vleren maximale
sum: shumen e vlerave
count: numrin e vlerave

nbraha-bazat e te dhenave 350


Funksionet Agregate(vazh.)
Te gjindet mesatarja e ballances se llogarive ne filiallen Perryridge .

select avg (balance)


from account
where branch-name = ‘Perryridge’

gjeni numrin e qifteve ne relacionin e klienteve
select count (*)
from customer

gjeni numrin e depozitoreve me emra te ndryshem ne banke

select count (distinct customer-name)


from depositor

nbraha-bazat e te dhenave 351


Funksionet Agregate– Group By

Gjeni numrin e depozitoreve per secilen filialle.

Select branch-name, count (distinct


customer-name)
from depositor, account
where depositor.account-number =
account.account-number
group by branch-name

shenim:
Attributet ne urdherin select jashte
funksioneve agregate
duhet te hyne ne urdherin group by

nbraha-bazat e te dhenave 352


Funksionet Agregate – Having
Clause
Gjeni emrat e te gjitha filiallave ne te cilat e mesmja
e llogarise se ballancuare eshte me shume se $1,200.

select branch-name, avg


(balance)
from account
group by branch-name
having avg (balance) > 1200
shenim: predikatet ne urdherin having jane aplikuar
pase formimit te grupit perderisa predikatet ne urdherin
where jane aplikuare para formimit te grupit

nbraha-bazat e te dhenave 353


Vlerat zerro
Ka mundesi qe nje atribute ne nje qifte
relacionale te mos kete vlere ,kjo njihet si
vlere zerro
null –shpreh nje vlere te panjohur apo edhe
vleren e cila nuk ekziston.
P.sh gjeni te gjithe numrat e huase te cilet
jane ne relacionin e huase me vlere zerro per
llogari.
select loan-number
from loan
where amount is null
Secili rezultat I ndonje veprimi aritmetike
me zerron na kthen vleren zerro
P.sh 5 + null kthene null
Funksionet agregate e injorojne vleren
zerro

nbraha-bazat e te dhenave 354


Vlerat zerro shprehjet logjike
me te
Cdo krahasim me zerro eshte vlere e
panjohur
P.sh 5 < null ose null <> null ose null = null
Tri vlerat logjike me zerro :
OR: (e panjohur or e vertet ) = e vertete , (e
panjohur or e pavertete ) = e panjohur
(e panjohur or e panjohur ) = e panjohur
AND: (e vertete and e panjohur ) =e panjohur ,
(e pavertete and e panjohur ) = e pavertete ,
(e panjohur and e panjohur ) = e panjohur
NOT: (not e panjohur ) = e njohur
“P eshte e panjohur ” eshte e vertete nese
prediakati P eshte I panjohur
Rezultati I urdherit where ne predikate
eshte I pavertete nese njihet si I panjohur

nbraha-bazat e te dhenave 355


Vlerat zerro dhe funksionet
agregate
Njehso gjithe sasine e huase
select sum (amount)
from loan
Urdherat e mesiperm I injorojne llogarite
zerro
Rezultati eshte zerro nese nuk ka llogari te
ndryshem nga zerro,kjo d.m.th
Te gjitha funksionet agregate perveq
count(*) I injorojne qiftete me vlere
zerro ne atributet ne funksionin
agregate.

nbraha-bazat e te dhenave 356


Nested Subqueries
Nje nenpyetsore eshte I marre
me urdherat select-from-where
si shprehje e permbajtur ne nje
pyetsore tjeter.
Nje pune me e shpeshte e
nenpyetsorit eshte te
performoje testimin e bashkesise
se antareve ,bashkesise se
krahasimeve dhe numrit kardinal
te tyre.

nbraha-bazat e te dhenave 357


Shembulli I pyetsorit
Gjeni te gjithe klientet qe kane llogari
dhe hua ne banke.

select distinct customer-name


from borrower
where customer-name in (select customer-nam
from deposito
 gjeni te gjithe klientet qe kane hua ne banke por nuk
kane llogari ne te

select distinct customer-name


from borrower
where customer-name not in (select customer-nam
from deposit

nbraha-bazat e te dhenave 358


Shembull pyetsori
Gjeni te gjithe klientet te cilet kane llogari dhe
hua ne filiallen Perryridge

select distinct customer-name


from borrower, loan
where borrower.loan-number = loan.loan-number
branch-name = “Perryridge” and
(branch-name, customer-name) in
(select branch-name, customer-name
from depositor, account
where depositor.account-number =
account.account-number)

Note:ky pyetsore mund te rishkruhet edhe ne nje forme
me te thjeshte.

nbraha-bazat e te dhenave 359


Krahasimet e bashkesive
Gjeni te gjitha filiallat te cilat kane te ardhura(gjendje
(assest)) me te mire se sa nje filialle ne Brooklyn.

select distinct T.branch-name


from branch as T, branch as S
where T.assets > S.assets and
S.branch-city = ‘Brooklyn’
 I njejti pyetsore kur merret urdheri some

select branch-name
from branch
where assets > some
(select assets
from branch
where branch-city = ‘Brooklyn’)

nbraha-bazat e te dhenave 360


Perkufizimi I shprehjeve
Formula F <e ploteson nje kusht te dhene > per ndonje (some )r t r e
tille qe (F < e ploteson nje kushte te dhene > per ate t)
ku shprehja <e ploteson nje kushte te dhene > eshte njera nga : 

(5< 0
) =vertete (5< per 0 )=e
er 5
ndonje 5
pavertete
6

donje
0
(5 =per ) =e (5  per 0
) =e vertete (pasi
5
ndonje vertete ndonje 5 0  5)

(= per ndonje )  ne
Dhe , ( per ndonje )  nuk eshte ne te

nbraha-bazat e te dhenave 361


Definimi i urdherave
Formula F <e ploteson kushtin > all r t r (F <e ploteson kushtin> t)

(5< per te 5 ) =e pavertete


gjitha
6

(5< per te 6 ) =e vertete


gjitha 10

(5 = per te 5 ) =e pavertete
gjitha

(5  per te
4
) = e vertete (pa rastet 5  4 dh
gjitja 6 e 5  6)

( te gjitha )  nuk eshte ne


(= te gjitha )  ne
nbraha-bazat e te dhenave 362
shembull i dhene

Gjeni emrat e te gjitha filiallave te cila kane gjendje


(asset) me te mire se sa tere ato ne Brooklyn.

select branch-name
from branch
where assets > all
(select assets
from branch
where branch-city = ‘Brooklyn’)

nbraha-bazat e te dhenave 363


Verifikimi I relacioneve te
zbrazeta

Kushti exists na kthene vleren e


sakte nese argumenti I
nenepyetsorit eshte jo I
zbrazet.
exists r  r  Ø
not exists r  r = Ø

nbraha-bazat e te dhenave 364


Shembull
Gjeni te gjithe klientet te cilet kane llogari
ne te gjitha filiallat qe gjenden ne Brooklyn.

select distinct S.customer-name


from depositor as S
where not exists (
(select branch-name
from branch
where branch-city = ‘Brooklyn’)
except
(select R.branch-name
from depositor as T, account as R
where T.account-number = R.account-
number and
S.customer-name = T.customer-name))

 shenojme se X – Y = Ø  X Y

nbraha-bazat e te dhenave 365


Testimi i vlerave te shumefishta
Kjo arrrihet permeste kushtit unique I
cili kthene vleren e sakte kur nuk kemi
vlera te shumefishta ,p.sh te gjenden
te gjithe klientet te cilet kane vetem
nje llogari ne filiallen perryridge.
select T.customer-name
from depositor as T
where unique (
select R.customer-name
from account, depositor as R
where T.customer-name =
R.customer-name and R.account-
number = account.account-number and
account.branch-name = ‘Perryridge’)

nbraha-bazat e te dhenave 366


Shembull I nenpyetsorit
Ne kuader te nje nenpyetsori kerkimi I vlerave
te shumfishta behet me ane te kushtit not
unique p.sh gjeni te gjithe klienete te cilet
kane se paku dy llogari ne filiallen Perryridge.

select distinct T.customer-name


from depositor T
where not unique (
select R.customer-name
from account, depositor as R
where T.customer-name = R.customer-name
and
R.account-number = account.account-number
and
account.branch-name = ‘Perryridge’)

nbraha-bazat e te dhenave 367


Views(shikimet )
Shikimet na sherbejne per shikim te te dhenave por jo edhe per modifikim te tyre sikurse ne nivelin logjike te tyre ,per krijim te tyre perdoret urdheri :

Veqori themelore e tyre eshte se behet ruajtja e pyetsoreve te caktuare ne kuader te asaj baze te te dhenave

create view emri I shikimit as <shprehja e


pyetsorit >

nbraha-bazat e te dhenave 368


Shembull
Te krijohet nje shikim I cili ka ne vete filiallat dhe kliente

create view all-customer as


(select branch-name, customer-name
from depositor, account
where depositor.account-number =
account.account-number)
union
(select branch-name, customer-name
from borrower, loan
where borrower.loan-number = loan.loan-
 number)
gjeni te gjithe klientet nga filialla
Perryridge
select customer-name
from all-customer
where branch-name = ‘Perryridge’

nbraha-bazat e te dhenave 369


Relacionet e perftuara
SQL lejon perdorim te shprehjeve ne
nenpyetsore dhe kjo behet te urdheri where
mirepo rezultati i fituare duhet te
riemrohet p.sh te gjindet mesatarja e
llogarive ne balance te atyre filiallave me
mesatare te tille me te madhe se sa $1200.
select branch-name, avg-balance
from (select branch-name, avg
(balance)
from account
group by branch-name)
as result (branch-name, avg-
balance)
where avg-balance > 1200

nbraha-bazat e te dhenave 370


Urdheri me (with)
Urdheri me(with ) ju lejon
shikimeve(views) te definohen lokalisht
ne nje pyetsore e jo ne forme globale.
Gjeni te gjitha llogarite me balance
maksimale
with max-balance(value) as
select max (balance)
from account
select account-number
from account, max-balance
where account.balance = max-
balance.value

nbraha-bazat e te dhenave 371


Shembull i nje pyetsori me te
nderlikuare
Gjeni te gjitha filiallat ku llogaria totale e
depositit eshte me e madhe se sa mesatarja e
llgarise deponuese ne te gjitha filiallat

with branch-total (branch-name, value) as


select branch-name, sum (balance)
from account
group by branch-name
with branch-total-avg(value) as
select avg (value)
from branch-total
select branch-name
from branch-total, branch-total-avg
where branch-total.value >= branch-total-
avg.value
nbraha-bazat e te dhenave 372
Modifikimi i bazes se te
dhenave
Me urdherin Delete mundesohet fshirja e te
dhenave te nje rekordi por jo edhe te tabeles
p.sh te fshihen te dhenat e huase nga
perryridge :
delete from account
where branch-name = ‘Perryridge’
Te fshihen te gjithe klientet ne secilen filialle
ne Needham city.
delete from account
where branch-name in (select branch-name
from branch
here branch-city = ‘Needham’)
delete from depositor
where account-number in
(select account-number
from branch, account
where branch-city = ‘Needham’
and branch.branch-name =
account.branch-name)
nbraha-bazat e te dhenave 373
Shembull
Te fshihen te gjitha rekordet ne te
gjitha llogarite me ballanca me te vogel
se sa mesatarja

delete from account


where balance < (select avg
(balance)
from account)

nbraha-bazat e te dhenave 374


Modifikimi I bazes – Insertimi
(vendosja e te dhenave )
Te shtohet nje cifte ne account
insert into account
values (‘A-9732’, ‘Perryridge’,1200)
ose ne forme ekuivalente
insert into account (branch-name,
balance, account-number)
values (‘Perryridge’, 1200, ‘A-9732’)
Te shtohet nje cifte I te dhenave ne
account me balance zerro
insert into account
values (‘A-777’,‘Perryridge’, null)
nbraha-bazat e te dhenave 375
Modifikimi I bazes se te
dhenave Insertimi
Nese I japim te gjithe klienteve si
dhurate nga 200 $ ne filiallen
Perryridge . Nese numri I huase merret
sikurse numer I llogarise per llogarine
re
insert into account
select loan-number, branch-name, 200
from loan
where branch-name = ‘Perryridge’
insert into depositor
select customer-name, loan-
number
from loan, borrower
where branch-name = ‘Perryridge’
and loan.account-number
= borrower.account-number
nbraha-bazat e te dhenave 376
Modifikimi I bazes - Update
Me kete urdher mundesohet
ndryshimi I vlerave ne nje kolone te
tere .p.sh te rriten vlerat e te
gjitha llogarive me balance me te
madhe se sa $10,000 me 6%, te
gjitha llogarite tjera me 5%.
update account
set balance = balance  1.06
where balance > 10000
update account
set balance = balance  1.05
where balance  10000
Kjo u mundesua me dy update ne radhen
si me larte mund te behet edhe me
urdherin case si me poshte
nbraha-bazat e te dhenave 377
Urdheri Case per update te
kushtezuare
P.sh ne pyetsorin e mesiperm mund te
marrim
update account
set balance = case
when balance <= 10000
then balance *1.05
else balance * 1.06
end

nbraha-bazat e te dhenave 378


Urdheri Update ne shikime
Te krijohet nje view per te gjitha huate ne
relacionin e huase , duke mshefur atributin
e llogarise create view branch-loan as
select branch-name, loan-
number
from loan
Shtoje nje rekord ne branch-loan
insert into branch-loan
values (‘Perryridge’, ‘L-307’)
ky shtim duhet te paraqitet me shtim te
ciftit
(‘L-307’, ‘Perryridge’, null)
ne relacionin e huase
Urdheri Updates ne shume shikime komplekse
eshte I veshtire dhe I pamundur te
pershtatet dhe per kete nuk lejohet.
nbraha-bazat e te dhenave 379
Transactions
Transakcioni eshte nje varge I pyetsoreve dhe
urdherave update te ekzekutuara si nje teresi
Transakcionet fillojne ne menyre te shprehur
dhe t epercaktuara me njeren nga paraqitjet
commit work: ku kryen te gjitha update ne ate
transakcione te asaj baze
rollback work: I cbene te gjitha update te
kryera me ate transakcion
Shembull:Bartja e parave nga nje llogari ne
tjetren behet ne dy hapa:merr nga nje llogari
dhe I ven ne tjetren
Nese njeri hape kryhet por tjetri jo ateher
baza eshte ne nje gjendje jo te pershtatshme
Per kete duhet te plortesohen qe te dy keto
kushte ose asnjeri
Nese nje hape ne nje transakcion deshton
ateher ata kthehen me rollback work.
Rollback I nje transakcioni jo te suksesshem
behet automatikisht, ne rastin
nbraha-bazat e prishjes se380
e te dhenave
Transakcioni (vazh.)
Ne shume sisteme te baza te te dhenave,
nje urdheri I SQL ekzekutohet
suksesshem ne menyre automatike
Secili transakcion do te perbehetnga nje
urdher i vetem
Veprimi automatike zakonisht lihet anash
duke lejuare veprimin e transakcioneve te
tjera ne ate baze dhe kjo mvaret se cili
do te veproje ne ate sistem
Opcion tjeter ne SQL 1999: e permbyll
urdherin me begin atomic

end
nbraha-bazat e te dhenave 381
Relacionet e lidhjes
Relacionet e lidhjes marrim dy relacione dhe si
rezulta na kthejne nje relacion tjeter.
Keto operacione merren si nenpyetsore ne kuader
te urdherit from
Kushtet e lidhjes – duhet te percaktohen cilat
cifte hyne ne lidhje dhe cfare rezultati dote
fitohet.
Tipet e lidhjes – duhet percaktuare ciftet te cilat
I pergjigjen apo jo cifteve tjera ne ate lidhje
varesisht nga zgjedhja e tipit te lidhjes.

Kushtet e lidhjes
Tipet e lidhjes

Lidhja e brendshme Natyrale


Lidhja e majte e jashtme ne <predicate>
Lidhja e djathte e jashtme Duke marre (A1, A2, ..., An)
Lidhja totale
nbraha-bazat e te dhenave 382
Relacionet e lidhjes – shembull
Relacioni loan
loan-number branch-name amount

L-170 Downtown 3000


L-230 Redwood 4000
L-260 Perryridge 1700

Relacioni borrower
customer-name loan-number

Jones L-170
Smith L-230
Hayes L-155

nbraha-bazat e te dhenave 383


shembull i lidhjes se brendshme
dhe te jashtme te majte
loan inner join borrower on
loan.loan-number = borrower.loan-number

loan-number branch-name amount customer-name loan-number

L-170 3000
L-230 4000

loan left outer join borrower on


loan.loan-number = borrower.loan-number
loan-number branch-name amount customer-name loan-number

L-170 3000 L-170


L-230 4000 L-230
L-260 1700 null

nbraha-bazat e te dhenave 384


Pershkrimi i lidhjes inner
Nga shembulli i mesiperm
loan inner join borrower on
loan.loan-number = borrower.loan-number
shihet se jane marre te gjitha fushat e
anes se majte dhe ato te djathte per
te cilat ekzistojne fushat koresponduese
te atributeve dhe nuk jane zerro
fusha, ne te dy tabelat e dhena ,me
inicim nga tabela e majte dhe fushat
lidhese te marra ne ate lidhje paraqiten
dy here ne dalje

nbraha-bazat e te dhenave 385


Pershkrimi i lidhjes outer left
Ne shembullin e marre me larte
 loan left outer join borrower on
loan.loan-number = borrower.loan-
number
Shihet se kjo lidhje realizohet me
ane te marrjes se te dhenave nga
ana e majte dhe elementet
koresponduese te asaj te djathte
edhe ne rastin kur nuk kemi vlera te
atributit ne te djathte(d.m.th kur
kemi vlera zerro) dhe gjate
paraqitjes behet edhe paraqitja e
vlerave(fushave ) te lidhjes dhe ate
dy here nbraha-bazat e te dhenave 386
Pershkrimi i lidhjes outer te
djathte

Kjo eshte e ngjashme me ate te


realizimit te majte vetem tane
ne shikim merret tabela e pare si
tabele e djathte dhe vlerat
lidhese te atyre tabelave merren
edhe per atributet te cilat kane
vlerat zerro.

nbraha-bazat e te dhenave 387


Shembull I lidhjes
loan natural inner join borrower

loan-number branch-name amount customer-name

JonesL-170 3000
Smith L-230 4000

loan natural right outer join borrower

loan-number branch-name amount customer-name

JonesL-170 3000
Smith L-230 4000
HayesL-155 null

nbraha-bazat e te dhenave 388


Pershkrimi i lidhjes natural

Lidhja natural eshte nje lidhje e


tipit te njejte sikurse inner
perveq te dallimit se gjate asaj
lidhje fushat lidhese ne mes te
dy tabelave nuk na paraqiten dy
here ne dalje te te dhenave qe
shihet edhe nga shembulli I marre
me larte

nbraha-bazat e te dhenave 389


Pershkrimi i lidhjes naturale
,outer
Edhe ketu vlene te ceket se lidhja
behet njesoj si te cilado lidhej e
jashtme per dallim se ketu fushat
lidhese te tabelave te cilat na
paraqiteshin dy here me heret tani
na paraqiten vetem nje here dhe e
tere paraqitja tjeter eshte e njejte
,e ate te marre te lidhjes se
jashtme

nbraha-bazat e te dhenave 390


Shembull I lidhjes
loan full outer join borrower using (loan-number)

loan-number branch-name amount customer-name

JonesL-170 3000
Smith L-230 4000
null L-260 1700
HayesL-155 null

 Gjeni te gjithe klientet kane nje llogari apo hua (por jo qe te dyja )
ne banke.

select customer-name
from (depositor natural full outer join borrower)
where account-number is null or loan-number is null

nbraha-bazat e te dhenave 391


Pershkrimi i lidhjes full

Kjo realizohet me marrje te te


gjitha fushave nga te dy tabelat
duke perfshire fushat me atribute
zerro dhe ato pa atribute
zerro si dhe paraqitjen e te
dhenave ne dalje vetem nje
paraqitje te fushes lidhese te
tyre

nbraha-bazat e te dhenave 392


Data Definition Language
(DDL)
Skema e cdo relacioni
Domena e vlerave te shoqeruara per
secilin atribute.
Integrity I kushteve
Bashkesia e indekseve te ruhet per
secilin relacion.
Sigurimi dhe autorizimi per secilin
relacion.
Struktura fizike e te dhenave per
secilin relacion ne disk.

nbraha-bazat e te dhenave 393


Tipet e te dhenave ne SQL
char(n). Per karakter me gjatesi n.
varchar(n). Variable e karaktereve me
gjatesi n.
int. Integer (numer I plote ).
smallint. Integer I vogel.
numeric(p,d). Numer me decimale me p
shifra nga n te tere ne te djathet te pikes .
real, double precision. Floating point dhe
double.
float(n). Floating point number,me gjatesi
n shifrash .
Null lejohet ne tere tipet e te dhenave .
Deklarimi I atributi not null ndalon qe ajo
vlere te jet null per ate attribute.
create domain kushti I tille ne SQL-92
krijon per shfrytezuesin tipin e te dhenave
create domain person-name char(20) not null

nbraha-bazat e te dhenave 394


Date/Time tipet ne SQL (vazh.)
date. Datat me (4 shenja ) te vitit , muajin
dhe daten p.sh date ‘2001-7-27’
time.kohen e dites , ne ore, minuta dhe
seconda.p.sh. time ’09:00:30’ time
’09:00:30.75’
timestamp: date plus koha e dites
p.sh. timestamp ‘2001-7-27 09:00:30.75’
Interval: periode te kohes
p.sh. Intervali ‘1’ dite
Ndarja e vleres se date/time/timestamp na jep
nje interval
Vlerat e intervalev mund te shtohen ne vlerat e
date/time/timestamp
Mund te extraktohen vlerat e fushave
individuale nga date/time/timestamp
p.sh. extract (year from r.starttime)
Gjithashtu mund edhe te largohen vlerat nga
tipet e te dhenave date/time/timestamp
nbraha-bazat e te dhenave 395
p.sh. cast <string-valued-expression> as date
Krijimi I Tabelave
Nje relacion I realizohet me komanden
create table:
create table r (A1 D1, A2 D2, ..., An Dn,
integrity-constraint1),
...,
(integrity-constraintk))
r eshte emri I relacionit
Secila Ai eshte nje emer I atributit nga
relacioni r
Di eshte tipi I te dhenave per atributet Ai
P.sh :create table branch
(branch-name char(15) not null,
branch-city char(30),
assets integer)
nbraha-bazat e te dhenave 396
Integriteti i kushteve ne
Create Table
not null
primary key (A1, ..., An)
check (P), ku P eshte predicate

p.sh : te deklarohet branch-name si


primary key per branch dhe siguro qe
vlerat e assets te jene jo-negative.
create table branch
(branch-name char(15),
branch-city char(30)
assets integer,
primary key (branch-name),
check (assets >= 0))

primary key ne nje deklarim automatikisht nenkuptohet jo


zerro vlere

nbraha-bazat e te dhenave 397


Urdherat Drop dhe Alter Table
Urdheri drop table fshine nje tabele ne
teresi kjo d.m.th edhe gjithe relacionet me
te .
Urdheri alter table mundeson shtimin e
atributeve ne kuader te nje relacioni
ekzistues .
alter table r add A D
ku A eshte emri I attribute qe shtohet ne
relacionin r dhe D eshte domena e A.
krejt ciftet ne relacion merren si null per
vlerat e atributeve te reja .
alter table mund te meret edhe per fshirje
te attributeve ne nje relacion
alter table r drop A
ku A eshte emri i attributit ne relacionin r
nbraha-bazat e te dhenave 398
Baza te tjera relacionale
QBE(query by example-access)
Nje baze relacionale e cila do te
shqyrtohet eshte edhe MSAccess.
Ne vazhdimesi do te dallojme
elementet themelore ne lidhje me
pershkrimin e te dhenave permes
trajtes QBE .Kjo realizohet ne
panelin “disajn” te pyetsoreve te
pershkruare si me poshte .Kjo na
realizohet permes disa tipeve te
pyetsoreve .

nbraha-bazat e te dhenave 399


Pyetsoret e trajtes “crosstab
query wizard”
Ndertimi i ketyre pyetsoreve
realizohet me zgjedhjen e opcionit
“crosstab query wizard” ,edhe keta
sherbejne per veqim te te dhenave ,e
ne radhe te pare per krahasim te te
dhenave ,por vetem per ato te nje
tabele.Per ndertim te tyre duhet te
zgjedhim te dhenat te cilat
deshirojme ti kemi ne forme shtylle ,
ato qe deshirojme ti kemi ne forme
rreshti dhe ato te shumueshme

nbraha-bazat e te dhenave 400


Pyetsoret e tipit “Find
duplicates query wizard”

Keta formohen me ane te


zgjedhjes se opcionit “find
duplicates query wizard” dhe na
sherbejne per gjetjen e te
dhenave te njejta (te shumfishta)
te nje tabele apo edhe te nje
pyetsori .

nbraha-bazat e te dhenave 401


Pyetsoret e trajtes “find
unmatched query wizard”

Keta pyetsore ndertohen me


zgjedhjen e opcionit “find
unmatched query wizard”,na
sherben per gjetjen e te
dhenave nga nje tabele e cila
nuk eshte e lidhur me te tjerat

nbraha-bazat e te dhenave 402


Njehsimet me ane te
pyetsoreve
Dallojme njehsimet sipas te dhenave
horizontale dhe te dhenave vertikale .
Realizimi i njehsimit te te dhenave ne
trajten horizontale(nese te dhenat jane per
njehsim ) arrihet ne trajten
“disajn”(konstruktive) te pyetsorit dhe ate
duke marre operatoret aritmetike (ne ate
menyre qe ne mes te fushave te zgjedhura
dhe operatorit te kemi se paku nga nje
zbraztesi) ne mes te dhenave te dy fushave
te ndryshme(apo edhe me shume ) , te
njehsuara ne nje fushe te trete dhe ne
opcionin “Field ” te formes “disajn” te
pyetsorit ku me pas shtypet “enter” me cka
emerohet fusha e re me “exp1”e cila me vone
mund te riemrohet.

nbraha-bazat e te dhenave 403


Paraqitja e hapesires
njehsuese

nbraha-bazat e te dhenave 404


Njehsimet me ane te
pyetsoreve(v-1)
Njehsimi ne forme vertikale te
dhenave (per ato te dhena per te
cilat lejohet njehsimi ) te tabeles
,realizohet me ane te pyetsoreve te
trajtes “simple query wizard”dhe
permes tipit “disajn”
Ne tipin “simple query wizard” te
dhenat e tabeles njehsohen sipas
ketyre mundesive
1. Shuma e teresishme e te
dhenave(sum)

nbraha-bazat e te dhenave 405


Njehsimet me ane te
pyetsoreve (v-2)

2.Njehsimi i vleres mesatare te


tyre (avg)
3. Njehsimi i vleres minimale te
dhenave te asaj kolone (min)
4. Njehsimi i vleres me te madhe
te te dhenave te asaj kolone
(max)

nbraha-bazat e te dhenave 406


Njehsimet me ane te
pyetsoreve(v-3)

Njehsimet sipas kolonave mund


te behen edhe ne paraqitjen
“disajn” te pyetsorit dhe ajo
paraqitje per dallim nga
njehsimi ne tipin “simple query
wizard ” na lejon nje mundesi me
te madhe te njehsimeve ne
elementet e shtylles dhe ate
sipas ketyre operacioneve :

nbraha-bazat e te dhenave 407


Njehsimet me ane te
pyetsoreve(v-4)
Group by(ne grupe)
Sum(shumen e te dhenave )
Avg(vleren mesatare)
Min(vleren minimale)
Max(vleren maksimale)
Count(numeron te dhenat pa fushat e
zbrazeta)
Stdev(derivimi standard)
Var(menyrat e paraqitjes se te
dhenes)

nbraha-bazat e te dhenave 408


Njehsimet me ane te
pyetsoreve (v-5)

First(vlera e te dhenes se pare ne


radhe)
Last(vlera e te dhenes se fundit
ne radhe)
Expression(sherben per ndertim
te fushes per njehsim)
Where(jepet kriteri per te
dhenat e shqyrtuara)

nbraha-bazat e te dhenave 409


Dallimet ne mes te
llogaritjeve ne pyetsore

Dallimet themelore ne mes menyrave


te llogaritjeve ne pyetsore per nga
menyra e njehsimit te te dhenave
sipas shtyllave dhe rreshtave qendrojn
ne faktin se njehsimet e te dhenave
sipas shtyllave jane te kufizuara dhe
ate vetem ne kater llojet e
permendura te njehsimeve
(sum,avg,min dhe max) per tipin e
pyetsorit “simple query wizard”

nbraha-bazat e te dhenave 410


Dallimet ne mes te
llogaritjeve ne pyetsore(v-1)
Ndersa ne formen “disajn ” me
zgjedhje te opcionit “total” ne menyne
“insert” shtohen mundesit e njehsimeve
te cekura me pare
Njehsimet e te dhenave sipas
rreshtave behen pa kufizime te tilla
dhe realizohen per gjitha mundesit te
cilat na lejojne operatoret aritmetike
te theksuare, d.m.th se njehsimet
sipas rreshtave jane njehsime me te
“mira” te te dhenave se sa ato sipas
shtyllave

nbraha-bazat e te dhenave 411


Llogaritjet me me shume
funksione
Keto llogaritje realizohen me ane te
“expresion builder”-it dhe kjo arrihet
kur ne fushen e caktuar te formes
konstruktive te pyetsorit zgjedhim me
tastin e djathet te miut opcionin
“built”.Ne kete rast kemi mundesi te
manipulimit me ane te
funksioneve,konstanteve,operatoreve
(logjike,aritmetike,krahasues) si dhe te
shprehjeve te paraqitura.Aktivizimi i
“expresion builder”-it realizohet per
tipet e te dhenat qe jane per njehsim ne
trajten “disajn” te pyetsorit dhe ka nje
paraqitje te meposhtme:

nbraha-bazat e te dhenave 412


“Expresion builder”-i

nbraha-bazat e te dhenave 413


Funksionet
Perveq operatoreve perdorim kane edhe
funksionet ,access-i ofron nje mori
funksionesh qe ne vijim do ti peshkojme
sipas kategorive si vijon:
Conversion(per ndryshim te formes se
dates,e ne te hyjne Str(kthen numrin si
string),Val(e kthen vetem vleren numerike
nga nje string p.sh nga [shprehja 1 ] kthen
1),Format(pershtat menyren e paraqitjes
p.sh nga 02\03\2002 ne 2-3-2002))
Date/time(punon me kohedhe date,ka keto
funksione:now,time,date,datediff)
Financial (SQL)(ofron vleren mesatare dhe
shumen e shprehjeve ne grupe)

nbraha-bazat e te dhenave 414


Funksionet (v-1)
Financial (monetary)(ofron funksionet
:NPV(serine e pageses dhe
sasine),DDB(cmimin
fillestar,cmimin,koheqendrushmerin))
Mathematical (int(pjesa e plote e numrit
reale),fix(pjesa e plote e numrit
negative ),sqr(rrenjezimi))
String manipulation(right(kthen numrin e
paracaktuar te karaktereve ne te
djathte),len(gjatesin e
stringut ),lcase(kthen shprehjen ne
shkronja te vogla)) etj.

nbraha-bazat e te dhenave 415


Shprehjet (expression)
Pjeset e nje shprehje jane
:operatoret(+,-,etj),emrat e
objekteve([adresa]),funksionet(Date(),etj),
literal
values(ehene,1600,etj),constans(yes,no,etj)
.Nje shembull i ndertimit te nje shprehje
eshte dhene me poshte:
[data e fillimit te punes]=Date
(02.03.2002)+27
Shprehja e pare eshte nje rekord,e dyta
eshte nje operator(=),tjetra nje
funksion(Date()),tjetra nje operator(+) dhe
e fundit nje “literal”.

nbraha-bazat e te dhenave 416


Pyetsoret kushtezues
(parametrike)
Roli themelore i ketyre pyetsoreve
eshte qe permes venjes se kushteve
kushtezuese te marrim nje pasqyre me
fleksibile te te dhenave ne ate (ato)
tabela ,ndertimi i ketyre pyetsoreve
behet ne trajten “disajn” dhe
realizohet me venjen e kushteve ne
fushen “criteria” ne trajten e shenimit
te tekstit te mberthyer ne kllapa te
mesme , si vijon [teksti] .Roli themelore
i ketyre pyetsoreve eshte qe te
kerkohen te dhenat ne ate tabele .

nbraha-bazat e te dhenave 417


Sortimi i te dhenave me ane
te pyetsoreve

Sortimi i te dhenave te tabeles


mund te behet edhe permes
pyetsoreve dhe kjo realizohet
permes zgjidhjes se fushes“sort”
ne paraqitjen “konstruktive ”te
pyetsorit dhe me ate rast kemi si
zakonisht dy mundesi te
sortimit ate nga A-Z dhe te
anasjelltin me te Z-A

nbraha-bazat e te dhenave 418


Modifikimi i te dhenave ne
pyetsore

Modifikimi i te dhenave ne
pyetsore mund te behet per te
gjithe te dhenat e fushave te
shqyrtuara apo edhe te vetem
nje fushe ,ndryshimi i te dhenave
te te gjitha fushave ne pyetsore
behet me zgjedhje te opcionit
“properties” nga ana e djathte e
miut e shtypur kudo ne nje
hapesire te zbrazet te pyetsorit

nbraha-bazat e te dhenave 419


Modifikimi i te dhenave ne
pyetsore(v-1)

Ndersa modifikimi i te dhenave


sipas nje fushe behet ne menyre
te njejte si me siper duke
zgjedhur “properties” nga ana e
djathte e mausit te vendosur
mbi fushen te cilen deshirojme
te ndryshojme

nbraha-bazat e te dhenave 420


Pyetsoret Aktive
Pyetsoret aktive na mundesojne
manipulimin e te dhenave ne
pyetsoret e krijuar si dhe ne
tabela .Kjo nenkupton se pyetsoret e
tille jane ne funksion pasi te jene
krijuar tabelat dhe pyetsoret e
permendur me pare dhe si te tille
keta nuk mund te krijohen ne trajten
themelore te tyre por vetem pasi te
hapet nje pyetsore tjeter ekzistues
apo edhe ndonje i ri ne trajten
“disajn” .Dallojme disa tipe te
pyetsoreve aktive
nbraha-bazat e te dhenave 421
Tipet e pyetsoreve aktive

Append query
Update query
Make table query
Delete query

nbraha-bazat e te dhenave 422


“Append query”

Qellimi themelore i krijimit te ketyre


pyetsoreve eshte bartja e nje grumbulli
te te dhenave nga nje tabele ne nje tjeter
.Krijimi i tyre realizohet me zgjedhjen e
trajtes konstruktive (disajn) te pyetsorit
dhe me pas zgjedhjen e tabeles nga e cila
deshirojme te bejme bartjen e te
dhenave ,hapi i metejme eshte zgjedhja e
opcionit “query append ” nga menyja
“query” dhe ne dialogun e paraqitur te
zgjedhet baza ne te cilen deshirojme te
bartim informaten dhe tabela perkatese

nbraha-bazat e te dhenave 423


Disa veti te “Append query”

Realizimi i tille i te dhenave do


te realizohet vetem ne ato
tabela ku te dhenat jane te nje
natyre
Nese numri i fushave te
zhvendosura eshte me i madh se
ai ne tabelen e zhvendosur
ateher ato te cilat teprojne nuk
do te barten etj
nbraha-bazat e te dhenave 424
“Update queries”

Roli themelor eshte ndryshimi i te


dhenave nga nje apo edhe me shume
tabela .Realizohen ne trajten “disajn”
te pyetsoreve me opcionin
“query”dhe me pas “update query”.Per
kete se pari merret pyetsori ne
trajten “disajn” me pas zgjedhen
tabelat dhe te dhenat te cilat
deshirojme ti ndryshojme, me ate
rast ne fushen e re “update to”
plotesohen te dhenat qe ndrrohen

nbraha-bazat e te dhenave 425


Krijimi i tabelave permes
pyetsoreve (make table
query)
Permes ketyre pyetsoreve
mundesohet krijimi i tabeles me
te dhenat e tabelave e
pyetsoreve te asaj baze .Per
kete merret forma konstruktive
e pyetsorit dhe zgjedhim “query-
make table query”,me pas
zgjedhet baza ku deshirojme te
vejme tabelen dhe emerohet
tabela .

nbraha-bazat e te dhenave 426


“Delete query”

Keta pyetsore na sherbejne per


fshirjen e grupeve te te dhenave
nga nje apo me shume tabela .Kjo
realizohet me zgjedhjen “disajn” te
pyetsorit dhe me pas zgjedhet
tabela(tabelat) te cilen deshirojme
me e shqyrtue me vendosje te te
dhenave dhe nga menyja “query”
zgjedhim “delete query” .Veqori e
tyre eshte se nuk kane fushen e
sortimit .

nbraha-bazat e te dhenave 427


Pyetsoret “autolookup “
Keta pyetsore krijohen me zgjedhjen e
opcionit “disajn query ” dhe sherbejne
vetem ne ate rast kur deshirojme te
veqojme te dhena nga dy tabela te lidhura
ne formen nje me shume , dhe ate ne
fushen “field ” te pyetsorit vehet fusha e
tabeles shume e cila e realizon lidhjen me
tabelen ame dhe me pas edhe fushat e
tabeles ame qe deshirojme me i pare.Me
plotesim te fushes nga tabela shume e cila
e realizon lidhjen plotesohen fushat tjera te
pyetsorit.(me tastin tab)

nbraha-bazat e te dhenave 428


Aktivizimi i pyetsoreve

Pyetsoret aktivizohen me ane te


komandes “run” , ne menyne query
te paraqitjes “disajn” te
pyetsorit .

nbraha-bazat e te dhenave 429


Integriteti i te dhenave dhe
sigurimi

nbraha-bazat e te dhenave 430


Varesite funksionale

nbraha-bazat e te dhenave 431


Format normalet

nbraha-bazat e te dhenave 432


Bazat e orientuara kah
objektet

nbraha-bazat e te dhenave 433


Bazat themelore ne mysql
Mysql eshte nje software i bazave
te te dhenave me qasje te lire
(“open source”) dhe mund te
merret ne faqen :www.mysql.com
Per kete softwari ofrohet per
kliente dhe serwer ,me cka edhe
ne secilin baze te te dhenave
behet qasja ne kete forme .

nbraha-bazat e te dhenave 434


Qasja ne mysql
Pas qasjes se bazes nga ana e klientit ne
serwer kalojme ne direktoriumin aktive te
mysql-se ,per shikim te bazave te te
dhenave ne ate serwer marrim urdherin
Show databases ;
Ku siq shihet secili urdher ne mysql eshte
aktive kur te perfundoje me ;
Me pas fitohen te dhenat mbi ato baza
dhe per kalim ne nje baze te caktuare
atehet marrim urdherin “use emrinebazes”
Dhe me pas po ne ate menyre shihen edhe
tabelat dhe ta dhenat tjera te cilat
ndoshen ne ate baze .

nbraha-bazat e te dhenave 435


Krijimi i bazes se te dhenave

Pas kalimit ne dritaren aktive te


mysql-se ateher vazhdojme me
urdherin :”create database
emriisaj;”
Me pas ne kuader te saj edhe
krijimin e tabelave ne te dhe te
elemnteve te tjera .

nbraha-bazat e te dhenave 436


Krijimi i tabelave

Krijimi I tabeles behet me urdherat


e pershkruare si ne cdo gjuhe te
SQL-se .
“Create tab1 (fusha1 tipiitedhenave,
Fusha2 tipitedhenave,
Fusha3 tipiitedhenave);”
Kjo do te ishte nje trajte themelore
e krijimit te nje tabele .

nbraha-bazat e te dhenave 437

You might also like