SPECIALIZAREA: ………………. ………….. ……. Lucrare de licență O paralelă între Baze de date relaționale (SQL) și baze de date… [631081]
1
UNIVERSITATEA …………………. ……………………….. ……….
FACULTATEA …………………………….. …….. ……………
SPECIALIZAREA: ………………. ………….. …….
Lucrare de licență
O paralelă între Baze de date
relaționale (SQL)
și baze de date nerelaționale
(NoSQL)
Coordonator științific, Student: [anonimizat]. dr. ………….. ………………………………………
Sesiunea 2020
2
Cuprins
Listă de figuri ………………………….. ………………………….. ………………………….. ………………………….. … 2
Listă de secven țe de cod sursă ………………………….. ………………………….. ………………………….. …….. 3
Listă de tabele ………………………….. ………………………….. ………………………….. ………………………….. . 4
1. INTRODUCERE ………………………….. ………………………….. ………………………….. ……………………. 5
2. Sistemele de gestionare a bazelor de date SQL. ………………………….. ………………………….. ….. 6
2.1 Noțiuni de bază ………………………….. ………………………….. ………………………….. ……………… 6
2.2 Sistem informatic ………………………….. ………………………….. ………………………….. …………… 6
2.3 Baze de date ………………………….. ………………………….. ………………………….. ………………….. 7
2.4 Diagrama entitate -relație ………………………….. ………………………….. ………………………….. . 11
2.5 Modelul relațional ………………………….. ………………………….. ………………………….. ………… 13
2.6 Transformarea entităților și relațiilor în model relațional ………………………….. …………… 17
3. Sistemele de gestionare a bazelor de date NoSQL – MongoDB – ………………………….. ……… 21
3.1 Introducere ………………………….. ………………………….. ………………………….. ………………….. 21
3.2 Diferen țe între SQL și NoSQL ………………………….. ………………………….. ………………………. 21
3.3 Terminilogie ………………………….. ………………………….. ………………………….. …………………. 22
3.4 Categorii de depozite de date NoSQL ………………………….. ………………………….. ………….. 23
3.5 MongoDB ………………………….. ………………………….. ………………………….. …………………….. 23
4. PROIECT INFORMATIC ………………………….. ………………………….. ………………………….. ………. 24
4.1 Cerințele aplicației ………………………….. ………………………….. ………………………….. ………… 24
4.2 Proiectarea aplicației ………………………….. ………………………….. ………………………….. …….. 28
4.3 Exemple de utilizare ………………………….. ………………………….. ………………………….. ……… 30
4.4 Implementarea și testarea aplicatiei ………………………….. ………………………….. ……………. 35
4.5 Validarea aplicatiei ………………………….. ………………………….. ………………………….. ……….. 41
5. CONCL UZII ………………………….. ………………………….. ………………………….. ……………………….. 42
BIBLIOGRAFIE ………………………….. ………………………….. ………………………….. ………………………….. 44
Listă de figuri
Figura 1 – Arhitectura SGBD pe două niveluri ………………………….. ………………………….. . 10
Figura 2 – Arhitectura SGBD pe trei niveluri ………………………….. ………………………….. … 10
3
Figura 3 – Diagramă ER ………………………….. ………………………….. ………………………….. …. 12
Figura 4 – Relație ………………………….. ………………………….. ………………………….. ………….. 12
Figura 5 – Diagrama Entitate -Relație a bazei de date book_sc ………………………….. ……… 13
Figura 6 – Diagrama unei baze de date conform modelului relațional …………………. 14
Figura 7 – Înregistrările conexe legate cu o "cheie", în modelul relațional …………………. 14
Figura 8 – Diagrama ER ………………………….. ………………………….. ………………………….. …. 18
Figura 9 – Identificarea atributelor și cheii primare ………………………….. …………………….. 19
Figura 10 – Cheia străină ………………………….. ………………………….. ………………………….. … 19
Figura 11 – Relație 0:N ………………………….. ………………………….. ………………………….. ….. 20
Figura 12 – Cheia compusă ………………………….. ………………………….. …………………………. 20
Figura 1 3 – Diagrama rezultată ………………………….. ………………………….. ……………………. 20
Figura 14 – Structura bazei de date ………………………….. ………………………….. ………………. 29
Figura 15 – Pagina de start, Acasă ………………………….. ………………………….. ……………….. 30
Figura 16 – Pagina Cărți , categoriile și Coșul de cumpărături ………………………….. …….. 31
Figura 17 – Formularul pentru datele de livrare ………………………….. ………………………….. 32
Figura 18 – Logare administrator ………………………….. ………………………….. ………………….. 33
Figura 19 – Meni ul principal al administratorului ………………………….. ………………………. 33
Figura 20 – Administrator – Cărți ………………………….. ………………………….. …………………. 34
Figura 21 – Formular pentru a adăuga a nouă carte ………………………….. …………………….. 34
Figura 22 – Crearea bazei de date si a tabelului de clienți ………………………….. ……………. 35
Listă de secven țe de cod sursă
Fragment de cod sursă 1 – Afișarea coșului de cumpărături ………………………….. ………… 37
Fragment de cod sursă 2 – Funcția de inserare a unei noi categorii în baza de date …….. 38
Fragment de cod sursă 3 – Funcția de inserare a unei noi cărți în baza de date …………… 38
4
Fragment de cod sursă 4 – Funcția de actualizare a unei categorii ………………………….. … 39
Fragment de cod sursă 5 – Funcția de actualizare a unei cărți ………………………….. ………. 39
Fragment de cod sursă 6 – Funcția de ștergere a unei categori ………………………….. …….. 40
Fragment de cod sursă 7 – Funcția de ștergere a unei cărți ………………………….. ………….. 40
Listă de tabele
Tabel 15 – Tabel de cerin țe ………………………….. ………………………….. …………………………. 26
Tabel 16 – Detaliere caz de utilizare – Utilizator Guest ………………………….. ………………. 27
Tabel 17 – Detaliere caz de utilizare – Administrator ………………………….. …………………. 28
Tabel 18 – Caz de testare – Logare cu succes ………………………….. ………………………….. .. 41
Tabel 19 – Caz de testare – Logare fără succes ………………………….. ………………………….. 41
5
1. INTRODUCERE
Acest proiect tratează aspecte teoretice ale proiectării bazelor de date relaționale
și transpune aceste aspecte în practică prin crearea unei aplicații web utilizând limbajele
PHP, CSS, HT ML. Pentru proiectarea bazei de date s -a folosit sistemul de gestiune a
bazalor de date MySQL.
În capitolul I am descris sistemul informatic, utilizarea lui și etapele ciclului de
viață ale unui sistem informatic, reușind să integrez și să implementez ideea ce a stat la
bază aplicației construite. De asemenea am descris noțiune de bază despre bazele de date.
În capitolul II am exemplificat mediile de programare și software -lor utilizat e în
crearea aplicației, prezentând mai multe exemple de cod HTML, PHP și MySql.
În capitolul III am făcut referire la proiectul informatic realizat, o librărie librărie
electronică, disponibila pentru web, am descris cerințele aplicației, arhitectura ei, am
oferit diferite exemple de utilizare , pentru fiecare operație în parte și am prezentat modul
de validare a aplicației. Programul asigură mai multe funcționalități folosite în
administrarea și gestionarea unei librării electronice cât și pentru vânzarea cărților și
achitarea lor prin in termed iul cardurilor de credit.
6
2. Sistemele de gestionare a bazelor de date SQL.
2.1 Noțiuni de baz ă
Calculatoarele sunt folosite în foarte multe domenii în viața de zi cu zi. De la
ingineri la doctori, studenți, profesori, organizații guvernamentale, toți folosesc
computerele pentru a îndeplini sarcini specifice, pentru divertisment sau doar pentru a
îndeplini mai ușor munca în birou. Calculatoarele ne -au ușurat viața. Printre avanta jele
folosirii calculatoarelor se numără faptul că oferă o mare precizie și performață, de
asemenea calculatoarele pot realiza o sarcină de lucru într-un timp foarte scurt, în
contextul în care aceeași sarcina rezolvata manual ar dura mult timp. Calculatoarele au
dus industria și întreprinderile la un nivel complet nou. Acestea su nt folosite la domiciliu
în scopuri de lucru și de divertisment, la birou, în spitale, în organizații guvernamentale.
Datele care sunt introduse într -o aplicație într -un calculator necesită o interpretare
pentru a deveni informații. Pentru a traduce datel e către informații, trebuie luați în
considerare mai mulți factori cunoscuți. Termenul de metadate este folosit pentru a face
referire la datele cunoscute despre date. Metadatele pot fi implicite, specificate sau
oferite . Datele privind evenimentele sau pr ocesele fizice vor avea, de asemenea, o
componentă temporală. În aproape toate cazurile, această componentă temporală este
implicită. Acesta este cazul când un program , cum ar fi un magazin online primește o
comandă de la un client. Când comanda este primi tă, se presupune că datele au ca
referință temporală: "acum". Deci, aplicația înregistrează împreună cu datele de comandă
și data și ora. Când programul afișează comenzile primite, trebuie să raporteze și data și
ora (metadatele) pentru fiecare comandă . Acesta este un exemplu de procesare a datelor
și traducerea lor în informații .
2.2 Sistem informatic
Un sistem informatic este un computer de bază, complet și funcțional, care
include toate componentele hardware și software necesare pentru a -l face funcțional
pentru un utilizator. Acesta ar trebui să aibă capacitatea de a citi informații de intrare, de
a procesa a date și de a crea informații din datele procesate , pentru a fi stocate în baza de
date și / sau pentru a fi afișate utilizatorului. Un sistem informati c permite utilizatorilor să
introducă, să manipuleze și să stocheze date. Sistemele informatice includ de obicei un
7
calculator , un monitor, o tastatură, un mouse și alte componente opționale. Toate aceste
componente pot fi integrate și în unități all -in-one, cum ar fi un laptop.
În timpul etapei de procesare a datelor, sunt fu rnizate seturi de instrucțiuni ,
cunoscute sub denumirea de programe , pentru a instrui sistemul să știe ce să fa că cu
datele introduse de utilizator . Fără aceste programe, calculatorul nu ar ști cum să
proceseze datele care intră în sistem, iar datele ar putea fi eliminate. Cunoscut ca un
calculator de programe stocate local , acest tip de calculator este cel mai frecvent utilizat
astăzi. Este foarte f lexibil, deoarece poate procesa orice sarcină prin încărcarea unui
program din memorie. Sistemele informatice pot lucra singur e sau pot accesa alte
dispozitive externe sau conectate la alte sisteme informatice.
2.3 Baze de date
O bază de date, uneor i numită și "bancă de date", reprezintă o modalitate de
stocare a unor informații și date pe un suport extern (un dispozitiv de stocare), cu
posibilitatea regăsirii rapide a acestora . O bază de date este o colecție de informații care
este organizată astfel încât să fie ușor accesibilă, gestionată și actualizată. Datele sunt
organizate în rânduri, coloane și tabele și sunt indexate pentru a facilita găsirea
informațiilor relevante. Datele sunt actualizate, extinse și șterse pe măsură ce se adaugă
informații noi. Bazele de date conțin, de obicei, agregări ale înregistrărilor sau fișierelor
de date, cum ar fi tranzacțiile de vânzare, cataloagele produselor și profilurile clienților.
De obicei, un administrator de baze de date oferă utilizatorilor posibilitatea de a
controla accesul la citire / scriere, specifică generarea de rapoarte și analizează gradul de
utilizare a bazei de date . Unele baze de date oferă compatibilitatea ACID (atomicitate,
consistență, izolare și durabilitate) pentru a garanta că datele sun t coerente și că
tranzacțiile sunt complete. Bazele de date sunt p redominante în sistemele mari , dar sunt
prezente și pe stațiile de lucru distribuite mai mici și pe calculatoarele personale.
Un Sistem de gestiune a bazelor de date (SGBD) definește o categ orie de
programe care sunt capabile de crearea și gestionarea bazelor de date. SGBD oferă
utilizatorilor și programatorilor o modalitate sistematică de a crea, prelua, actualiza și
gestiona datele. Acesta funcționează în principal ca o interfață între baza de date și
utilizatorii finali sau aplicații, asigurând că datele sunt organizate în mod corect și rămân
ușor accesibile.
8
Clasificare a SGBD
Există mai multe criterii pe baza cărora se clasifică sisteme de gestiune a bazelor
de date , cum ar fi modelul de date, numerul de utilizatori și distribuția bazelor de date,
toate descrise mai jos.
Clasifi carea bazată pe modelul de date conține c el mai popula r model de date
utilizat astăzi: modelul de date relațional. Sisteme precum Oracle, MS SQL Server, DB2
și My SQL oferă suport pentru acest model. Alte modele tradiționale, cum ar fi modelele
de date ierarhice și modelele de date de rețea, sunt încă folosite în industrie, în principal
pe platformele mainframe (calculatoare mari folosite de instituții guvernamental e și
industriale) . Cu toate acestea, ele nu sunt utilizate în mod obișnuit datorită complexității
lor. Acestea sunt denumite modele tradiționale, deoarece au precedat modelul relațional.
Clasificare bazată pe numărul de utilizatori pe care îi suportă un sistem de bază se
împarte în sisteme pentru un singur utilizator, care suportă un singur utilizator la un
moment dat, sau un sistem e de baze de date cu mai mulți utilizatori, care suportă
simultan mai mulți utilizatori.
Clasificarea baza tă pe distribuția b azei de date conține patru categorii de sisteme
de distribuție principale pent ru sistemele de baze de date. Primul ar fi sistemul
centralizat de baze de date în care SGBD și baza de date sunt stocate într -un singur site
care es te utilizat și de alte sisteme. În s istemul de baze de date distribuit , baza de date
actuală și SGBD sunt distribuite la diverse site -uri care sunt conectate printr -o rețea de
calculatoare . Sistemele omogene de baze de date distribuite utilizează același SGB D din
mai multe site -uri. Schimbul de date între aceste site -uri poate fi ușor de efectuat . De
exemplu, sistemele de informații dintr -o bibliotecă ale aceluiași furnizor, utilizează
același SGBD , care permite schimbul facil de date între diversele site-uri ale bibliotecii.
Într-un sistem de baze de date distribuite eterogene, diferite site -uri ar putea să utilizeze
diferite SGBD , dar există și alte programe comune care să sprijine schimbul de date între
aceste site -uri. De exemplu, diferitele sisteme de baz e de date ale bibliotecilor folosesc
același format de catalogare, care poate fi citit de calculator , pentru a susține schimbul de
date de bibliotecă.
9
Arhitectura unui SGBD
Un sistem de gestiune a bazelor de date nu este întotdeauna direct disponibil
pentru utilizatori și aplicații pentru a accesa și a stoca date în el. Un sistem de
gestiune a bazelor de date poate fi centralizat (toate datele stocate într -o singură
locație), descentralizat (mai multe copii ale bazei de date în locații diferite) sau
ierarhic, în funcție de arhitectura sa.
Există, de asemenea, o arhitectură 1 -tier bazată pe 1 nivel de baze de date,
aceasta fiind atunci când baza de date este direct disponibilă utilizatorului pentru a
stoca date. În general, o astfel de configurare este folosită pentru dezvoltarea
aplicațiilor locale, unde programatorii comunică direct cu baza de date și pentru a
primi un răspuns rapid. Dar din punct de vedere logic arhitectura bazelor de date este
de două tipuri: arhitectura pe două niveluri (2-tier) și arhitectura pe trei niveluri (3-
tier).
Arhitectura SGBD pe două niveluri (2-tier) include un strat reprezentat de
aplicație, între utilizator și SGBD , care e ste responsabil să comunice cererea
utilizatorului către sistemul de gestionare a bazei de date și apoi să trimită răspu nsul
din SGBD către utilizator. O interfață a aplicație cunoscută sub numele de ODBC
(Open Database Connectivity) furnizează un API (Application Programming
Interface ) care permite programului clientului să apeleze SGBD . Majoritatea
furnizorilor de SGBD furnizează d rivere ODBC pentru SGBD -ul lor. O astfel de
arhitectură furnizează securitatea suplimentară a SGBD , deoarece nu este expusă
direct utilizatorului final. De asemenea, securitatea poate fi îmbunătățită prin cererea
de autentificare a utilizatorilor si prin adăuga rea de verificări de securitate în cardul
aplicației de asemenea .
10
Figura 1 – Arhitectura SGBD pe două niveluri
Arhitectura bazei de date pe trei niveluri este arhitectura cea mai frecvent
utilizată pentru aplicațiile web.
Figura 2 – Arhitectura SGBD pe trei niveluri
Este o extensie a arhitecturii pe 2 niveluri . În arhitectura pe două niveluri,
avem o aplicație care poate fi accesat ă programatic pentru a efectua diverse operații
pe SGBD . Aplicația în general înțelege limbajul de acces la baze de date și
procesează cererile utilizatorilor finali către SGBD. În ar hitectura pe trei niveluri, se
adaugă un nou nivel, între aplicație și utlizator / client, interfața grafică cu utilizatorul
(GUI – Graphical User Interface ), pentru ca utilizatorul final să interacționeze cu
SGBD. Pentru utilizatorul final, stratul GUI es te sistemul de baze de date, iar
utilizatorul final nu are nicio idee despre stratul de aplicație și despre sistemul SGBD.
11
În MySQL, pagina PHPMyAdmin, este cel mai bun exemplu de arhitectură bazată pe
3 niveluri DBMS.
2.4 Diagrama entitate -relație
Modelul ER (Entitate -Relație) este o diagramă de model conceptual de date la
nivel înalt. Modelul entitate -relație se bazează pe noțiunea de entități din lumea reală și
relația dintre ele. Modelarea ER ajută la a analiza în mod sistematic cerințele de date
pentru a produce o bază de date bine concepută. Deci, este considerată o bună practică de
a realiza modelarea ER înaint e de a implementa baza de date. Diagramele ER sunt un
instrument vizual care este util pentr u a reprezenta modelul ER. A fost propus de Peter
Chen în 1971 pentru a crea o convenție uniformă care să poată fi folosită pentru baza de
date relațională și pentru rețea. El și -a propus să utilizeze un model ER ca o abordare
conceptuală de modelare.
Entitățile reprezintă un lucru din lumea reală. Poate fi un lucru fizic sau pur și
simplu un fapt sau un eveniment care se întâmplă în lumea reală. O entitate poate fi un
loc, o persoana, un obiect , un evenimentul sau un concept , care stochează datele în baza
de date. Caracteristicile entităților trebuie să aibă un atribut și o cheie unică. Fiecare
entitate este alcătuită din anumite "atribute" care reprezintă acea entitate. Câteva exemple
de entități care fac parte din categoriile enumerate mai sus ar fi: pent ru o entitate care
reprezintă o p ersoana , aceafta poate fi: angajat, student, p acient ; un loc : magazin,
mlădire ; un obiect: mașină, produs; un e veniment: vânzare, înregistrare, reînnoire ; un
concept: cont, c urs.
Un set de entități este un grup de entități similare. Poate conține entități cu valori
similare de distribuire a atributelor. Entitățile sunt reprezentate de proprietățile lor, care
se numesc și atribute. Toate atributele au valori separate. De exemplu, o entitate student
poate avea nume, vârstă, c lasă ca atribute.
Un alt exemplu de entități: o universitate poate avea câteva departamente. Toate
aceste departamente angajează diferiți lectori și oferă mai multe cursuri, iar studenții se
înscriu la diferite cursuri, iar legătura în diagrama ER se face precum în Figura 3.
12
Figura 3 – Diagramă ER
Relația este o asociere între două sau mai multe entități. De exemplu, Ionuț
lucrează în departamentul de chimie ( Figura 4). Entitățile participă la relații. Putem
identifica adesea relațiile cu verbe sau expresii.
Figura 4 – Relație
Atributul este o proprietate cu valoare unică, fie de tip entitate, fie de tip de
relație. De exemplu, un curs poate avea atribute: ora, data, durata, locul et c. Un atribut
este reprezentat de o elipsă. Există mai multe tipuri de atribute . Atribut ul simplu nu poate
fi împărțit mai departe, d e exemplu, numărul matricol al unui student. Acesta s e ma i
numește și o valoare atomică. Atributul compus permite spargerea sau separarea lui. D e
exemplu, numele complet al unui student poate fi separat în prenume și nume. Atribut ul
derivat nu este inclus în baza de date fizică, c u toate acestea, valorile lui sunt derivate din
alte atribute prezente în baza de date. De exemplu , vârsta nu trebuie să fie stocată direct,
în schimb, acesta ar trebui să fie derivat din data de naștere a respectivei persoane.
Atribut ul multiplu conține valorile multivaluate, care pot avea mai multe valori.
Cardinalitatea definește atributele numerice ale relației dintre două e ntități sau
seturi de entități. Sunt patru tipuri de relații cardinale. Relația unu la unu (1 -1 – One-to-
one) presupune ca o entitate din setul de entități X poate fi asociată cu cel mult o entitate
a setului de entități Y și in vers. De exemplu: u n student se poate înregistra pentru
numeroase cursuri. Cu toate acestea, în diagramă toate aceste cursuri au o singură linie
înapoi la acel student.
Cheia primară este o coloană dintr -o tabelă de bază relațională specială (sau o
combina ție de coloane) desemnată pentru a identifica în mod unic toate înregistrările
tabelului. Caracteristicile principale ale cheii primare sunt: trebuie să conțină o valoare
13
unică pentru fiecare rând de date, nu poate conține valori nule, o cheie primară este fie o
coloană dintr -o tabelă existentă, fie o coloană generată în mod specific de către baza de
date, conform unei secvențe definite. Conceptul de cheie primară este esențial pentru o
bază de date relațională eficientă. Fără cheia primară și conceptele de cheie străine strâns
legate, bazele de dat e relaționale nu ar funcționa. Aproape toate persoanele se întâlnesc
în viața de zi cu zi cu cu cheile primare din bazele de date, dar fără ca să știe. De
exemplu, elevii primesc numere de identificare unice (num ăr matricol), în mod obișnuit,
iar toți cetățenii din România dispun de cod numeric personal (CNP) atribuite de stat și
identificabile în mod unic.
Un alt exemplu de diagrama Entitate – Relație este prezentat in Figura 5. Se pot
observa cheile primare simple sau compuse, relațiile dintre tabele, atributele, tipul și
dimensiunea acestora.
Figura 5 – Diagrama Entitate -Relație a bazei de date book_sc
2.5 Modelul relațional
Modelul relațional pentru gestionarea bazelor de date este o abordare a gestionării
datelor utilizând o structură și un limbaj compatibil cu logica predicatului de ordinul întâi
14
descri să în 1969 de către omul de știi nță englez Edgar F. Codd este reprezentată în
termeni de tupluri, grupate în relații. O bază de date organizată în termeni de model
relațional este o bază de date relațională.
Figura 6 – Diagrama u nei baze de da te conform modelului relațional
Scopul modelului relațional este de a furniza o metodă declarativă pentru
specificarea datelor și a interogărilor: utilizatorii afișează în mod direct ce informații
conține baza de date și ce informații doresc de la ea și lăsa software -ul sistemului de
gestionare a bazelor de date să aibă grijă să descrie structurile de date pentru stocarea
datele și procedurile de recuperare pentru a răspunde la întrebări.
Figura 7 – Înregistrările conexe legate cu o "cheie", în modelul relațional
Cele mai multe baze de date relaționale utilizează definiția datelor SQL și același
limba j de interogare. Un tabel dintr -o schemă de bază de date SQL cor espunde unei
variabile predicat ; conținutul unui tabel într -o relație; constrângerile cheie, alte
15
constrângeri și interogările SQL corespund predicatelor. Cu toate aces tea, bazele de date
SQL se abat de la modelul relațional în multe detalii, iar Codd a argumentat în mod ferm
împotriva abaterilor care compromit principiile originale.
Există numeroase avantaje în folosirea modelului relațional. Simplitatea este unul
ditre ele, structurile modelului relațional fiind construite într -un mod care evită
complexitatea. Structura tabelului este o organizată intuitiv, familiară majorității
utilizatorilor, în special celor care au lucrat cu foi de calcul fizice sau software, au
verificat registrele sau alte date tabulare. Datele sunt organizate în mod natural în cadrul
modelului, simplificând dezv oltarea și utilizarea bazei de date.
Datele sunt ușor de recuperare, î n cadrul modelului relațional, accesarea datelor
într-o bază de date nu necesită navigarea pe o cale rigidă printr -un copac sau o ierarhie.
Utilizatorii pot interoga orice tabel din baza de date și pot combina tabelele conexe
utilizând funcții speciale de conectare pentru a include datele relevante conținute în alte
tabele ale rezultatelor. Rezultatele pot fi filtrate în funcție de conținutul oricărei coloane
și de orice număr de coloane, permițând utilizatorilor să obțină cu ușurință rezultate
semnificative. Utilizatorii pot alege care coloane să sa fie incluse în rezultate, astfel încât
să fie afișate numai datele relevante.
Integritatea datelor este o caracteristică esențială a modelulu i relațional.
Verificările riguroase asupra dateler introduse asigură că datele se încadrează în intervale
acceptate și există datele solicitate. Integritatea referențială între tabele împiedică
înregistrarea datelor incomplete . Integritatea datelor contri buie la asigurarea exactității și
consecvenței datelor.
Flexibilitate reprezintă un alt avantaj al m odelul ui relational de baze de date.
Acesta fiind în mod natural scalabil și extensibil, oferind o structură flexibilă care să
răspundă cerințelor în schimb are și cantităților tot mai mari de date. Modelul relațional
permite modificarea cu ușurință a unei structuri de bază de date fără a afecta datele sau
restul bazei de date. Analistul bazei de date poate adăuga, elimina și modifica rapid și
ușor tabelele și coloanele dintr -o bază de date existentă pentru a îndeplini cerințele
clienților . Nu există teoretic nici o limită a numărului de rânduri, coloane sau tabele. În
realitate, creșterea și schimbarea sunt limitate de sistemul de gestionare a bazelor de date
16
relaționale și de hardware -ul de calcul fizic, iar modificările pot afecta aplicațiile externe
proiectate pentru o structură spe cifică a bazei de date.
Există o metodologie sistematică pentru asigurarea unui design bazei de date
relaționale fără anomalii c are pot afecta integritatea și exactitatea bazei de date.
"Normalizarea bazei de date" oferă un set de reguli, calități și obiective pentru proiectarea
și revizuirea unei structuri de baze de date. Obiectivele de normalizare sunt descrise în
nivele numite "forme normale". Fiecare nivel de normalizare trebuie completat înainte de
a trece la nivelul următor. Un design de baze de date este în general considerat normalizat
atunci când îndeplinește cerințele celei de a treia forme normale. Normalizarea oferă
designerilor încredere a că designul bazei de date este robust și de încredere.
Reguli de integritate a datelor
Integritatea datelor este completitudinea, precizia și coerența datelor. Acest lucru
poate fi indicat de absența modificării între două instanțe sau între două actualizări ale
unei înregistrări de date, ceea ce înseamnă că datele sunt intacte și neschimbate.
Integritatea datelor este, de obicei, impusă în timpul fazei de proiectare a bazei de date
prin utilizarea procedurilor și regulilor standard. In tegritatea datelor poate fi menținută
prin utilizarea diferitelor metode de verificare a erorilor și a procedurilor de validare.
Integritatea datelor este aplicată atât în modele de baze de date ierarhice, cât și în bazele
de date relaționale. Următoarel e trei constrângeri de integritate sunt utilizate într -o
structură de baze de date relaționale pentru a atinge integritatea datelor:
Integritatea entității: aceasta se referă la conceptul de chei primare. Regula
prevede că fiecare tabel trebuie să aibă pro pria cheie primară și că fiecare cheie trebuie să
fie unică și sa nu fie nulă.
Integritatea referențială: Acesta este conceptul de chei străine. Norma afirmă că
valoarea cheii externe poate fi în două stări. Prima stare este că valoarea cheii externe se
va referi la o valoare a cheii primare a unui alt tabel sau poate fi nulă. Fiind nulă ar putea
însemna pur și simplu că nu există relații sau că relația este necunoscută.
Integritatea domeniului: Aceasta afirmă că toate coloanele dintr -o bază de date
relațio nală sunt într -un domeniu definit.
Conceptul de integritate a datelor asigură că toate datele dintr -o bază de date pot fi
urmărite și conectate la alte date. Acest lucru asigură că totul este recuperabil și căutat.
17
Având un singur sistem de integritate a d atelor, bine definit și bine controlat, crește
stabilitatea, performanța, reutilizarea și mentenabilitatea. Dacă una dintre aceste
caracteristici nu poate fi implementată în baza de date, aceasta trebuie implementată prin
software.
2.6 Transformarea entitățilo r și relațiilor în model relațional
Două modele foarte importante utilizate în proiectarea bazei de date sunt modelul
de entitate -relație (ER) și modelul relațional. În modelul E R, datele sunt reprezentate
folosind entită ți, iar relațiile sunt definite între aceste entități. Cu toate acestea, cu
modelul relațional, entitățile și relațiile acestora respectă reguli stricte.
În proiectarea bazei de date d e obicei, prima dată este dezvolt at un model ER și
apo ieste transformat într -un model relațional. Model ul rela țional este similar modelului
ER, dar se bazează pe o ramură matematica numită algebră relațională, și ca ata re, există
definiții stricte și reguli privind elementele acestui model. Câteva dintre aceste definiții și
reguli sunt următoarele:
O relație este definită ca o tabelă bidimen sională care conține rânduri și coloane.
Rândurile sunt instanțe ale entității și coloanele sunt atribute ale entitate.
Oricare două rânduri din tabel nu trebuie să fie identice – fiecare rând trebuie să
fie unic , iar ordinea rândurilor nu este importantă.
Fiecare coloană trebuie să aibă un nume unic, iar ordinea coloanelor nu este
importantă. Ele trebuie să conțină și valori unice – valori multiple și grupurile
repetate nu sunt permise.
O cheie este un grup de unul sau mai multe atribute care identifică în mod unic un
rând. F iecare tabel trebuie să aibă o cheie. Deoarece fiecare rând din tabel este
unic, cheia care este folosit ă pentru a distinge un rând de altul poate fi alcătuit ă
dintr -un singur at ribut sau poate fi compus , poate conține mai multe atribute.
Fiecare coloană (atribut) într -un tabel trebuie să depindă numai de cheia primară.
Aceasta nu ar trebui să depindă de nici o altă coloană din tabel sau de o parte a
cheii primare, dacă este o che ie compusă.
Exemplu de transformare a unui model E R în mod el rațional :
18
Modelul entitate -relație: O diagramă E R este utilizat ă pentru a reprezenta modelul
ER. Aceasta c onține toate entitățile cunoscute pentru scenariul dat, atributele,
identificatorii și relațiile care exi stă printre entități.
Figura 8 – Diagrama ER
În Figura 8 Identificatorii unici sunt indicați cu un asterisc (*) și identificatori non –
unici cu un plus (+).
Transformare:
Pasul 1:
Se identifică în mod clar cheia primară și atributele pentru fiecare entitate definită
în modelul ER și se asigură că este în conformitate c u regulile modelului relațional . În
Figura 9 fiecare entitate are cheia primară identifi cată clar (notată cu PK – Primary Key) și
atributele care satisfac regulile discuta te anterior. A cesta devine un tabel în model ul
relațional.
19
Figura 9 – Identificarea atributelor și cheii primare
Pasul 2:
Se g rupează împreună tabelele ( cele care mai devreme reprezentau entități) ș i
relațiile acestora care au un cardinalitatea unei relații 0:1 sau 1:1. Opțional, se precizează
ce poate și trebuie să se întâmple într -o relație, iar cardinalitatea indică numărul
evenime ntelor entității într -o relație. Se menține structura inițială, nu se schimbă
principala sa structură , cheia primară sau oricare dintre atributele sale. Cheia primară a
celuilalt tabel din relație devine o cheie străină . Acest lucru este indicat de un FK –
Foreign Key în tabelul de absorbție.
Figura 10 – Cheia străină
În cazul în care cardinalitatea dintre relația absorbită și cealaltă tabelă în relație a
fost de ordinul N (0: N sau 1: N), atunci tabelul modificat devine o parte a unei relații
unu-la-mulți în noul model relațional. În caz contrar, dacă cardinalitatea dintre rel ația
absorbită și cealaltă tabelă din relație a fost 1 (0: 1 sau 1: 1), atunci noua relație devine o
relație unică în noul model relațional.
Pasul 3:
Relațiile rămase , ale căror cardinalități sunt N (1: N sau 0: N) pe ambele părți
devin noi t abele în nou l model relațional.
20
Figura 11 – Relație 0:N
Cheile primare din cele două tabele implicate în relație devin o cheie primară
compusă în noul tabel, iar tabelul nou are de obicei un nume care este o formă combinată
a celor două nu me de tabele originale.
Figura 12 – Cheia compusă
Tabela nou creată devine o parte importantă a relației dintre ambele tabele și astfel
se creează o relație multiplă cu cele două tabele preexistente. În unele cazuri, tabelul nou
creat poate avea propriile atribute.
Diagra ma rezultată este prezentată în Figura 13.
Figura 13 – Diagrama rezultată
21
3. Sistemele de gestionare a bazelor de date NoSQL
– MongoDB –
3.1 Introducere
Depozite le de date „NoSQL” care au fost proiectate să scaleze aplicațiile de tipul
OLTP 1 distribuite pe un număr mare de servere. Prin motivarea apariției aplicațiilor de
tip Web 2.0, sisteme de date „NoSQL” au fost concepute pentru scalarea milioanelor de
utilizatori care citesc date din bază de date și fa c actualizări asupra acestora în mod
frecvent, lucru ce apare în contrast cu sistemele de gestiune de baze de date tradiționale și
cu data warehouses.
3.2 Diferen țe între SQL și NoSQL
Există în prezent mai multe tipuri de sisteme de gestiune a datelor difer ite de cele
relaționale care se deosebesc de acestea prin anumite caracteristici cum ar fi mecanismul
de stocare și de extragere a datelor. Un exemplu de un sistem de gestiune a informațiilor
diferit de cel clasic este baza de date NoSQL. Arhitectura acest ei baze de date nu este
asemănătoare de cea folosită în SQL ceea ce face ca anumite operații efectuate asupra
bazei de date NoSQL să fie mai rapide iar altele mai lente. Aceste tipuri de baze de date
sunt utilizate în special pentru stocarea structurilor f oarte mari. Bazele de date NoSql
permit dezvoltatorilor de aplicații web să stocheze date care nu au o schema fixă. Bazele
de date NoSQL s -au dezvoltat alături de companii de internet, cum ar fi Google, Amazon
și Facebook.
În cazul acestor companii, care tratează cantități imense de date, soluțiile
tradiționale RDBMS nu au putut face față. Sistemele de baze de date NoSQL au fost
dezvoltate pentru a gestiona volume mari de date care nu urmează neapărat o schemă
fixă.
Datele sunt împărțite între diverse m așini (din motive de performanță și limitări
de spatiu), operațiile de JOIN nu pot fi utilizate, s i nici nu există garanții ACID:
Atomicitate – fiecare tranzacție va fi "totul sau nimic", în sensul în care apare
eșecul unei părți a unei tranzacții conduce la eșecul întregii tranzacții, deci l a nu
modificarea bazei de date.
22
Consistența – orice tranzacție va determina trecerea bazei de date dintr -o stare
consistentă, validă în raport cu regulile definite (triggere, constrangeri, etc) înt r-o
altă stare tot co nsistentă
Izolare – execuția concurentă a tranzacțiilor va determina trecerea într -o stare care
poate fi obținută și prin execuția secvenți ală a tranzacțiilor respective
Durabilitate – tranzacțiile finalizate (pentru care s -a dat commit) vor ramîne așa și
în cazul apariț iei unor probleme hard sau soft.
În cazul RDBMS -urilor garantează procesarea în siguranță a tranzacțiilor. NoSQL
este un sistem de management a bazelor de date rapid, portabil, fără limite arbitrare,
altele decît memoria și viteza procesorului ce rulează și interacționează cu SO UNIX.
Caracteristici baze NoSql:
– Nu sunt relaționale
– Sunt open -source
– Scalabilita te mare
– Lipsa unei scheme fixe pentru a modela baza de date
– Stocheaza o cantitate mare de date
3.3 Terminilogie
Terminologia f olosită pentru modele de date No SQL este adesea inconsistență.
Pentru scopul acestei lucrări ne trebui un mod consistent de a compară modele și
funcționalitățile. Toate sisteme stochează perechi de atribute -valori, dar folosind structuri
diferite cum sunt:
1. Un „tuplu” reprezintă un rând dintr -o tabela relațională unde atributele sunt
predefinite în schema tabelei , valorile atributelor fac referință la numele acestora
și sunt valori scalare.
2. Un „document” permite că valorile unui atribut să fie și liste, nu n umai valori
scalare, iar numele atributelor pot fi modificate în mod dinamic în timpul
procesării datelor. Un document diferă de un tuplu prin faptul că atributele nu sunt
definite într -o schema globală a bazei de date și există o gamă largă de tipuri de
valori care sunt permise.
23
3. O „inregistrare extensibila” este o punte între un tuplu și un document, unde o
parte din atribute sunt definite în schema bazei de date, însă pe parcurs pot fi
adăugate și atribute noi Atributele pot fi și o lista de valori, așa c um sunt și la
documente.
4. Un „obiect” face analogie la un obiect clasic din limbajele de programare, dar fără
metode procedurale. Valorile pot și și referințe sau alte obiecte.
3.4 Categorii de depozite de date NoSQL
Bazele de date în general sunt grupate în câteva mari categorii conform modelului
de date pe care acestea în au.
O clasificare a acestor tipuri de baze de d ate NO -SQL poate fi următoarea:
– Orienta te pe coloane: Druid, Cassandra
– Orientate pe documente: CouchD B, MongoDB
– Orientate pe Ch eie – Valoare: HyperDex, Dynamo
– Orientate pe Graph: Allegro, Neoj
– Multi -model: OrientDB, ArangoDB
3.5 MongoDB
MongoDB este o bază de date NoSQL open -source orientată pe documente.
Acestă bază de date beneficiază de suport din partea companiei 10gen. MongoDB face
parte di n familia de sistemelor de baze de date NoSQL. Diferența principală constă în
faptul că stocarea datelor nu se face folosind tabele precum într -o bază de date
relațională, MongoDB stochează datele sub formă de documente JSON cu scheme
dinamice.
24
4. PROIECT IN FORMATIC
In ultimii ani comerțul electronic cunoaș te o dezvolate din ce in ce mai mare în toate
domeniile. Cartile, alături de aparatrele electronice, se numara printre cele m ai bine
vandute produse online, iar acest lucru se intampla datorita faptului ca este mai comod
pentru multe persoane să iși comande direct acasa produsele de care au nevoie, este mult
mai rapida cautarea intr -o baza de date online prin simpla introducere a unor cuvinte
cheie, pot fi citite mai multe detalii despre carte, despre autor sau recenzii, multe dintre
librariile online ofera recomandari personalizate in functie de cartile cautate sau
cumparate, cartile se pot afisa pe categorii, se pot sorta dupa diferite criterii, dupa pret,
autor, nume, anul aparitie, etc. Iar avantajele lib rariilor online nu se opresc aici, fiecare
site a incercat sa fie cat mai interesant si mai usor de folosit de catre clienti.
4.1 Cerințele aplicaț iei
Aplicația Librăria din Cluj este foarte utilă pentru utilizatorii care doresc să cumpere
cărti online, scopul său principal fiind cel de a facilita vânzările electronice ale cărților.
1. Afișare categoriilor
a. Aplicația va afișa o listă de categorii de carti. Acestea vor fi disponibile t uturor
utilizatorilor, nu este nevoie ca utilizatorii sa fie logati pentru a vedea aceste cateorii.
b. Utilizatorul are posibilitatea de a alege categorii. In momentul in care utilizatorul
face click pe una dintre categorii, se vor afisa cartile care fac parte din categoria
respectiva.
2. Afisarea cartilor
a. Afisarea cartilor dintr -o categorie se face sub forma unei liste in care se afiseaza
in partea stanga o imagine cu coperta cartii , iar in partea dr eaptă titlul , autorul și
descrierea cărț ii.
b. Din lista de carti dintr -o categori e, utilizatorul poate adăuga cartea în coșul de
cumpărături, apăsând butonul: „Adaugă în coș” .
3. Afisarea cosului de cu mparaturi
a. Cosul de cumparaturi este afișat in orice moment, în partea dreaptă a paginii.
b. Cantitatea dorita poate fi actualizata scriind in campul „Cantitate” cantitatea
dorita , apoi facand click pe butonul „Salvează modificările ” pentru a modifica numarul
de elemente din cosul de cumparaturi si pretul acestora.
25
c. Pentru a sterge o carte din cosul de cumparturi, se seteaza cantitatea 0, si se apasa
butonul „Salvează modificările”, dupa aceasta, carte va disparea automat din cosul de
cumparaturi.
4. Plasarea comen zii
a. Dupa ce utilizatorul a adaugat in cosul de cumparaturi toate cartile pe care
doreste sa le cumpere, acesta poate sa fina lizeze comanda apasand butonul „Finalizează
comanda” .
b. Se cere ca utilizatorul sa completeze cu datele despre livrare. Campurile care se
cer sunt: nume, telefon, adresa, oras, județ , cod postal, tara .
c. Dupa ce au fost introduse date le personale, se apasa butonul „Trimite comanda ”.
d. Daca datele au fost intruduse si tr imise corect , se afisează mesajul: „Comanda a
fost trimisă cu succes. Veți fi contactat telefonic pentru confimarea ei.” . Plata se va face
prin ramburs, la primirea coletului.
5. Administrator – Logare
a. Din pagina „ /admin ” administratorul se poate loga in apli catie.
b. Aceasta pagina este ascunsa utilizatorului obisnuit, avand posoilitatea de a fi
accesata doar prin modificarea link -ului de acces.
6. Pagina de administrator
a. Administrato rului in momentul in care se lo gheaza ii este afisat un meniu cu 4
optiuni: Navigarea la pagina principala (unde se afiseaza categoriile descrise mai sus, la
punctul 1), adaugarea unei noi categorii, adaugarea unei noi carti, schimbarea parolei
administratorului.
b. Adaugarea unei categorii se face prin introducerea numelui unei categorii, apoi
se apasa butonul “Add Category”. Se va afisa un mesaj de confirmare, pentru noua
categorie adaugata in baza de date. Se apasa apoi “Back to administrator menu” pentru a
reveni la meniul administratorului .
c. Pentru adaugarea unei noi carti se completeaza cu ISBN -ul, titlul, autorul, pretul,
descrierea si se selecteaza categoria din lista drop down afisata. Se apasa apoi butonul
“Add book”. Se va afisa un mesaj de confirmare, pentru noua carte adaugata in baza de
date. Pentru a reveni la pagina principala a administratorului se face click pe butonul
“Back to administrator menu”.
26
d. Schimbarea parolei administratorului se face prin completarea vechii parole apoi
a noii parole de doua ori. Noua parola trebuie sa contina in tre 6 si 16 caractere. Daca
aceasta nu respecta conditiile, un mesaj de eroare va fi afisat. Pentru a reveni la pagina
principala a administratorului se face click pe butonul “Back to administrator menu”.
e. Pentru a se deloga, administratorul poate face cli ck pe butonul “Logout”.
Specificarea cerințelor (Requests) :
Req Funcții de bază Categorie
R1 Afișarea categoriilor evident
R2 Selectarea unei categorii evident
R3 Afișarea listei de cărți dintr -o categorie evident
R4 Adaugarea în coșul de cumpărături evident
R5 Afișarea numărului de cărți din coșul de cumparaturi evident
R6 Afișarea prețului cărților din coșul de cumparaturi evident
R7 Modificarea cantităților cărților din coșul de
cumpărături evident
R8 Ștergerea cărților din coșul de cumpăraturi evident
R9 Furnizeaza un mecanism de stocare persistentă ascuns
R10 Furnizează un me canism de comunicare inter -proces
și inter -sistem. ascuns
R11 Finalizarea comenzii evident
R12 Afișarea formularului pentru datele de livrare evident
R13 Resetarea coșului de cumpăraturi după trimiterea unei
comenzi ascuns
R12 Logarea administratorului evident
R13 Adăugarea unei categorii evident
R14 Afișarea formularului pentru adăugarea unei categori evident
R15 Adăugarea unei cărti ascuns
R16 Afișarea formularului pentru adăugarea unei cărți evident
R17 Schimbarea parolei administratorului evident
R18 Delogarea administratorului evident
R19 Afișarea erorilor ascuns
Tabel 1 – Tabel de cerin țe
27
Detalierea cazurilor de utilizare:
Nume caz de
utilizare Vizualizează cărți și adaugare carte în coșul de
cumpărături
Actori Guest
Flux de evenimente
(scenariu normal) 1. Guest -ul activează funcția Vizualizează listă de
categorii , accesând pagina principala a aplicației.
2. Sistemul afișează lista de categorii.
3. Guest -ul dă click pe numele unei categorii.
4. Sistemul afișează cărțile din categoria selectată .
5. Guest -ul dă click pe „Adaugă în coș” pentru o carte .
6. Cartea a fost adăugată în coș. Sistemul afișează cartea
în partea drea ptă, în coșul de cumpărături .
Conditii de intrare
(Preconditii) Nu e nevoie ca utilizatorul să fie logat.
Conditii de iesire
(Postconditii) Guest -ul a vi zualizat detaliile despre cărți și a adăugat o carte
în coșul de cumpărături .
Referințe Funcții: R1, R2, R3, R4, R5 , R6, R9, R10 .
Tabel 2 – Detaliere caz de utilizare – Utilizator Guest
Nume caz de
utilizare Adăugare carte
Actori Admin
Flux de evenimente
(scenariu normal) 1. Admin -ul din Meniu administrator selectează Cărti.
2. Sistemul afișează toate cărțile din baza de date.
3. Admin -ul apasă butonul „Adaugă o carte nouă”.
4. Sistemul afisează formularul pentru adăgarea unei
cărți.
5. Admin -ul completează detalii despre carte .
6. Admin -ul apasă butonul „ Adaugă carte ”.
7. Sistemul salvează mod ificările în baza de date.
Condiții de intrare Admin -ul este logat.
28
(Precondiț ii)
Condiții de iesire
(Postcondiț ii) Cartea a fost adăugată .
Referințe Funcții: R 12, R15, R16, R9, R10 .
Tabel 3 – Detaliere caz de utilizare – Admin istrator
4.2 Proiectarea aplicației
Aplicația Librăria din Cluj este o aplicație care exemplifică în mod practic
noțiunile teoretice prezentate în capitolele anterioare.
Pentru realizarea acestei aplicații s -au folosit mai multe tehnologii care sunt incuse
in pachetul XAMPP , versiunea 3.2.2 . Aceasta a făcut instalarea si rularea aplicației și mai
ușoară. Ca si container Web s -a folosit Apache.
Pentru gestiunea bazelor de date s -a folosit limbajul MySQL 5.1.30 și interfața
grafică PhpMyAdmin pentru o mai ușoară vizualizare și gestiune a bazelor de date.
Pentru scrierea scripturilor si pentru dezvoltarea aplicatiei Web s -a folosit HTML,
CSS (Cascading Style Sheets), PHP v5.2.8 pentru scripturile care fac aplicația să fie
dinami că si interacționează cu baza de date.
Arhitectura aplicației
Structura bazei de date folosite pentru aceasta aplicatiei este alcatuita din 6 tabele:
admin – Retine numele de utilizator si parola cu care un administrator se
poate loga in aplicatie. Numele de utilizator este cheia primara a tabelului.
books – Conține informații despre stocul de cărți disponibil în magazinul
online: ISBN, autor, titlu, id -ul categoriei din care face parte, preț și
descrierea cărții. Are ca și cheie primară ISBN -ul cărții. Prin intermediul
coloanei id -ul categoriei se crează o referință către tabelul categories, relația
este de tipul 1-1 (One -To-One) (o carte poate face parte dintr -o singură
categorie).
categories – Contine doua coloane: id -ul și numele categoriei, id -ul fiind
cheia primară.
customers – Reține datele clienților care au plasat comenzi. Id-ul clientului
are rol de cheie primară în tabel și e incrementat automat. Celelalte coloane
29
conțin date despre numele, adresa, orașul, statul, codul poștal și țara
clientului.
orders – Id-ul comenzii are rol de cheie primară în tabel și e incrementat
automat. Conține informații despre comana plasată și datele de livrare a
comenzii, coloanele fiind: id -ul comenzii, id -ul clientului, prețul total al
comenzii, data, statusul, apoi numele, adresa, orasul, statul, codul poștal și
țara unde va fi livrată comanda. Id -ul clientului este o refetința către un id
unic din tabelul customers , relația fiind de tipul 1-1 (One -To-One) , o
comandă este plasată de un singur client.
order_items – Este un tabel de legătură, care conține informații cantitatea și
prețul cărților comandate. Cheia străină e ste o cheie compusă din doua
coluane: id -ul comenzii si ISBN -ul cărții. În acest fel este creată o relatie de
tipul M-M (Many -To-Many ), o comandă poate conține mai multe cărți și o
carte poate fi inclusă în mai multe comenzi.
Figura 14 – Structura bazei de date
30
4.3 Exemple de utilizare
Aplicația Librăria din Cluj este o librărie având scopul principal de a facilita
vânzările electronice ale cărților, interacționând cu clienții.
În pagina de start a aplicației , Acasă , (Figura 16), se afișează ultimele cărți
adăugate în magazinul virtual.
Figura 15 – Pagina de start, Acasă
În pagina Cărți , din meniul principal, utilizator ul alege o categorie apoi
vizualizează cărțil e din acea categorie . Pentru o carte se va afișa: titlul, autorul, descrierea
și prețul. Tot din această pagină se pot adăuga cărți în co șul de cumpărături, apasând
butonul „Adaugă în cos” de lângă cartea dorită. ( Figura 16)
În partea dreaptă a paginii , se afișează tot timpul coșul de cumpărături (Figura 16).
31
Figura 16 – Pagina Cărți , categoriile și Coșul de cumpărături
Pentru finalizarea comenzii utilizatorul apasă butonul Finalizeză comanda
dinpartea de jos a coșului de cumpărături. Se va afișa formularul de comanda ( Figura 17).
După ce va completa datele personale comanda se poate trimite . Va fi nevoie de o
confirmare telefonică a comenzii. Livrarea se face prin poștă iar plata ramburs.
32
Figura 17 – Formularul pentru datele de livrare
33
Toate aceste operațiuni sunt atent urmărite de către administratorul librăriei
electronice. Acesta se logează ca și adm inistrator din meniul de logare (Figura 18):
Figura 18- Logare administrator
După logare se va afișa meniul administratorului care se poate vedea în Figura 19.
Toate operațiile pe care le poate face administratorul pot fi văzute în partea dreapta a
paginii administratorului.
Figura 19 – Meniul principal al administratorului
Pentru a adăuga o nouă cărte în baza de date, se dă click din meniu pe Cărți apoi
pe butonul Adaugă o carte nouă (Figura 20Figura 21).
34
Figura 20 – Administrator – Cărți
Dupa ce se dă click pe butonul Adaugă o carte noua , se afișează formularul din
Figura 21 și se cere completarea cu datele despre carte .
Figura 21 – Formular pentru a adăuga a nouă carte
35
4.4 Implementarea și testarea aplicatiei
Pentru implementare a bazei de date s-a folosit My Sql ș i pachetul Xampp. Din
fereasta phpMyAdmin , din tab -ul SQL s -a executat codul pentru crearea bazei de date si
a tabelelor. În Figura 22 se poate vedea codul folosit pentru crearea bazei de date si a
tabelului de clienti.
Figura 22 – Crearea bazei de date si a tabelului de clienți
Pentru a face legăt ura din baza de date și interfața utilizatorului s -a folosit PHP. În
Fragment de cod sursă 1 este un exemplu de cum a fost implementat ă în PHP funcția de
afișare a coșului de cumpărături.
output_fns.php
function display_cart($cart, $change = true, $images = 1)
{
// display items in shopping cart
echo '<table border = 0 width = "100%" cellspacing = 0>
<form action = "show_cart.php" method = "post">
<tr><th colspan = '. (1+$images) .' bgcolor="#cccccc">Item</th>
<th bgcolor="#cccccc">Price</th><th bgcolor="#cccccc">Quantity</th>
<th bgcolor="#cccccc">Total</th></tr>';
36
//display each item as a table row
foreach ($cart as $isbn => $qty)
{
$book = get_book_details($isbn);
echo '<tr>';
if($images ==true)
{
echo '<td align = left>';
if (file_exists("images/$isbn.jpg"))
{
$size = GetImageSize('images/'.$isbn.'.jpg');
if($size[0]>0 && $size[1]>0)
{
echo '<img src="images/'.$isbn.'.jpg" border=0 ';
echo 'width = '. $size[0]/3 .' height = ' .$size[1]/3 . ' />';
}
}
else
echo ' ';
echo '</td>';
}
echo '<td align = "left">';
echo '<a href = "show_book.php?isbn='.$isbn.'">'.$book['title'].'</a> by
'.$book['author'];
echo '</td><td align = "center">$'.number_format($book['price'], 2);
echo '</t d><td align = "center">';
// if we allow changes, quantities are in text boxes
if ($change == true)
echo "<input type = 'text' name = \"$isbn\" value = \"$qty\" size = 3>";
else
echo $qty;
echo '</td>
<td align = "center">$'.number_format($book['price']*$qty,2)."</td>
</tr>\n";
}
// display total row
echo "<tr>
<th colspan = ". (2+$images) ." bgcolor= \"#cccccc \"> </td>
<th align = \"center\" bgcolor= \"#cccccc \">
37
".$_SESSION['items']."
</th>
<th align = \"center\" bgcolor= \"#cccccc \">
\$".number_format($_SESSION['total_price'], 2).
'</th>
</tr>';
// display Save change button
if($change == true)
{
echo '<tr>
<td colspan = '. (2+$images) .'> </td>
<td align = "center">
<input type = "hidden" name = "save" value = true>
<input type = "image" src = "images/save -changes.gif"
border = 0 alt = "Save Changes">
</td>
<td> </td>
</tr>';
}
echo '</form></table>';
}
Fragment de cod sursă 1 – Afișarea coșului de cumpărături
Pentru a observa modul în care se efectueaza inserarea, modificarea și stergerea
uni produs din baza de date, prin intermediul interfeței web realizată în PHP, pot fi citite
alte exemple de cod sursa în: Fragment de cod sursă 2, Fragment de cod sursă 3,
Fragment de cod sursă 4, Fragment de cod sursă 5, Fragment de cod sursă 6 și
Fragment de cod sursă 7.
admin_fns.php
// inserts a new category into the database
function insert_category($catname)
{
$conn = db_connect();
// check category does not already exist
$query = "select *
from categories
where catname='$catname'";
$result = $conn ->query($query);
if (!$result || $result ->num_rows!=0)
38
return false;
// insert new category
$query = "insert into categories values
('', '$catname')";
$result = $conn ->query($query);
if (!$result)
return false;
else
return true;
}
Fragment de cod sursă 2 – Funcția de inserare a unei noi categorii în baza d e date
admin_fns.php
// insert a new book into the database
function insert_book($isbn, $title, $author, $catid, $price, $description)
{
$conn = db_connect();
// check book does not already exist
$query = "select *
from books
where isbn='$isbn'";
$result = $conn ->query($query);
if (!$result || $result ->num_rows!=0)
return false;
// insert new book
$query = "insert into books values
('$isbn', '$author', '$title', '$catid', $price, '$description')";
$result = $conn ->query($query);
if (!$result)
return false;
else
return true;
}
Fragment de cod sursă 3 – Funcția de inserare a unei noi cărți în baza de date
admin_fns.php
39
// change the name of category with catid in the database
function update_category($catid, $catname)
{
$conn = db_connect();
$query = "update categories
set catname='$catname'
where catid='$catid'";
$result = @$conn ->query($query);
if (!$result)
return false;
else
return true;
}
Fragment de cod sursă 4 – Funcția de actualizare a unei categorii
admin_fns.php
// change details of book stored under $oldisbn in
// the database to new details in arguments
function update_book($oldisbn, $isbn, $title, $author, $catid,
$price, $description)
{
$conn = db_connect();
$query = "update books
set isbn='$isbn',
title ='$title',
author = '$author',
catid = '$catid',
price = '$price',
description = '$description'
where isbn='$oldisbn'";
$result = @$conn ->query($query);
if (!$result)
return false;
else
return true;
}
Fragment de cod sursă 5 – Funcția de actualizare a unei cărți
admin_fns.php
40
// Remove the category identified by catid from the db
// If there are books in the category, it will not
// be removed and the function will return false.
function delete_category($catid)
{
$conn = db_connect();
// check if there are any books in category
// to avoid deletion anomalies
$query = "select *
from books
where catid='$catid'";
$result = @$conn ->query($query);
if (!$result || @$result ->num_rows>0)
return false;
$query = "delete from categories
where catid='$catid'";
$result = @$conn ->query($query);
if (!$result)
return false;
else
return true;
}
Fragment de cod sursă 6 – Funcția de ștergere a unei categori
admin_fns.php
// Delete the book identified by $isbn from the database.
function delete_book($isbn)
{
$conn = db_connect();
$query = "delete from books
where isbn='$isbn'";
$result = @$conn ->query($query);
if (!$result)
return false;
else
return true;
}
Fragment de cod sursă 7 – Funcția de ștergere a unei cărți
41
4.5 Validarea aplicatiei
Aplicația a fost testată manual. Fiecare funcționalitate a aplicației a fost testată în
primul rând folosind strategia white box testing dar si boundery testing, testandu -se
pentru valori normale așteptate de aplicație, pentru care aceasta va avea compor tamentul
normal, dar și pentru valori pentru care aplicația nu le poate procesa, valori din afara
mulțimilor de valori acceptate, caz în care aplicația afișează mesaje de eroare
corespunzătoare.
Două dintre cazurile de testare efectuate sunt descrise în Tabel 4 și în Tabel 5.
Caz de testare – Administrat or – Logare cu succes
Descriere: Se verific ă dacă logarea are loc cu succes, pentru administratorul cu numele
de utilizator „admin ” și parola „admin ”.
Rezultat așteptat: A dministratorul s-a logat cu succes, se afișează pagina de start a
administratorului în care este afișat meniul pentru administrator .
Tipul executiei: manual
Status passed
Tabel 4 – Caz de testare – Logare cu succes
Test Case – User – Logare fără succes
Descriere: Se verific ă dacă logarea nu are loc cu succes, pentru administratorul cu
numele de utilizator „abc” și parola „abc”, care nu exista in baza de date.
Rezultat așteptat: A dministratorul nu s-a logat cu succes, nu se afișează pagina de start
a administratorului în care este afișat meniul. Se rămâne tot la pagina de login și se
afișează un mesaj corespunzător de eroare.
Tipul executiei: manual
Status passed
Tabel 5 – Caz de testare – Logare fără succes
42
5. CONCLUZII
Lucrarea de față si-a propus să prezinte o tehnologie folosită pentru bazele de date
relationale: bazele de date MySql. P entru aplicații Web având bazele de date in MySql
este foarte utilă folosirea unui pachet de programe software precum Xampp sau Wamp
deoarece facilitează pornirea și oprirea serverelor, setarea acestora, crearea, afișarea,
inserarea de date, și alte operații utile în cazul devoltării aplicațiilor care folosesc baze de
date. De asemenea s -a prezentat în aceasta lucrare și modul în care se realizează legătura
între bazele de date MySql și interfața utilizatorului folosind limbajele de scripting PHP
și HTML. Accentul a fost pus pe bazele de date și pe modul în care se realizează
operațiile CRUD (Create Read Update Delete) în cazul bazelor de date relationalte,
acestu lucru fiind foarte des folosit de a plicațiile Web care necesit ă multe operații de tipul
CRUD.
Lucrarea e organizată în trei capitol e. Astfel, primul capitol s-au abordat aspectele
teoretice, prezentând noțiuni de bază din domeni ul bazelor de date, prezentând informații
despre modelul relational, transformarea entităților, transformarea relațiilor, normalizarea
relațiilor și formele normale.
Al doilea capitol, intitulat “ Aspecte tehnologice ” si-a propus să prezinte câteva medii
de programare și limbaje care se folosesc pentru a interacționa cu bazele de date. S -a
descris de asemenea modul în care acestea pot fi instalate impreună cu unele exemple de
cod de bază. În acest capitol s -au prezinta t pe scurt tehnologii precum: HTML , CSS, iar
accentul s -a puns pe PHP si MySQL pentru care s -au prezentat mai detaliat și conceptele
de bază.
Al treilea capitol a prezentat aplicația pe care a m realizat -o folosind tehnologiile
PHP și MySQL . Este o aplicație realizată pentru cei care doresc să cumpere mai ușor
cărți, folosind o librarie online.
În momentul de față, dezvoltarea aplicațiilor de baze de date si web se face într -un
mod tot mai dinamic, deoarece numărul de framework -uri JavaScript a crescut, la fel și
numarul de funționalități și u șurința folosirii acestora, iar așteptările utilizatorilor pentru
aplicațiile care rulează în browser au crescut. Utilizatorii sunt obișnuiți cu site -uri care au
interfețe de utilizator tot mai complexe. Pentru a putea crea astfel de interfețe,
alegerea toolurilor , a limbajelor de programare și a librăriilor potrivite este esențială, mai
43
ales atunci când o pțiunile sunt atât de variate. Cu toate acestea, principiile de bază a
scrierii unei aplicații web cu conexiune la baze da date răman aceleași.
Această lu crare și -a propus să treacă în revistă principiile folosirii bazelor de date
relaționale împreuna cu cele mai importante tehnologii folosite pentru aplicațiile web
conectate la baze de date: MySQL si PHP.
Utilizarea unui limbaj sau al unui framework potriv it poate aduce de cele mai multe
ori beneficii majore atât dezvoltatorului cât și aplicației în sine. De aceea e important să
cunoaștem principiile de baza a unor tehnologii, pentru ca mai apoi va fi mai ușor să
alegem una din extensiile sale pentru a impl ementa o aplicație de dimensiuni mari.
Sistemul informatic de gestiune al magazinului de cărți este ușor de folosit de către
utilizator , multilateral și rapid. Gestiunea cărților aflate în stoc este intuitivă, putând fi
ușor de modificat datele din aceasta . Design -ul aplicației permite utlizatorului căutarea și
cumpărarea într -un mod ușor a cărților. Sistemul de gestiune a bazelor de date poate să
ofere facilitați moderne oricărei librării.
Pe viitor exita posibilitatea implementării unei secțiune special e pentru facturi,
clien ții având op țiunea de a alege ca produsele cump ărate s ă fie trecute pe bon fiscal sau
pe factur ă. Odat ă cu extinderea magazinului poate fi creata de asemenea o aplocație pe
mobil care va oferi clien ților posibilitatea de a face comenzi de oriunde, oricând .
44
BIBLIOGRAFIE
[1] Rădulescu F. – Note de curs: Baze de date , Bucuresti 2007.
[2] Ullman L. – PHP si MySQL pentru site -uri WEB dinamice , Editura Teora, București
2005.
[3] Ulman L. – PHP pentru W orld Wide Web, în imagini , Editura Teora, București 2006.
[4] Holzner S. – Inițiere in PHP 5 – Editura Teora, București 2006.
[5] Darie C., Bucica M. – PHP5 Si MySQL pentru comerț electronic , Editura Teora,
Bucuresti 2005.
[6] Petersen J.V. – Baze de date p entru începatori , Editura Teora, București 2006.
[7] Anghel T. – Programarea in PHP. Ghid practic , Editura Polirom 2005.
[8] Meloni J. – PHP, MySQL și Apache , Editura Teora, Bucuresti 2006.
[9] Weling L., Thomson L. – PHP and MySQL Web , USA LLC 2005.
[10] SAMS TEACH YOURSELF php, Mysql and Apache ALL in One, j.k. Meloni –
Person Education, 2004.
[11] Wiley & Sons – Secure PHP Development – Building 50 Practica, 2005.
[12] Wrox Press – Professional PHP Programming , 2005.
[13] NewRiders – PHP Programming For W indows, 2004.
[14] MySQL – PHP Database Aplication, 2005.
[15] Codd, E.F. "Further Normalization of the Da ta Base Relational Model".
Bibliografie internet:
http://wikipedia.org – enciclopedia liberă
http://www.php.net – pagina oficială a grupului de lucru pentru dezvoltarea limbajului
PHP
http://www.w3schools.com – set gratuit de tutoriale și documentații pentru programarea
paginilor web.
http://www.w3.org/ – pentru cele mai noi specificații HTML.
https://searchsqlserver.techtarget.com/
https://opentex tbc.ca/
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: SPECIALIZAREA: ………………. ………….. ……. Lucrare de licență O paralelă între Baze de date relaționale (SQL) și baze de date… [631081] (ID: 631081)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
