# Baza e të dhënave

Një deklaratë select në SQL, si dhe rezultati i saj
Në kompjuterikë, një **bazë e të dhënave** (anglisht: *database*) është një koleksion i organizuar i të dhënave ose një lloj ruajtjeje të të dhënash që bazohet në përdorimin e një sistemi të menaxhimit të bazës së të dhënave (DBMS), softueri që ndërvepron me përdoruesit fundorë, aplikacionet dhe bazën e të dhënave vetë për të kapur dhe analizuar të dhënat. DBMS gjithashtu përfshin fasilitetet kryesore që ofrohen për të administruar bazën e të dhënave. Shuma totale e bazës së të dhënave, DBMS dhe aplikacioneve të lidhura mund të quhet një sistem i bazës së të dhënave. Shpesh termi "bazë të dhënash" përdoret gjithashtu për të treguar çdo një nga DBMS-të, sistemin e bazës së të dhënave ose një aplikacion të lidhur me bazën e të dhënave.

Bazat e të dhënave të vogla mund të ruhen në një sistem skedarësh, ndërsa bazat e të dhënave të mëdha mund të strehohen në grupe serverësh ose ruajtje në re. Dizajni i bazave të të dhënave përfshin teknika formale dhe shqetësime praktike, duke përfshirë modelimin e të dhënave,përfaqësimin dhe ruajtjen efikase të të dhënave,gjuhët e pyetjeve,sigurinë dhe privatësinë e të dhënave të ndjeshme, si dhe çështje të kompjuterëve të shpërndarë, duke përfshirë mbështetje për aksesin paralel dhe tolerancën ndaj gabimeve.

Shkencëtarët kompjuterikë mund të klasifikojnë sistemet e menaxhimit të bazës së të dhënave sipas modeleve të bazës së të dhënave që ata mbështesin. Bazat e të dhënave relacionalë u bënë dominuese në vitet 1980. Këto modele të dhënat si rreshta dhe kolona në një seri tabelash dhe shumica përdorin SQL për të shkruar dhe kërkuar të dhënat. Në vitet 2000, bazat e të dhënave jo-relacionalë u bënë të popullarizuara, të cilat u përmblodhën nën termin NoSQL, sepse ato përdorin gjuhë të ndryshme për kërkime.

## Terminologjia dhe përmbledhja

Formalisht, një "bazë e të dhënave" i referohet një grupi të dhënash të lidhura që mund të arrihen përmes përdorimit të një "sistemi të menaxhimit të bazës së të dhënave" (DBMS), i cili është një grup i integruar i softuerit kompjuterik që i lejon përdoruesit të ndërveprojnë me një ose më shumë baza të të dhënash dhe ofron akses në të gjitha të dhënat që ndodhen në bazën e të dhënave (ndonëse mund të ekzistojnë kufizime që kufizojnë aksesin në të dhëna të caktuara). DBMS ofron funksione të ndryshme që lejojnë hyrjen, ruajtjen dhe rikthimin e sasisë së madhe të informacionit dhe ofron mënyra për të menaxhuar se si organizohen ato të dhëna.

Për shkak të lidhjes së ngushtë midis tyre, termi "bazë të dhënash" shpesh përdoret për të treguar si bazën e të dhënave ashtu edhe DBMS-në që përdoret për ta manipuluar atë.

Jashtë botës së teknologjisë profesionale të informacionit, termi bazë të dhënash shpesh përdoret për të treguar çdo koleksion të të dhënash të lidhura (si një fletë llogariti ose një indeks kartash) pasi kërkesat e madhësisë dhe përdorimit zakonisht kërkojnë përdorimin e një sistemi menaxhimi të bazës së të dhënave.

DBMS ekzistues ofrojnë funksione të ndryshme që mundësojnë menaxhimin e një baze të dhënash dhe të dhënave të saj që mund të klasifikohen në katër grupe funksionale kryesore:

1. **Definicioni i të dhënave** – Krijimi, modifikimi dhe heqja e definicioneve që detajojnë se si duhet të organizohen të dhënat.
2. **Përditësimi** – Futja, modifikimi dhe fshirja e të dhënave.
3. **Rikthimi** – Zgjedhja e të dhënave sipas kritereve të caktuara (p.sh., një pyetje, një pozicion në një hierarki, ose një pozicion në lidhje me të dhëna të tjera) dhe ofrimi i atyre të dhënave drejtpërdrejt te përdoruesi ose duke i bërë ato të disponueshme për përpunim të mëtejshëm nga vetë baza e të dhënave ose nga aplikacione të tjera. Të dhënat e rikthyera mund të ofrohen në një formë më të drejtpërdrejtë pa modifikim, ashtu siç janë ruajtur në bazën e të dhënave, ose në një formë të re të fituar duke i ndryshuar ato ose duke i kombinuar ato me të dhëna ekzistuese nga baza e të dhënave.
4. **Administrimi** – Regjistrimi dhe monitorimi i përdoruesve, forcimi i sigurisë së të dhënave, monitorimi i performancës, ruajtja e integritetit të të dhënave, trajtimi i kontrollit të konkurencës dhe rikthimi i informacionit që është korruptuar nga një ngjarje të tillë si një dështim i papritur i sistemit.

Si një bazë të dhënash ashtu edhe DBMS i saj përputhen me parimet e një modeli të caktuar të bazës së të dhënave. "Sistemi i bazës së të dhënave" i referohet kolektivisht modelit të bazës së të dhënave, sistemit të menaxhimit të bazës së të dhënave dhe bazës së të dhënave.

Fizikisht, serverët e bazave të të dhënave janë kompjuterë të dedikuar që mbajnë bazat e të dhënave dhe ekzekutojnë vetëm DBMS dhe softuerin e lidhur. Serverët e bazave të të dhënave janë zakonisht kompjuterë me shumë procesorë, me memorie të bollshme dhe shtresa disku RAID të përdorura për ruajtje të qëndrueshme. Përdoren gjithashtu akceleratorë të harduerit të bazave të të dhënave, të lidhur me një ose më shumë servera përmes një kanali të shpejtë, në mjedise të përpunimit të transaksioneve me volum të lartë. DBMS janë në zemër të shumicës së aplikacioneve të bazave të të dhënave. DBMS mund të jenë të ndërtuara rreth një bërthame multitasking të personalizuar me mbështetje të ndërtuar për rrjetëzim, por DBMS-të moderne zakonisht mbështeten në një sistem operativ standard për të ofruar këto funksione.

Pasi DBMS përbëjnë një treg të rëndësishëm, furnizuesit e kompjuterëve dhe ruajtjes shpesh marrin parasysh kërkesat e DBMS në planet e tyre të zhvillimit.

Bazat e të dhënave dhe DBMS mund të kategorizohen sipas modele të bazës së të dhënave që mbështesin (si relacional ose XML), llojet e kompjuterëve që përdorin (nga një grup serverësh deri te një telefon celular), gjuhët e pyetjeve që përdoren për të hyrë në bazën e të dhënave (si SQL ose XQuery), dhe inxhinieria e brendshme e tyre, e cila ndikon në performancën, shkallëzueshmërinë, qëndrueshmërinë dhe sigurinë.

## Historia

Madhësitë, kapacitetet dhe performanca e bazave të të dhënave dhe sistemeve të menaxhimit të bazës së të dhënave (DBMS) janë rritur me urdhra madhësie. Këto rritje në performancë janë mundësuar nga përparimet teknologjike në fushat e procesorëve, memories kompjuterike, ruajtjes kompjuterike dhe rrjetave kompjuterike. Koncepti i bazës së të dhënave u bë i mundur nga shfaqja e mjeteve të ruajtjes me akses të drejtpërdrejtë si disqet magnetikë, të cilat u bënë të disponueshme gjerësisht në mes të viteve 1960; sistemet më herët mbështeteshin në ruajtjen sekondare të të dhënave në kaseta magnetike. Zhvillimi i mëpasshëm i teknologjisë së bazave të të dhënave mund të ndahet në tre periudha, sipas modelit ose strukturës së të dhënave: navigacionale, SQL/relacionale dhe post-relacionale.

Dy modelet kryesore të hershme të të dhënave navigacionale ishin modeli hierarkik dhe modeli CODASYL (modeli i rrjetit). Këto karakterizoheshin nga përdorimi i treguesve (shpesh adresa fizike të disqeve) për të ndjekur marrëdhëniet nga një rekord në një tjetër.

Modeli relacionale, i propozuar për herë të parë në vitin 1970 nga Edgar F. Codd, u largua nga kjo traditë duke insistuar që aplikacionet të kërkojnë të dhënat sipas përmbajtjes, në vend që të ndiqnin lidhjet. Modeli relacionale përdor grupe tavolish që i ngjajnë librave të regjistrave, secila e përdorur për një lloj të ndryshëm entiteti. Vetëm në mes të viteve 1980 kompjuterët u bënë të mjaftueshëm të fuqishëm për të mundësuar shpërndarjen e gjerë të sistemeve relacionale (DBMS dhe aplikacione). Megjithatë, në fillim të viteve 1990, sistemet relacionale dominuan në të gjitha aplikacionet e përpunimit të të dhënave me shkallë të madhe, dhe që nga viti 2018 ato mbeten dominante: IBM Db2, Oracle, MySQL dhe Microsoft SQL Server janë DBMS-të më të kërkuara. Gjuha dominante e bazës së të dhënave, SQL, për modelin relacionale, ka pasur ndikim në gjuhët e bazave të të dhënave për modelet e tjera të të dhënave.

Bazat e të dhënave objektuale u zhvilluan në vitet 1980 për të kapërcyer pasojat e mos përputhjes së objekt-relacional, që çoi në krijimin e termit "post-relacional" dhe zhvillimin e bazave të të dhënave hibride objekt-relacionale.

Gjenerata e ardhshme e bazave të të dhënave post-relacionale në fund të viteve 2000 u bë e njohur si NoSQL, duke prezantuar ruajtës të shpejtë të çelës-ve-vlerë dhe baza të dhënash të orientuara me dokumente. Një "gjeneratë tjetër" konkuruese e njohur si NoSQL e re, përpiqej të zbatojë implementime të reja që ruanin modelin relacionale/SQL ndërkohë që synonin të përputheshin me performancën e lartë të NoSQL krahasuar me DBMS-të relacionale komerciale.

Vitet 1960, DBMS navigacional Më shumë informacion: Baza e të dhënave navigacionale

Struktura themelore e modelit të bazës së të dhënave navigacionale CODASYL Hyrja e termit bazë të dhënash përkoiste me disponueshmërinë e ruajtjes me akses të drejtpërdrejtë (disqe dhe drum) nga mesi i viteve 1960 dhe përpara. Termi përfaqësonte një kundërvënie me sistemet e bazuara në kaseta të së kaluarës, duke mundësuar përdorimin e ndarë interaktiv, në vend të përpunimit të të dhënave në grupe çdo ditë. Dicionari i Oxfordit citon një raport të vitit 1962 nga Korporata e Zhvillimit të Sistemit të Kalifornisë si i pari që përdori termin "data-base" në një kuptim teknik të caktuar.

Siç rriteshin shpejtësia dhe kapaciteti i kompjuterëve, një numër sistemesh të bazave të të dhënave të përgjithshme u shfaqën; deri në mes të viteve 1960, një numër i tillë kishte hyrë në përdorim komercial. Interesi për një standard filloi të rritej dhe Charles Bachman, autori i një produkti të tillë, Sistemi i të Dhënave të Integruar (IDS), themeloi Grupin e Detyrave për Bazën e të Dhënave brenda CODASYL, grupi përgjegjës për krijimin dhe standardizimin e COBOL. Në vitin 1971, Grupi i Detyrave për Bazën e të Dhënave dorëzoi standardin e tij, i cili u bë i njohur si qasja CODASYL, dhe shpejt një numër produktesh komerciale bazuar në këtë qasje hynë në treg.

Qasja CODASYL ofronte mundësinë për aplikacionet për të naviguar rreth një grupi të dhënash të lidhura që formonin një rrjet të madh. Aplikacionet mund të gjenin rekorde nëpërmjet një prej tre metodave:

1. Përdorimi i një çelësi kryesor (i njohur si çelësi CALC, i implementuar shpesh nga hashing)
2. Navigimi i marrëdhënieve (të quajtura grupe) nga një rekord në një tjetër
3. Skanimi i të gjitha rekordeve në një rend sekondar

Sistemet më vonë shtuan pemët B për të ofruar rrugë alternative për akses. Shumë baza të dhënash CODASYL gjithashtu shtuan një gjuhë deklarative pyetjesh për përdoruesit (ndryshe nga API-ja navigacionale). Megjithatë, bazat e të dhënave CODASYL ishin komplekse dhe kërkonin trajnime të konsiderueshme dhe përpjekje për të prodhuar aplikacione të dobishme.

IBM gjithashtu kishte DBMS-në e tij në vitin 1966, të njohur si Sistemi i Menaxhimit të Informacionit (IMS). IMS ishte një zhvillim i softuerit të shkruar për programin Apollo në System/360. IMS ishte përgjithësisht i ngjashëm në koncept me CODASYL, por përdorte një hierarki të rreptë për modelin e tij të navigimit të të dhënave, në vend të modelit të rrjetit të CODASYL. Të dy konceptet më vonë u bënë të njohura si baza të dhënash navigacionale për shkak të mënyrës si hynte në të dhëna: termi u popullarizua nga prezantimi i Bachman në vitin 1973 i shpërblyer me Çmimin Turing “Programuesi si Navigator”. IMS klasifikohet nga IBM si një bazë të dhënash hierarkike. IDMS dhe bazat e të dhënave të Cincom Systems, TOTAL, klasifikohen si bazat e dhënave të rrjetit. IMS mbetet në përdorim edhe në vitin 2014.

## Vitet 1970

DBMS Relacional Edgar F. Codd punonte në IBM në San Hose, Kaliforni, në një nga zyret e tyre që ishin kryesisht të angazhuara në zhvillimin e sistemeve të disqeve të forta. Ai ishte i pakënaqur me modelin navigacional të qasjes CODASYL, sidomos me mungesën e një funksionaliteti "kërkimi". Në vitin 1970, ai shkroi një seri papersh që përshkruanin një qasje të re për ndërtimin e bazave të të dhënave që përfundimisht kulmoi në artikullin revolucionar *A Relational Model of Data for Large Shared Data Banks*.

Në këtë artikull, ai përshkroi një sistem të ri për ruajtjen dhe punimin me baza të dhënash të mëdha. Në vend që rekordet të ruheshin në një lloj liste të lidhur të rekordeve të formës së lirë, siç ishte në CODASYL, ideja e Codd ishte të organizonte të dhënat si një numër "tavolinash", ku çdo tavolinë përdorej për një lloj të ndryshëm entiteti. Çdo tavolinë do të përmbante një numër të caktuar kolonash që do të përmbanin atributet e entitetit. Një ose më shumë kolona të secilës tavolinë do të emërtoheshin si çelës kryesor me anë të të cilit rreshtat e tavolinës mund të identifikoheshin në mënyrë unike; referencat e kryqëzuara ndërmjet tavolinave gjithmonë do të përdornin këta çelësa kryesorë, në vend të adresave të disqeve, dhe pyetjet do të bashkonin tavolinat mbi këto marrëdhënie kyçe, duke përdorur një grup operacionesh bazuar në sistemin matematikor të kalkulës relacional (nga i cili modeli merr emrin). Ndajja e të dhënave në një grup tavolinash të normalizuara (ose lidhjesh) synonte të sigurohej që çdo "fakt" ruhej vetëm një herë, duke thjeshtuar operacionet e përditësimit. Tavolinat virtuale të quajtura pamje mund të prezantonin të dhënat në mënyra të ndryshme për përdorues të ndryshëm, por pamjet nuk mund të përditësoheshin drejtpërdrejt.

Codd përdori terma matematikorë për të përkufizuar modelin: lidhje, tupla dhe domain, në vend të tavolinave, rreshtave dhe kolonave. Terminologjia që është tani e njohur erdhi nga implementimet e hershme. Codd më vonë do të kritikonte tendencën e implementimeve praktike për të u larguar nga themeli matematikor mbi të cilin modeli ishte bazuar.

Në modelin relacional, rekordet janë "të lidhura" duke përdorur çelësa virtualë që nuk ruhen në bazën e të dhënave, por përcaktohen sipas nevojës ndërmjet të dhënave që përmbahen në rekordet.

Përdorimi i çelësave kryesorë (identifikuesve të orientuar nga përdoruesi) për të përfaqësuar marrëdhëniet ndërmjet tavolinave, në vend të adresave të disqeve, kishte dy motivime kryesore. Nga një këndvështrim inxhinierik, ai mundësonte që tavolinat të zhvendoseshin dhe të ndryshoheshin në madhësi pa pasur nevojë për një riorganizim të shtrenjtë të bazës së të dhënave. Por Codd ishte më shumë i interesuar për ndryshimin në semantikë: përdorimi i identifikuesve të qartë e bënte më të lehtë përkufizimin e operacioneve të përditësimit me përkufizime të pastra matematikore, dhe gjithashtu mundësonte që operacionet e kërkimit të përkufizoheshin në terma të logjikës së predikatit të rendit të parë; sepse këto operacione kanë pronësi të pastra matematikore, bëhet e mundur të rishkruhen pyetjet në mënyra që janë provuar si të sakta, që është baza e optimizimit të pyetjeve. Nuk ka humbje të shprehshmërisë krahasuar me modelet hierarkike ose të rrjetit, megjithëse lidhjet ndërmjet tavolinave nuk janë më aq të qarta.

Në modelet hierarkike dhe të rrjetit, rekordet lejohej të kishin një strukturë të brendshme komplekse. Për shembull, historia e pagës së një punonjësi mund të përfaqësohej si një "grup i përsëritur" brenda rekordit të punonjësit. Në modelin relacional, procesi i normalizimit çoi në zëvendësimin e këtyre strukturave të brendshme me të dhëna të mbajtura në tavolina të shumta, të lidhura vetëm me çelësa logjikë.

Për shembull, një përdorim i zakonshëm i një sistemi baze të dhënash është ndjekja e informacionit mbi përdoruesit, emrin e tyre, informacionin e login-it, adresat dhe numrat e telefonit. Në qasjen navigacionale, të gjitha këto të dhëna do të vendoseshin në një rekord me gjatësi variabile. Në qasjen relacional, të dhënat do të normalizoheshin në një tavolinë përdoruesish, një tavolinë adresash dhe një tavolinë numrash telefoni (për shembull). Rekordet do të krijoheshin në këto tavolina opsionale vetëm nëse adresa ose numrat e telefonit do të ofroheshin realisht.

Përveç identifikimit të rreshtave/rekordeve duke përdorur identifikues logjikë në vend të adresave të disqeve, Codd ndryshoi mënyrën në të cilën aplikacionet mblidhnin të dhëna nga rekorde të shumta. Në vend që aplikacionet të kërkonin të dhëna një rekord në një kohë duke naviguar nëpër lidhje, ato do të përdornin një gjuhë deklarative pyetjesh që shprehte se cilat të dhëna ishin të nevojshme, në vend të rrugës së aksesit përmes të cilës duhej gjetur ajo. Gjetja e një rruge efikase për të aksesuar të dhënat bëhej përgjegjësi e sistemit të menaxhimit të bazës së të dhënave, në vend të programuesit të aplikacionit. Ky proces, i quajtur optimizim i pyetjeve, varej nga fakti që pyetjet ishin shprehur në terma të logjikës matematikore.

Paperi i Codd u mor nga dy persona në Universitetin e Berkeley, Eugene Wong dhe Michael Stonebraker. Ata filluan një projekt të njohur si INGRES, duke përdorur fonde që tashmë ishin alokuar për një projekt të bazës së të dhënave gjeografike dhe programues studentë për të prodhuar kodin. Nga viti 1973, INGRES prodhoi produktet e tij të para testuese që ishin gati për përdorim të gjerë në vitin 1979. INGRES ishte i ngjashëm me System R në disa mënyra, duke përfshirë përdorimin e një "gjuhe" për aksesin në të dhëna, të njohur si QUEL. Me kalimin e kohës, INGRES kaloi në standardin SQL që po shkonte në zhvillim.

IBM vetë bëri një implementim testues të modelit relacional, PRTV, dhe një implementim prodhimi, Business System 12, të dy tani të ndërprera. Honeywell shkroi MRDS për Multics, dhe tani ka dy implementime të reja: Alphora Dataphor dhe Rel. Pothuajse të gjitha implementimet e tjera të DBMS-ve që zakonisht quhen relacionale janë në të vërtetë DBMS SQL.

Në vitin 1970, Universiteti i Michigan filloi zhvillimin e Sistemit të Menaxhimit të Informacionit MICRO, bazuar në modelin e të dhënave të D.L. Childs.MICRO u përdor për të menaxhuar grupe të dhënash shumë të mëdha nga Departamenti i Punës i SHBA-së, Agjencia e Mbrojtjes së Mjedisit të SHBA-së, dhe studiues nga Universiteti i Alberta, Universiteti i Michigan dhe Universiteti Wayne State. Ai funksionoi në kompjuterë të IBM-së me sistemin Michigan Terminal System. Sistemi mbeti në prodhim deri në vitin 1998.

## Në fund të viteve 1970

DBMS SQL IBM filloi punën mbi një sistem prototip të bazuar paksa në konceptet e Codd-it, të njohur si *System R*, në fillim të viteve 1970. Versioni i parë i këtij sistemi ishte gati në vitin 1974/5, dhe më pas nisi puna mbi sistemet me shumë tavolina, ku të dhënat mund të ndaheshin në mënyrë që të gjitha të dhënat për një rekord (disa prej të cilave janë opsionale) të mos duhet të ruheshin në një "grup" të madh. Versionet e mëvonshme për përdorim shumëpërdorueshmë u testuan nga klientët në vitet 1978 dhe 1979, deri në atë kohë një gjuhë pyetjesh e standardizuar – SQL – ishte shtuar.

Idetë e Codd-it po konsolidoheshin si të zbatueshme dhe më të mira se ato të qasjes CODASYL, duke e shtyrë IBM-në të zhvillonte një version të vërtetë prodhimi të *System R*, të njohur si *SQL/DS*, dhe më vonë *Database 2* (IBM Db2).

## 1980s, në desktop

Vitet 1980 sollën epokën e kompjuterëve desktop. Këta kompjuterë ofronin mundësi të reja për përdoruesit e tyre, duke përfshirë mundësinë për të përdorur fletore llogaritëse si Lotus 1-2-3 dhe software për baza të dhënash si dBASE. Produkti dBASE ishte i lehtë për t'u përdorur dhe i kuptueshëm për çdo përdorues kompjuteri që e përdorte. C. Wayne Ratliff, krijuesi i dBASE, tha: "dBASE ishte ndryshe nga programet si BASIC, C, FORTRAN dhe COBOL, pasi shumë nga detajet e ndërlikuara ishin bërë tashmë. Manipulimi i të dhënave bëhej nga dBASE, dhe jo nga përdoruesi, kështu që përdoruesi mund të përqendrohej në atë që po bënte, në vend që të merrej me hapjen, leximin dhe mbylljen e skedarëve dhe menaxhimin e alokimit të hapësirës."dBASE ishte një nga produktet më të shitura të softuerëve gjatë viteve 1980 dhe fillim të viteve 1990.

## 1990s, objekt-orientuar

Vitet 1990, së bashku me rritjen e programimit objekt-orientuar, sollën një rritje të mënyrës se si të dhënat në bazat e të dhënave trajtoheshin. Programuesit dhe dizajnerët filluan të trajtonin të dhënat në bazat e tyre të dhënash si objekte. Kjo do të thotë se nëse të dhënat e një personi ishin në një bazë të dhënash, atributet e atij personi, si adresa, numri i telefonit dhe mosha, tani do të konsideroheshin si pjesë e atij personi, në vend që të ishin të dhëna të jashtme. Kjo lejon lidhje midis të dhënave që lidhen me objektet dhe atributet e tyre dhe jo me fushat individuale.

Termi "ndërprerje objekt-relacionale" përshkruan ngërçin që ndodhte kur duhej të bëhej përkthimi midis objekteve të programuar dhe tavolinave të bazës së të dhënave. Baza të dhënash objekt-orientuar dhe bazat e dhënash objekt-relacionale përpiqen të zgjidhin këtë problem duke ofruar një gjuhë objekt-orientuar (ndonjëherë si shtesa për SQL) që programuesit mund të përdorin si një alternativë ndaj SQL-së pashtjelluese. Në anën e programimit, bibliotekat e njohura si *object-relational mappings* (ORM) përpiqen të zgjidhin të njëjtin problem.

## 2000s, NoSQL dhe NewSQL

Artikujt kryesorë: NoSQL dhe NewSQL

Bazat e të dhënave XML janë një lloj baze të dhënash të strukturuara orientuar në dokumente që lejojnë kërkime bazuar në atributet e dokumenteve XML. Këto baza të dhënash përdoren kryesisht në aplikacione ku të dhënat shihen në mënyrë të përshtatshme si një koleksion dokumentesh, me një strukturë që mund të varihet nga shumë fleksibël deri në shumë të rreptë: shembuj përfshijnë artikuj shkencorë, patente, dosje tatimore dhe regjistra të punonjësve.

Bazat e dhënash NoSQL janë shpesh shumë të shpejta, nuk kërkojnë skema fikse tavolinash, shmangin operacionet e bashkimit duke ruajtur të dhëna të denormalizuara dhe janë projektuar për t'u shkallëzuar horizontalisht.

## Klasifikimi

Një mënyrë për të klasifikuar bazat e të dhënave është në bazë të llojit të përmbajtjes së tyre, për shembull: bibliografike, dokument-tekst, statistikore, ose objekte multimedia. Një tjetër mënyrë është sipas fushës së aplikimit, për shembull: llogari, kompozime muzikore, filma, banka, prodhim, ose sigurime. Një mënyrë e tretë është sipas ndonjë aspekti teknik, si struktura e bazës së të dhënave ose lloji i ndërfaqes. Ky seksion rendit disa nga mbiemrat që përdoren për të karakterizuar lloje të ndryshme bazash të të dhënash.

* **Baza e të dhënave në memorien kryesore**Është një bazë të dhënash që kryesisht qëndron në memorien kryesore, por zakonisht mbështetet nga ruajtja e të dhënave që nuk humbasin (ruajtje jo të paqëndrueshme). Bazat e të dhënave në memorien kryesore janë më të shpejta se ato që përdorin disqe dhe shpesh përdoren kur koha e përgjigjes është kritike, si në pajisjet e rrjetit të telekomunikacionit.
* **Baza e të dhënave aktive**Përdor një arkitekturë të drejtuar nga ngjarjet që mund të përgjigjet ndaj kushteve brenda dhe jashtë bazës së të dhënave. Përdorime të mundshme përfshijnë monitorimin e sigurisë, njoftimin, mbledhjen e statistikave dhe autorizimin. Shumë baza të të dhënash ofrojnë funksione aktive nëpërmjet trigerave të bazës së të dhënave.
* **Baza e të dhënave në re (cloud)** Mbështetet në teknologjinë e re, ku të dhënat dhe shumica e DBMS qëndrojnë në distancë, "në re", ndërkohë që aplikacionet zhvillohen nga programuesit dhe më vonë mbahen dhe përdoren nga përdoruesit përmes shfletuesve dhe API-ve të hapura.
* **Magazinat e të dhënave (Data Warehouses)**Arkivon të dhëna nga bazat e të dhënave operacionale dhe shpesh nga burime të jashtme si agjencitë e hulumtimit të tregut. Magazina bëhet burimi qendror i të dhënave për menaxherët dhe përdoruesit e tjerë që mund të mos kenë akses në të dhënat operacionale. Për shembull, të dhënat e shitjeve mund të agregohen në totalet javore dhe të konvertohen nga kodet e brendshme të produkteve në UPC, në mënyrë që të mund të krahasohen me të dhënat e ACNielsen.
* **Baza e të dhënave deduktive**Kombinon programimin logjik me bazën e të dhënave relationale.
* **Baza e të dhënave të shpërndara (distributed)**Është një bazë të dhënash ku të dhënat dhe DBMS përhapen nëpër kompjuterë të ndryshëm.
* **Baza e të dhënave të orientuara në dokumente**Është e dizajnuar për ruajtjen, marrjen dhe menaxhimin e informacionit të orientuar në dokumente ose informacioni të gjysmë-strukturuar. Bazat e të dhënave të orientuara në dokumente janë një nga kategoritë kryesore të bazave të të dhënash NoSQL.
* **Sistemi i bazës së të dhënave të integruar (Embedded Database)**Është një DBMS që është ngushtë i integruar me një softuer aplikacioni që kërkon qasje në të dhëna të ruajtura në një mënyrë që DBMS është i fshehur nga përdoruesit e aplikacionit dhe kërkon pak ose asnjë mirëmbajtje të vazhdueshme.
* **Baza e të dhënave për përdoruesin përfundimtar (End-user Database)**Përbëhet nga të dhëna të zhvilluara nga përdoruesit individualë. Shembuj të këtyre janë koleksionet e dokumenteve, fletëve të kalkulimit, prezantimeve, multimedia dhe skedarëve të tjerë.
* **Sistemi i bazës së të dhënave të federuar (Federated Database System)**Përbëhet nga disa baza të dhënash të dallueshme, secila me DBMS-në e saj. Ajo trajtohet si një bazë të dhënash e vetme nga një sistem menaxhimi të bazave të të dhënash të federuar (FDBMS), i cili integron në mënyrë transparente shumë DBMS autonomë, ndoshta të llojeve të ndryshme, dhe u ofron atyre një pamje të integruar konceptuale.
* **Baza e të dhënave grafike (Graph Database)**Një lloj NoSQL database që përdor struktura grafike me nyje, lidhje dhe veti për të përfaqësuar dhe ruajtur informacionin. Bazat e të dhënave grafike mund të ruajnë çdo lloj grafiku dhe janë të dobishme për modele të komplikuara të lidhjeve.
* **DBMS me matrica (Array DBMS)**Një lloj NoSQL DBMS që lejon modelimin, ruajtjen dhe marrjen e të dhënave të shumë-dimensionale si imazhet satelitore dhe rezultatet e simulimeve klimatike.
* **Baza e të dhënave të hipertekstëve (Hypertext or Hypermedia Database)**Çdo fjalë ose pjesë teksti që përfaqëson një objekt, për shembull një tekst tjetër, artikull, fotografi, ose film, mund të lidhet me atë objekt. Bazat e të dhënave të hipertekstëve janë veçanërisht të dobishme për organizimin e informacionit të ndryshëm.
* **Baza e të dhënave të njohurisë (Knowledge Base)**Një lloj baze të dhënash për menaxhimin e njohurisë, që ofron mundësinë për mbledhjen, organizimin dhe kërkimin e njohurisë.
* **Baza e të dhënave për pajisje mobile (Mobile Database)**Është një bazë të dhënash që mund të transportohet ose sinkronizohet nga një pajisje mobile kompjuterike.
* **Baza e të dhënave operative (Operational Database)**Ruajnë të dhëna të detajuara për operacionet e një organizate. Ato përpunojnë volume të larta të azhurnimeve dhe përdoren për të mbajtur informacion për klientët, punonjësit, financat dhe menaxhimin e inventarit.
* **Baza e të dhënave paralele (Parallel Database)**Kërkon përmirësim të performancës përmes paralelizimit të detyrave si ngarkimi i të dhënave, ndërtimi i indekseve dhe vlerësimi i kërkesave.
* **Baza e të dhënave probabilistike (Probabilistic Database)**Përdor logjikë fuzzy për të nxjerrë përfundime nga të dhëna të pasakta.
* **Baza e të dhënave në kohë reale (Real-time Database)**Proceson transaksione me një kohë përgjigjeje të shpejtë për t'u vepruar menjëherë.
* **Baza e të dhënave hapësinore (Spatial Database)**Ruajnë të dhëna me veçori multidimensionale, si kërkesat për vendndodhje, për shembull "Ku është hoteli më i afërt në zonën time?".
* **Baza e të dhënave temporale (Temporal Database)**Ka aspekte kohore të integruara, si një model të dhënash temporal dhe një version temporal të SQL.
* **Baza e të dhënave të orientuar sipas terminologjisë (Terminology-Oriented Database)**Ndërtohet mbi një bazë të dhënash të orientuar nga objektet, shpesh e personalizuar për një fushë të caktuar.
* **Baza e të dhënave për të dhëna të pastruktuara (Unstructured Data Database)**Është projektuar për të ruajtur dhe menaxhuar objekte të ndryshme që nuk përshtaten natyrshëm dhe lehtësisht në bazat e të dhënave të zakonshme.

## Sistemi i Menaxhimit të Bazës së të Dhënave (DBMS)

Connolly dhe Begg e përkufizojnë sistemin e menaxhimit të bazës së të dhënave (DBMS) si një "sistem softuerik që mundëson përdoruesve të përcaktojnë, krijojnë, mirëmbajnë dhe kontrollojnë qasjen në bazën e të dhënave." Disa shembuj të DBMS përfshijnë MySQL, MariaDB, PostgreSQL, Microsoft SQL Server, Oracle Database dhe Microsoft Access.

Akronimi DBMS shpesh zgjerohet për të treguar modelin e bazës së të dhënave në themel, si RDBMS për modelin relacionale, OODBMS për modelin e bazave të të dhënave objekt (të orientuara), dhe ORDBMS për modelin objekt-relacional. Zgjerime të tjera mund të tregojnë karakteristika të tjera, si DDBMS për sistemet e menaxhimit të bazës së të dhënave të shpërndara.

Funksionaliteti që ofron një DBMS mund të ndryshojë shumë. Funksionaliteti kryesor është ruajtja, marrja dhe azhurnimi i të dhënave. Codd propozoi funksionet dhe shërbimet që një DBMS i plotë dhe me qëllim të përgjithshëm duhet të ofrojë:

* Ruajtja, marrja dhe azhurnimi i të dhënave.
* Katalogu ose fjalori i të dhënave që përdoruesit mund të aksesojnë dhe që përshkruan metadatat.
* Mbështetje për transaksionet dhe konkurencën.
* Mundësi për rikuperimin e bazës së të dhënave nëse ajo dëmtohet.
* Mbështetje për autorizimin e aksesit dhe azhurnimin e të dhënave.
* Mbështetje për qasje nga vende të largëta.
* Zbatimi i kufizimeve për të siguruar që të dhënat në bazën e të dhënave të respektojnë rregulla të caktuara.

Gjithashtu pritet që DBMS të ofrojë një grup mjetesh për qëllime të tilla si mundësitë për administrimin efektiv të bazës së të dhënave, duke përfshirë importimin, eksportimin, monitorimin, defragmentimin dhe analizën e të dhënave. Pjesa kryesore e DBMS që ndërvepron mes bazës së të dhënave dhe ndërfaqes së aplikacionit quhet shpesh "motori i bazës së të dhënave".

## Gjuhët e Bazës së të Dhënave

Gjuhët e bazës së të dhënave janë gjuhë me qëllim të veçantë, të cilat mundësojnë kryerjen e një ose më shumë nga këto detyra, të cilat ndonjëherë dallohen si nën-gjuhë:

* **Gjuhë e Kontrollit të të Dhënave (DCL)** – kontrollon aksesin në të dhëna;
* **Gjuhë e Definicionit të të Dhënave (DDL)** – përcakton llojet e të dhënave, si krijimi, ndryshimi, ose fshirja e tabelave dhe lidhjet ndërmjet tyre;
* **Gjuhë e Manipulimit të të Dhënave (DML)** – kryen detyra si futja, përditësimi ose fshirja e ndodhi të dhënash;
* **Gjuhë e Pyetjeve të të Dhënave (DQL)** – lejon kërkimin e informacionit dhe llogaritjen e informacionit të nxjerrë.

Gjuhët e bazës së të dhënave janë specifike për një model të caktuar të të dhënave. Disa shembuj të njohur përfshijnë:

* **SQL** (Structured Query Language) kombinon rolet e definicionit të të dhënave, manipulimit të të dhënave dhe pyetjeve në një gjuhë të vetme. Ajo ishte një nga gjuhët e para komerciale për modelin relacionale, edhe pse ndonjëherë devijon nga modeli relacionale siç është përshkruar nga Codd (p.sh., rreshtat dhe kolonat e një tabele mund të renditen). SQL u bë standard i Institutit të Standardeve Kombëtare të SHBA (ANSI) në vitin 1986, dhe i Organizatës Ndërkombëtare për Standardizim (ISO) në vitin 1987. Standardet janë përmirësuar rregullisht që nga ajo kohë dhe mbështeten (me nivele të ndryshme përputhjeje) nga të gjitha DBMS-të komerciale relacionale kryesore.
* **OQL** (Object Query Language) është një standard gjuhë për modelin e të dhënave objekt, nga Grupi i Menaxhimit të të Dhënave Objekt (Object Data Management Group). Ajo ka ndikuar në projektimin e disa prej gjuhëve të pyetjeve më të reja si JDOQL dhe EJB QL.
* **XQuery** është një gjuhë standarde për pyetje në XML, e implementuar nga sistemet e bazave të të dhënave XML si MarkLogic dhe eXist, nga bazat e të dhënave relacionale me mundësi XML si Oracle dhe Db2, dhe gjithashtu nga procesorët XML në kujtesë si Saxon.
* **SQL/XML** kombinon XQuery me SQL.

Një gjuhë për bazat e të dhënave mund të përfshijë gjithashtu tipare si:

* **Konfigurimi specifik për DBMS dhe menaxhimi i motorëve të ruajtjes**.
* **Llogaritje për të modifikuar rezultatet e pyetjeve**, si numërimi, shumimi, mesatarja, renditja, grupimi dhe referencimi ndërkufitar.
* **Zbatimi i kufizimeve** (p.sh., në një bazë të dhënash të automjeteve, lejohet vetëm një lloj motori për çdo makinë).
* **Versioni i gjuhës së pyetjeve si një ndërfaqe për programuesit**, për lehtësimin e zhvillimit të aplikacioneve.

## Ruajtja

Artikuj kryesorë: Ruajtja e të Dhënave në Kompjuter dhe Motori i Bazës së të Dhënave

Ruajtja e bazës së të dhënave është enë e materializimit fizik të një baze të dhënash. Ajo përfshin nivelin e brendshëm (fizik) në arkitekturën e bazës së të dhënave. Përmban gjithashtu të gjitha informacionet e nevojshme (p.sh., metadata, "të dhënat mbi të dhënat", dhe strukturat e brendshme të të dhënave) për të rikonstruktuar nivelin konceptual dhe atë të jashtëm nga niveli i brendshëm kur është e nevojshme. Bazat e të dhënave si objekte digjitale përmbajnë tre shtresa informacioni që duhet të ruhen: të dhënat, struktura, dhe semantika. Ruajtja e duhur e të treja shtresave është e nevojshme për ruajtjen dhe qëndrueshmërinë e bazës së të dhënave në të ardhmen.

Vendosja e të dhënave në ruajtje të përhershme është përgjegjësi kryesore e motorit të bazës së të dhënave, i njohur gjithashtu si "motori i ruajtjes". Edhe pse zakonisht aksesohen nga një DBMS përmes sistemit operativ përkatës (dhe shpesh duke përdorur sistemet e skedarëve të sistemit operativ si ndërmjetës për disponimin e ruajtjes), cilësitë e ruajtjes dhe konfigurimi i saj janë jashtëzakonisht të rëndësishme për funksionimin efikas të DBMS, dhe për këtë arsye janë të mbajtura ngushtë nga administratorët e bazës së të dhënave. Një DBMS, ndërsa është në funksionim, gjithmonë ka bazën e të dhënave në disa lloje ruajtjeje (p.sh., kujtesë dhe ruajtje eksternale). Të dhënat e bazës së të dhënave dhe informacionet shtesë që janë të nevojshme, ndoshta në sasi të mëdha, kodifikohen në bit. Të dhënat zakonisht qëndrojnë në ruajtje në struktura që duken krejtësisht ndryshe nga mënyra si duken ato në nivelet konceptuale dhe të jashtme, por në mënyra që përpiqen të optimizojnë (në mënyrën më të mirë të mundshme) rikonstruktimin e këtyre niveleve kur kërkohet nga përdoruesit dhe programet, si dhe për llogaritjen e llojeve të tjera të informacionit të nevojshëm nga të dhënat (p.sh., kur bëhen pyetje në bazën e të dhënave).

Disa DBMS mbështesin përcaktimin e kodifikimit të karaktereve që është përdorur për të ruajtur të dhënat, kështu që mund të përdoren kodifikime të ndryshme në të njëjtën bazë të të dhënave.

Struktura të ndryshme të ruajtjes në nivel të ulët të bazës së të dhënave përdoren nga motori i ruajtjes për të serilizuar modelin e të dhënave që mund të shkruhet në mediat e zgjedhura. Teknikat si indekset mund të përdoren për të përmirësuar performancën. Ruajtja konvencionale është e orientuar rresht, por ka gjithashtu ruajtje të orientuar kolona dhe databaza koreluese.

### Pamje të Materializuara

Artikuj kryesorë: Pamje të Materializuara

Shpesh përdoret redundanca e ruajtjes për të rritur performancën. Një shembull i zakonshëm është ruajtja e pamjeve të materializuara, të cilat përbëhen nga pamje të jashtme ose rezultate pyetjesh që përdoren shpesh. Ruajtja e këtyre pamjeve kursen kohën e llogaritjes së tyre çdo herë që janë të nevojshme. Disavantazhet e pamjeve të materializuara janë ngarkesa që shkaktohet kur përditësohen ato për t'u mbajtur të sinkronizuara me të dhënat origjinale të përditësuara të bazës së të dhënave, si dhe kostoja e redundancës së ruajtjes.

### Replikimi

Shiko gjithashtu: Replikimi (informatikë) § Replikimi i bazës së të dhënave

Herë pas here, një bazë të dhënash përdor redundancën e ruajtjes përmes replikimit të objekteve të bazës së të dhënave (me një ose më shumë kopje) për të rritur disponueshmërinë e të dhënave (si për të përmirësuar performancën e akseseve të shumëfishta të përdoruesve të njëkohshëm në të njëjtin objekt të bazës së të dhënave, ashtu edhe për të ofruar qëndrueshmëri në rast të dështimit të pjesshëm të një baze të shpërndarë të dhënash). Përshtatjet e një objekti të replikuar duhet të jenë të sinkronizuara nëpër kopjet e objekteve. Në shumë raste, e gjithë baza e të dhënave është e replikuar.

## Siguria

Artikull kryesor: Siguria e bazës së të dhënave

Siguria e bazës së të dhënave merret me të gjitha aspektet e ndryshme të mbrojtjes së përmbajtjes së bazës së të dhënave, pronarëve të saj dhe përdoruesve të saj. Ajo përfshin mbrojtjen nga përdorimet e paautorizuara të qëllimshme të bazës së të dhënave, si dhe nga akseset e paautorizuara të rastësishme nga entitete të paautorizuara (p.sh., një person ose një program kompjuterik).

Kontrolli i aksesit në bazën e të dhënave merret me kontrollimin e kush (një person ose një program i caktuar kompjuterik) lejohet të aksesojë cilat informacione në bazën e të dhënave. Informacioni mund të përfshijë objekte të veçanta të bazës së të dhënave (p.sh., lloje regjistrimesh, regjistrime të caktuara, struktura të dhënash), llogaritje të caktuara mbi objekte të caktuara (p.sh., lloje pyetjesh, ose pyetje të caktuara), ose përdorimin e rrugëve specifike të aksesit për tek të parat (p.sh., duke përdorur indekse specifike ose struktura të tjera të dhënash për të aksesuar informacionin). Kontrolli i aksesit në bazën e të dhënave vendoset nga personel të autorizuar (nga pronari i bazës së të dhënave) që përdorin ndërfaqe të dedikuara dhe të mbrojtura të sigurisë të DBMS.

Ky menaxhim mund të bëhet drejtpërdrejt në nivel individual, ose përmes caktimit të individëve dhe privilegjeve në grupe, ose (në modelet më të sofistikuara) përmes caktimit të individëve dhe grupeve në role të cilat më pas u jepen të drejta (entitlement). Siguria e të dhënave parandalon përdoruesit e paautorizuar të shohin ose përditësojnë bazën e të dhënave. Përdorimi i fjalëkalimeve lejon përdoruesit të kenë akses në të gjithë bazën e të dhënave ose në nëngrupet e saj të quajtura "subskema". Për shembull, një bazë të dhënash punonjësish mund të përmbajë të dhëna të plota për një punonjës të veçantë, por një grup përdoruesish mund të jetë i autorizuar të shohë vetëm të dhënat e pagës, ndërsa të tjerë mund të kenë akses vetëm në të dhënat e historikut të punës dhe shëndetit. Nëse DBMS ofron një mundësi për të hyrë dhe përditësuar bazën e të dhënave në mënyrë interaktive, si dhe për ta pyetur atë, kjo mundësi mundëson menaxhimin e bazave të të dhënave personale.

Siguria e të dhënave në përgjithësi merret me mbrojtjen e pjesëve të veçanta të të dhënave, si fizikisht (p.sh., nga korruptimi, shkatërrimi, ose heqja e tyre; për shembull, siguria fizike), ashtu edhe interpretimin e tyre ose pjesëve të tyre në informacion të kuptueshëm (p.sh., duke shikuar vargjet e bitëve që ato përbëjnë, duke arritur në përfundimin e numrave të vlefshëm të kartave të kreditit; për shembull, enkriptimi i të dhënave).

Regjistrimi i ndryshimeve dhe aksesit regjistron kush ka aksesuar cilat atribute, çfarë është ndryshuar dhe kur është bërë ky ndryshim. Shërbimet e regjistrimit mundësojnë një auditim forensik të bazës së të dhënave më vonë, duke mbajtur një rekord të rasteve të aksesit dhe ndryshimeve. Ndonjëherë, kodi në nivel të aplikacionit përdoret për të regjistruar ndryshimet në vend që t'i lërë ato në bazën e të dhënave. Mund të vendoset monitorim për të përpjekur për të zbuluar shkelje të sigurisë. Për këtë arsye, organizatat duhet ta marrin seriozisht sigurinë e bazës së të dhënave për shkak të shumë përfitimeve që ajo ofron. Organizatat do të jenë të mbrojtura nga shkeljet e sigurisë dhe aktivitetet e hackimit si ndërhyrjet në murin e zjarrit, përhapja e viruseve dhe ransomware. Kjo ndihmon në mbrojtjen e informacionit të rëndësishëm të kompanisë, i cili nuk mund të ndahet me palë të jashtme nën asnjë rrethanë.

## Transaksionet dhe paralelizmi

Informacion shtesë: Kontrolli i paralelizmit

Transaksionet e bazës së të dhënave mund të përdoren për të futur një nivel të caktuar tolerante ndaj gabimeve dhe integriteti të të dhënave pas një rikuperimi nga një dështim. Një transaksion i bazës së të dhënave është një njësi pune, e cila zakonisht përfshin një numër operacionesh mbi një bazë të dhënash (p.sh., leximi i një objekti të bazës së të dhënave, shkruarja, marrja ose lirimi i një bllokimi, etj.), një abstraksion i mbështetur jo vetëm në bazat e të dhënave, por edhe në sisteme të tjera. Çdo transaksion ka kufij të qartë në lidhje me cilat ekzekutime programi/kodi përfshihen në atë transaksion (të përcaktuara nga programuesi i transaksionit përmes komandave speciale të transaksionit).

Akrilimi **ACID** përshkruan disa veti ideale të një transaksioni të bazës së të dhënave: **atomizimi**, **konsistenca**, **izolimi**, dhe **qëndrueshmëria**.

## Kopje dhe rikuperim

Informacion shtesë: Kopje rezervë

Herë pas here, mund të jetë e dëshiruar të kthehet një bazë të dhënash në një gjendje të mëparshme (për shumë arsye, p.sh., në rastet kur baza e të dhënave është gjetur e dëmtuar për shkak të një gabimi në softuer, ose kur është përditësuar me të dhëna të gabuara). Për të arritur këtë, një operacion kopje rezervë bëhet herë pas here ose vazhdimisht, ku çdo gjendje e dëshiruar e bazës së të dhënave (dmth, vlerat e të dhënave të saj dhe përfshirja e tyre në strukturat e të dhënave të bazës së të dhënave) ruhet në skedarë të dedikuar të kopjes rezervë (shumë teknika ekzistojnë për ta bërë këtë në mënyrë efektive). Kur një administrator baze të dhënash vendos të kthejë bazën e të dhënave në këtë gjendje (p.sh., duke specifikuar këtë gjendje me një pikë të dëshiruar në kohë kur baza e të dhënave ishte në këtë gjendje), këta skedarë përdoren për të rikthyer atë gjendje.

## Dizajni dhe Modelimi i Bazës së të Dhënave

Artikulli kryesor: *Dizajni i Bazës së të Dhënave*

Detyra e parë e një dizajneri të bazës së të dhënave është të krijojë një model konceptual të të dhënave që pasqyron strukturën e informacionit që do të ruhet në bazën e të dhënave. Një qasje e zakonshme për këtë është zhvillimi i një modeli entitet–marrëdhënie, shpesh me ndihmën e mjeteve për vizatimin. Një tjetër qasje e njohur është Gjuha e Modelimit të Unifikuar (UML). Një model i suksesshëm i të dhënave do të pasqyrojë saktësisht gjendjen e mundshme të botës së jashtme që po modelizohet: për shembull, nëse njerëzit mund të kenë më shumë se një numër telefoni, do të lejojë kapjen e kësaj informationi. Krijimi i një modeli të mirë konceptual të të dhënave kërkon një kuptim të mirë të domain-it të aplikacionit; zakonisht përfshin pyetje të thella rreth gjërave të interesit për një organizatë, si p.sh., "mund të jetë një klient gjithashtu një furnizues?", ose "nëse një produkt shitet me dy forma të ndryshme paketimi, janë ato të njëjta produkte apo produkte të ndryshme?", ose "nëse një avion fluturon nga Nju Jorku në Dubai përmes Frankfurtit, është ajo një fluturim ose dy (apo ndoshta tre)?". Përshtypjet nga këto pyetje përcaktojnë definicionet e terminologjisë që përdoret për entitetet (klientët, produktet, fluturimet, segmentet e fluturimit) dhe marrëdhëniet dhe atributet e tyre.

Krijimi i modelit konceptual të të dhënave shpesh përfshin inpute nga proceset biznesore, ose analizën e rrjedhës së punës në organizatë. Kjo mund të ndihmojë në përcaktimin e informacionit që nevojitet të mbahet në bazën e të dhënave dhe atij që mund të lihet jashtë. Për shembull, mund të ndihmojë kur vendoset nëse baza e të dhënave duhet të mbajë të dhëna historike përveç të dhënave aktuale.

Pasi të jetë krijuar një model konceptual i të dhënave që përdoruesit janë të kënaqur me të, faza tjetër është ta përkthejë këtë në një skemë që implementon strukturat e nevojshme të të dhënave brenda bazës së të dhënave. Ky proces shpesh quhet dizajn i bazës së të dhënave logjike, dhe rezultati është një model logjik të të dhënave të shprehur në formën e një skeme. Ndërsa modeli konceptual i të dhënave është (në teorikë të paktën) i pavarur nga zgjedhja e teknologjisë së bazës së të dhënave, modeli logjik i të dhënave do të shprehet në terma të një modeli të caktuar të bazës së të dhënave të mbështetur nga DBMS i zgjedhur. (Termat model të të dhënave dhe model i bazës së të dhënave shpesh përdoren ndërlidhur, por në këtë artikull përdorim model të të dhënave për dizajnimin e një baze të dhënash specifike dhe model i bazës së të dhënave për shenjimin e notacionit të modelimit të përdorur për të shprehur atë dizajn).

Modeli më i njohur i bazës së të dhënave për bazat e të dhënave me përdorim të përgjithshëm është modeli relational, ose më saktë, modeli relational siç pasqyrohet nga gjuha SQL. Procesi i krijimit të një dizajni logjik të bazës së të dhënave duke përdorur këtë model përdor një qasje metodologjike të njohur si normalizimi. Qëllimi i normalizimit është të sigurohet që çdo "fakt" elementar të regjistrohet vetëm në një vend, kështu që shtimet, përditësimet dhe fshirjet automatikisht ruajnë konsistencën.

Faza e fundit e dizajnit të bazës së të dhënave është marrja e vendimeve që ndikojnë në performancën, shkallëzimin, rikuperimin, sigurinë dhe aspekte të tjera, të cilat varen nga DBMS i veçantë. Kjo shpesh quhet dizajn i bazës së të dhënave fizike, dhe rezultati është modeli fizik i të dhënave. Një qëllim kyç gjatë kësaj faze është pavarësia e të dhënave, që do të thotë që vendimet e marra për optimizimin e performancës duhet të jenë të padukshme për përdoruesit dhe aplikacionet përfundimtare. Ka dy lloje të pavarësisë së të dhënave: Pavarësia fizike e të dhënave dhe pavarësia logjike e të dhënave. Dizajni fizik drejtohet kryesisht nga kërkesat për performancë dhe kërkon një njohuri të mirë të ngarkesës së pritur dhe modeleve të qasjes, si dhe një kuptim të thellë të karakteristikave të ofruara nga DBMS i zgjedhur.

Një aspekt tjetër i dizajnit fizik të bazës së të dhënave është siguria. Kjo përfshin si përcaktimin e kontrollit të aksesit për objektet e bazës së të dhënave ashtu edhe përcaktimin e niveleve të sigurisë dhe metodave për të dhënat vetë.

**Modelet logjike të zakonshme të të dhënave për bazat e të dhënave përfshijnë: Bazat e të dhënave Naviguese
* Modeli Hierarkik i Bazës së të Dhënave
* Modeli i Rrjetit
* Bazat e të Dhënave Grafike
* Modeli Relacional
* Modeli Entitet–Marrëdhënie
* Modeli i Zgjeruar i Entitetit–Marrëdhënie
* Modeli Objektual
* Modeli i Dokumenteve
* Modeli Entitet–Atribut–Vlerë
* Schema e Yjeve

Një bazë të dhënash objekt-relacionale kombinon të dyja strukturat e lidhura.

Modelet fizike të të dhënave përfshijnë:

* Indeksi i Invertuar
* Dosja e Sheshtë

Modele të tjera përfshijnë:

* Modeli Multidimensional
* Modeli i Arrays
* Modeli Multivlerë

Modele të specializuara që janë optimizuar për lloje të veçanta të të dhënave:

* Baza e të Dhënave XML
* Modeli Semantik
* Dyqani i Përshtatjes
* Dyqani i Ngjarjeve
* Modeli i Serive të Kohës

## Shih edhe

Për një udhëzues tematik, shihni **Kornizën e Bazave të të Dhënave**.

* Krahasimi i mjeteve të bazës së të dhënave
* Krahasimi i sistemeve të menaxhimit të bazave të të dhënave objektuale
* Krahasimi i sistemeve të menaxhimit të bazave të të dhënave objekt–relacionale
* Krahasimi i sistemeve të menaxhimit të bazave të të dhënave relacionale
* Hierarkia e të dhënave
* Banka e të dhënave
* Dyqani i të dhënave
* Teoria e bazës së të dhënave
* Testimi i bazës së të dhënave
* Arkitektura e bazuar në bazën e të dhënave
* Datalog
* Baza e të dhënave si IPC
* DBOS
* Baza e të dhënave me skedarë të sheshtë
* INP (baza e të dhënave)
* Journal of Database Management
* Dataseti i orientuar nga pyetjet.

## Referime

* Bachman, Charles W. (1973). "The Programmer as Navigator". *Communications of the ACM*. **16** (11): 653–658. doi:10.1145/355611.362534. `{{cite journal}}`: Mungon ose është bosh parametri `|language=` (Ndihmë!)
* Beynon-Davies, Paul (2003). *Database Systems* (bot. 3rd). Palgrave Macmillan. ISBN 978-1403916013. `{{cite book}}`: Mungon ose është bosh parametri `|language=` (Ndihmë!)
* Stampa:Cite tech report
* Stampa:Cite tech report
* Chong, Raul F.; Wang, Xiaomei; Dang, Michael; Snow, Dwaine R. (2007). "Introduction to DB2". *Understanding DB2: Learning Visually with Examples* (bot. 2nd). IBM Press Pearson plc. ISBN 978-0131580183. Marrë më 17 mars 2013. `{{cite book}}`: Mungon ose është bosh parametri `|language=` (Ndihmë!)
* Codd, Edgar F. (1970). "A Relational Model of Data for Large Shared Data Banks" (PDF). *Communications of the ACM*. **13** (6): 377–387. doi:10.1145/362384.362685. S2CID 207549016. `{{cite journal}}`: Mungon ose është bosh parametri `|language=` (Ndihmë!)
* Connolly, Thomas M.; Begg, Carolyn E. (2014). *Database Systems – A Practical Approach to Design Implementation and Management* (bot. 6th). Pearson. ISBN 978-1292061184. `{{cite book}}`: Mungon ose është bosh parametri `|language=` (Ndihmë!)
* Date, C. J. (2003). *An Introduction to Database Systems* (bot. 8th). Pearson. ISBN 978-0321197849. `{{cite book}}`: Mungon ose është bosh parametri `|language=` (Ndihmë!)
* Halder, Raju; Cortesi, Agostino (2011). "Abstract Interpretation of Database Query Languages" (PDF). *Computer Languages, Systems & Structures*. **38** (2): 123–157. doi:10.1016/j.cl.2011.10.004. ISSN 1477-8424. Arkivuar nga origjinali (PDF) më 23 nëntor 2024. Marrë më 17 dhjetor 2024. `{{cite journal}}`: Mungon ose është bosh parametri `|language=` (Ndihmë!)
* Hershey, William; Easthope, Carol (1972). *A set theoretic data structure and retrieval language*. Spring Joint Computer Conference, May 1972. *ACM SIGIR Forum*. Vëll. 7 no. 4. fq. 45–55. doi:10.1145/1095495.1095500. `{{cite conference}}`: Mungon ose është bosh parametri `|language=` (Ndihmë!)
* Nelson, Anne Fulcher; Nelson, William Harris Morehead (2001). *Building Electronic Commerce: With Web Database Constructions*. Prentice Hall. ISBN 978-0201741308. `{{cite book}}`: Mungon ose është bosh parametri `|language=` (Ndihmë!)
* North, Ken (10 mars 2010). "Sets, Data Models and Data Independence". *Dr. Dobb's*. Arkivuar nga origjinali më 24 tetor 2012. `{{cite journal}}`: Mungon ose është bosh parametri `|language=` (Ndihmë!)
* Tsitchizris, Dionysios C.; Lochovsky, Fred H. (1982). *Data Models*. Prentice–Hall. ISBN 978-0131964280. `{{cite book}}`: Mungon ose është bosh parametri `|language=` (Ndihmë!)
* Ullman, Jeffrey; Widom, Jennifer (1997). *A First Course in Database Systems*. Prentice–Hall. ISBN 978-0138613372. `{{cite book}}`: Mungon ose është bosh parametri `|language=` (Ndihmë!)
* Wagner, Michael (2010), *SQL/XML:2006 – Evaluierung der Standardkonformität ausgewählter Datenbanksysteme*, Diplomica Verlag, ISBN 978-3836696098 `{{citation}}`: Mungon ose është bosh parametri `|language=` (Ndihmë!)

## Buriem

* Bachman, Charles W. (1973). "The Programmer as Navigator". *Communications of the ACM*. **16** (11): 653–658. doi:10.1145/355611.362534. `{{cite journal}}`: Mungon ose është bosh parametri `|language=` (Ndihmë!)
* Beynon-Davies, Paul (2003). *Database Systems* (bot. 3rd). Palgrave Macmillan. ISBN 978-1403916013. `{{cite book}}`: Mungon ose është bosh parametri `|language=` (Ndihmë!)
* Stampa:Cite tech report
* Stampa:Cite tech report
* Chong, Raul F.; Wang, Xiaomei; Dang, Michael; Snow, Dwaine R. (2007). "Introduction to DB2". *Understanding DB2: Learning Visually with Examples* (bot. 2nd). IBM Press Pearson plc. ISBN 978-0131580183. Marrë më 17 mars 2013. `{{cite book}}`: Mungon ose është bosh parametri `|language=` (Ndihmë!)
* Codd, Edgar F. (1970). "A Relational Model of Data for Large Shared Data Banks" (PDF). *Communications of the ACM*. **13** (6): 377–387. doi:10.1145/362384.362685. S2CID 207549016. `{{cite journal}}`: Mungon ose është bosh parametri `|language=` (Ndihmë!)
* Connolly, Thomas M.; Begg, Carolyn E. (2014). *Database Systems – A Practical Approach to Design Implementation and Management* (bot. 6th). Pearson. ISBN 978-1292061184. `{{cite book}}`: Mungon ose është bosh parametri `|language=` (Ndihmë!)
* Date, C. J. (2003). *An Introduction to Database Systems* (bot. 8th). Pearson. ISBN 978-0321197849. `{{cite book}}`: Mungon ose është bosh parametri `|language=` (Ndihmë!)
* Halder, Raju; Cortesi, Agostino (2011). "Abstract Interpretation of Database Query Languages" (PDF). *Computer Languages, Systems & Structures*. **38** (2): 123–157. doi:10.1016/j.cl.2011.10.004. ISSN 1477-8424. Arkivuar nga origjinali (PDF) më 23 nëntor 2024. Marrë më 17 dhjetor 2024. `{{cite journal}}`: Mungon ose është bosh parametri `|language=` (Ndihmë!)
* Hershey, William; Easthope, Carol (1972). *A set theoretic data structure and retrieval language*. Spring Joint Computer Conference, May 1972. *ACM SIGIR Forum*. Vëll. 7 no. 4. fq. 45–55. doi:10.1145/1095495.1095500. `{{cite conference}}`: Mungon ose është bosh parametri `|language=` (Ndihmë!)
* Nelson, Anne Fulcher; Nelson, William Harris Morehead (2001). *Building Electronic Commerce: With Web Database Constructions*. Prentice Hall. ISBN 978-0201741308. `{{cite book}}`: Mungon ose është bosh parametri `|language=` (Ndihmë!)
* North, Ken (10 mars 2010). "Sets, Data Models and Data Independence". *Dr. Dobb's*. Arkivuar nga origjinali më 24 tetor 2012. `{{cite journal}}`: Mungon ose është bosh parametri `|language=` (Ndihmë!)
* Tsitchizris, Dionysios C.; Lochovsky, Fred H. (1982). *Data Models*. Prentice–Hall. ISBN 978-0131964280. `{{cite book}}`: Mungon ose është bosh parametri `|language=` (Ndihmë!)
* Ullman, Jeffrey; Widom, Jennifer (1997). *A First Course in Database Systems*. Prentice–Hall. ISBN 978-0138613372. `{{cite book}}`: Mungon ose është bosh parametri `|language=` (Ndihmë!)
* Wagner, Michael (2010), *SQL/XML:2006 – Evaluierung der Standardkonformität ausgewählter Datenbanksysteme*, Diplomica Verlag, ISBN 978-3836696098 `{{citation}}`: Mungon ose është bosh parametri `|language=` (Ndihmë!)