Skip to content

Latest commit

 

History

History
104 lines (58 loc) · 4.2 KB

File metadata and controls

104 lines (58 loc) · 4.2 KB

🏬Lant de magazine electronice folosind PL/SQL

📘Descrierea utilitatii bazei de date:

Aceasta baza de date serveste gestiunea completa a unui lant de magazine electronice.

  • Putem administra mai multe magazine, cu raioanele lor specifice.
  • Putem gestiona inventarul de produse electronice, procesa comenzi de la clienti si urmari livrarile.
  • Putem gestiona personalul magazinelor si permite rapoarte de vanzari, stoc si performanta.

🧩Diagrama entitate-relatie:

image

🗺️Diagrama conceptuala a modelului propus:

image

🛠️Concepte utilizate:

🧠Exercitiul 6 – Colectii PL/SQL (VARRAY, Nested Table, Associative Array)

In acest exercitiu au fost folosite colectii pentru a procesa date in memorie si a realiza centralizari complexe.

  • VARRAY a fost utilizat pentru a retine lista de raioane ale unui magazin. Este potrivit pentru colectii cu dimensiune maxima fixa si acces prin index numeric.
  • Nested table a fost utilizat pentru a stoca produsele dintr-un raion. Permite stocarea unui numar variabil de elemente si este potrivit pentru preluarea rezultatelor din interogari SQL.
  • Associative array a fost utilizat pentru centralizarea produselor pe furnizor. Permite acces direct prin cheie (numele furnizorului), fiind eficient pentru agregari si calcule rapide.

Utilitate in baza de date: Permite realizarea unor statistici si agregari complexe la nivel procedural, dincolo de un simplu GROUP BY.


🔁Exercitiul 7 – Cursoare

Au fost utilizate cursoare pentru a parcurge rezultate SQL rand cu rand.

  • Cursorul principal selecteaza raioanele.
  • Cursorul dependent selecteaza produsele pentru fiecare raion.

Utilitate in baza de date: Permite procesarea ierarhica a datelor (magazin -> raion -> produs) si control fin asupra modului in care sunt parcurse si afisate informatiile.


🔎Exercitiul 8 – Functie PL/SQL

A fost implementata o functie care returneaza o valoare (email-ul clientului cu ultima comanda).

  • returneaza un rezultat unic
  • poate fi utilizata in interogari SQL
  • separa logica de calcul de restul aplicatiei

Utilitate in baza de date: Permite reutilizarea logicii si incapsularea regulilor de calcul, crescand modularitatea sistemului.


⚙️Exercitiul 9 – Procedura cu exceptii

A fost implementata o procedura care afiseaza informatii despre comenzile unui client si trateaza situatii speciale prin exceptii. Au fost folosite:

  • proceduri pentru executie de actiuni fara return direct
  • exceptii pentru tratarea cazurilor precum lipsa datelor

Utilitate in baza de date: Asigura robustetea sistemului si tratarea controlata a erorilor, evitand comportamente neprevazute.


🚫Exercitiul 10 – Trigger de validare la INSERT

A fost creat un trigger care limiteaza numarul total de produse electronice din tabela.

Utilitate in baza de date: Implementeaza reguli de business direct la nivel de baza de date, prevenind introducerea de date invalide indiferent de aplicatia care face inserarea.


🔄Exercitiul 11 – Trigger BEFORE UPDATE FOR EACH ROW

Triggerul valideaza modificarea stocului pentru fiecare rand in parte.

Utilitate in baza de date: Permite control asupra modificarilor si impune reguli de integritate la nivel de fiecare inregistrare.


🛡️Exercitiul 12 – Trigger DDL

A fost implementat un trigger la nivel de schema care intercepteaza comenzi de tip DROP.

Utilitate in baza de date: Protejeaza structura bazei de date impotriva modificarilor accidentale sau neautorizate.


📌 Concluzie generala

Exercitiile 6-12 demonstreaza utilizarea avansata a PL/SQL pentru:

  • procesarea datelor in memorie
  • parcurgerea controlata a rezultatelor SQL
  • incapsularea logicii prin subprograme
  • impunerea regulilor de business prin triggeri
  • tratare controlata a erorilor

Mai multe detalii si implementari ale exercitiilor abordate se gasesc in fisierele .txt din repo. Dovada rularii exercitiilor se afla in documentatia Word.