The words you are searching are inside this book. To get more targeted content, please make full-text search by clicking here.
Discover the best professional documents and content resources in AnyFlip Document Base.
Search
Published by Fitim Guri, 2019-04-11 06:34:03

TIK klasa 12 zgjedhore

TIK klasa 12 zgjedhore

Algoritmikë dhe programimi

2.6 Strukturat e kontrollit

Nxënësi/ja: Situatë
Si është implementuar strukura if, if..else, if
-- vlerëson rëndësinë e else if …else në gjuhën C? Si mund ta përdorim
strukturave të kontrollit; dhe ta implementojmë në Python?

-- implementon if, if...else,

if...elif...else në Python. Shprehja if

Fjalë kyç: Rikujtojmë që forma më e thjeshtë e strukturës së kontrollit është

struktura kontrolli, if, shprehja if. Shprehja if përdoret për të marrë vendime të caktuara
if..else, if...elif...else. nëse plotësohet një kusht i caktuar. Forma më e thjeshtë e saj në
Python është: if kushti
listë_instruksionesh;

ku listë_instruksionesh i referohet një instruksioni të vetëm apo një blloku instruksionesh. Nëse kushti
është i vërtetë atëherë do të ekzekutohet listë_instruksionesh. Nëse kushti nuk është i vërtetë atëherë
listë_instruksionesh nuk mund të ekzekutohet dhe programi do të vazhdojë me instruksionet e tjera
në vijim.

Shembull

Paraqitja e if me bllokskemë

Programi i mësipërm kontrollon nëse numri 3>0 dhe afishon "3 është një numër pozitiv". Më pas
kontrollon nëse -1<0 dhe afishon "-1 është një numër negativ".

Shprehja if..else
if..else është një zgjerim i formës së përgjithshme të

shprehjes if. Nëse kushti është i vërtetë atëherë ekzekutohet

listë_instruksionesh1, përndryshe ekzekutohet listë_

instruksionesh2. Sintaksa e bllokut if..else në Python është:

if kushti:

listë_instruksionesh1
else:
listë_instruksionesh2

Programi i mëposhtëm pasi lexon një numër nga tastiera Paraqitja e if..else me bllokskemë
kontrollon nëse numri është pozitiv ose i barabartë me zero apo
është negativ.

51

Algoritmikë dhe programimi

Shembull

Shprehja if...elif...else

Sintaksa e saj është:

if kushti1:
listë_instruksionesh1
elif kushti2:
listë_instruksionesh2
else:
listë_instruksionesh

Kushtet vlerësohen që nga kushti 1 e në vazhdim deri te kushti n. Sapo gjendet një kusht i vërtetë, lista
e instruksioneve të tij do të ekzekutohet. Nëse të gjitha kushtet janë të gabuara, do të ekzekutohet
dega else, e cila mban listë_instruksionesh.

Shembull

Paraqitja e if..elif..else

Shprehja if e ndërthurur

Ne mund të kemi shprehjen if...elif...else brenda një shprehje tjetër if...elif...else.
Shembull

Vlerësoni njohuritë
- Nxënësi/ja: aftësohet në përdorimin e strukturave të kontrollit për zgjidhjen e problemeve të ndryshme në Python.

52

Algoritmikë dhe programimi

Kontroll njohurish
1. Shkruani një program në Python që lexon tre numra dhe afishon më të madhin

prej tyre.
2. Shkruani një program në Python që kërkon nga nxënësit numrin e krediteve që ato

kanë marrë. Programi afishon nëse nxënësit mund të zgjedhin të ndjekin lëndë me
zgjedhje apo e kanë plotësuar numrin e krediteve.
3. Jepet programi në Python. Tregoni çfarë afishon ai?

mosha = 22
if (mosha >= 18):
print (“Ju mund të shikoni filmin në kinema.”)
if (mosha <= 20 or mosha >= 60):

print(“Bileta është 500 lekë”)
else:

print(“Bileta është 600 lekë “)
else:

print (“Ju nuk mund të blini një biletë.”)
4. Jepet programi në Python. Tregoni çfarë afishon ai?

x = float(input(“Sa është ora”))
if x < 10:
print “Mirëmëngjës.”
elif x<12:
print “Së shpejti koha për drekë.”
elif x<18:
print “Ditë të mbarë.”
elif x<22:
print “Mirëmbrëma”
else:
print “Natën e mirë”

53

Algoritmikë dhe programimi

2.7 Struktura ciklike

Nxënësi/ja: Situatë
Shpeshherë kërkohet që të përsëritet një kodi i caktuar sa
-- koncepton përdorimin e herë që kushti është i vërtetë. Për shembull, nëse duam të
strukturave ciklike në Python, afishojmë të gjithë numrat nga 1 deri kur numri të jetë më i
vogël se 10. Cila është sintaksa e strukturave ciklike në Python?
-- ndërton programe në Python
duke përdorur ciklin for,

-- ndërton programe në Python Struktura ciklike
duke përdorur ciklin while.
Rikujtojmë që strukturat ciklike janë struktura në të cilat kemi
Fjalë kyç: përsëritjen e një ose më shumë hapave (instruksioneve). Të gjithë
struktura ciklike for, while. këto hapa formojnë një cikël. Në trupin e ciklit duhet të kemi të
paktën një instruksion, i cili përcakton kushtin e daljes nga ky cikël.
Cikli for Nëse ky kusht plotësohet, atëherë kemi daljen nga cikli.

Cikli for ka për qëllim të përsërisë në mënyrë të vazhdueshme, një numër të caktuar herësh, trupin e
ciklit (listë_instruksionesh). Cikli for në Python përdoret për të përshkruar një sekuencë si për shembull
listë, stringje etj ose objekte të tjera.

Sinktaksa e ciklit for është:

for vlerë in sekuencë:
listë_instruksionesh

ku vlerë, është ndryshorja që merr vlerën e elementëve në sekuencë për çdo iteracion. Cikli vazhdon

derisa të kemi arritur në elementin e fundit në sekuencë.

Paraqitja e for me bllokskemë

Shembull: Shuma e elementëve në një listë.

Funksioni range()

Në Python mund të gjenerohet një sekuencë me numra duke përdorur funksionin range (). range(10)
do të gjenerojë 10 numra nga 0 deri tek 9. Gjithashtu mund të përcaktohet fillimi, fundi dhe hapi si
range (fillim, fund, hap). Nëse parametri hap nuk jepet, në mënyrë standarde do të supozohet se
është 1. Për të afishuar të gjithë elementët përdoret funksioni list().

54

Algoritmikë dhe programimi

Le të shikojmë se çfarë afishon programi i mëposhtëm në Python.

Funksioni range() mund të përdoret në ciklin for për të bredhur një sekuencë me numra. Ai gjithashtu
mund të kombinohet me funksionin len() për të bredhur një sekuencë duke përdorur indeksin.

Cikli for së bashku me else

Cikli for mund të shoqërohet me një bllok else.
Instruksionet e bllokut else ekzekutohen pasi kemi kaluar
nëpër të gjithë elementët e sekuencës.

Cikli while

Cikli while përsërit një bashkësi instruksionesh për aq kohë sa kushti është i vërtetë. Forma e

përgjithshme e tij është:

while kushti :
listë instruksionesh

Në shembullin e mëposhtëm llogaritet shuma e 10 numrave duke filluar nga numri 1 dhe kushti është

i<=10.

Paraqitja e while me bllokskemë

Shembull: Shuma e 10 numrave të parë natyrorë.

55

Algoritmikë dhe programimi
Cikli while së bashku me else

Cikli while, si cikli for, mund të shoqërohet nga një bllok else. Blloku else do të ekzekutohet nëse kushti
në ciklin while vlerësohet si i gabuar.
Shembull:

Vlerësoni njohuritë
- Nxënësi/ja: koncepton se si kushtet programuese kontrollojnë rrjedhën e
programit dhe se si ato implementohen në Python.

Kontroll njohurish
1. Shkruani një program që afishon numrat nga 5 deri në 50 me hap 5.
2. Shkruani një program që afishon numrin më të vogël në një listë elementesh.
3. Shkruani një program që afishon mesataren e elementëve në një listë elementesh.
4. Shkruani një program që përcakton sa elementë pozitivë, negativë janë në një listë

elementesh.
5. Shkruani një program që pasi lexon një numër n nga përdoruesi, gjen shumën e n

termave të serisë numerike 1+4+7+10+13+...

56

Algoritmikë dhe programimi

2.8 Vlerësim njohurish në Python

1. Jepet programi i mëposhtëm në Python. Shpjegojeni atë dhe gjeni se çfarë afishon:
numra = (1, 2, 3, 4, 5, 6, 7, 8, 9)
çift = 0
tek = 0
for x in numra:
if not x % 2:
tek +=1
else:
çift +=1
print(çift)
print(tek)

2. Për secilën nga vargjet e mëposhtme shkruani një program që gjen shumën e N termave të
serisë numerike.
a. S = 3 + 6 + 9 + 12 + ...
b. S=1 - 2 + 3 - 4 + 5 - ...
c. S=2 - 4 + 6 - 8 + ...
d. S=2 - 4 + 8 - 16 + ...

3. Shkruani një program që afishon numrin maksimal në një listë elementesh.
4. Shkruani një program i cili gjen dhe afishon shumën e 100 numrave të parë natyrorë.
5. Shkruani një program që përcakton sa elementë zero janë në një listë elementesh.
6. Jepet programi i mëposhtëm në Python. Shpjegojeni atë dhe gjeni se çfarë afishon:

numra = (2, 3, 3, 2, 4, 3, 5, 6)
nr = 0
for x in numra:

if x == 3:
nr +=1
print(nr)

57

Algoritmikë dhe programimi

2.9 Tipet String dhe Array

Nxënësi/ja: Situatë
Kur duhet që të përdoren ndryshoret e tipit
-- koncepton përdorimin e
tipave string dhe array për String dhe si mund të përdoren tabelat për të
zgjidhjen e problemeve;
ruajtur disa vlera dhe cilat janë metodat që
-- afishon përdoruesit stringjet
dhe elementët e tabelës; modifikojnë tabelat?

-- akseson, ndryshon dhe heq String
elementët në tabelë;
Një string është një sekuencë e një ose më shumë karaktereve si
-- përdor metoda për shkronja, numra ose simbole që mund të jenë një konstante ose
modifikimin e elementëve të një ndryshore. Tipi String në Python ekziston në thonjëza teke (‘)
tabelës. ose thonjëza çift (“). Në mënyrë që të krijojmë një String duhet të
vendosim karakteret brenda thonjëzave:
Fjalë kyç: ‘Ky është një string me thonjëza teke.’’
“Ky është një string me thonjëza çift.”
string, array.

Shembull: Të afishohet Përshëndetje në Python.

Por gjithashtu, si me tipet e të dhënave të tjera, mund
t'i ruajmë stringjet në ndryshore dhe mund të afishojmë
përmbajtjen e tyre duke thërrur variablin.

Arrays

Arrays (tabelat) janë një grup elementesh të të njëjtit tip. Vendosja e elementëve në tabelë.
Rregullat për emërtimin e një tabele janë të njëjta si për emërtimin e ndryshoreve. Ruajtja e elementëve
në tabelë realizohet në dy mënyra si më poshtë:

Pasi kemi vendosur elementët në tabelë, mund të afishojmë elementët e saj si më poshtë:

Aksesimi i elementëve të tabelës

Elementët e tabelës në Python mund të aksesohen duke përdorur
indeksin. Indeksi përcakton pozicionin e një elementi në tabelë. Elementi
i parë në tabelë e ka indeksin 0.

Numri i elementëve në tabelë

Për gjetjen e sasisë së elementëve në tabelë përdoret metoda
len().
Shembull: Afishimi i numrit të elementëve në tabelë.

58

Algoritmikë dhe programimi

Shtimi i elementëve në tabelë Shembull: Shtimi i elementëve në tabelë

Për të shtuar një element në tabelë në Python mund
të përdoret metoda append() e cila shton një objekt
në fund të tabelës ose metoda insert(indeks, vlera)
që shton një element në pozicionin me indeksin e
paracaktuar dhe zhvendos të gjithë elementët e tjerë
të tabelës në të djathtë.

Heqja e elementëve nga tabela

Heqja e elementëve në tabelë realizohet nëpërmjet:
• del A[i] - nga tabela A heq elementin në

pozicionin i
• A.remove(element) - kërkon për elementin në

tabelën A dhe heq elementin e parë që gjen
• vlera = A.pop(i) - heq objektin në indeksin i në

tabelën A dhe e ruan në ndryshoren vlera

Shembull: Heqja e elementëve nga tabela

Renditja e elementëve në tabelë

Metoda sort() rendit elementët e tabelës sipas rendit rritës. Kjo metodë përdoret si për numrat ashtu

dhe për karakteret. Nëpërmjet metodës reverse() kthehen mbrapsht të gjithë elementët e tabelës.

Kështu elementi i fundit ndërron pozicionin me elementin e parë, elementi i parafundit me elementin

e dytë e kështu me rradhë.

Shembull: Renditja e numrave dhe shkronjave në Shembull: Renditja e numrave mbrapsht

tabelë

Kërkimi i elementëve në tabelë

Metoda index() kërkon për një element dhe kthen pozicionin e elementit të parë që gjen në tabelë.
Shembull: Afishimi i indeksit të elementit RAM

Kontroll njohurish
1. Të deklarohen dhe inicializohen disa variabla që përmbajnë tipe String. Afishoni vlerat

e tyre.
2. Ndërtoni një program në Python që krijon një tabelë me 5 elementë numra të plotë

dhe shfaq elementët e tabelës. Të kryhet aksesimi në mënyrë individuale nëpërmjet
indekseve.
3. Shkruani një program në Python që shton një element të ri në fund të tabelës.
4. Shkruani një program në Python që afishon numrin e elementëve në tabelë dhe heq
elementin tek në tabelë

59

Algoritmikë dhe programimi

2.10 Rradhët dhe Pilat

Nxënësi/ja: Situatë

-- përdor rradhët dhe pilat; Si mund të shtojmë, heqim dhe afishojmë
elementët e rradhëve dhe pilave. Cilat janë
-- implementon rradhët dhe metodat të cilat kryejnë këto veprime?
pilat në python;
Rradha
-- shton, heq dhe afishon
elementët e rradhëve dhe Rradha përfshin disa elementë në të cilën shtimi i elementëve të
pilave. rinj ndodh në fund të rradhës, ndërsa heqja e elementëve ekzistues
ndodh në fillim të rradhës. Kur një element futet në rradhë ai futet
Fjalë kyç: në fund të rradhës dhe pret për t’u zhvendosur në fillim të rradhës.
rradhë, pila.

Elementi i cili ka qëndruar më gjatë në rradhë qëndron në fillim të rradhës. Ky parim njihet si FIFO,
first-in-first-out.

Veprimet që mund të kryhen me rradhët:
• Queue() krijon një rradhë të re që është bosh. Nuk ka nevojë për parametra dhe kthen një
rradhë bosh.
• enqueue(element) shton një element të ri në rradhë.
• dequeue() heq elementin që ka hyrë i pari në rradhë. Nuk ka nevojë për parametra dhe kthen
elementin që hiqet nga rradha.
• isEmpty() teston nëse një rradhë është bosh. Nuk ka nevojë për parametra dhe kthen një vlerë
boolean-e true ose false.
• size() – kthen numrin e elementëve në rradhë. Nuk ka nevojë për parametra dhe kthen një
numër të plotë.

Shembull

Supozojmë se rr është një rradhë që është krijuar dhe është bosh. Në tabelën e mëposhtme tregohen
rezultatet me veprimet që kryen në rradhë.

Veprimet në rradhë Elementët në rradhë Vlera që kthehet
True
rr.isEmpty() []
3
rr.enqueue(4) [4] False
rr.enqueue(‘elementë’) [‘elementë’,4] 4
rr.enqueue(True) [True,’elementë’,4]

rr.size() [True,’elementë’,4]
rr.isEmpty() [True,’elementë’,4]
rr.enqueue(8.4) [8.4,True,’elementë’,4]
rr.dequeue() [8.4,True,’elementë’]

rr.dequeue() [8.4,True] ‘elementë’
rr.size() [8.4,True] 2

60

Algoritmikë dhe programimi

Pila

Pila është një strukturë të dhënash e cila përdoret për të ruajtuar elementë ku veprimet kryesore janë
push, pop dhe display.

- Push: shton një element në fund.
- Pop: heq një element nga fundi.
- Display: shfaq elementët.
Në ndryshim nga rradhët kjo strukturë të dhënash ndjek parimin Last in First Out (LIFO), pra ai që hyn
i pari në pilë del i pari.
Shembull: Të ndërtohet një listë elementësh në Python e cila funksionon si pilë.

Aftësi që zhvillohen
- Nxënësi/ja: aftësohet në përdorimin dhe implementimin e rradhëve dhe pilave në Python.

Kontroll njohurish

1. Çfarë janë rradhët? Si funksionojnë ato?

2. Çfarë janë pilat dhe si shtohen elementët në to.

3. Cilat janë metodat që përdorin rradhët dhe pilat?

4. Cilët do të jenë elementët në rradhë dhe vlera që do të kthehet pas veprimeve të

mëposhtme?

Veprimet në rradhë Elementët në rradhë Vlera që kthehet
a.isEmpty()
a.enqueue(4)
a.enqueue(‘a’)
a.enqueue(15)
a.enqueue(‘b’)
a.enqueue(‘c’)
a.size()
a.isEmpty()
a.enqueue(‘d’)
a.dequeue()
a.dequeue()
a.dequeue()
a.size()

61

Algoritmikë dhe programimi

2.11 Funksionet dhe procedurat

Nxënësi/ja: Situatë

-- koncepton se si Si mund të ndërtojmë një funksion me
procedurat/funksionet parametra dhe pa parametra?
mund të thirren
procedura/funksione Funksionet janë të njohura në shumë gjuhë programimi. Shpesh ato
brenda tyre; thërriten si proçedura. Ato ofrojnë një mënyrë shumë të mirë për të
ndarë kodin në blloqe më të përdorshme. Këto blloqe ne mund t’i
-- implementon funksione ripërdorim në më shumë se në një vend në program dhe të kursejmë
me dhe pa parametra; kohë.

-- ndërton dhe thërret
funksionet.

Fjalë kyç: Përcaktimi i një funksioni

funksionet, procedurat. Një funksion në Python përcaktohet nga fjala kyçe def. Sintaksa e
përgjithshme është:

def emër_funksioni(listë_parametrash):
trupi i funksionit

Lista e parametrave konsiston nga zero ose më shumë parametra. Nëse ky funksion do të thirret në pjesë

të ndryshme të programit, parametrat quhen argumenta. Parametrat mund të jenë të detyrueshëm

ose opsional. Trupi i funksionit përbëhet nga disa instruksione të cilat do të ekzekutohen sa herë që do

të thërret një funksioni. Funksioni mund të thërret nëpërmjet emrit të tij të ndjekur nga ( ).

Shembull: Ndërtimi i një funksioni në Python i cili afishon “Përshëndetje nga funksioni”

Funksione që kthejnë vlerë

Trupi i funksionit mund të përmbajë fjalën kyçe return. Në këtë rast kemi një funksion që kthen vlerë.
Kjo fjalë kyçe përfundon ekzekutimin e funksionit dhe kthen rezultatin. Nëse nuk kemi fjalën kyçe
return, funksioni përfundon kur mbërrijmë në fund të trupit të funksionit.

Shembull: Të ndërtohet funksioni i cili kthen shumën e dy numrave. Thirreni funksionin e krijuar.

62

Algoritmikë dhe programimi

Në Python gjithashtu mund të krijojmë funksione me parametra opsionalë, si në shembullin e
mëposhtëm:

Shembull:
Të ndërtohet një program në Python i cili llogarit serinë e numrave të Fibonaçit duke përdorur funksionin.

Ndërtimi dhe thërritja e funksionit Afishimi i rezultatit

Aftësi që zhvillohen
- Nxënësi/ja: kupton se si mund të ndërtohen funksione/procedura në Python.

Kontroll njohurish

1. Çfarë është një funksion dhe cila është sintaksa e tij.
2. Ndërtoni një funksion në Python me një parametër i cili afshon katrorin e një numri.

Thërrisni funksionin.
3. Ndërtoni një funksion në Python i cili merr si parametër një numër x dhe llogaritni

vlerën e funksionit 3x2+4.
4. Ndërtoni një funksion i cili kthen vlerën absolute të një numri.
5. Ndërtoni një funksion i cili merr si parametër numrin a dhe kthen vlerën e funksionit y

si më poshtë:

63

Algoritmikë dhe programimi

2.12 Algjebra Booleane

Nxënësi/ja: Situatë

-- koncepton algjebrën Algjebra Booleane mund të përdoret për
Booleane; të thjeshtuar një shprehje komplekse.
Cilat janë ligjet dhe teoremat e
-- identifikon operatorët Algjebrës Booleane ?
AND, OR dhe NOT;

-- kuptojnë ligjet bazë; Goorge Boole, një matematikan anglez i shekullit të nëntëmbëdhjetë,

-- identifikon teoremat e zhvilloi një sistem të algjebrës sipas së cilës arsyetimet mund të
Algjebrës Booleane. shpreheshin në mënyrë matematikore. Sistemi i algjebrës logjike të

Fjalë kyç: Boole-it sot njihet si algjebra Boolean-e.
algjebra Booleane, AND,
OR, NOT. Konceptet bazë të algjebrës Booleane

Algjebra Booleane është algjebra logjike në të cilën simbolet
përdoren pët të paraqitur nivele logjike. Për këtë mund të përdoret

çdo simbol, megjithatë zakonisht përdoren shkronjat e alfabetit. Nivelet logjike lidhen me simbolet 1

ose 0, kurse shkronjat përdoren si variabla që mund të marrin vlerat 1 ose 0. 1 përfaqëson një shprehje

të saktë, një qark të mbyllur ose llambën e ndezur, kurse 0 paraqet një shprehje të gabuar, një qark të

hapur ose një llambë të fikur. Algjebra Booleane ka vetëm dy veprime matematikore, shumëzimin dhe

pjesëtimin. Këto veprime shoqërohen nga operatorët OR, AND ose NOT.

Mbledhja llogjike OR

Simboli + (mbledhja llogjike) vendoset midis dy variablave A dhe B. Duke pasur parasysh që A dhe B
mund të marrë vetëm vlerat 0 dhe 1, kombinimet input dhe output mund të shikohen si më poshtë si
dhe duke i ilustruar me tabelën e vërtetësisë dhe portën llogjike OR.

0+ 0 = 0 A B Y= A+B
0 + 1 =1 00 0
01 1
1+0=1 10 1
11 1
1+1=1
A+B Tabela e vërtetësisë Porta llogjike OR

Simboli plus (+) lexohet si “OR” (OSE), kështu shprehja llogjike X + Y lexohet si X ose Y.

Shumëzimi llogjik AND
Simboli i shumëzimit “.” (shumëzimi llogjik) ose operatori AND (dhe), mund të përcaktohet duke listuar

të gjithë kombinimet e mundshme të variablave input A dhe B dhe rezultatit output Y si më poshtë, si

dhe duke i ilustruar me tabelën e vërtetësisë dhe me portën logjike AND.

0.0=0 A B Y=A . B
00 0
0 . 1 =1 01 0
10 0
1.0=1 11 1

1.1=1 Tabela e vërtetësisë Porta logjike AND
A.B

64

Algoritmikë dhe programimi

Operatori llogjik NOT

Operatori i mbetur logjikë JO, përfaqësohet në mënyrë tipike nga shenja e mbivijëzimit ose apostrofi.
Prandaj, të dy X̅ (i mbivijëzuar) dhe x’ lexohen si “JO X.” Këtë mund ta ilustrojmë duke përdorur tabelën
e vërtetësisë, kur dimë që X do të marrë vlerën 0 ose 1.

X Y=X̅
01
10

Ligjet e bazë dhe Teoremat e Algjebrës Booleane
} Veprimet OSE (OR)
1. X + 0 = X
2. X + 1 = 1
3. X + X = X
4. X + X̅ =1
5. X . 0 = 0 } Veprimet DHE (AND)
6. X . 1 = X Komplement i dyfishtë
7. X . X = X
8. X + X̅=0
9. X̅= X
}11. XY = YX Ligji i ndërrimit
10. X + Y = Y + X

}13. (X . Y). Z =X. (Y. Z) Ligji i shoqërimit
12. (X + Y ) +Z = X +(Y + Z)

}15. X + Y .Z = (X + Y) . (X + Z) Ligji i shpërndarjes
14. X (Y + Z) = XY + XZ

}17. X (X + Z) = X
16. X + XZ = X Ligji i absorbimit

}19. X (X̅+Y) =X.Y Ligji i Identitetit
18. X+ X̅Y =X+Y

}21. X.Y = X̅+ Ȳ
20. X+Y = X̅. Ȳ Teorema e De Morgan

Aftësi që zhvillohen
- Nxënësi/ja: njihet me algjebrën booleane, ligjet dhe teoremat e saj.

Kontroll njohurish

1. Çfarë është algjebra booleane?
2. Çfarë nënkuptojmë me simbolet 0 dhe 1?
3. Ndërtoni portën logjike dhe tabelën e vërtetësisë për F=X.Y, F=X+Y dhe F=Ā.
4. Cilat janë ligjet dhe teoremat e Algjebrës Booleane? Zgjidhni tre prej tyre dhe ndërtoni

tabelën e vërtetësisë për të vërtetuar vërtetësinë e tyre.

65

Algoritmikë dhe programimi

Nxënësi/ja: 2.13 Harta Karnough

-- koncepton hartën Karno; Situatë

-- grupon shprehjet duke Si ndërtohet tabela e vërtetësisë
eleminuar variablat e dhe harta Karno në mënyrë që të
panevojshëm; eleminojmë variablat e panevojshëm ?
Cilat janë rregullat e hartës Karno?
-- ndërton tabelën e
vërtetësisë; Harta Karno

-- identifikon rregullat e Harta Karno (Karnaugh) ofron një mundësi për grupimin e shprehjeve
hartës Karno. në faktorë të përbashkët duke eliminuar variablat e panevojshëm.
Harta Karno mund të përshkruhet si ekuivalentja e tabelës së
Fjalë kyç: vërtetësisë.
harta Karno, tabela e Më poshtë ilustrohet korrespondenca midis hartës Karno dhe tabelës
vërtetësisë, rregulla. së vërtetësisë për rastin e përgjithshem të dy variablave:

Tabela e vërtetësisë Harta Karno

Vlerat që vendosen në hartën Karno merren nga kolona F, në të cilën ndodhet output-i i tabelës së
vërtetësisë. Në hartën Karno do të kemi aq vlera sa rreshta kemi në tabelën e vërtetësisë. Input-et A
dhe B do të vendosen si në tabelë. Shembulli i mëposhtëm e shpjegon këtë.

AB F
00 0
01 1
10 1
11 1

Tabela e vërtetësisë Harta Karno

Vlerat sipër dhe majtas në hartën Karno mund të mendohen si koordinata. Kështu, përshembull qeliza
në të sipër djathtas hartës Karno ka koordinata: A=1 dhe B=0. Kjo qelizë i korespondon një rreshti në
tabelën e vërtetësisë ku A=1, B=0 dhe F=1, për këtë arsye në hartën Karno do të vendosim vlerën 1.

Rregullat e Hartës Karno

Harta Karno përdor rregullat e mëposhtme për të thjeshtuar shprehjet.

• Grupet nuk duhet të përfshijnë qeliza 0.

66

Algoritmikë dhe programimi

• Grupet mund të jenë horizontale ose vertikale, por jo diagonale. 

• Grupet mund të përmbajnë 1, 2, 4, 8, ose në përgjithësi 2n qeliza. Pra, numri i njëshave fqinjë
brenda grupit duhet të jetë fuqi e dyshit. 

• Grupi duhet të jetë sa më i madh të jetë i mundur. Një anëtar i një grupi mund të bëjë pjesë në
më shumë se një grup. Grupet mund të mbishkruhen. Çdo njësh duhet të jetë në të paktën në
një grup. Duhet të marrim numrin minimal të grupeve që formohen, por pa thyer rregullat e
mësipërme. 

• Harta Karno supozohet si glob. Për këtë arsye qelizat e mëposhme janë fqinje.

Aftësi që zhvillohen
- Nxënësi/ja: thjeshton shprehjet duke përdorur hartën Karno.

Kontroll njohurish
1. Për çfarë përdoret harta Karno?
2. Çfarë është tabela e vërtetësisë?
3. Cilat janë rregullat në Hartën Karno për të thjeshtuar shprehjet?

67

Algoritmikë dhe programimi

2.14 Vlerësim njohurish për hartën Karno

Shembull 1
Thjeshtoni funksionin Z = XȲ+XY duke përdorur algjebrën booelan-e dhe hartën Karno.
• Duke përdorur algjebrën Booleane: Z= XȲ+XY= X(Ȳ+Y) = X

• Duke përdorur Hartën Karno:
Fillimisht ndërtojmë tabelën e vërtetësisë. Më pas ndërtojmë hartën Karno duke u mbështetur
tek tabela e vërtetësisë.

X Y Ȳ XȲ XY Z
00 1 0 0 0
01 0 0 0 0
10 1 1 0 1
11 0 0 1 1

Nga harta Karno mund të shikojmë se variabli A ka vlerë të vërtetë dhe të gabuar brenda
grupit. Për këtë arsye eliminojmë variablin Y duke lënë vetëm variablin X i cili brenda grupit
ka vlerën e vërtetë Z = X.

Shembull 2
Konsideroni shprehjen Z= ĀB̄+A B̄+ĀB. Thjeshtoni shprehjen duke përdorur hartën Karno.

A B Ā B̄ ĀB̄ AB̄ ĀB Z
001 1 1 0 01
011 0 0 0 11
100 1 0 1 01
110 0 0 0 00

Në grupin e parë A = 0, B = 0 dhe A = 1, B = 0. Variabli A ndryshon vlerë 0 dhe 1, ndërsa
variabli B ka vlerën 0. Kështu kur B=0 output është 1 dhe shprehja do të jetë B̄. Në grupin e
dytë variabli B merr vlerën 0 dhe 1, ndërsa variabli A ka vlerën 0. Pra grupi do të ketë vlerën
Ā. Duhet të kemi parasysh që variablat brenda grupit shumëzohen, ndërsa grupet mblidhen
me njëri tjetrin. Shprehja Z= ĀB̄+A B̄+ĀB thjeshtohet Z= Ā+ B̄.

Kontroll njohurish

1. Thjeshtoni shprehjet e mëposhtme:
a. Z = XȲ+XY + Y
b. Z = Z= ĀB̄+ ĀB + A
c. Z= ĀB̄+A B̄+ĀB + AB
d. Z= ĀB̄+ A + B

68

Algoritmikë dhe programimi

2.15 Sistemet kompjuterike dhe Inteligjenca artificiale

Nxënësi/ja: Situatë

-- koncepton që sistemet Si mund të përdoren sistemet kompjuterike
kompjuterike mund të për të kryer detyra që kërkojnë inteligjencën

programohen për të njerëzore?
kryer detyra që kërkojnë

inteligjencën njerëzore; Inteligjenca artificiale

-- koncepton inteligjencën Inteligjenca artificiale përfshin zhvillimin e sistemeve kompjuterike
artificiale; të afta për të kryer detyra të cilat kërkojnë inteligjencën njerëzore
si perceptimi vizual, njohja e fjalëve, procese në vendimmarrje dhe
-- identifikon fushat ku përkthimi midis gjuhëve të ndryshme.
aplikohet inteligjenca
artificiale. Inteligjenca artificiale është një degë e inxhinierisë kompjuterike
e dizenjuar për të krijuar makina që sillen si njerëz. Pavarësisht
Fjalë kyç: se inteligjenca artificiale ka pasur një zhvillim të madh, ajo nuk ka
arritur ende të kryejë pjesë të sjelljes njerëzore si sjellja emocionale,
sisteme kompjuterike, identifikimi i objekteve dhe trajtimi i tyre si një njeri.
inteligjenca artificiale.

Fushat ku aplikohet
Ekzistojnë disa fusha ku aplikohet inteligjence artificiale. Disa nga fushat ku ajo aplikohet janë:

• Sisteme Ekspertësh

Kompjuterat mund të programohen të marrin vendime në situatave
të cilat përfshijnë jetën reale. Integrimi i makinave, programe dhe
informacioneve specifike lejojnë një sistem kompjuterik të japë
arsyetime, shpjegime dhe këshilla për një përdorues.

Sisteme ekspertësh

• Gjuha natyrore
Sistemet kompjuterike mund të njohin gjuhën natyrore njerëzore nëse
komunikojnë drejtpërdrejt me një përdorues ose një klient.

Komunikimi njeri-kompjuter Sisteme neurale

• Sisteme neurale
Sistemet neurale simulojnë inteligjencën duke u përpjekur të
riprodhojnë llojet e lidhjeve fizike që ndodhin në trurin e njeriut.
Për shembull, sistemet neurale mund të parashikojnë ngjarje në të
ardhmen duke u bazuar në të dhënat historike.

69

Algoritmikë dhe programimi

• Robotika

Robotika përfshin sisteme kompjuterike të programuar që shohin, dëgjojnë
dhe reagojnë ndaj stimujve ndijor, si: drita, nxehtësia, temperatura, zëri
dhe presioni.

Robotika

• Sisteme lojrash

Sistemet e lojrave mund të manipulojnë lojëra strategjike, të tilla si
shahu, ku makina dhe sistemi kompjuterik mund të mendojnë në një
numër eksponencial të pozicioneve të mundshme në mënyrë që të
luajnë në mënyrë efektive kundër një njeriu.

Sisteme lojrash njeri-kompjuteri

Aftësi që zhvillohen

- Nxënësi/ja: kupton që sistemet kompjuterike mund të programohen për të kryer detyra që kërkojnë inteligjencën
njerëzore.

Kontroll njohurish

1. Çfarë është inteligjenca artificiale?
2. Cilat janë fushat ku aplikohet inteligjenca artificiale?
3. Cilat veprime që kryejnë njerëzit mund të kryhen nga sistemet kompjuterike?
4. Kërkoni në internet për aplikime të tjera të inteligjencës artificiale.

70

Algoritmikë dhe programimi

2.16 Vlerësim njohurish (2 orë)

1. Çfarë afishon programi i mëposhtëm?
n=5;
for i in range(n):
for j in range(i):
print (‘* ‘, end=””)
print(‘’)

for i in range(n,0,-1):
for j in range(i):
print(‘* ‘, end=””)
print(‘’)

2. Ndërtoni një program në Python i cili numëron elementët çift në një tabelë.
3. Ndërtoni një program i cili merr disa elementë nga përdoruesi dhe i afishon në rendin e

kundërt.
4. Çfarë afishon kodi i mëposhtëm në Python?

a=3
b=7
def ndërro(a, b):

temp = a
a=b
b = temp
ndërro(a, b)
print(a, b)
5. Ekzekutoni kodin e mëposhtëm dhe tregoni cilët elementë kanë mbetur në tabelë.
sh = [“a”, “b”, “c”, “d”, “e”, “f”, “g”]
del sh[5]
sh.remove(“d”)
sh.pop(3)
print(sh)
6. Ndërtoni një funksion i cili merr si parametër numrin a dhe kthen vlerën e funksionit y si
më poshtë:

7. Thjeshtoni shprehjet e mëposhtme duke ndërtuar tabelën e vërtetësisë dhe hartën Karno:

a. Z = ĀB̄+ ĀB
b. Z = AB̄+ ĀB + A
c. Z = ĀB̄+ B

71

72

TEMATIKA MIIIE-NBAAXZHAITMEITIËTYDRHEËNAVE DHE

3.1 Hyrje në bazat e të dhënave. Avantazhet e bazave të të dhënave relacionale
mbi tabelat me një dimension

3.2 Modeli Relacional i të dhënave
3.3 Formularët normal të parë, të dytë dhe të tretë
3.4 Hyrje në SQL (Structured Query Language)
3.5 Prezantim me SQL Server dhe krijimi i tabelave
3.6 Shtrëngimet në SQL
3.7 Komanda SELECT. Veprime bazë
3.8 Veprimtari praktike
3.9 Operatorët e bashkësisë. Funksionet Statistikore, group by dhe Join
3.10 Veprimtari praktike: Krijimi i një baze të dhënash dhe veprime të ndryshme
me Select
3.11 Shprehjet BEGIN, END. Transaksionet dhe vetitë APIQ
3.12 Bazat e dhënave të shpërndara, të dhënat e mëdha dhe të dhënat e hapura
3.13 Vlerësim njohurish
Në këtë tematikë, nxënësi/ja:
• identifikon tabela, regjistrime, fusha, çelësat kryesorë dhe të huaj; interpreton dhe krijon

diagramin e marrëdhënieve (diagramin relacional) midis njësive që ruhen në bazën e të
dhënave; përdor diagramet e skemave të bazave të të dhënave për të krijuar baza të
dhënash relacionale të cilat përmbajnë së paku tri tabela; përzgjedh tipet e duhura të
të dhënave kur krijon bazën e të dhënave; i pergjigjet kërkesave në SQL duke përfshirë
përdorimin e JOIN, UNION, EXCEPT, GROUP BY.

73

Bazat e të dhënave dhe menaxhimi i tyre

3.1 Hyrje në bazat e të dhënave. Avantazhet e bazave të të
dhënave relacionale mbi tabelat me një dimension

Nxënësi/ja: Situatë
Babai i Megit është i shqetësuar sepse kompania e tij
-- koncepton çfarë janë përbëhet nga shumë punonjës që kryejnë veprime të
bazat e të dhënave dhe
DBMS;

-- njeh funksionalitetet bazë shumta dhe ai nuk po arrinte dot të menaxhonte dhe
të DBMS;
të ruante të dhënat e tyre rreth punëve. Çfarë do t’i
-- identifikon avantazhet e
bazave të të dhënave; sugjeronit ju, babait të Megit për të ruajtur të dhënat?

-- identifikon disavantazhet Baza e të dhënave
e tabelave me një
dimension. Bazat e të dhënave dhe sistemet e bazave të të dhënave janë bërë një
komponent themelor në jetën e përditshme në shoqërinë moderne.
Fjalë kyç: Gjatë një dite, shumë prej nesh ndeshen me disa aktivitete të cilat
shkaktojnë bashkëveprim me një bazë të dhënash.

bazë të dhënash, DBMS, Përkufizime bazë
avantazh, dimension, tabelë.
Një bazë të dhënash është një koleksion (grumbull) të dhënash të
lidhura. Për shembull të dhënat e nxënësve dhe rezultatet e tyre. Me të dhëna, kuptojmë fakte të

njohura të cilat mund të regjistrohen dhe që kanë një kuptim implicit. Për shembull të dhënat për të

përshkruar nxënësin si emri, mbiemri, lëndët si kodi, emërtimi i tyre, regjistrimi i nxënësve në lëndët

që ata ndjekin etj.

Baza e të dhënave ka këto veti implicite:
● Baza e të dhënave paraqet disa aspekte, pjesë të botës reale të dhënat e së cilës ruhen në bazën e

të dhënave, e quajtur si minibota. Ndryshimet në minibotë reflektohen në bazën e të dhënave. Për
shembull lista e notave të nxënësit.

● Baza e të dhënave është koleksion koherent logjik i të dhënave. Një lloj i rastësishëm i të dhënave
nuk mund të referohet në mënyrë korrekte si bazë të dhënash.

● Baza e të dhënave dizenjohet, ndërtohet dhe popullohet me të dhëna për një qëllim të caktuar.
Ajo ka një grup të caktuar përdoruesish dhe disa aplikacione të paramenduara në të cilat këto
përdorues janë të interesuar.

Pra, një bazë të dhënash ka një burim nga i cili merren të dhënat, disa nivele bashkëveprimi me ngjarje
në botën reale dhe një audiencë e cila është e interesuar në mënyrë aktive në përmbajtjen e saj. DB
mund të jetë e çdo madhësie dhe kompleksiteti.

Sistemi i menaxhimit të bazës së të dhënave (Database Management System - DBMS) është një paketë
software (program) i cili i jep mundësi përdoruesve të krijojnë, mirëmbajnë e shfrytëzojnë një DB të
kompjuterizuar. Shembuj: Oracle 12c DBMS, MySQL DBMS, SQL Server DBMS etj.

Lloje të ndryshme DBMS

74

Bazat e të dhënave dhe menaxhimi i tyre

Do të quajmë DB (bazë të dhënash) së bashku me softuerin e DBMS, sistem i bazës së të dhënave. Në
këtë përkufizim mund të përfshihen edhe aplikacionet.

Funksionalitetet tipike të DBMS
DBMS është një softuer sistemi me qëllim të përgjithshëm i cili lehtëson
proceset e përcaktimit, ndërtimit, manipulimit dhe të përdorurit bashkë
(sharing) të DB midis përdoruesve dhe aplikacioneve të ndryshëm.
Përcaktimi i DB përfshin specifikimin e tipeve të të dhënave, strukturave
dhe konstreineve (shtrëngesë, detyrim) për të dhënat që do ruhen në
DB. Përcaktimi i bazës së të dhënave ruhet gjithashtu nga DBMS në
formën e katalogut ose fjalorit të DB; ai quhet meta-data. DBMS ka gjuhën DBMS

e përcaktimit të të dhënave (DDL - Data Definition Language) për ndërtimin ose ngarkimin e strukturës
fillestare dhe të dhënave nga një medium tjetër.

Ndërtimi i DB është procesi i ruajtjes së vetë të dhënave në ndonjë medium (depozitë) e cila kontrollohet
nga DBMS.

Manipulimi i DB përfshin funksione të tilla si bërja e kërkesave (query) ndaj DB për të marrë të dhëna
specifike dhe për të gjeneruar raporte nga të dhënat, modifikimi i DB për të reflektuar ndryshimet
në minibotë duke shtuar, fshirë apo modifikuar përmbajtjen e saj, aksesimi i bazës së të dhënave
nëpërmjet aplikacioneve Web. DBMS ka gjuhën e manipulimit të të dhënave (DML - Data Manipulation
Language) për të realizuar këto veprime.

DBMS lejon përdorimin dhe procesimin e përbashkët të të dhënave nga disa përdorues dhe programe
nëpërmjet aksesit konkurent të të dhënave duke ruajtur qëndrueshmërinë dhe vlefshmërinë e tyre.

DBMS siguron veçimin midis programeve dhe të dhënave duke përdorur arkitekturën me 3-nivele e
cila njihet si pavarësia program - të dhëna. Ajo lejon të ndryshojë struktura e të dhënave dhe mënyra
e ruajtjes së tyre (storage) pa ndryshuar programet e aksesit të DBMS.

DMBS siguron lehtësira për sigurinë dhe mirëmbajtjen e DB si:

a. masa për mbrojtjen dhe sigurinë për të parandaluar aksesin e paautorizuar.
b. paraqitjen dhe vizualizimin e të dhënave.
c. mirëmbajtjen e DB duke përdorur katalogun e sistemit (i njohur si meta data) i cili ruan përshkrimin
e çdo baze të dhënash.

Karakteristikat kryesore të përdorimit të bazës së të dhënave

Në procesimin tradicional të skedarëve, çdo përdorues përcakton dhe implementon skedarët që i
duhen për një softuer specifik si pjesë e programit. Kjo tepri në përcaktimin dhe ruajtjen e të dhënave
rezulton në shpenzimin e hapësirës së ruajtjes dhe në përpjekje të tepërta për të mirëmbajtur të
dhënat në kohë (up-to-date).
Në përafrimin e DB mbahet një depo e vetme të dhënash e cila përcaktohet vetëm një herë dhe pastaj
aksesohet nga përdorues të shumtë. Në sistemin e skedarëve, çdo aplikacion është i lirë t’i emërtojë
elementët e të dhënave në mënyrë të pavarur. Ndërsa në DB, emrat e fushave përcaktohen një herë dhe
përdoren në mënyrë të përsëritur nga kërkesat (query), transaksionet dhe aplikacionet. Karakteristikat
kryesore të përafrimit të DB përkundrejt përafrimit të procesimit të skedarëve janë:
● Natyra vetë përshkruese e sistemit të bazës së të dhënave. Një karakteristikë themelore e

përafrimit të DB është që sistemi i DB përmban jo vetëm vetë bazën e të dhënave por gjithashtu
edhe një përcaktim të plotë ose përshkrimin e strukturës së bazës së të dhënave dhe konstreineve.
Ky përcaktim ruhet në katalogun e DBMS. Informacioni i ruajtur në katalog quhet meta-data (të
dhëna mbi të dhënat). Kjo lejon që DBMS të punojë me aplikacione të ndryshme të bazave të
të dhënave. Në procesimin tradicional të skedarëve, përcaktimi i të dhënave është pjesë e vetë
programit. Prandaj, këto programe janë të detyruara të punojnë vetëm me një bazë të dhënash
specifike, struktura e të cilave deklarohet në program.

75

Bazat e të dhënave dhe menaxhimi i tyre

● Veçimi midis programeve dhe të dhënave. Në procesimin tradicional të skedarëve, struktura e
skedarëve të të dhënave është e futur në program, kështu që çdo ndryshim në strukturën e një
skedari kërkon ndryshimin e të gjithë programeve që aksesojnë këtë skedar. Përkundrazi, programet
që aksesojnë DBMS nuk kërkojnë ndryshim të tillë në shumicën e rasteve. Struktura e skedarëve të
të dhënave ruhet në katalogun e DBMS veçmas nga programet e aksesit. Kjo veti quhet pavarësia
program – të dhëna dhe bëhet e mundur me anë të arkitekturës me tre nivele e cila lejon ndryshimin
e strukturës së të dhënave dhe të organizimit të ruajtjes (storage) pa ndryshuar programet e aksesit
të DBMS.

● Siguron abstragimin e të dhënave me anë të modelit të të dhënave. Modeli i të dhënave përdoret
për të fshehur detaje të ruajtjes dhe u paraqet përdoruesve pamjen konceptuale të bazës së të
dhënave.

● Suporton pamje (view) të shumta të të dhënave. Një DB ka shumë përdorues, secili prej tyre mund
të shikojë një pamje të ndryshme të DB e cila përshkruan vetëm të dhënat për të cilat është i
interesuar përdoruesi.

● Përdorimi bashkë (share) i të dhënave dhe procesimi i transaksioneve shumëpërdorues. DBMS
lejon shumë përdorues të aksesojnë bazën e të dhënave në të njëjtën kohë, për të marrë apo
modifikuar të dhëna nga e njëjta bazë të dhënash. DBMS duhet të përfshijë një modul kontrolli
konkurence për t’u siguruar që disa përdorues që përpiqen të modifikojnë të njëjtat të dhëna, ta
bëjnë këtë në mënyrë të kontrolluar që rezultati i modifikimit të jetë korrekt. Gjithashtu ka edhe një
nënsistem rekuperimi i cili siguron që çdo transaksion i cili ka mbaruar me sukses të regjistrohet në
mënyrë të përhershme në bazën e të dhënave. OLTP (Online Transaction Processing) është pjesa
më e madhe e aplikacioneve të bazës së të dhënave e cila lejon të ekzekutohen qindra transaksione
në sekondë.

Avantazhet e përdorimit të DBMS përkundrejt sistemit të skedarëve

1. Kontrollimi i teprisë në ruajtjen e të dhënave.
Në përafrimin tradicional, çdo grup në mënyrë të pavarur mbante të dhëna për studentët dhe pjesa
më e madhe e të dhënave ruhej dy herë. Kjo tepri në ruajtjen e të njëjtave të dhëna disa herë çon në
disa probleme. Së pari, lind nevoja për të kryer një modifikim të vetëm llogjik si, shtimi i të dhënave
për një student të ri, disa herë: një herë për çdo skedar ku regjistrohen të dhënat e studentit. Kjo çon
në dublikimin e përpjekjeve. Së dyti, shpenzohet hapësira e depozitimit kur ruhen të njëjtat të dhëna
në mënyrë të përsëritur dhe ky problem mund të jetë serioz për baza të dhënash të mëdha. Së treti,
skedarët që paraqesin të njëjtat të dhëna mund të bëhen të paqëndrueshëm. Kjo ndodh sepse një
modifikim mund të aplikohet në disa skedarë por jo në disa të tjerë. Edhe sikur një modifikim si, shtimi
i një studenti të ri të aplikohet tek të gjithë skedarët e duhur, të dhënat në lidhje me studentin mund
të jenë akoma të paqëndrueshme sepse modifikimet janë aplikuar në mënyrë të pavarur nga çdo grup
përdoruesish.
Në përafrimin e DB të dhënat ruhen vetëm në një vend në DB duke u përdorur nga disa përdorues.
Kjo njihet si normalizim i të dhënave dhe siguron qëndrueshmërinë e kursen hapësirën e depozitimit.
2. Kufizimi i aksesit të paautorizuar në të dhënat.
Kur shumë përdorues përdorin një DB të madhe, shumica e tyre nuk do të autorizohen të aksesojnë
të gjithë informacionin në DB. Për shembull të dhënat financiare shpesh konsiderohen konfidenciale
prandaj vetëm personat e autorizuar lejohen të aksesojnë të dhëna të tilla. Kontrollohet edhe tipi i
veprimit të aksesit: marrje, kthim ose modifikim. Zakonisht, përdoruesve ose grupeve të përdoruesve
u jepen llogari të mbrojtura nga fjalëkalimi. Vetëm stafi i administratorëve (DBA) përdor komanda të
privilegjuara dhe lehtësira. DBMS duhet të imponojë këto kufizime automatikisht.

76

Bazat e të dhënave dhe menaxhimi i tyre

3. Siguron ruajtje (depozitim, storage) të përhershme për objektet dhe struktura e të dhënave të
programit.

4. Siguron struktura të ruajtjes (indekset) për procesimin e query-ve efiçente.
Sistemet e DB duhet të kenë aftësi për ekzekutimin eficent të query-ve dhe modifikimeve. Meqenëse DB
ruhet në disk, DBMS duhet të ketë struktura të dhënash të specializuara për të përshpejtuar kërkimin
në disk për rekordet e dëshiruara. Skedarë ndihmës të quajtur indekse përdoren për këtë qëllim.
5. Siguron optimizim të query-ve për procesim efiçent.
6. Siguron shërbime Backup-i dhe Rekuperimit (recovery).
DBMS ofrojnë lehtësira për rekuperimin nga dështimet e harduerit ose softuerit. Nënsistemi i backup
dhe recovery është përgjegjës për rekuperimin.
7. Siguron ndërfaqe të ndryshme për klasa të ndryshme të përdoruesve.
Ndërfaqet e stilit të formave dhe ata të bazuar në menu njihen si ndërfaqe grafike e përdoruesit (GUI).
Ndërfaqet web GUI për DB janë sot shumë të zakonshme.
8. Paraqitja e lidhjeve komplekse midis të dhënave.
DB përfshin shumë të dhëna që janë të ndërlidhura në mënyra të ndryshme.
9. Zbatimi i shtrëngimeve të integritetit.
DBMS duhet të ofrojë aftësi për përcaktimin dhe zbatimin e konstreineve. Tipi më i thjeshtë i konsteineve
të integritetit përfshin përcaktimin e tipeve të të dhënave për fushat e tabelave.
10. Redukton kohën e zhvillimit të aplikacionit.

Kontroll njohurish

1. Përkufizoni termat: të dhëna, bazë të dhënash, sistemi i bazës së të dhënave,
katalog i bazës së të dhënave, meta-data.

2. Çfarë është DBMS? Cilat janë funksionet kryesore të saj?
3. Përmendni disa nga fushat e përdorimit të bazave të të dhënave. Jepni shembuj

praktikë të përdorimit direkt ose indirekt të tyre.
4. Cilat janë përparësitë dhe të metat e përdorimit të bazave të të dhënave kundrejt

përdorimit të skedarëve?
5. Diskutoni rreth të mirave që ka përdorimi i DBMS.

77

Bazat e të dhënave dhe menaxhimi i tyre

3.2 Modeli Relacional i të dhënave

Nxënësi/ja: Situatë

-- koncepton konceptet e Alisa krijoi disa tabela me kolonat përkatëse për
modelit relacional; të ruajtur të dhënat rreth nxënësve, lëndëve dhe

-- identifikon tabela, vlerësimeve të tyre. Si mendoni, çfarë fushash

regjistrime, fusha, çelësat mund të ruajë ajo në këto tabela dhe si të paraqesë lidhjen midis tyre?

kryesorë dhe të huaj;

-- krijon dhe lexon skema në Koncepte të modelit relacional

modelin relacional. Modeli relacional u krijua fillimisht nga Ted Codd i kompanisë IBM
research në vitin 1970. Modeli përdor konceptet e relacioneve
Fjalë kyç: matematikore e cila ngjan si një tabelë vlerash. Implementimi i parë
modeli relacional, çelës tregëtar i modelit relacional u bë në fillimet e vitit 1980 në sistemet e
kryesor, çelës i huaj, operimit IBM dhe Oracle DBMS. Modelet relacionale komerciale më
fushë, regjistrim. popullore aktualisht janë DB2, Oracle, SQL Server dhe Access, por ka
edhe sisteme open source si Mysql dhe PostreSQL.
Përkufizime informale
Modeli relacional e paraqet bazën e të dhënave si një bashkësi relacionesh. Çdo relacion është një
tabelë vlerash ku çdo rresht në tabelë paraqet një koleksion të dhënash që kanë lidhje me njëra-tjetrën
(atribute) të një entiteti real (p.sh. nxënës). Emri i tabelës dhe i kolonave ndihmojnë në interpretimin e
kuptimit të të dhënave në çdo rresht. Çdo rresht paraqet fakte rreth një nxënësi të caktuar.

Figura e mëposhtme jep një shembull të entitetit NXËNËS.

Atributet dhe tuple-at e relacionit nxënës

Emrat e kolonave (Nxënës-ID, Emri, Mbiemri, Adresa, Nr-Tel) janë vetitë individuale të çdo entiteti.
Të gjithë vlerat në një kolonë janë të të njëjtit tip. Në terminologjinë formale të modelit relacional,
rreshti njihet me emrin ‘tuple’ ose n-ëshe, koka e kolonës njihet me emrin ‘atribut’ dhe tabela njihet
me emrin ‘relacion’. Tipi i të dhënave të çdo atributi ka një fushë (domain) të vlerave të mundshme.
Për shembull, fusha e emrit është bashkësia e karaktereve, fusha e moshës është një vlerë integer
(numër i plotë).
Çdo rresht ka një vlerë ose bashkësi vlerash që e identifikon këtë rresht në mënyrë unike në tabelë dhe
që quhet çelës. Në tabelën nxënës, Nxënës-ID është çelës.
Ndonjëherë Id e rreshtave ose numrat sekuencialë përcaktohen si çelësa për të identifikuar rreshtat në
një tabelë dhe këto quhet çelësa artificialë ose zëvendësues.

Përkufizime formale: Domain-et, atributet, tuple-at dhe relacionet

Një fushë ose domain ‘D’ është një bashkësi vlerash atomike ku lëviz një atribut, ku me atomike

78

Bazat e të dhënave dhe menaxhimi i tyre

kuptojmë vlera të pandashme. Një metodë e zakonshme për specifikimin e domain-it është ajo e
përcaktimit të një tipi të dhënash, gjithashtu mund të ketë edhe një format për ta përcaktuar atë.

ArSek1l,eamAci2ao, n…ei,ënAsjëhn.trëÇedlnaoucmiaotrnriiib‘nRu’tsihAaëitnrkiaobhunetjeëtvRde(oAtmë1,raAeinl2a, co…iso,enAibtna.) skhukëRsiëvshletrëasehmtrëi i relacionit dhe atributet e tij janë
vlefshme që ai merr. Shkallë e një

Shembull:

NXËNËS (Nxënës-ID, Emri, Mbiemri, Adresa, Nr-Tel).

Duke përdorur edhe tipin e të dhënave për çdo atribut:

NXËNËS (Nxënës-ID: integer, Emri: string, Mbiemri: string, Adresa: string, Nr-Tel: string)

Ku NXËNËS është emri i relacionit, i cili ka pesë atribute: Nxënës-ID, Emri, Mbiemri, Adresa, Nr-Tel.

Çdo atribut ka një domain ose një bashkësi vlerash të vlefshme. Tuple është një listë vlerash e renditur
e vendosur midis ‘<...>’. Çdo vlerë derivohet nga domein-i përkatës. Një relacion R(A1, A2, …, An) është
bashkësia e n-tuple.

Tabela e mëposhtme jep një përbledhje të termave të përdorur.

Terma informalë Terma Formalë

tabelë relacion
kolonë atribut

të gjithë vlerat e mundshme të kolonave domain

rresht tuple
përcaktimi i tabelës skemë e relacionit
tabelë e populluar gjendja e relacionit

Karakteristikat e relacioneve

Disa nga karakteristikat e relacioneve janë:

● Radha e tuple-ave në relacion: Relacioni është një bashkësi tuple-sh. Matematikisht, elementët
e bashkësisë nuk kanë një radhë mes tyre. Tuple-at nuk konsiderohen si të renditur edhe pse ato
shfaqen në formë tabelare.

● Radha e atributeve në skemën relacionale R: do t'i konsiderojmë atributet npëërRca(Ak1t,imA2,m…ë, iAgn)jedrëhei
vlerat në tn=u<kv1e, kvë2,rk…o,nvkn>ëtsëi të renditura sipas radhës që ato shfaqen. Një
relacionit renditje.

● Vlerat në një tuple: Çdo vlerë në tuple është atomike. cdo vlerë në tuple duhet të jetë nga domain-i
i atributit për atë kolonë. Ato mund të kenë edhe një vlerë speciale NULL e cila përdoret për të
paraqitur vlerat që nuk njihen, ose vlera që ekzistojnë por nuk janë të disponueshme ose nuk
aplikohen në atë tuple t.

Do t’i referohemi komponentëve të vlerave të një tuple t si:

t[Ai] ose t.A1.

Kjo është vlera vi e atributit A1 për tuple-in t.

Konstreinet e modelit relacional dhe skemat

Në një bazë të dhënash ka shumë relacione dhe tuple-t në këto relacione janë zakonisht të lidhura
në mënyra të ndryshme. Shtrëngimet përcaktojnë se cilat vlera lejohen dhe cilat jo në një bazë të
dhënash. Konstreinet në një bazë të dhënash i ndajmë në tre tipe kryesore:

79

Bazat e të dhënave dhe menaxhimi i tyre

a. Konstreine të trashëgueshme ose implicite që bazohen në modelin e të dhënave.
b. Konstreine që mund të shprehen direkt në skemën e modelit të të dhënave duke i përcaktuar ato

me DDL. Këto quhen konstreine të bazuara në skemë ose eksplicite.
c. Konstreine që nuk mund t’i shprehim direkt në skemë por duhet të realizohen me anë të

aplikacioneve. Këto quhen konstreine të bazuara në aplikacione ose semantike.

Konstreinet e domain

Konstreinet e domain-it specifikojnë që për çdo tuple, vlera e çdo atributi A mund të jetë një vlerë
atomike nga domain dom(A).

Shtrëngimet e integritetit relacional

Shtrëngimet janë kushte të cilat duhet të jenë të vërteta gjatë gjithë kohës për relacionin. Ato janë të
tre tipeve që mund të shprehen në modelin relacional:

Shtrëngimet çelës
Relacioni është një bashkësi tuple-sh dhe nga përcaktimi të gjithë elementët në këtë bashkësi janë të
ndryshëm. Nuk ka dy tuple që të kenë të njëjtin kombinim vlerash për të gjithë atributet e tyre. Ka një
nënbashkësi të atributeve SK për të cilat vetia e mësipërme është e vërtetë. Për dy tuple të ndryshëm
t1 dhe t2 kemi
t1[SK]≠t2[SK]
Ky kusht duhet të jetë i vërtetë për çdo gjendjet e vlefshme të R.

Bashkësia e atributeve SK quhet superçelës. Çelësi i R është një superçelës minimal. Pra një superçelës
K i tillë që heqja e ndonjë atributi nga K çon në një bashkësi atributesh që nuk është më superçelës.
Superçelësi mund të ketë atribute të tepërta, ndryshe nga çelësi. Çelësi është superçelës por jo e
kundërta. Çdo bashkësi atributesh që përmban çelësin është superçelës.

Çelësi kënaq dy konstreinet:

a. Dy tuple të ndryshëm në çdo gjëndje të relacionit nuk mund të kenë vlera identike për të gjithë
atributet e çelësit.

b. Ai është superçelës minimal, një superçelës nga i cili nuk mund të heqim asnjë atribut pa cënuar
unicitetin.

Kushti i parë zbatohet edhe tek çelësat dhe superçelësat, kurse i dyti kërkohet vetëm tek çelësat.

Një relacion mund të ketë më shumë se një çelës dhe në këtë rast secili prej tyre quhet “çelës kandidat”.
Njëri prej tyre zgjidhet si çelës primar për të identifikuar tuple në atë relacion.

Skema e një baze të dhënash relacionale

Skema e një baze të dhënash S është bashkësia e skemave të relacioneve sSë=t{ëR1d,hRë2n, a…v,eR. Nm}j,ë dhe një
bashkësi konstreinesh integriteti IC. Pra S është emri i gjithë skemës së bazës gjendje
database që kënaq të gjithë konstreinet e integritetit quhet gjendje e vlefshme.

Integriteti i entitetit. Atributet e çelësit primar PK të çdo skeme relacion R në S nuk mund të kenë
vlera null në asnjë tuple të R. Kjo sepse vlerat e çelësit primar përdoren për të identifikuar tuple-at
individualë. Nëse PK ka disa atribute atëherë vlera null nuk lejohet në asnjë prej tyre.

Integriteti referencial është një konstrein i cili përfshin dy relacione. Përdoret për të përcaktuar lidhjet
midis tuple-ave në dy relacione: relacioni referues dhe ai i referuar. Tuple-at në relacionin referues Rtë1
kanë atributet FK (të quajtura atribute foreign key) që i referohen atributeve të çelësit primar PK

80

Bazat e të dhënave dhe menaxhimi i tyre

rKeolnacstioreniintitiëinretefegrruitaertiRt 2r.eTfehruehnectiasleshtufapqleett1niëRs1kei mreëfesrionhjeëthtaurpklen-gitatR2 1n.FëKRt2enkëRq2.oPfKt.ë se t1 [FK]= t2 [PK].
Vlera në kolonën e çelësit të huaj (ose kolonat) FK të relacionit referues R1 mund të jetë:
1. një vlerë e vlerës ekzistuese të çelësit primar PK të R2; atributi FK i referohet relacionit R2.
2. ose është null.
Në rastin e mëparshëm, ne kemi t1[FK]=t2[PK] dhe themi që tuple t1 i referohet tuple t2.
Gjithashtu një çelës i huaj mund ti referohet dhe relacionit të vet.
Ka edhe tipe të tjera konstreinesh që njihen si konstreine të integritetit semantik të cilat nuk mund të
shprehen nga modeli.

Paraqitja e skemës së një baze të dhënash relacionale dhe shtrëngimet e saj

Çdo relacion shfaqet si një rresht me emrat e atributeve
dhe emri i tij shkruhet lart tyre.
Atributet e çelësit primar paraqiten të nënvijëzuar.
Konstreinet foreign key (integriteti referencial) paraqitet
me një hark të orientuar nga atributet e foreign key tek
tabela e referuar, ose për qartësi tek çelësi primar i tij.

Kontroll njohurish Paraqitja e shtrëngimeve të integritetit referencial

1. Përkufizoni termat e mëposhtëm: atribut, tuple, skemë relacioni, fushë ose domain,
shkallë e relacionit.

2. Përse janë n-shet e një relacionit të parenditur?
3. Përse nuk lejohen tuple-at e dublikuar në relacion?
4. Cili është ndryshimi midis çelësit dhe superçelësit?
5. Diskutoni rresh karakteristikave të relacioneve që i bëjnë ato të ndryshme nga tabelat e

zakonshme.
6. Diskutoni rreth arsyeve të ndryshme që çojnë në praninë e vlerave Null në një relacion.
7. Diskutoni shtëngimet e integritetit të entitetit dhe atij referencial. Përse është i

rëndësishëm secili prej tyre?
8. Përkufizoni çelësin e huaj. Përse përdoret ai?
9. Konsideroni relacionet e mëposhtme për një bazë të dhënash që mban gjurmët e

udhëtimeve të biznesit të shitësve të një zyre shitjeje:
SHITËS (Shites_Id, Emri, Viti_Fillimit, Dept_Nr)
UDHËTIM (Shitës_Id, Nga_Qyteti, Në_Qytet, Data_Nisjes, Data_Kthimit, Udhëtim_ID)
SHPENZON (Udhëtim_ID, Llogari_ID, Sasia)
Përcaktoni çelësat kryesorë dhe të huaj për këtë skemë duke bërë supozimet e duhura.

10. Konsideroni relacionet e mëposhtme për një bazë të dhënash që mban të dhëna për
punonjësit dhe kohën e punës së tyre në departamente:
Punonjës (Pun_Id: integer, Emri: string, Mosha: integer, Paga: real)
Punon (Pun_Id: integer, Dep_Id: integer, Orë_Pune: integer)
Departament (Dep_Id: integer, Dep_Emri: string, Buxheti: real, menaxher_id: integer)
Përcaktoni çelësat e huaj për këtë skemë duke bërë supozimet e duhura.

81

Bazat e të dhënave dhe menaxhimi i tyre

3.3 Formularët normal të parë, të dytë dhe të tretë

Nxënësi/ja: Situatë

-- koncepton procesin e Një dizenjues i ri i një kompanie vuri re se në bazën e tyre të të dhënave

normalizimit. disa fusha përsëriteshin në tabela të ndryshme duke i krijuar probleme

-- identifikon varësitë kompanisë. Çfarë do të bëjë në këtë rast
funksionale. dizenjuesi i bazës së të dhënave për të

-- identifikon shmangur teprinë e të dhënave?

karakteristikat e Normalizimi
formularëve “Normal”
të parë, të dytë dhe të Normalizimi është një teknikë formale për të vlerësuar dhe
tretë. përmirësuar cilësinë e skemës së bazave të të dhënave relacionale.
Ajo përcakton nëse skema e një baze të të dhënash është fleksibile
dhe nëse ajo përmban ndonjë nga llojet e gabuara të teprisë.
Fjalë kyç: Normalizimi përcakton gjithashtu metoda specifike për të eleminuar
teprinë e të dhënave dhe për të përmirësuar fleksibilitetin.
normalizim, varësi Normalizimi i të dhënave është një proces formal për të dekompozuar
funksionale, formulari relacionet me anomali për të prodhuar relacionet më të vogla, të
normal i parë, 2NF, 3NF.

strukturuara mirë dhe të qëndrueshme.
Ai është kryesisht një mjet për të kontrolluar dhe përmirësuar dizenjimin logjik në mënyrë që ai të
plotësojë disa kufizime që shmangin dublikimin e panevojshëm të të dhënave.

Relacionet e mirë - strukturuara

Një relacion që përmban tepri minimale të të dhënave dhe lejon përdoruesit të shtojnë, të fshijnë dhe
të përditësojnë rreshtat pa shkaktuar paqëndrueshmëri të të dhënave.
Qëllimi është të shmangim (minimizojmë) anomalitë.
-- Anomalia e shtimit: shtimi i rreshtave të rinj e detyron përdoruesin të krijojë dublikim të të dhënave.
-- Anomalia e fshirjes: fshirja e një rreshti mund të shkaktojë humbjen e të dhënave të tjera që

përfaqësojnë fakte krejtësisht të ndryshme.
-- Anomalia e modifikimit: ndryshimi i të dhënave në një rresht detyron ndryshime edhe në rreshta

të tjerë për shkak të dublikimit.
Si rregull i përgjithshëm: një tabelë nuk duhet të mbajë, ruajë të dhëna më shumë se të një lloj entiteti.

Koncepti i varësisë funksionale

Përkufizim: Varësi funksionale:

Le të jetë dhënë një relacion R(X,Y,Z) (ku X,Y dhe Z janë bashkësi përbërësish. Z mund të jetë boshe),
do të themi që ekziston një varësi funksionale ndërmjet X dhe Y e shënuar X → Y, atëherë dhe vetëm
atëherë kur cilado qoftë vlera e (X,Y,Z) dhe (X,Y’,Z’) kemi:

//R(X,Y,Z)// dhe //R(X,Y’,Z’)//⇒Y=Y’
Më thjesht themi se:
Varësia Funksionale: vlera e një atributi përcakton vlerën e një atributi tjetër.
A→B lexohet “Atributi B varet në mënyrë funksionale nga A”.
A→B do të thotë se nëse dy rreshta kanë të njëjtën vlerë për A, ata patjetër kanë të njëjtën vlerë edhe
për B.

82

Bazat e të dhënave dhe menaxhimi i tyre

Varësitë funksionale (VF) përcaktohen nga semantika. Nuk mund të themi që një VF ekziston vetëm
duke shikuar të dhënat por mund të themi nëse ajo nuk ekziston duke shikuar të dhënat.

Veti të varësisë funksionale

Varësitë funksionale i përgjigjen disa rregullave:
1. Refleksiviteti: Y⊆X⇒X→Y,rregulli që një bashkësi përcakton vetveten ose një pjesë të saj.
2. Shtimi. Në qoftë se X→Y atëherë XZ→YZ; d.m.th. në qoftë se X përcakton Y të dy përbërësit
mund të pasurohen me një të tretë.
3. Vetia e kalimit (tranzitiviteti) : në qoftë se X→Y dhe Y→Z atëherë X→Z.

Tre rregullat e mësipërme formojnë aksiomat e varësisë funksionale dhe njihen me emrin “Aksiomat e
Armstrongut”.

Hapat e normalizimit

Në figurë janë treguar hapat bazë në procesin e
normalizimit. Së pari janë përcaktuar pamjet e
përdoruesve. Pas kësaj çdo pamje e përdoruesit
është konvertuar në një relacion të panormalizuar.
Pasi hiqen grupet përsëritës nga relacioni i
panormalizuar, atëhere relacioni është në formën
e parë normale (1NF ). Pas kësaj hiqen varësitë e
pjesshme dhe relacionet kalojnë në 2NF. Në fund
hiqen varësitë tranzitive dhe relacionet kalojnë në
3NF. Procesi i normalizimit është i lidhur ngushtë
me përkufizimet e varësive funksionale dhe
realizohet nëpërmjet procesit të dekompozimit të
vazhdueshëm. Më poshtë do të shpjegojmë më në
detaje hapat e normalizimit te relacioneve deri në
3NF.

Format Normale Hapat e normalizimit

Që një tabelë të jetë në formën e parë normale duhet të plotësojë disa rregulla të thjeshta:
të ketë një çelës unik: tabela duhet të ketë të paktën një çelës primar të identifikuar.

Çdo fushë duhet të përmbajë një vlerë: kjo do të thotë që nuk mund të mbajmë më shumë se një vlerë
në të njëjtën fushë.

Nuk ka grupe të përsëritura: supozojmë se kemi një tabelë e cila ruan informacione për kompanitë dhe
kontaktet e tyre, por pasi vëmë re se vetëm një kontakt nuk është i mjaftueshëm, atëherë nuk mund
t’i mbajmë të gjithë në të njëjtën fushë si “Mira Prifti, Eni Hoxha, Eli Tone” ose do të krijojmë grupe të
përsëritura (kolona) si "Kontakt1", "Kontakt2", "Kontakt3".

Zgjidhja në këtë rast është e thjeshtë, duhet të krijojmë një tabelë tjetër me kontaktet dhe t’i lidhim
ato me kompanitë përkatëse.

Çdo relacion sipas përkufizimit është në 1NF.

Përkufizim i 1NF: Një relacion R është në formën e parë normale (1NF) në qoftë se dhe vetëm në qoftë
se ai përmban vlera atomike për çdo atribut.

Shembull. Jepet relacioni në 1NF:

R(f_id, statusi, qyteti, p_id, sasia)

83

Bazat e të dhënave dhe menaxhimi i tyre

Me varësi funksionale:
(f_id, p_id) → sasia
f_id → statusi
f_id → qyteti
qyteti → statusi (statusi i furnitorit përcaktohet nga vendndodhja).

Anomali:
Shtimi: Ne nuk mund të shtojmë faktin që një furnitor i caktuar ndodhet në një qytet të caktuar derisa
furnitori të furnizojë të paktën një pjesë (përndryshe, do të duhej të shtonim një vlerë null për një
kolonë që është pjesë e çelësit primar).
Fshirja: Nëse fshijmë rreshtin e fundit (të vetëm) për një furnitor të caktuar, humbim informacionin që
furnitori ndodhet në një qytet të caktuar.
Modifikimi: Vlera e qytetit shfaqet disa herë për të njëjtin furnitor. Kjo mund të çojë në paqëndrueshmëri
ose në nevojën për të ndryshuar shumë vlera të qytetit nëse një furnitor ndryshon vendndodhjen.
Për të eleminuar këto anomali, relacioni i dhënave R duhet të dekompozohet në dy relacione të tjera.

Dekompozimi (në 2NF):
R1(f_id, statusi, qyteti).
Furnitor_pjese (f_id, p_id, sasia).

Përkufizim i 2NF: Një relacion është në formën e dytë normale (2NF) në qoftë se dhe vetëm në qoftë se
ai është në 1NF dhe çdo atribut jo çelës varet në mënyrë të plotë funksionale nga çelësi primar.
Pra, çdo atribut jo çelës duhet të përcaktohet nga çelësi primar dhe jo nga një pjesë e tij dhe nuk ka
varësi funksionale të pjesshme.

Shembull (2NF por jo në 3NF): R1(f_id, statusi, qyteti).
Varësi funksionale:
f_id → statusi,
f_id → qyteti,
qyteti → statusi.

Anomali:
Shtimi: Nuk mund të shtojmë faktin që një qytet i caktuar ka një status
të caktuar për aq kohë sa nuk kemi një furnitor në atë qytet.
Fshirja: Nëse fshijmë një furnitor i cili është i fundit për një qytet të
caktuar, humbim faktin se ai qytet ka atë status.
Modifikimi: Statusi për një qytet të caktuar mund të përsëritet disa
herë, prandaj çon në përditësime të shumta dhe humbje të mundshme
të konsistencës (qëndrueshmërisë).

Formularët normalë

Për të eleminuar këto anomali që rrjedhin nga vetia tranzitive, relacioni i dhënave R1 duhet të
dekompozohet në dy relacione të tjera.

Dekompozimi (në 3NF):
Furnitor_Qytet (f_id, qyteti).
Qytet_Status (qyteti, statusi).

84

Bazat e të dhënave dhe menaxhimi i tyre

Përkufizim i 3NF: Një relacion R është në formën e tretë normale (3NF) në qoftë se dhe vetëm në qoftë
se ai është në 2NF dhe nuk ka varësi tranzitive. Pra varësi kalimtare (tranzitive) kemi kur një atribut jo
çelës varet nga një atribut tjetër jo çelës. Vëmë re se 3NF ka të bëjë me varësi kalimtare të cilat nuk
përfshijnë çelësat kandidatë.

Kontroll njohurish

1. Çfarë kuptoni me normalizim? Po me relacione të mirë-strukturuara?
2. Çfarë kuptoni me varësi funksionale? Cilat janë aksiomat e Armstrongut?
3. Kur një relacion është në 1NF, 2NF, 3NF?
4. Klasifikoni secilin nga relacionet e mëposhtme si të normalizuara në 1NF, 2NF, 3NF.

a. PUNONJËS ( PUNONJËS_ID, EMËRPUNONJËSI, KODIPUNËS.)
b. PUNONJËS ( PUNONJËS_ID, EMËRPUNONJËSI, (KODIPUNËS_ID, VITE))
c. PUNONJËS (PUNONJËS_ID, EMËRPUNONJËSI, KODIPUNËS, PËRSHKRIMPUNE)
d. PUNONJËS (PUNONJËS_ID, EMËRPUNONJËSI, (PROJEKT_ID, ORË_PUNE ))
5. Për secilin nga relacionet e mëposhtme:
a. Jepni formën normale të gjendjes që janë.
b. Identifikoni ndonjë varësi të padëshiruar.
c. Jepni shembull të anomalisë së shtimit, modifikimit dhe fshirjes.
d. Normalizoni relacionin më tej.

Me varësi funksionale: TRAJNERI→ POZICIONI
PUNË# → KURS
PUNË#→ INTERESI

6. Për çdo relacion të mëposhtëm tregoni formën normale të tij. Në qoftë se relacioni nuk
është në formën e tretë normale dekompozojeni atë në 3NF. Varësitë funksionale janë si
më poshtë:

a. KLASA (KursNr, SeksionNr) -> KursEmri,

b. KLASA (KursNr, SeksionNr, Salla)

c. KLASA (KursNr, SeksionNr, Salla, Kapaciteti), Salla -> Kapaciteti

d. KLASA (KursNr, SeksionNr, KursEmri,Salla, Kapaciteti), KursNr
Salla -> Kapaciteti

7. Konvertoni secilën nga skemat e mëposhtme në 3NF, duke treguar gjithë hapat e
ndërmjetëm, pra në 1NF, 2NF dhe 3NF.
a. FILIALI (Filial_ID, Filial_Adresa, (ISBN, Titulli, Autori, Botuesi, Numri_Kopjeve))

b. KLIENTI (Klient_Id, Emri, Vendndodhja, Menaxher_Id, Menaxher_Emri,
Menaxher_Vendndodhja, (Kontrata_Id, Kostoja_Parashikuar, Data_Perfundimit,
(Staf_Id, Staf_Emri, Staf_Vendndodhja)))

c. PACIENT (Pacient_Id, Emri, Adresa, (Receta_Id, Ilaçi, Data, Doza, Doktori, Sekretarja))

85

Bazat e të dhënave dhe menaxhimi i tyre

3.4 Hyrje në SQL (Structured Query Language)

Nxënësi/ja: Situatë

-- koncepton çfarë është SQL, Liami po mendohej në klasë pasi kishte dizenjuar një
-- identifikon funksionet e saj. bazë të dhënash por nuk dinte se si ta krijonte atë në
një mjedis të caktuar. Aleni i sugjeroi të përdorte SQL. A mendoni se

Fjalë kyç: ka dhënë sugjerimin e saktë?
SQL, gjuhë, përcaktim,
Hyrje në SQL

manipulim. Në këtë mësim do të paraqesim gjuhën kryesore që përdoret në

sistemet relacionale, gjuhën SQL (Structured Query Language).
SQL është një gjuhë për bazat e të dhënave e dizenjuar për të menaxhuar të dhënat në sistemet e
menaxhimit të bazave të të dhënave relacionale (RDBMS). Ajo është një gjuhë e standardizuar ANSI
(American National Standards Institute) e cila u zhvillua fillimisht nga IBM për të përcaktuar, modifikuar
dhe kërkuar bazat e të dhënave relacionale duke përdorur shprehje deklarative.

Bashkëveprimi i SQL me bazën e të dhënave

SQL është e përbërë nga komanda që i mundësojnë përdoruesve të realizojnë:
● Krijimin e një baze të dhënash.
● Krijimin e tabelave në bazën e të dhënave.
● Shtimin, modifikimin dhe fshirjen e rekordeve.
● Kërkimin e të dhënave ndërmjet relacioneve duke kënaqur kritere të ndryshme.
● Trajtimin duke kryer veprime aritmetike dhe llogjike.
● Nxjerrja e rezultateve qoftë për shtyp, qoftë për të shërbyer si vlera në një relacion të ri.

Gjuha është konceptuar që të përdoret dhe si gjuhë e pyetjeve më vete edhe si zgjerim në gjuhët e
programimit të nivelit të lartë. SQL është një gjuhë e bazuar tek bashkësitë. Kjo nënkupton që SQL
mund të kërkojë të dhëna në shumë rreshta nga një ose disa tabela nëpërmjet një komande të vetme.
Gjithashtu SQL është një gjuhë jo proçeduriale, ajo përshkruan çfarë kërkon përdoruesi dhe është
sistemi i menaxhimit të bazës së të dhënave (DBMS - Database Management System) që gjen mënyrën
më të mirë për t’iu përgjigjur kërkesës së përdoruesit.

Pavarësisht se SQL është standard, disa sisteme bazash të dhënash kanë implementuar versionin e
tyre të gjuhës SQL duke e zgjeruar atë. Në mësimet tona do të përdorim Microsoft SQL Server 2017 si
shembull për të demostruar query-it e ndryshme SQL.

Disa nga DBMS më të njohura janë:
Microsoft SQL Server me disa versione si: enterprise, developer, express i cili është pa pagesë, Oracle,
MySQL, Microsoft Access, IBM DB2, Sybase, etj.

86

Bazat e të dhënave dhe menaxhimi i tyre

SQL është formalisht dhe faktikisht gjuha standarde për përcaktimin dhe manipulimin e bazave të të
dhënave.
Funksionet e SQL përshtaten në tre kategori:
1. Gjuha për përcaktimin e të dhënave (DDL – Data Definition Language) e cila përfshin komanda për

të krijuar objekte të bazës së të dhënave të tilla si Tabelat, Pamjet si dhe komanda për të përcaktuar
integritetin e të dhënave. Ajo përmban tre komanda kryesore:
● CREATE – krijon një objekt të ri në DB.
● DROP – fshin një objekt ekzistues në DB.
● ALTER – modifikon strukturën e një objekti ekzistues në DB.
2. Gjuha për manipulimin e të dhënave (DML – Data Manipulation Language) e cila përfshin komanda
për të fshirë, modifikuar dhe shtuar të dhëna në tabelë si edhe komanda për marrjen e të dhënave
nga tabelat. Komandat kryesore janë:
● INSERT INTO – shton të dhëna (një rekord) në tabelë.
● UPDATE – modifikon të dhëna në tabelë.
● DELETE – fshin të dhëna (rreshta) nga tabela.
● SELECT – merr të dhëna nga tabela.

3. Gjuha për administrimin e përdoruesve të bazës së të dhënave (DCL – Data Control Language) e cila
përfshin komanda për të manipuluar dhe administruar të gjithë përdoruesit dhe rolet e tyre mbi
objektet e bazës së të dhënave.

Në zemër të SQL janë pyetjet (Query). Një query është një pyetje bazuar në kërkesat e përdoruesit. Në
fakt, në mjedisin e SQL, fjala query mbulon si pyetjet dhe veprimet. Pra, për një DBMS, një query është
thjesht një deklaratë SQL e cila duhet të ekzekutohet.
Para se të shqyrtojmë sintaksën e SQL për krijimin dhe përcaktimin e tabelave dhe të elementëve të
tjerë të saj, do të shqyrtojmë modelin e bazës së të dhënave mbi të cilat do të krijohen tabelat.

Modeli i bazës së të dhënave Furnitor_Pjesë

Demostrimin e përdorimit të SQL do ta realizojmë me anë të shembujve të ndryshme në Sql Server.
Do të marrin në shqyrtim një bazë të dhënash e cila në modelin relacional përbëhet nga tre tabela:
Furnitor, Pjesë dhe Transporton. Tabela Furnitor ruan kodin e furnitorit, emrin e tij, statusin dhe një
vendndodhje. Tabela Pjesë paraqet lloje të ndryshme pjesësh, kodin e saj, emrin, ngjyrën, peshën dhe
qytetin ku ruhen ato. Tabela transporton tregon se cilat pjesë transportohen nga cili furnitor dhe me
çfarë sasie. Një furnitor mund të transportojë shumë pjesë ndërsa një pjesë mund të transportohet nga
disa furnitorë. Skema relacionale së bashku me çelësat kryesorë të nënvijëzuar është:

Furnitor(F_ID, F_Emri, Statusi, Qyteti).
Pjesë(P_ID, P_Emer, Ngjyra, Pesha, Qyteti).
Transporton(F_ID, P_ID, Sasia)

Krijimi i bazës së të dhënave

Për ndërtimin e këtij modeli relacional duhet të realizohen në fillim dy detyra: së pari, të krijohet
struktura e bazës së të dhënave dhe së dyti, krijimi i tabelave që do të mbajnë të dhënat përfundimtare.
Kur krijohet një bazë të dhënash e re, RDBMS krijon skedarët fizikë që do të mbajnë atë. Kur krijohet
një bazë të dhënash e re, RDBMS krijon automatikisht tabelat e fjalorit të të dhënave në të cilat do të
ruhen metadatat dhe krijon një administrator për bazën e të dhënave. Krijimi i këtyre skedarëve do

87

Bazat e të dhënave dhe menaxhimi i tyre

të thotë bashkëveprim me sistemin operativ dhe me sistemin e skedarëve të mbështetur në sistemin
operativ.
Për të përfunduar detyrën e parë, në SQL kemi komandën CREATE DATABASE e cila pasohet nga emri
unik i bazës së të dhënave, për shembull:
CREATE DATABASE Furnitor_Pjese;
Një bazë të dhënash mund të ndërtohet dhe nëpërmjet ndërfaqes grafike.

Kontroll njohurish

1. Çfarë është SQL? Çfarë mund të realizojnë përdoruesit me anë të saj?
2. Në sa kategori përshtaten funksionet e SQL? Cilat janë ato?
3. Cilat janë komandat kryesore të DDL dhe çfarë bën secila prej tyre?
4. Cilat janë komandat kryesore të DML dhe çfarë bën secila prej tyre?
5. Çfarë është DCL? Përse përdoret ajo?
6. Përshkruani bazën e të dhënave Furnitor_Pjesë.

88

Bazat e të dhënave dhe menaxhimi i tyre

3.5 Prezantim me SQL Server dhe krijimi i tabelave

Nxënësi/ja: Situatë

-- njeh ndërfaqen dhe Krijoni një bazë të dhënash me dy tabela. Në njërën
punojnë në SQL Server; ruani të dhënat e nxënësve dhe në tjetrën ruani
orarin e shkollës. Cilën DBMS mendoni të përdorni
-- përdor Sql; për të realizuar detyrat tuaja?
-- krijon tabela.

Fjalë kyç: Ndërfaqja e Sql Server

SQL Server, prezantimin, Microsoft është krijuesi i SQL Server. Ai ka disa edicione ku SQL
krijim, tabelë. Server Express mund të shkarkohet dhe përdoret pa pagesë. SQL

Server përbëhet nga Database Engine i cili nuk ka ndërfaqe grafike por është thjesht një shërbim i cili
ekzekutohet në background dhe nga Management Studio i cili është një mjet grafik për të konfiguruar
dhe parë informacionet në bazën e të dhënave.

SQL Server Management Studio është një mjet GUI i përfshirë në SQL Server për konfigurimin,
menaxhimin dhe administrimin e të gjithë komponentëve të tij. Ky mjet përfshin si editorët e skriptimin
ashtu edhe ato grafikë që punojnë me objekte dhe tipare të server-it.

Figura në vijim tregon pjesët kryesore përbërëse të Management Studio. Object Explorer lejon të
shfletoni, selektoni dhe të veproni me çdo objekt në server. Gjithashtu mund të krijojmë baza të
dhënash të reja, të modifikojmë ekzistuese duke shtuar apo modifikuar tabela. Ai ka edhe dritaren e
query-it në të cilën i shkruajmë dhe i ekzekutojmë ato.

Baza e të Dhënave Zona e shkrimit të
kërkesave

Rezultati i kërkesave

Ndërfaqja e SQL Server 2017

Për të shkruajtur komanda dhe query SQL do të përdorim “Query Editor” i cili merret duke klikuar “New
Query” në shufrën e mjeteve (Toolbar). Me SQL dhe “Query Editor” mund të bëjmë pothuajse gjithçka
me kod por ndonjëherë mund të përdorim mjetet e ndryshme dizenjuese për të bërë punën pa shumë
kod. Për të ekzekutuar kodin klikojmë butonin Execute dhe shohim dhe rezultatin e ekzekutimit të
query-it.

89

Bazat e të dhënave dhe menaxhimi i tyre
Krijimi i një baze të dhënash të re

Klikojmë me të djathtën në nyjen “Databases” dhe zgjedhim “New Database...”.

Krijimi i një baze të dhënash

I vetmi informacion i nevojshëm është emri i bazës së të dhënave, për parametrat e tjerë ka vlera
default (standarde).

Krijimi i tabelave

Për të krijuar një tabelë do të përdorim fjalët kyçe CREATE TABLE ku duhet të përcaktojmë: emrin e
tabelës, emrin e fushave dhe tipin e të dhënave të tyre, shtrëngimet (kufizimet) që duam.
Emrat e tabelave dhe fushave duhet të jenë sa më përshkruese, emrat e fushave unike brenda një
tabele, ndërsa emrat e tabelave unike brenda një baze të dhënash. Tabela kur krijohet është pa të
dhëna. Sintaksa e krijimit të saj është:
CREATE TABLE emër_tabelë
(Fusha1 tip_të_dhënash [shtrëngim1],
Fusha2 tip_të_dhënash [shtrengim2],
...
FushaN tip_të_dhënash [shtrëngimN],
[, shtrëngim_tabele1]
...
[, shtrëngim_tabeleM]
);
Tip_të_dhënash përcakton se çfarë të dhënash do të ruhen në kolonën përkatëse. Tipet e të dhënave
në SQL Server janë të organizuar në kategori ku më kryesorët janë:
numrat ekzakt: bigint, int, smallint, tinyint, money, numeric, bit, decimal, etj,
numrat e përafërt: float, real,
data dhe koha: date, datetime, time, etj,
stringjet: char, varchar, text,
stringjet unikode: nchar, nvarchar, ntext ,etj.

90

Bazat e të dhënave dhe menaxhimi i tyre

Disa nga tipet e të dhënave më të përdorura janë:
int - Ruajnë numra të plotë,
Float - Ruajnë numra me presje,
Char(n) - Ruan karaktere me gjatësi fikse. Kujtesa zihet sa është numri n, pavarësisht se sa është
madhësia e fjalës.
VARCHAR(N) - Ruan karaktere me gjatësi të ndryshueshme, pra kujtesa zihet për aq karaktere sa është
fjala që ruhet. Madhësi maksimale 4000 bytes.
Date - Ruan të dhënat për datën: ditë, muaj, vit.
Krijimi i tabelës furnitor:

Për shtrëngimet do të flasim në mësimin pasardhës. Krijimi i tabelës grafikisht në Sql Server
Tabela mund të ndërtohet edhe grafikisht duke klikuar
me të djathtën mbi Tables dhe zgjedhim New pastaj
Table. Në dritaren që del plotësojmë emrat e fushave
tek Column Name, tipet e të dhënave tek Data Type dhe
klikojmë nëse duam të lejojë vlera Null fusha përkatëse
ose jo, për shembull tabela furnitor.

Popullimi i tabelave
Mbushja me të dhëna e tabelave mund të
bëhet me anë të komandës Insert të SQL
ose grafikisht si në figurë:

Shtimi i të dhënave grafikisht

Kontroll njohurish

1. Shkarkoni SQL Server Express nga faqja zyrtare e Microsoft edhe instalojeni atë në
kompjuterin tuaj.

2. Cilët janë pjesët përbërëse të SQL Server?

3. Cilët janë pjesët kryesore përbërëse të Management Studio?

4. Krijoni një bazë të dhënash me emrin TIK12

5. Cilët janë kategoritë kryesore të tipeve të të dhënave në sql server? Përmendi disa
tipe të dhënash.

6. Krijoni tabelën furnitor si në mësim. Krijoni një tabelë e cila ruan informacione në
lidhje me nxënësit.

91

Bazat e të dhënave dhe menaxhimi i tyre

3.6 Shtrëngimet në SQL

Nxënësi/ja: Situatë

-- koncepton që tabelat kanë Megi po i shpjegonte Besit se çdo njeri ka një vlerë unike
çelësa kryesorë për të identifikuese, prandaj ekzistojnë kartat e identitetit për të
identifikuar rekordet; identifikuar një person.  Çelësi identifikues është unik për
personat dhe njihet si numri personal ose ID. Edhe tabelat
-- koncepton që për të lidhur në bazën e të dhënave kanë një çelës kryesor që identifikon
tabelat me njëra-tjetrën çdo rekord në të. Si mendoni ju ka të drejtë Megi?
duhet që të përdorin
çelësat e jashtëm; Shtrëngimet

-- identifikon dhe përdorin Shtrëngimet (kufizimet, Constraint) janë rregulla të cilat aplikohen
shtrëngimet në tabelë. mbi të dhënat që përmban tabela dhe kolonat e saj. Ato përdoren
për të kufizuar të dhënat që mund të vendosen në fushat përkatëse
Fjalë kyç: të tabelës. Shtrëngimet mund të përcaktohet kur krijohet tabela ose
pas krijimit të saj me shprehjen Alter Table. Shtrëngimet përcaktohen
çelësi kryesor, çelësi i në dy nivele:
jashtëm, unik, default,
not null.

● Nivel kolone – është pjesë e përcaktimit të fushës dhe aplikohet vetëm mbi atë fushë
● Nivel tabele -  përcaktohet në fund të të gjitha fushave të tabelës dhe mund të aplikohet një ose

disa fusha njëkohësisht.
Shtrëngimet mund të krijohen dhe duke përdorur fjalën kyçe CONTRAINT. Çdo shtrëngim ka një emër
unik brenda bazës së të dhënave ku është krijuar i cili na lejon që t’i menaxhojmë me lehtë ato. Në vijim
do të listojmë shtrëngimet dhe do të japim karakteristikat e secilit prej tyre.

Çelësi kryesor (Primary key)

Vlerat e shtrëngimit Primary Key përdoren për të identifikuar në mënyrë unike çdo rekord të një tabele.
Ai mund të ketë vetëm vlera unike dhe gjithmonë duhet të ketë një vlerë, pra nuk lejon vlera boshe, Null.
Çdo tabelë rekomandohet të ketë një primary key dhe mund të ketë maksimalisht vetëm një Primary
Key. Primary key mund të përcaktohet mbi një kolonë dhe në këtë rast themi se është shtrëngim i
thjeshtë ose mbi dy ose më shumë kolona, në këtë rast është i përbërë.
Në kodin e mëposhtëm  janë ilustruar tipet e ndryshme të aplikimit të Primary Key mbi kolonën F_ID
të tabelës Furnitor.

Ndërsa tabela transporton që ka çelës primar të përbërë është:

92

Bazat e të dhënave dhe menaxhimi i tyre

Çelësi i jashtëm (Foreign key)

Foreign key përdoret për të siguruar integritetin referencial midis tabelave dhe ai është një mekanizëm
i cili lidh dy tabela. Për të krijuar një çelës të jashtëm tek një tabelë, duhet që kolona ose kolonat ndaj të
cilave do të përcaktohet çelësi i jashtëm, ‘të lidhen’ me kolonën ose kolonat e primary key ose unique
të një tabele. Pra ai do të marrë vlera nga kolonat primary key ose unique.
● Çelësi i jashtëm siguron që rreshtat e një tabele (tabela fëmijë) kanë rreshtat korrespondues në

tabelën (tabela prind) tjetër.
● Çelësi i jashtëm mund të lejojë vlera boshe dhe një tabelë mund të mos ketë ose të ketë disa çelësa

të jashtëm.
Në mënyrë standarde, DBMS nuk lejon krijimin e rekordeve ‘pa prind’ gjatë ndryshimit apo fshirjes së
të dhënave në tabelën prind. Shtrëngimi foreign key ndalon veprimet që prishin lidhjen midis tabelave.
Ai gjithashtu nuk lejon të shtohen të dhëna të pavlefshme në kolonën e foreign key sepse ai duhet të
jetë një nga vlerat që ka kolona që ai i referohet.
Komanda për krijimin e tabelës Transporton me FOREIGN KEY është:

NOT NULL

Shtrëngimi NOT NULL detyron që kolona të mos përmbajnë vlera NULL, pra në rekordet përkatëse
të kësaj fushe gjithmonë duhet të ketë një vlerë. Gjithashtu nuk mund të shtojmë ose modifikojmë
rekorde pa përcaktuar një vlerë për këtë fushë. Në qoftë se nuk specifikohet shtrëngimi NOT NULL,
atëherë kolona në mënyrë default pranon vlera boshe, null. Përdorimi i tij është dhënë më lart.

UNIQUE

Shtrëngimi UNIQUE siguron që të gjitha vlerat në kolonë të jenë të ndryshme, pra ai nuk lejon që
kolona të përmbajë vlera të dublikuara. Shtrëngimi unique mund të përmbajë vlera null dhe një tabelë
mund të ketë më shumë se një kufizim unique. Në një shtrëngim të përbërë vlerat e një kolone mund
të përmbajnë vlera të dublikuara tek e tek, por kombinimi i të gjithë vlerave të kolonave duhet të jetë
gjithmonë unik. Për shembull, se si çdo furnitor të ketë emër unik jepet më poshtë.

DEFAULT

Shtrëngimi DEFAULT përdoret për të shtuar një vlerë default (të paracaktuar) në një kolonë. Vlera
default do të shtohet në të gjithë rekordet e reja në qoftë se nuk përcaktohet vlerë tjetër. Default
aplikohet vetëm mbi një kolonë, dhe jo në disa kolona njëkohësisht. Një vlerë default mund të jetë çdo
shprehje që mund të konvertohet në një konstante. Vlera default duhet të ketë të njëjtin tip të dhënash
dhe gjatësi si kolona ku po aplikohet.

CHECK

Shtrëngimi CHECK përdoret për të kufizuar vlerat që mund të vendosen në një kolonë (ose disa kolona).
Ai mund të përdoret për të kontrolluar vlerat maksimale dhe minimale që kolona do të lejojë, vlera të
caktuar ose një rang vlerash. Kufizimi check mund të përcaktohet duke përdorur fjalën kyçe CHECK.

93

Bazat e të dhënave dhe menaxhimi i tyre

Në kodin në vijim është vendosur një shtrëngim kolone check mbi kolonën Statusi i cili duhet të jetë
gjithmonë pozitiv dhe një shtrëngim mbi kolonën Qyteti duke supozuar që qytetet nga ku mund të kemi
furnitorë janë: “Tiranë”, “Tropojë’, “Lushnjë’.

Fshirja e tabelave

Komanda DROP TABLE përdoret për të fshirë një tabelë nga baza e të dhënave. Ajo fshin të gjithë
strukturën e saj së bashku me të dhënat, indekset, shtrëngimet, të drejtat e përdoruesve mbi të, etj.
Shembull:

Diagrami i marrëdhënieve në bazën e të dhënave

Përdorim Object Explorer për të krijuar diagramën e bazës së të dhënave i cili tregon grafikisht strukturën
e bazës së të dhënave dhe lidhjet midis tabelave të saj.
Në dritaren Object Explore, klikojmë me të djathtën në folderin Database Diagram, zgjedhin New
Database Diagram. Në dritaren Add Table zgjedhim tabelat që duam duke klikuar mbi butonin Add.

Dritarja e shtimit të tabelave Diagrami i marrëdhënieve midis tabelave

Kontroll njohurish

1. Çfarë kuptoni me shtrëngim? Në sa nivele përcaktohen ato?
2. Përse përdoret shtrëngimi i çelësit kryesor? Çfarë karakteristikash ka ai?
3. Përse përdoret shtrëngimi i çelësit të huaj? Çfarë karakteristikash ka ai?
4. Përse përdoren shtrëngimet not null, unique, default dhe check?
5. Krijoni bazën e të dhënave furnitor_pjesë, tabelat përkatëse duke përcaktuar edhe

shtrëngimet e duhura. Krijoni dhe diagramin e lidhjeve.
6. Jepet skema relacionale e përbërë nga tre relacione:

Marinar(Mid, Memri, grada, mosha)
Varka(Vid, Vemri, ngjyra)
Rezervim(Mid, Vid, dita)
Shkruani shprehjet DDL për të krijuar relacionet e bazës se të dhënave. Duhet të përcaktoni
çelësat primarë dhe të huaj.
Përcaktoni një kufizim mbi kolonën mosha të marinarëve ku kjo kolonë nuk duhet të lejojë
vlera më të vogla se 18.

94

Bazat e të dhënave dhe menaxhimi i tyre

3.7 Komanda SELECT. Veprime bazë

Nxënësi/ja: Situatë

-- përdor select për të Gita ka ruajtur në bazën e të dhënave të
afishuar të dhëna; gjitha informacionet për punonjësit e saj.
Çdo të premte ajo dëshiron të afishojë vetëm
-- afishon të dhënat na bazë informacionet për punonjësit me turne
të kushteve të caktuar; por nuk e di se si ta bëjë këtë. Çfarë do t’i
sugjeroni ju?
-- përdor operatorë dhe
shprehje të ndryshme të Shprehja Select
SQL.
Deri më tani kemi ndërtuar bazën e të dhënave
Fjalë kyç: dhe pasi e kemi mbushur tre tabelat përkatëse me
të dhëna ato janë si në figurë:
select, where, operator,
veprime, tabelë.

Tabelat e populluara

Shprehja SELECT është ndoshta një nga komandat më të përdorura të SQL. Ajo përdoret për të marrë
të dhëna nga baza e të dhënave dhe të jep mundësi për të përzgjedhur një ose disa rekorde ose kolona
nga një ose disa tabela të bazës së të dhënave.

Sintaksa minimale e SELECT është:
SELECT kolona1, kolona2, ...
FROM emër_tabele;
Ku kolona1, kolona2, ... janë fushat e tabelës nga duam të marrim të dhënat, emër_tabele përcakton
emrin e tabelës (ose tabelave) prej nga do të marrim të dhënat.

Për shembull për të afishur të gjitha të dhënat e furnitorëve shkruajmë si në figurë ku tregohet edhe
rezultati i ekzekutimit të query-it.

Një mënyrë tjetër e ngjashme është përdorimi i
simbolit * i cili përdoret për të marrë të gjitha kolonat
e një tabele pa listuar fushat e saj.

select *
from Furnitor

SQL nuk është case sensitive, kështu fjala SELECT është
e njëjtë me select.

Përdorimi i shprehjes Select

95

Bazat e të dhënave dhe menaxhimi i tyre

Operatori Distinct

Në një tabelë, një kolonë mund të përmbajë të dhëna të dublikuara. Nëse duam të listojmë vlera të
ndryshme, unike në një rezultat, atëherë mund të përdorim operatorin Distinct.
Shembull: Afishoni vlerat e ndryshme të statusit që kanë furnitorët.

Përdorimi i operatorit Distinct

Shprehja WHERE

Shprehja WHERE përdoret për të filtruar rekordet, pra për të marrë vetëm ato rekorde që plotësojnë
një kusht të caktuar.

Sintaksa:
SELECT kolona1, kolona2, ...
FROM emër_tabele
WHERE kusht;

Afishoni emrat dhe statusin e furnitorëve në qytetin e Tiranës.
Në SQL, fushat e tipit tekst vendosen në thonjëza teke ndërsa të tipit
numër jo.

Operatorët e krahasimit Përdorimi i shprehjes where

Në shprehjen where mund të përdorim operatorët e krahasimit të cilët janë:

Operatori Përshkrimi
= I barabartë
<> ose != I ndryshëm nga
>, >= më i madh, më i madh baraz
<, <= më i vogël, më i vogël baraz

Operatorët Logjik

Kushti where mund të jetë i përbërë nga disa shprehje llogjike të lidhura me operatorët llogjikë AND,
OR dhe NOT. Operatori AND e shfaq rekordin nëse të gjitha kushtet janë të vërteta, operatori OR e
shfaq rekordin nëse të paktën një kusht është i vërtetë dhe
NOT e shfaq rekordin nëse kushti është i gabuar. Për kushte
më komplekse duhen të përdoren kllapat rrumbullake për të
përcaktuar radhën e veprimeve. Në mungesë të tyre prioritet
i operatorëve është: NOT, AND, OR.
Të afishojmë emrin e pjesëve që ruhen në Tiranë dhe kanë
ngjyrë të kuqe.

Përdorimi i operatorit and

96

Bazat e të dhënave dhe menaxhimi i tyre

Operatori IN

Operatori IN krahason një vlerë, një shprehje kundrejt një liste vlerash. Lista e vlerave mund të jetë
statike ose një listë me vlera e kthyer nga një komandë SELECT (të cilat njihen ndryshe dhe si subquery).
IN është një shkurtim për disa kushte OR.
Afishoni detajet e pjesëve më ngjyrë ose blu ose jeshile.

Përdorimi i operatorit in

Operatori BETWEEN

Operatori Between selekton vlerat e një kolone të cilat ndodhen
brenda një rangu të dhënë vlerash. Ai përfshin edhe vlerat e
skajeve.

Afishojmë kodet e furnitorëve që kanë transportuar pjesën me
sasi nga 300 deri në 400.

Operatori NOT BETWEEN është e kundërta. Përdorimi i operatorit Between

Operatori LIKE

Operatori LIKE është një operator që vepron mbi stringjet. Ai përdoret në WHERE për të kërkuar për
një model të caktuar në një kolonë. Modeli mund të përmbajë shkronja, numra dhe disa simbole të
veçantë si % dhe _ që quhen wildcards.
% - shenja e përqindjes paraqet zero, një ose disa karaktere

_ - vija poshtë paraqet një karakter të vetëm çfarëdo.

Afishoni emrat e furnitorëve që fillojnë me germën A.

Përdorimi i operatorit like

Operatori IS NULL

Operatori IS NULL kontrollon nëse vlera e një fushe është boshe. Për të kontrolluar të kundërtën
përdorim operatorin IS NOT NULL.
Supozojmë që në tabelën furnitor mund të lëmë bosh statusin, pra është opsional.
Afishoni emrat e furnitorëve të cilët nuk u njihet statusi.

Përdorimi i operatorit is null

97

Bazat e të dhënave dhe menaxhimi i tyre

ORDER BY

Fjala kyce ORDER BY, mundëson renditjen e rezultatit të një kërkese (query) sipas një ose disa kolonave
në rendin rritës e cila është default ose mund të shkruajmë ASC dhe në rendin zbritës ku duhet të
përdorim fjalën kyçe DESC.
Afishoni detajet e furnitorëve sipas emrave në rendin zbritës.

Përdorimi i order by

Kontroll njohurish

1. Për çfarë përdoret komanda Select? Cila është sintaksa e saj?
2. Përse përdoren operatorët distinct, in, between, not null, like, order by?
3. Duke u bazuar në skemën e bazës së të dhënave furnitor_pjesë përgjigjuni pyetjeve

të mëposhtme në SQL:
a. Afishoni të gjitha detajet e pjesëve.
b. Afishoni vlerat e ndryshme të qyteteve ku ruhen pjesë.
c. Afishoni detajet e transporteve me sasi më të madhe se 200 dhe më të vogël se

400.
d. Afishoni emrat e furnitorëve që ndodhen në Tiranë dhe e kanë statusin më të

vogël se 25.
e. Afishoni detajet e pjesëve më ngjyrë ose blu ose jeshile ose të kuqe.
f. Afishojmë emrat e furnitorëve me status nga 20 deri në 30.
g. Afishoni emrat e furnitorëve që mbarojë me gërmën A.
h. Afishoni emrat e furnitorëve që kanë si gërmë të dytë gërmën e.
i. Afishoni emrat e pjesëve të cilave u njihet pesha.
j. Afishoni detajet e pjesëve sipas emrave në rendin rritës.

98

Bazat e të dhënave dhe menaxhimi i tyre

3.8 Veprimtari praktike

I. Për secilën nga pyetjet e mëposhtme zgjidhni njërën nga alternativat si përgjigje. Vetëm një
alternativë është e saktë.

1. SQL është shkurtim i:
a) Language,
b) Strong Question Language,
c) Structured Question Language.

2. Kur operatori LIKE përdoret për të zgjedhur një bashkësi rreshtash në një query SQL, simboli
% përcakton:
a) një string të çfarëdoshëm,
b) një karakter të çfarëdoshëm,
c) një rresht të çfarëdoshëm,
d) asnjë nga të mësipërmet.

3. Nëse në një query SQL nuk vendoset instruksioni WHERE në rezultat marrim:
a) të gjithë rreshtat,
b) të gjithë atributet,
c) të gjitha tabelat ,
d) asnjë nga të mësipërmet.

4. Operatori BETWEEN në SQL
a) Specifikon që një tabelë është një çelës primar.
b) Specifikon se nga cilat tabela po përzgjedhim të dhënat.
c) Specifikon një rang vlerash për të testuar.

5. Cila nga fjalët kyçe në SQL përdoret për të kthyer vetëm vlera të ndryshme të rreshtave?
a) DIFFERENT
b) UNIQUE
c) DISTINCT
d) DISTINCTIVE

6. Cila nga shprehjet SQL përdoret për të renditur rezultatin?
a) SORT
b) ORDER
c) ORDER BY
d) SORT BY

7. Fjala kyçe IN në SQL
a) Përcakton tabelat nga të cilat po zgjedhim ose po fshijmë të dhënat.
b) Përcakton nëse një vlerë është një nga vlerat e një liste vlerash ose një subquery.
c) Përdoret vetëm me fjalën kyçe DISTINCT në SQL

8. Rreshtat e tabelës njihen edhe si
a) Atribute
b) Rekorde
c) Fusha
d) Kolona

99

Bazat e të dhënave dhe menaxhimi i tyre

9. Cila shprehje SQL përdoret për të marrë të dhënat nga databaza
a) Open
b) Get
c) Extract
d) Select

II. Jepet skema relacionale e përbërë nga tre relacione:
Marinar(Mid, Memri, grada, mosha)
Varka(Vid, Vemri, ngjyra)
Rezervim(Mid, Vid, dita)

Për secilën nga pyetjet e mëposhtme të shkruhen shprehjet përkatëse në SQL.
1. Afishoni të gjitha detajet e marinarëve.
2. Afishoni të gjitha detajet e varkave me ngjyrë jeshile.
3. Afishoni ngjyrat e ndryshme të varkave.
4. Afishoni detajet e marinarëve me moshë më madhe se 25 dhe më të vogël se 45.
5. Afishoni emrat e marinarëve që janë me moshë midis 30 dhe 50 vjeçëve dhe që u fillon
emri me germën L.
6. Afishoni emrat e marinarëve me moshë jo më të vogël se 25.
7. Afishoni emrat e marinarëve me gradë 10, 20 dhe 20.
8. Afishoni emrat e varkave të cilave nuk u dihet ngjyra.
9. Afishoni emrat e marinarëve sipas moshës në rendin zbritës.

100


Click to View FlipBook Version