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.
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.
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.
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.
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.
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.
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.
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.
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.