Chapter 00 - Bazat e te dhenave relacionale


Cfare eshte nje sistem i manaxhimit te te dhenave (DBMS)
Nje  sistem i manaxhimit te te dhenave perbehet nga nje bashkesi komponentes:
  • Programet aplikative mbi bazat e te dhenave
  • Komponentet klient
  • Serverat e Database
  • Database-t
Nje program aplikativ mbi bazat e te dhenace eshte per nje qellim te caktuar.
Ndersa nje komponente klient eshte nje software qe perdoret per veprime te perditeshme mbi bazen e te dhenave, per administrimin , per raportime etj.
Nepermjet nje komponenti klient , perdoruesit mund te perdorin nje baze te dhenash ne te njejtin kompjuter apo ne nje kompjuter(server) me te cilin komunikojne nepermjet nje rrjeti.

Funksioni i nje serveri te bazes se te dhenave eshte te administroje te dhenat. Cdo klient mund ti perdore te dhenat vetem duke i derguar serverit nje kerkese (query) dhe serveri pas disa kontrolleve nese klienti eshte i autorizuar te kryeje veprimin e kerkuar mbi te dhenat e kryen veprimin dhe i kthen nje pergjigje me rezultatin klientit.


Nje DBMS ofron funksionet e meposhtme:
  • Nderfaqe per perdoruesit, qe te kene mundesi te bejne kerkesa per sherbime mbi te dhenat
  • Pavaresi te te dhenave fizike ( Physical data independence)
  • Pavaresi llogjite te te dhenave ( Logical data independence)
  • Optimizim te kerkesave ( Query optimization )
  • Integritin e te dhenave (Data integrity)
  • Kontroll te konkurences ( Concurrency control)
  • Backup dhe recovery
  • Siguri te bazes se te dhenave (Database security)
Le ti shohim me konkretisht keto funksione

Nderfaqe per perdoruesit
Shume baza te dhenash jane nderttuar per tu perdorur nga perdorues te kategorive te ndryshme me nivel te ndryshem njohurish.
Ndaj DBMS duhet te ofroje disa nderfaqe per perdoruesit me menu, forma, raporte si edhe nje gjuhe programimi(SQL) per perdoruesit me te perparuar.

Pavaresia fizike e te dhenave

Eshte e nevojshme qe programet qe perdorin te dhenat ne nej baze te dhenash te mos jene te varur nga struktura fizike ne te cilen jane ruajtur te dhenat.  Kjo gje na mundeson te modifikojme te dhenat pa ndikuar ne programin aplikativ. Per shembull duhet te kemi mundesi  te zhvendosim te dhenat ne nje server te ri  me te shpejte pa modifukuar aplikacionin.

Ose, nese nje tabele eshte shume e madhe dhe po ndikon ne shpejtesine e sistemit, mund te vendosim ta ndajme ate ne dy skedare ku sejcili prej tyre te ruhet ne nje disk me vehte per te rritur shpejtesin e sistemit. 
Sigurisht, nuk duam te modifikojme aplikacionin per kete gje.

Pavaresia llogjike e te dhenave
Po e ilustrojme kete me nje shembull.
Nese duam te shtojme nje kollone adresa ne nje tabele Employees, mund ta bejme kete pa modifikuar aplikacionin,
Nese te dhenat mbi punonjesit do te ruheshin ne nje skedar atehere shtimi i nje fushe ne skedar do te kerkonte modifikimin e aplikacionit mbi te dhenat

Optimizimi i kerkesave
Te gjithe DBMS kane nje komponent qe quhet optimizues, i cili merr ne konsiderate disa menyra te ndryshme per te ekzekutuar komandat ne bazen e te dhenave. Menyra e zgjedhur quhet plan ekzekutimi. Optimizuesi merr vendimet duke u bazuar ne informacione si madhesia e tabelave ku po ekzekutohet komanda, cfare indeksesh ka, dhe cfare operatoresh llogjike (AND, OR, NOT) perdoren ne klauzolen WHERE

Integriteti i te dhenave
Nje nga funksionet e DBMS eshte te identifikoje te dhena qe jane llogjikisht jo te sakta dhe te mos i pranoje to ruaje ato ne bazen e te dhenave. Per shembull nese ruajme moshen e nje punonjesi DBMS nuk duhet te pranoje nje moshe jashte intervalit (18-70).

Kontrolli i konkurences
Pjesa me e madhe e DBMS te sotem, jane sisteme shume-perdorues dhe i mundesojne disa perdoruesve ne te njejten kohe (ne menyre konkurente) te punojne me te dhenat. 
Puna ne menyre te njekoheshme me te dhenat nga disa perdorues, paraqet disa probleme te cilat duhet ti shmange (administroje) DBMS. Per ilustrim po marrim nje shembull tipik:
1.Nje llogarie bankare  numer 4711 ne banken X ka nje balance prej $2,000.
2. Dy pronaret e kesaj llogarie, Znj. A dhe  Z. B, shkojne ne dy sportele te ndryshme dhe sejcili prej tyre terheq 2000 dollare

DBMS nuk duhet ta lejoje kete situate. Llogaria duhet te "kycet" ne momentin qe telleri i pare fillon te kryeje nje veprim terheqje nga kjo llogari dhe telleri i dyte duhet et vendoset ne pritje derisa te mbaroje pune telleri  i pare.
Telleri i dyte fillon te punoje me llogarine pasi ka mbaruar telleri i pare, duke gjetur nje balance te llogarise 0 dollare, gje qe nuk i mundeson Z. B te terheqe 2000 dollaret e tij pasi ato me pare i ka terhequr Znj. A.

Backup dhe Recovery
Nje DBMS duhet te kete mjete per te ruajtur te dhenat ne menyre te tille qe ti rigjeneroje ato ne rast te nje demtimi te pajisjeve ose te te dhenave,

Siguria e bazes se te dhenave
Siguria e bazes se te dhenave lidhet me dy procese: autentikimin dhe autorizimin.
Autentikimi eshte procesii verifikimit te kredencialeve te perdoruesit  per te mos lejuar perdoruers te paautorizuar te perdorin DBMS. Autentikimi zakonisht realizohet nepermejt nje emri perdoruesi dhe fjalekalimi. Ky informacion kontrollohet  nga DBMS dhe nese eshte i sakte perdoruesi lejohet te perdore sistemin. Per te shmabgur vjedhjen e fjalekalimit gjate transmetimit ne rrjet apo gjate ruajtes se tiej perdoret enkriptimi, ndersa
Autorizimi eshte proces qe ndodh pas autentikimit. Tani me DBMS e di identitetin e perdoruesit (nepermjet autentikimit) dhe sa here qe nje perdorues tenton te perdore  nje objekt te te dhenave DBMS verifikon nese perdoruesi eshte lejuar te ktyeje kete veprim. nese po e autorizon perdoruesin te kryeje veprimin e kerkuar.

Relational Database Management Systems (RDBMS)
Sistemet relacionale te manaxhimit te te dhenave

Koncepti i bazave te dhenave relacionale eshte prezantuar per here te pare nga E. F. Codd ne artikullin e tij “A Relational Model of Data for Large Shared Data Banks” ne vitin 1970. Ne dallim nga sistemet e meparshme  (rrjet dhe hierarkik), sistemet relacionale bazohen ne modelin e te dhenave relacional qe bazohet ne algjebren relacionale.

Koncepti baze i modelit relacional eshte relacioni (= tabela), prandaj ne nje sistem relacional tabela eshte e vetmja strukture per ruajtjen e te dhenave. Tek nje kolline e nje rreshti ruhet me saktesi nje vlere skalare.

Per te ilustruar bazat e te dhenave relacionale do te bazohemi tek baza e te dhenave Northwind.

Po paraqesim me poshte disa nga tabelat e kesaj baze te dhenash.


Sic duket baza e te dhenave Northwind ruan informacion mbi shitjet e nje kompanie

Tabela Orders


Tabela Orders ruan informacion mbi porosite e kryera ne kompani. Per cdo porosi ruhen disa informacione nder te cilat disa jane informacione te detyrueshme e disa opsionale. 
Keshtu per nje porosi ruhet : 
  • Kodi ne kollonen me emrin OrderId,
  • Kodi i klientit ne kollonen me emrin CustomerID, 
  • Kodi i punonjesit qe realizoi kete porosi ne kollonen me emrin EmployeeId, 
  • Data e porosise ne kollonen me emrin OrderDate 
si edhe te tjera informacione si 
  • daten kur kerkohet qe porosia te levrohet tek klienti, 
  • ne cilen date duhet te nise transporti(Shippeddate), 
  • kodi i kompanise se transportit(ShipVia) etj.

Tabela Employees


Tabela Employees ruan informacion mbi punonjesit e kompanise. Per cdo punonjes ruhen disa informacione nder te cilat disa jane informacione te detyrueshme e disa opsionale. 
Keshtu per nje punonjes ruhet : 
  • Kodi ne kollonen me emrin EmployeeId,
  • Mbiemri i punonjesit ne kollonen me emrin Lastname, 
  • Emri i punonjesit  ne kollonen me emrin Firstname, 
  • Pozicionin e punes se punonjesit  ne kollonen me emrin Title
  • Datelindjen ne kollonen me emrin Birthdate
  • Daten e  marrjes ne pune ne kollonen me emrin Hiredate
si edhe  informacione te tjera mbi punonjesit.



Tabela Customers


Tabela Customers ruan informacion mbi klientet. Per cdo klient ruhen disa informacione nder te cilat disa jane informacione te detyrueshme e disa opsionale. 
Keshtu per nje klient ruhet : 
  • Kodi ne kollonen me emrin CustomerId,
  • Emri i kompanise ne kollonen me emrin CompanyName, 
  • Personin e kontaktit ne kollonen me emrin ContactName, 
  • Pozicionin e punes se personit te kontaktirne kollonen me emrin ContactTitle
  • Adresen 
  • Qytetin
si edhe  informacione te tjera.


Tabela OrderDetails


Tabela OrderDetails ruan informacion mbi detajet e porosive. Per cdo detaj (rresht te porosise, kujtoni nje fature qe keni pare se fundmi) ruhen informacionet e meposhtme: 
  • Kodi i porosise  ne kollonen me emrin OrderId,
  • Kodi i produktit ne kollonen me emrin ProductId, 
  • Cmimi i produktit  ne kollonen me emrin UnitPrice, 
  • Sasine e porositur nga ky produkt ne kollonen me emrin Quantity
  • Ndonje ulje te mundshme ne kollonen me emrin Discount 
Tabela Products


Tabela Products ruan informacion mbi produktet qe shet kompania. Per cdoprodukt ruhen informacionet e meposhtme: 
  • Kodi i Produktit ne kollonen me emrin ProductId,
  • Emri i produktit ne kollonen me emrin ProductName, 
  • Kodi i furnitorit ( te cilet ruhen ne nje tabele me vehte me emrin Suppliers ) ne kollonen me emrin SupplierId , 
  • Kodi i kategorise se produktit (te cilat ruhen ne nje tabele me vehte Categories) 
  • Cmimin e produktit  ne kollonen me emrin UnitPrice
  • sasine ne stok  ne kollonen me emrin UnitsInStock 
  • etj

Sic vihet re edhe nga baza e te dhenave e marre si shembull:
  • Rreshtat e nje tabele nuk kane ndonje rend te paracaktuar
  • Kollonat ne nje tabele nuk kane ndonje rend te percaktuar
  • Nuk kemi dy kollona me te njejtin emer brenda te njejtes tabele 
  • Mund te kemi kollona me te njejtin emer nese ato ndodhen ne dy tabela te ndryshme ( Per shembull kollona OrderId ne tabelen Orders dhe kollona OrderId ne tabelen OrderDetails si edhe EmployeeId ne tabelen Employees dhe kollona EmployeeId ne tabelen Orders)
  • Te gjitha te dhenat qe ruhen ne nje kollone te nje rreshti te tabeles jane skalare
  • Ne cdo tabele, ka te pakten nje kollone (ose kombimin kollonash si ne tabelen Order Details kollonat OrderId dhe ProductID) qe permban vlera unike. Ne modelin relacional te te dhenave keto kollona qe sherbjene si identifikues te rreshtave referohen si celes kandidat. Nese nje tabele ka disa celesa kandidate ne nje tabele , dizenjuesi i bazes se te dhenave percakton njerin prej celesave kandidate si celesi primar i tabeles, psh OrderId eshte celes primar i tabeles Orders, EmployeeId i tabeles Employees dhe CustomerId i tabeles Customers, ndersa ne tabelen OrderDetails celesi primar perbehet nga kombinimi i dy kollonave OrderId dhe ProductId
  • Ne asnje nga tabelat nuk ekzistojne dy rreshta me permbajtje identike

Gjuha per bazat e te dhenave relacionale, SQL(Structured Query Language)

Versioni i gjuhes SQL qe perdor  SQL Server quhet  Transact-SQL.  Transact SQL konsiderohet si nj dialekt i Structured Query Language.
Lindja e gjuhes  SQL eshte e lidhur ngushte me nje projekt te quajtur  System R, te IBM ne fillim te viteve 1980.
Ky projekt provoi se eshte e mundur te perdoret model teorik i E. F. Codd per te ndertuar nje sistem relacional te te dhenave.

SQL, gjuhe e bazuar tek bashkesite
Ndryshe nga gjuhet e programimt si  C, C++, apo Java, SQL eshte nje gjuhe e bazuar tek bashkesite. KJo nenkupton qe  SQL mund te kerkoje te dhena ne shume rreshta nga nje ose disa tabela me nje komande te vetme. Kjo karakteristike eshte nje nga avantazhet me te rendesishme te SQL, pasi ofron nje nderfaqe programimi te nje niveli te larte abstraksioni, me larg gjuhes se makines por me afer gjuhes natyrale njerezore.

SQL gjuhe jo proceduriale
Gjithashtu SQL eshte nje gjuhe jo proceduriale. Te gjithe programet e shkruajtura ne nje gjuhe proceduriale (C, C++, Java) pershkruan si te kryhet nje pune, hap pas hapi. Perkundrazi , SQL, pershkruan cfare kerkon perdoruesi dhe eshte sistemi DBMS qe gjen menyren me te mire per t'iu pergjigjur kerkeses se perdoruesit.

DDL dhe DML
SQL permban dy bashkesi kompandash: 
  1. data definition language (DDL) dhe  
  2. data manipulation language (DML). 
Komandat DDLperdoren per te pershkruar skemen e objekteve te bazes se te dhenave.  
DDL permban tre komanda te pergjithshme: 
  • CREATE object 
  • ALTER object
  • DROP object
Keto komanda krijojne , modifikojne dhe fshijne objekte te bazes se te dhenave si database, tabele, kollona, dhe indekse

Ndersa  DML permbledh komandat qe manipulojne permbajtjen e ketyre objekteve: afishimin,
shtimin, fshirjen, dhe modifikimin. 
  • Komanda per gjetjen dhe afishimin eshte SELECT
  • Komanda per gjetjen dhe afishimin eshte INSERT
  • Komanda per gjetjen dhe afishimin eshte DELETE
  • Komanda per gjetjen dhe afishimin eshte UPDATE 



Kontroll Njohurish

1.1. Cfare do te thote pavaresi e te dhenave?

1.2. Cila eshte struktura e ruajtjes se te dhenave ne bazat e te dhenave relacionale?

ċ
NORTHWND.MDF
(5504k)
Endrit Xhina,
Jan 20, 2015, 4:10 AM
ċ
northwind.bak
(10494k)
Endrit Xhina,
Jan 20, 2015, 3:59 AM
ċ
Endrit Xhina,
Jan 20, 2015, 3:07 AM
ċ
northwind_log.ldf
(3456k)
Endrit Xhina,
Jan 20, 2015, 4:08 AM