Proiect Baze de Date [PDF]

  • 0 0 0
  • Gefällt Ihnen dieses papier und der download? Sie können Ihre eigene PDF-Datei in wenigen Minuten kostenlos online veröffentlichen! Anmelden
Datei wird geladen, bitte warten...
Zitiervorschau

Facultatea Calculatoare, Informatică și Microelectronică Departamentul Ingineria Software și Automatică

Proiectarea unei baze de date „Depozite bancare” și implementarea ei în SQL Server

Proiect de curs la disciplina Baze de date

Studenți: grupa TI-192,

Covrig Victor Pînzari Ion Mereuță Ana Muntean Nicolae Grigore Viscun-Munteanu Conducător: asis. univ. Scrob Sergiu

Chișinău 2021 1

Cuprins Noțiuni generale ……………………………………………………………………........….....… 3 Descrierea problemei ...................................................................................................................... 4 1. Proiectarea logică a bazei de date .............................................................................................. 5 1.2 Transformarea elementelor informaționale în coloane ............................................................ 5 1.3 Specificarea constrângerilor în tabele ...................................................................................... 5 1.4 Configurarea relațiilor între tabele ........................................................................................... 8 1.5 Aplicarea regulilor de normalizare ……………………………………………….........….... 8 2. Crearea tabelelor și definirea constrângerilor……………………………………….............… 8 2.1 Crearea bazei de date, tabelele utilizând limbajul SQL …………………………........…....... 8 2.2 Reprezentarea grafică a structurei bazei de date (diagrama BD) …………………................. 9 2.3 Înregistrarea în baza de date a tuturor tipurilor de depozite din anexă ……………................ 9 2.4 Completarea cu tupluri a tuturor tabelelor …………………………………………............. 10 3. Administrarea Bazei de Date ………………………………………………………...........… 17 3.1 Parametrii de creare a bazei de date ………………………………………………............... 17 3.2 Crearea planului de intreținere ………………………………………………….......…........ 17 3.3 Definirea a doi utilizatori …………………………………………………………............... 17 4. Interogarea Bazei de Date …………………………………………………………............… 19 5.Tranzacții …………………………………………………………………………..…............ 20 5.1 Înregistrarea unui client nou. ………………………………………………………............. 21 5.2 Deschiderea unui cont curent nou ………………………………………………….............. 21 5.3 Deschiderea unui cont de depozit, legat de un cont curent ………………………......…...... 21 5.4 Depunerea suplimentară de bani …………………………………………………............… 21 5.5 Retragerea parțială a banilor din cont …………………………………………….......…..... 22 5.6 Retragerea unei sume de bani ……………………………………………………................ 23 5.7 Prelungirea automată a depozitului ……………………………………………….......…..... 24 Concluzii ……………………………………………………………………………….............. 25 Bibliografie …………………………………………………………………………......…........ 25

2

Noțiuni generale O bază de date este un instrument pentru colectarea și organizarea informațiilor. Bazele de date pot stoca informații despre persoane, produse, comenzi sau orice altceva. Multe baze de date încep ca o listă într-un program de procesare a textului sau o foaie de calcul. Pe măsură ce lista se mărește, datele încep să conțină redundanțe și inconsistențe. Ele devin greu de înțeles sub formă de listă și există modalități limitate de a căuta sau a extrage subseturi de date pentru revizuire. După ce încep să apară aceste probleme, este o idee bună să transferați datele într-o bază de date creată de un sistem de gestionare a bazelor de date (DBMS). De obicei o bază de date este memorată într-unul sau mai multe fișiere. Bazele de date sunt manipulate cu ajutorul sistemelor de gestiune a bazelor de date. Cel mai răspândit tip de baze de date este cel relațional, în care datele sunt memorate în tabele. Pe lânga tabele, o bază de date relațională mai poate conține: indecși, proceduri stocate, declanșatori, utilizatori și grupuri de utilizatori, tipuri de date, mecanisme de securitate și de gestiune a tranzacțiilor etc. Alte tipuri de baze de date sunt modelul ierarhic, modelul orientat pe obiecte și, mai nou, modelul XML. Structured Query Language sau SQL, este o nomenclatură de programare utilizată pentru a efectua operații de setare (cum ar fi unirea, intersectarea și minusul) pentru a organiza și extrage informații în baze de date relaționale, bazate pe „teoria seturilor și algebra relațională”. În orice sistem care utilizează SQL, „elementele sau atributele de date, clasificate în coloane, sunt corelate în tupluri (rânduri). Seturile de relații cu structuri identice formează tabele. ” Aceste elemente, rânduri corelate, coloane și tabele formează baza pentru un sistem de gestionare a bazelor de date relaționale (RDBMS).

3

Descrierea problemei Problema propusă spre soluționare în cadrul concursului constă în elaborarea unei Baze de date  Depozite bancare.  Baza de date va contine informația despre clienți, conturile curente și de depozit ale lor, filialele

unde

sunt

deschise

conturile, conditiile de atragele a

depozitelor

și

tipurile

lor, tranzactiile banești.  Informația despre client va conține toate datele din buletin, emailul, telefonul. Un client poate avea conturi curente în diferite valute, și mai multe conturi de depozit, deschise în una sau în diferite filiale. Informația despre conturi va conține tipul de cont(curent, de depozit), data deschiderii/închiderii contului, codul IBAN al contului, valuta, suma în cont, filiala la care este deschis. contul curent asociat.   Tranzacțiile banesti vor fi toate înregistrate, fiind caracterizate de tipul tranzactiei, suma tranzacției, descrierea tranzacției, data și ora tranzacției, valuta, contul. Informatia despre filiala bancii unde a fost deschis contul va conține numarul/denumirea filialei, informația de contact, adresa).  Tipurile de depozite se caracterizeaza prin denumire, data aparitiei (constituirii) și stopării tipului respectiv de depozit, valuta, tipul ratei dobânzii (fixă/flotantă), data modificării ratei flotante, termenul de pastrare a banilor, rata dobinzii anuale, soldul minim în cont, vărsăminte suplimentare (suplinirea, completarea depozitului) dacă se acceptă, retrageri parțiale din depozit, perioada achitării dobinzii (lunar/anual), prelungirea automata a depozitului (da/nu). Condițiile depozitelor pot fi modificate de către bancă, inclusiv rata dobinzii, dacă ea este flotantă. Pentru

fiecare

cont

de

depozit

deschis exită un

cont

curent asociat.

Toate tranzactiile banesti din depozit se fac prin contul curent. Operațiunile aferente constituirii depozitului, vărsămintelor suplimentare, retragerilor, inclusiv parțiale ale mijloacelor bănești în/din depozit, se efectuează prin intermediul contului curent al deponentului. Pentru constituirea sau suplinirea depozitului mai întâi banii se depun de client în contul curent. Daca suma depusă în cont este suficientă, și dacă depozitul permite suplinirea contului, banii se transferă din contul curent în contul de depozit.

4

1. Proiectarea logică a bazei de date 1.1 Împărțirea informațiilor în tabele Împărțiți elementele informaționale în entități sau subiecte majore, cum ar fi CLIENȚI, CONTURI, FILIALE, etc. Fiecare entitate devine apoi un tabel. 

Figura 1 – Crearea tabelelor 1.2 Transformarea elementelor informaționale în coloane. Decideți ce informații doriți să stocați în fiecare tabel. Fiecare element devine un câmp și este afișat sub formă de coloană în tabel.

De exemplu,

un tabel CLIENT poate

include

câmpuri

cum

ar fi

Numele,

Prenumele, Adresa, IDNP, Date de contact etc.  1.3 Specificarea constrângerilor în tabele. Alegeți cheia primară a fiecărui tabel. Stabiliți constângerile de domeniu, de tuplu.  Client -> cheia primara: IDNP Cont_curent -> cheia primara: Codul_IBAN Cont_depozit -> cheia primara: Codul_IBAN Depozite -> cheia primara: Id_depozit Filiale -> cheia primara: Id_filiala Rata_dobanzii -> chei primare: Id_tip_dobanda, Cod_valuta, Termen Tipuri_dobanzii -> cheia primara: Id_tip_depozit Valute -> chei primarae: Id_tip_depozit, Cod_valuta Tranzactii -> cheia primara: Id_tranzactie 5

1.4 Configurarea relațiilor între tabele Uitați-vă la fiecare tabel și decideți cum sunt corelate datele dintr-un tabel cu datele din alte tabele. Adăugați câmpuri la tabele sau creați tabele noi pentru a clarifica relațiile, după cum este necesar. Stabiliți cheile externe. 

1.5 Aplicarea regulilor de normalizare Aplicați reguli de normalizare a datelor pentru a vedea dacă tabelele sunt structurate corect. Faceți ajustări la tabele, după cum este necesar. Aduceți baza de date în forma normală 3. 

Figura 1.2 - Setarea cheilor externe

2. Crearea tabelelor și definirea constrângerilor 2.1 De creat baza de date, tabelele utilizând limbajul SQL.  USE [Depozite bancare]; DROP TABLE IF EXISTS Filiale; CREATE TABLE Filiale ( Id_filiala INT PRIMARY KEY IDENTITY(1,1), Denumirea VARCHAR(25) NOT NULL, Email VARCHAR(25), Telefon VARCHAR(14), Tara VARCHAR(30) NOT NULL, Localitatea VARCHAR(30) NOT NULL, Strada VARCHAR(30), Numar VARCHAR(6), Scara SMALLINT, Apartament SMALLINT ); DROP TABLE IF EXISTS Client; CREATE table Client( IDNP VARCHAR(13) PRIMARY KEY, Nume VARCHAR(50) NOT NULL, Prenume VARCHAR(50) NOT NULL, Email VARCHAR(50) NOT NULL UNIQUE, Telefon VARCHAR(13) NOT NULL UNIQUE, Codul_IBAN VARCHAR(24) NOT NULL UNIQUE, Tara VARCHAR(30) NOT NULL, Localitatea VARCHAR(30) NOT NULL,

6

Strada VARCHAR(30), Numar VARCHAR(6), Scara SMALLINT, Apartament SMALLINT, Data_nasterii DATE NOT NULL, Cetatenia VARCHAR(3) NOT NULL, Sex CHAR NOT NULL, Numarul_buletin VARCHAR(10) NOT NULL UNIQUE, Data_emiterii_buletin DATE, Data_expirarii_buletin DATE, ); GO DROP TABLE IF EXISTS Cont_curent; CREATE table Cont_curent ( Codul_IBAN VARCHAR(24) PRIMARY KEY, Id_filiala INT NOT NULL, Data_deschiderii DATE, Data_inchiderii DATE, Valuta VARCHAR(3) NOT NULL, Suma_cont FLOAT NOT NULL, ); GO DROP TABLE IF EXISTS Cont_depozit; CREATE table Cont_depozit ( Codul_IBAN VARCHAR(24) PRIMARY KEY, Suma_cont INT NOT NULL, Cont_curent_IBAN VARCHAR(24) NOT NULL, ); GO DROP TABLE IF EXISTS Tranzactii_banesti; CREATE table Tranzactii_banesti( ID_tranzactie INT PRIMARY KEY IDENTITY(1,1), Tipul_tranzactie VARCHAR(20) NOT NULL, Suma_tranzactiei FLOAT NOT NULL, Descrierea_tranzactiei TEXT, Data_tranzactiei DATE NOT NULL, Ora_tranzactiei TIME NOT NULL, Valuta VARCHAR(3), Codul_IBAN INT NOT NULL, ); GO DROP TABLE IF EXISTS Depozite; GO CREATE TABLE Depozite ( Id_depozit INT NOT NULL PRIMARY KEY IDENTITY(1,1), Data_aparitiei DATE, Data_stoparii DATE, Data_modificarii_ratei_flotante DATE, Termen_pastrare_bani_luni SMALLINT NOT NULL, Varsaminte_depozit VARCHAR(30), Prelungire_automata VARCHAR(50), Codul_IBAN VARCHAR(24) NOT NULL, Id_tip_depozit INT NOT NULL

7

); GO DROP TABLE IF EXISTS Tipuri_depozite CREATE TABLE Tipuri_depozite ( Id_tip_depozit INT PRIMARY KEY, Denumirea VARCHAR (30) NOT NULL, Completare VARCHAR(70) NOT NULL, Completare_suma_lei REAL, Completare_suma_euro REAL, Completare_descriere TEXT, Retrageri VARCHAR(100), Retragere_suma_procente FLOAT, Retragere_valuta VARCHAR(4), Retragere_descriere TEXT, Retragere_sold_minim VARCHAR(2), Plata_dobanzii VARCHAR(50) NOT NULL, Regim VARCHAR(15) NOT NULL, Retragere_anticipata VARCHAR(30), ); GO DROP TABLE IF EXISTS Rata_dobanzii; CREATE TABLE Rata_dobanzii ( Id_tip_dobanda INT NOT NULL, Cod_valuta VARCHAR(4) NOT NULL, Termen TINYINT NOT NULL, Rata_dobanzii FLOAT NOT NULL, PRIMARY KEY (Id_tip_dobanda, Cod_valuta, Termen) ); DROP TABLE IF EXISTS Valute CREATE TABLE Valute ( Id_tip_depozit INT NOT NULL, Cod_valuta VARCHAR(4) NOT NULL, Suma_minima FLOAT NOT NULL, PRIMARY KEY(Id_tip_depozit, Cod_valuta) );

2.2 De reprezentat grafic structura bazei de date (diagrama BD).

8

Figura 2.1- Structura grafică a bazei de date 2.3 Să se înregistreze în baza de date toate tipurile de depozite din anexă si condițiile lor.  INSERT INTO Tipuri_depozite (Id_tip_depozit, Denumirea, Completare, Completare_suma_lei, Completare_suma_euro, Completare_descriere, Retrageri, Retragere_suma_procente, Retragere_valuta, Retragere_descriere, Retragere_sold_minim, Plata_dobanzii, Regim, Retragere_anticipata) VALUES (1, 'GOTIC', 'Nu', NULL ,NULL, NULL, 'Nu', NULL, NULL, NULL, NULL, 'Lunar', 'Fixa', 'Stornarea dobanzii calculate'); INSERT INTO Tipuri_depozite (Id_tip_depozit, Denumirea, Completare, Completare_suma_lei, Completare_suma_euro, Completare_descriere, Retrageri, Retragere_suma_procente, Retragere_valuta, Retragere_descriere, Retragere_sold_minim, Plata_dobanzii, Regim, Retragere_anticipata) VALUES (2, 'BAROCCO', 'Nu', NULL ,NULL, NULL, 'Nu', NULL, NULL, NULL, NULL, 'Lunar', 'Flotanta', 'Stornarea dobanzii calculate'); INSERT INTO Tipuri_depozite (Id_tip_depozit, Denumirea, Completare, Completare_suma_lei, Completare_suma_euro, Completare_descriere, Retrageri, Retragere_suma_procente, Retragere_valuta, Retragere_descriere, Retragere_sold_minim, Plata_dobanzii, Regim, Retragere_anticipata) VALUES (3, 'RENAISSANCE', 'Da', 200.00, 100.00, 'Nelimitat cu exceptia ultimei luni', 'Nu', NULL, NULL, NULL, NULL, 'Lunar/capitalizare', 'Flotanta', 'Stornarea dobanzii calculate'); INSERT INTO Tipuri_depozite (Id_tip_depozit, Denumirea, Completare, Completare_suma_lei, Completare_suma_euro, Completare_descriere, Retrageri, Retragere_suma_procente, Retragere_valuta, Retragere_descriere, Retragere_sold_minim, Plata_dobanzii, Regim, Retragere_anticipata) VALUES (4, 'MODERN', 'Da', 200.00, 100.00, 'In prima jumatate a termenului', 'Da', 20, 'MDL', 'din sold la expirarea primei luni a depozitului', 'da', 'Lunar/capitalizare', 'Flotanta', 'Stornarea dobanzii calculate'); INSERT INTO Tipuri_depozite (Id_tip_depozit, Denumirea, Completare, Completare_suma_lei, Completare_suma_euro, Completare_descriere, Retrageri, Retragere_suma_procente,

9

Retragere_valuta, Retragere_descriere, Retragere_sold_minim, Plata_dobanzii, Regim, Retragere_anticipata) VALUES (5, 'PENSIONAR', 'Da', 200.00, 100.00, 'In prima jumatate a termenului', 'Da', 10, 'MDL', 'Din sold la expirarea lunei a 3-lea a depozitului', 'da', 'Lunar', 'Fixa', 'Stornarea dobanzii calculate'); INSERT INTO Tipuri_depozite (Id_tip_depozit, Denumirea, Completare, Completare_suma_lei, Completare_suma_euro, Completare_descriere, Retrageri, Retragere_suma_procente, Retragere_valuta, Retragere_descriere, Retragere_sold_minim, Plata_dobanzii, Regim, Retragere_anticipata) VALUES (6, 'PENSIONAR rata fixa', 'Nu', NULL, NULL, NULL, 'Da', 10, 'MDL','La expirarea lunei a 3-lea a depozitului', 'da', 'Lunar', 'Fixa', 'Stornarea dobanzii calculate'); INSERT INTO Tipuri_depozite (Id_tip_depozit, Denumirea, Completare, Completare_suma_lei, Completare_suma_euro, Completare_descriere, Retrageri, Retragere_suma_procente, Retragere_valuta, Retragere_descriere, Retragere_sold_minim, Plata_dobanzii, Regim, Retragere_anticipata) VALUES (7, 'PENSIONAR rata flotanta', 'Da', 200, NULL, 'In prima jumatate a termenului', 'Da', 10, 'MDL', 'In sold la expirarea lunei a 3-lea a depozitului', 'da', 'Lunar', 'Flotanta', 'Stornarea dobanzii calculate'); INSERT INTO Tipuri_depozite (Id_tip_depozit, Denumirea, Completare, Completare_suma_lei, Completare_suma_euro, Completare_descriere, Retrageri, Retragere_suma_procente, Retragere_valuta, Retragere_descriere, Retragere_sold_minim, Plata_dobanzii, Regim, Retragere_anticipata) VALUES (8, 'BAROCCO VIP', 'Da', 10000, 1000, 'In prima jumatate a termenului', 'Nu', NULL, NULL, NULL, NULL, 'Lunar/capitalizare', 'Flotanta', 'Stornarea dobanzii calculate');

Figura 2.2 - Înregistrarea depozitelor din anexă

2.4 Sa se completeze cu tupluri toate tabelele. INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT

INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO

Valute Valute Valute Valute Valute Valute Valute Valute Valute Valute Valute Valute Valute Valute Valute Valute Valute Valute Valute Valute

(Id_tip_depozit, (Id_tip_depozit, (Id_tip_depozit, (Id_tip_depozit, (Id_tip_depozit, (Id_tip_depozit, (Id_tip_depozit, (Id_tip_depozit, (Id_tip_depozit, (Id_tip_depozit, (Id_tip_depozit, (Id_tip_depozit, (Id_tip_depozit, (Id_tip_depozit, (Id_tip_depozit, (Id_tip_depozit, (Id_tip_depozit, (Id_tip_depozit, (Id_tip_depozit, (Id_tip_depozit,

Cod_valuta, Cod_valuta, Cod_valuta, Cod_valuta, Cod_valuta, Cod_valuta, Cod_valuta, Cod_valuta, Cod_valuta, Cod_valuta, Cod_valuta, Cod_valuta, Cod_valuta, Cod_valuta, Cod_valuta, Cod_valuta, Cod_valuta, Cod_valuta, Cod_valuta, Cod_valuta,

10

Suma_minima) Suma_minima) Suma_minima) Suma_minima) Suma_minima) Suma_minima) Suma_minima) Suma_minima) Suma_minima) Suma_minima) Suma_minima) Suma_minima) Suma_minima) Suma_minima) Suma_minima) Suma_minima) Suma_minima) Suma_minima) Suma_minima) Suma_minima)

VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES

(1, (1, (1, (2, (2, (2, (3, (3, (3, (4, (4, (4, (5, (5, (5, (6, (7, (8, (8, (8,

'MDL', 1000); 'USD', 100); 'EUR', 100); 'MDL', 1000); 'USD', 100); 'EUR', 100); 'MDL', 1000); 'USD', 100); 'EUR', 100); 'MDL', 500); 'USD', 100); 'EUR', 100); 'MDL', 500); 'USD', 100); 'EUR', 100); 'MDL', 500); 'MDL', 500); 'MDL',250000); 'USD', 25000); 'EUR', 25000);

Figura 2.3 - Completarea tabelului Valute

INSERT INTO Rata_dobanzii(Id_tip_dobanda, Cod_valuta, Termen, Rata_dobanzii) VALUES (1, 'MDL', 6, 4.80), (1, 'MDL', 12, 6.15) INSERT INTO Rata_dobanzii(Id_tip_dobanda, Cod_valuta, Termen, Rata_dobanzii) VALUES (1, 'USD', 6, 0.50), (1, 'USD', 12, 1.30), (1, 'USD', 25, 1.40) INSERT INTO Rata_dobanzii(Id_tip_dobanda, Cod_valuta, Termen, Rata_dobanzii) VALUES (1, 'EUR', 6, 0.30), (1, 'EUR', 12, 0.80), (1, 'EUR', 25, 1.00) INSERT INTO Rata_dobanzii(Id_tip_dobanda, Cod_valuta, Termen, Rata_dobanzii) VALUES (2, 'MDL', 6, 5.00), (2, 'MDL', 12, 6.50), (2, 'MDL', 25, 6.65) INSERT INTO Rata_dobanzii(Id_tip_dobanda, Cod_valuta, Termen, Rata_dobanzii) VALUES (2, 'USD', 6, 0.80), (2, 'USD', 12, 1.40), (2, 'USD', 25, 1.60) INSERT INTO Rata_dobanzii(Id_tip_dobanda, Cod_valuta, Termen, Rata_dobanzii) VALUES (2, 'EUR', 6, 0.30), (2, 'EUR', 12, 0.60), (2, 'EUR', 25, 1.20) INSERT INTO Rata_dobanzii(Id_tip_dobanda, Cod_valuta, Termen, Rata_dobanzii) VALUES (3, 'MDL', 6, 3.50), (3, 'MDL', 12, 6.00) INSERT INTO Rata_dobanzii(Id_tip_dobanda, Cod_valuta, Termen, Rata_dobanzii) VALUES (3, 'USD', 6, 0.80), (3, 'USD', 12, 1.30) INSERT INTO Rata_dobanzii(Id_tip_dobanda, Cod_valuta, Termen, Rata_dobanzii) VALUES (3, 'EUR', 6, 0.25), (3, 'EUR', 12, 0.70) INSERT VALUES 4.00), INSERT VALUES 1.00)

INTO Rata_dobanzii(Id_tip_dobanda, (4, 'MDL', 3, 1.00), (4, 'MDL', 6, (4, 'MDL', 25, 4.50) INTO Rata_dobanzii(Id_tip_dobanda, (4, 'USD', 3, 0.10), (4, 'USD', 6,

Cod_valuta, Termen, Rata_dobanzii) 2.50), (4, 'MDL', 12, 3.50), (4, 'MDL', 18, Cod_valuta, Termen, Rata_dobanzii) 0.20), (4, 'USD', 12, 0.80), (4, 'USD', 25,

INSERT INTO Rata_dobanzii(Id_tip_dobanda, Cod_valuta, Termen, Rata_dobanzii) VALUES (4, 'EUR', 3, 0.10), (4, 'EUR', 6, 0.20), (4, 'EUR', 12, 0.30), (4, 'EUR', 25, 0.80)

11

INSERT INTO Rata_dobanzii(Id_tip_dobanda, Cod_valuta, Termen, Rata_dobanzii) VALUES (5, 'MDL', 6, 2.60) INSERT INTO Rata_dobanzii(Id_tip_dobanda, Cod_valuta, Termen, Rata_dobanzii) VALUES (5, 'USD', 6, 0.80), (5, 'USD', 12, 1.00) INSERT INTO Rata_dobanzii(Id_tip_dobanda, Cod_valuta, Termen, Rata_dobanzii) VALUES (5, 'EUR', 6, 0.25), (5, 'EUR', 12, 0.50) INSERT INTO Rata_dobanzii(Id_tip_dobanda, Cod_valuta, Termen, Rata_dobanzii) VALUES (6, 'MDL', 12, 4.35) INSERT INTO Rata_dobanzii(Id_tip_dobanda, Cod_valuta, Termen, Rata_dobanzii) VALUES (7, 'MDL', 12, 5.15) INSERT INTO Rata_dobanzii(Id_tip_dobanda, Cod_valuta, Termen, Rata_dobanzii) VALUES (8, 'USD', 6, 0.60), (8, 'USD', 12, 1.30), (8, 'USD', 18, 1.40), (8, 'USD', 25, 1.50) INSERT INTO Rata_dobanzii(Id_tip_dobanda, Cod_valuta, Termen, Rata_dobanzii) VALUES (8, 'EUR', 6, 0.15), (8, 'EUR', 12, 0.50), (8, 'EUR', 18, 0.60), (8, 'EUR', 25, 1.10) INSERT INTO Filiale (Denumirea, Email, Telefon, Tara, Localitatea, Strada, Numar, Scara, Apartament) VALUES ('Sucursala nr.1', '[email protected]', '+37322457345', 'Moldova', 'Chisinau', 'Kiev', '16/1', NULL, NULL); INSERT INTO Filiale (Denumirea, Email, Telefon, Tara, Localitatea, Strada, Numar, Scara, Apartament) VALUES ('Sucursala nr.2', '[email protected]', '+37322457654', 'Moldova', 'Chisinau', 'Stefan cel Mare', '73', NULL, NULL); INSERT INTO Filiale (Denumirea, Email, Telefon, Tara, Localitatea, Strada, Numar, Scara, Apartament) VALUES ('Sucursala nr.3', '[email protected]', '+37322457364', 'Moldova', 'Chisinau', 'Ismail', '98/4', NULL, NULL); INSERT INTO Filiale (Denumirea, Email, Telefon, Tara, Localitatea, Strada, Numar, Scara, Apartament) VALUES ('Sucursala nr.4', '[email protected]', '+37322457334', 'Moldova', 'Chisinau', 'Kiev', '131', NULL, NULL); INSERT INTO Filiale (Denumirea, Email, Telefon, Tara, Localitatea, Strada, Numar, Scara, Apartament) VALUES ('Sucursala nr.5', '[email protected]', '+37322567364', 'Moldova', 'Chisinau', 'Studentilor', '198/2', NULL, NULL);

Figura 2.4 - Completarea tabelului Rata dobânzii INSERT INTO Client (IDNP, Nume, Prenume, Email, Telefon, Codul_IBAN, Tara, Localitatea, Strada, Numar, Scara, Apartament, Data_nasterii, Cetatenia, Sex, Numarul_buletin, Data_emiterii_buletin, Data_expirarii_buletin) VALUES ('2003123123131', 'Mircea', 'Alexandrescu', '[email protected]', '+37360592354', 'MD328933989339393', 'Moldova', 'Chisinau', 'Stefan cel Mare', '32/1', 2, 23, '1998-01-12', 'MD', 'M', 'B21312313', '2018-01-14', '2023-01-14');

12

INSERT INTO Client (IDNP, Nume, Prenume, Email, Telefon, Codul_IBAN, Tara, Localitatea, Strada, Numar, Scara, Apartament, Data_nasterii, Cetatenia, Sex, Numarul_buletin, Data_emiterii_buletin, Data_expirarii_buletin) VALUES ('2001003001008', 'Ion', 'Ursu', '[email protected]', '+37360837231', 'MD3123123131232', 'Moldova', 'Chisinau', '31 August', '342', 3, 21, '1988-11-06', 'MD', 'M', 'B43242344', '2019-07-09', '2035-07-09'); INSERT INTO Client (IDNP, Nume, Prenume, Email, Telefon, Codul_IBAN, Tara, Localitatea, Strada, Numar, Scara, Apartament, Data_nasterii, Cetatenia, Sex, Numarul_buletin, Data_emiterii_buletin, Data_expirarii_buletin) VALUES ('2003134246563', 'Ionela', 'Rusu', '[email protected]', '+37359022334', 'MD123123213213', 'Moldova', 'Chisinau', 'Alba Iulia', '112', 1, 45, '2001-03-24', 'MD', 'F', 'A43244345', '2019-07-09', '2026-07-09'); INSERT INTO Client (IDNP, Nume, Prenume, Email, Telefon, Codul_IBAN, Tara, Localitatea, Strada, Numar, Scara, Apartament, Data_nasterii, Cetatenia, Sex, Numarul_buletin, Data_emiterii_buletin, Data_expirarii_buletin) VALUES ('2003134234563', 'Marin', 'Balan', '[email protected]', '+37359456467', 'MD3289339895693', 'Moldova', 'Chisinau', 'Kogalniceanu', '32', 3, 95, '1997-06-01', 'MD', 'M', 'A43243455', '2012-08-19', '2034-08-19'); INSERT INTO Client (IDNP, Nume, Prenume, Email, Telefon, Codul_IBAN, Tara, Localitatea, Strada, Numar, Scara, Apartament, Data_nasterii, Cetatenia, Sex, Numarul_buletin, Data_emiterii_buletin, Data_expirarii_buletin) VALUES ('2003134234786', 'Ana-Maria', 'Marinescu', '[email protected]', '+37359445674', 'MD3123123131432', 'Moldova', 'Chisinau', 'Kogalniceanu', '156', 2, 55, '1978-03-30', 'MD', 'F', 'A432437886', '2020-02-09', '2030-07-07'); INSERT INTO Client (IDNP, Nume, Prenume, Email, Telefon, Codul_IBAN, Tara, Localitatea, Strada, Numar, Scara, Apartament, Data_nasterii, Cetatenia, Sex, Numarul_buletin, Data_emiterii_buletin, Data_expirarii_buletin) VALUES ('2003134237654', 'Ion', 'Calinescu', '[email protected]', '+37360908654', 'MD1231232132135', 'Moldova', 'Chisinau', 'Stefan cel Mare', '32', 1, 9, '1997-06-01', 'MD', 'M', 'A43297533', '2018-03-19', '2026-03-19');

Figura 2.5 - Completarea tabelului Client

INSERT INTO Cont_curent (Codul_IBAN, Id_filiala, Data_deschiderii, Data_inchiderii, Valuta, Suma_cont) VALUES ('MD328933989339393', 1, '2012-09-17', NULL, 'MDL', 1200.12) INSERT INTO Cont_curent (Codul_IBAN, Id_filiala, Data_deschiderii, Data_inchiderii, Valuta, Suma_cont) VALUES ('MD3123123131232', 1, '2010-09-17', NULL, 'USD', 2254.00) INSERT INTO Cont_curent (Codul_IBAN, Id_filiala, Data_deschiderii, Data_inchiderii, Valuta, Suma_cont) VALUES ('MD123123213213', 2, '2013-09-17', NULL, 'MDL', 3200.22) INSERT INTO Cont_curent (Codul_IBAN, Id_filiala, Data_deschiderii, Data_inchiderii, Valuta, Suma_cont) VALUES ('MD3289339895693', 3, '2017-04-01', NULL, 'MDL', 11250.12) INSERT INTO Cont_curent (Codul_IBAN, Id_filiala, Data_deschiderii, Data_inchiderii, Valuta, Suma_cont) VALUES ('MD3123123131432', 4, '2012-11-22', NULL, 'USD', 8002.00)

13

INSERT INTO Cont_curent (Codul_IBAN, Id_filiala, Data_deschiderii, Data_inchiderii, Valuta, Suma_cont) VALUES ('MD1231232132135', 5, '2008-10-12', NULL, 'MDL', 13200.22)

Figura 2.6 - Completarea tabelului Cont_curent INSERT INTO Cont_depozit (Codul_IBAN, Suma_cont, Cont_curent_IBAN) VALUES ('MD32398932339323693', 1000, 'MD3123123131232'), ('MD32893345989339393', 3000, 'MD123123213213'), ('MD32822933989339393', 4000, 'MD328933989339393') INSERT INTO Cont_depozit (Codul_IBAN, Suma_cont, Cont_curent_IBAN) VALUES ('MD32822933989864357', 7000, 'MD3289339895693'), ('MD32822933999978643', 14000, 'MD1231232132135'), ('MD32822933999765444', 24000, 'MD3123123131432');

Figura 2.7 - Completarea tabelului Cont_depozit INSERT INTO Tranzactii_banesti (Tipul_tranzactie, Suma_tranzactiei, Descrierea_tranzactiei, Data_tranzactiei, Ora_tranzactiei, Valuta, Codul_IBAN) VALUES ('Operatie de suplinire a depozitului', 1000.00, 'Tranzactie efectuata cu succes', '202004-20', '18:21:56', 'MDL', 'MD3289339895693'); INSERT INTO Tranzactii_banesti (Tipul_tranzactie, Suma_tranzactiei, Descrierea_tranzactiei, Data_tranzactiei, Ora_tranzactiei, Valuta, Codul_IBAN) VALUES ('Operatie de suplinire a depozitului', 150.00, 'Tranzactie efectuata cu succes', '202010-11', '17:01:56', 'MDL', 'MD328933989339393'); INSERT INTO Tranzactii_banesti (Tipul_tranzactie, Suma_tranzactiei, Descrierea_tranzactiei, Data_tranzactiei, Ora_tranzactiei, Valuta, Codul_IBAN) VALUES ('Operatie de suplinire a depozitului', 200.00, 'Tranzactie efectuata cu succes', '202001-14', '21:12:56', 'MDL', 'MD1231232132135'); INSERT INTO Tranzactii_banesti (Tipul_tranzactie, Suma_tranzactiei, Descrierea_tranzactiei, Data_tranzactiei, Ora_tranzactiei, Valuta, Codul_IBAN) VALUES

14

('Operatie de depundere a numerarului', 1300.00, 'Tranzactie efectuata cu succes', '202112-21', '13:00:56', 'MDL', 'MD3123123131432'); INSERT INTO Tranzactii_banesti (Tipul_tranzactie, Suma_tranzactiei, Descrierea_tranzactiei, Data_tranzactiei, Ora_tranzactiei, Valuta, Codul_IBAN) VALUES ('Operatie de eliberare a numerarului', 5800.00, 'Tranzactie efectuata cu succes', '202110-01', '08:05:56', 'MDL', 'MD1231232132135'); INSERT INTO Tranzactii_banesti (Tipul_tranzactie, Suma_tranzactiei, Descrierea_tranzactiei, Data_tranzactiei, Ora_tranzactiei, Valuta, Codul_IBAN) VALUES ('Operatie de depundere a numerarului', 100.00, 'Tranzactie efectuata cu succes', '202111-13', '22:22:56', 'EUR', 'MD3289339895693');

Figura 2.8 - Completarea tabelului Tranzactii_banesti INSERT INTO Depozite (Data_aparitiei, Data_stoparii, Data_modificarii_ratei_flotante, Termen_pastrare_bani_luni, Varsaminte_depozit, Prelungire_automata, Codul_IBAN, Id_tip_depozit) VALUES ('2021-06-02', NULL, NULL, 6, 'Nu', 'Nu', 'MD32398932339323693', 1); INSERT INTO Depozite (Data_aparitiei, Data_stoparii, Data_modificarii_ratei_flotante, Termen_pastrare_bani_luni, Varsaminte_depozit, Prelungire_automata, Codul_IBAN, Id_tip_depozit) VALUES ('2021-08-12', NULL, NULL, 12, 'Nu', 'Nu', 'MD32893345989339393', 2); INSERT INTO Depozite (Data_aparitiei, Data_stoparii, Data_modificarii_ratei_flotante, Termen_pastrare_bani_luni, Varsaminte_depozit, Prelungire_automata, Codul_IBAN, Id_tip_depozit) VALUES ('2021-07-02', NULL, NULL, 6, 'Nu', 'Nu', 'MD32822933989339393', 3); INSERT INTO Depozite (Data_aparitiei, Data_stoparii, Data_modificarii_ratei_flotante, Termen_pastrare_bani_luni, Varsaminte_depozit, Prelungire_automata, Codul_IBAN, Id_tip_depozit) VALUES ('2020-08-13', NULL, NULL, 6, 'Nu', 'Nu', 'MD32822933989864357', 4); INSERT INTO Depozite (Data_aparitiei, Data_stoparii, Data_modificarii_ratei_flotante, Termen_pastrare_bani_luni, Varsaminte_depozit, Prelungire_automata, Codul_IBAN, Id_tip_depozit) VALUES ('2021-05-01', NULL, NULL, 12, 'Nu', 'Nu', 'MD32822933999978643', 5); INSERT INTO Depozite (Data_aparitiei, Data_stoparii, Data_modificarii_ratei_flotante, Termen_pastrare_bani_luni, Varsaminte_depozit, Prelungire_automata, Codul_IBAN, Id_tip_depozit) VALUES ('2021-12-22', NULL, NULL, 18, 'Nu', 'Nu', 'MD32822933999765444', 6);

15

INSERT INTO Depozite (Data_aparitiei, Data_stoparii, Data_modificarii_ratei_flotante, Termen_pastrare_bani_luni, Varsaminte_depozit, Prelungire_automata, Codul_IBAN, Id_tip_depozit) VALUES ('2018-08-13', '2020-09-13', NULL, 6, 'Nu', 'Nu', 'MD32822933989864357', 1);

INSERT INTO Depozite (Data_aparitiei, Data_stoparii, Data_modificarii_ratei_flotante, Termen_pastrare_bani_luni, Varsaminte_depozit, Prelungire_automata, Codul_IBAN, Id_tip_depozit) VALUES ('2016-05-01', '2021-02-12', NULL, 12, 'Nu', 'Nu', 'MD32822933999978643', 3); INSERT INTO Depozite (Data_aparitiei, Data_stoparii, Data_modificarii_ratei_flotante, Termen_pastrare_bani_luni, Varsaminte_depozit, Prelungire_automata, Codul_IBAN, Id_tip_depozit) VALUES ('2009-12-22', '2013-09-15', NULL, 18, 'Nu', 'Nu', 'MD32822933999765444', 2); INSERT INTO Depozite (Data_aparitiei, Data_stoparii, Data_modificarii_ratei_flotante, Termen_pastrare_bani_luni, Varsaminte_depozit, Prelungire_automata, Codul_IBAN, Id_tip_depozit) VALUES ('2014-08-13', '2018-10-19', NULL, 6, 'Nu', 'Nu', 'MD32822933989864357', 1); INSERT INTO Depozite (Data_aparitiei, Data_stoparii, Data_modificarii_ratei_flotante, Termen_pastrare_bani_luni, Varsaminte_depozit, Prelungire_automata, Codul_IBAN, Id_tip_depozit) VALUES ('2006-05-01', '2019-12-15', NULL, 12, 'Nu', 'Nu', 'MD32822933999978643', 3); INSERT INTO Depozite (Data_aparitiei, Data_stoparii, Data_modificarii_ratei_flotante, Termen_pastrare_bani_luni, Varsaminte_depozit, Prelungire_automata, Codul_IBAN, Id_tip_depozit) VALUES ('2009-01-29', '2010-09-13', NULL, 18, 'Nu', 'Nu', 'MD32822933999765444', 2);

Figura 2.9 - Completarea tabelului Depozite

16

3. Administrarea Bazei de Date 3.1. Baza de date va avea o creștere a fișierului primar a bazei de date de 2MB cu limita de creștere de 500 MB și a logului de 2 MB cu limita de creștere de 100MB. Locul amplasare a fesierilor BD să este pe discul D.  

Figura 2 - Crearea bazei de date

3.2. Sa se creeze doua planuri de întreținere al bazei de date care realizeaza :  

Reconstruirea indecșilor asupra tabelelor bazei de date  



Crearea backup complet și diferențiat al bazei de date  



Ștergerea istoriei despre operațiile de Backup-Restore ce au avut loc pe SQL Server.

Trebuie șters istoricul care este mai vechi de 6 săptămâni.  

17

Figura 3 - Planul de întreținere a bazei de date 3.3 La schema bazei de date vor fi definiti 2 utilizatori, unul cu drepturi depline de administrator, altul cu drepturi limitate.  USE [Depozite bancare] GO IF EXISTS (SELECT * FROM master.sys.sql_logins WHERE name = N'administrator_login') DROP LOGIN administrator_login IF EXISTS (SELECT * FROM master.sys.sql_logins WHERE name = N'commonUser_login') DROP LOGIN commonUser_login DROP USER IF EXISTS administrator DROP USER IF EXISTS commonUser CREATE LOGIN administrator_login WITH PASSWORD = 'admin12345' CREATE LOGIN commonUser_login WITH PASSWORD = 'default535' CREATE USER administrator FOR LOGIN administrator_login; CREATE USER commonUser FOR LOGIN commonUser_login GO GRANT CONTROL ON SCHEMA::dbo TO administrator GRANT SELECT ON SCHEMA::dbo TO commonUser

18

4. Interogarea Bazei de Date USE [Depozite bancare] GO /*4.1. Să se formuleze în SQL 5 interogări, la discreția echipei. În interogări se vor folosi funcții de agregare, gruparea, subinterogări, joinuri. Să se formuleze textul interogării în limbajul natural, scris ca comentariu in codul SQL.*/ /*Sa se extraga din baza de date numele si prenumele clientilor ce si-au deschis cont la filiala cu denumirea 'Sucursala nr.1'*/ SELECT Nume, Prenume FROM Client JOIN Cont_curent ON Client.Codul_IBAN = Cont_curent.Codul_IBAN JOIN Filiale ON Filiale.Id_filiala = Cont_curent.Id_filiala WHERE Filiale.Denumirea = 'Sucursala nr.1' GO /*Sa se stearga din tabelul Cont curent contul ce apartine clientului ce are prenumele 'Ion'*/ DELETE FROM Cont_curent WHERE Cont_curent.Codul_IBAN = ANY( SELECT Cont_curent.Codul_IBAN FROM Cont_curent JOIN Client ON Client.Codul_IBAN = Cont_curent.Codul_IBAN WHERE Client.Prenume = 'Ion') /*Sa se extraga numarul de clienti ce si-au deschis cont de depozit de tipul cu id-ul 2 si 3*/ SELECT COUNT(IDNP) AS Num_clienti FROM Client JOIN Cont_curent AS curent ON curent.Codul_IBAN = Client.Codul_IBAN JOIN Cont_depozit AS depozit ON depozit.Cont_curent_IBAN = curent.Codul_IBAN JOIN Depozite ON depozite.Codul_IBAN = depozit.Codul_IBAN JOIN Tipuri_depozite AS tip ON tip.Id_tip_depozit = Depozite.Id_tip_depozit WHERE Tip.Id_tip_depozit BETWEEN 2 AND 3 /*Se se extraga sumele minime pentru valutele ce se includ in contul de depozit pentru fiecare client*/ SELECT Suma_minima FROM Valute JOIN Tipuri_depozite AS tip ON tip.Id_tip_depozit = Valute.Id_tip_depozit JOIN Depozite ON Depozite.Id_tip_depozit = tip.Id_tip_depozit JOIN Cont_depozit AS depozit ON depozit.Codul_IBAN = Depozite.Codul_IBAN JOIN Cont_curent AS curent ON curent.Codul_IBAN = depozit.Cont_curent_IBAN JOIN Client ON Client.Codul_IBAN = curent.Codul_IBAN /*Se se seteze temenul de pastare a banilor pentru depozitele ce au rata dobanzii mai mare decat 2 la 18 luni*/ UPDATE Depozite SET Termen_pastrare_bani_luni = 18 FROM Depozite JOIN Tipuri_depozite As tip ON tip.Id_tip_depozit = Depozite.Id_tip_depozit JOIN Valute ON Valute.Id_tip_depozit = tip.Id_tip_depozit JOIN Rata_dobanzii AS rata ON (rata.Id_tip_dobanda = Valute.Id_tip_depozit AND rata.Cod_valuta = Valute.Cod_valuta) WHERE rata.Rata_dobanzii > 2

19

Figura 4 - Setarea termenului de păstrare a banilor

5.Tranzacții 5.1 Înregistrarea unui client nou.  USE [Depozite bancare] GO SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED BEGIN TRANSACTION add_client DECLARE @Data_emiterii AS DATE DECLARE @Data_expirarii AS DATE SET @Data_emiterii = '2017-03-30' SET @Data_expirarii = '2026-01-19' INSERT INTO Client (IDNP, Nume, Prenume, Email, Telefon, Codul_IBAN, Tara, Localitatea, Strada, Numar, Scara, Apartament, Data_nasterii, Cetatenia, Sex, Numarul_buletin, Data_emiterii_buletin, Data_expirarii_buletin) VALUES ('2005003051195', 'Covrig', 'Victor', '[email protected]', '+37360406822', 'MD23456643212566642', 'Moldova', 'Chisinau', 'Paris', '10', NULL, NULL, '2001-01-19', 'MD', 'M', 'B03045673', '2017-03-30', '2026-01-19'); IF @Data_emiterii > @Data_expirarii BEGIN ROLLBACK TRANSACTION add_client PRINT 'Data emiterii nu poate fi mai mare decat data exirarii' END ELSE BEGIN COMMIT TRANSACTION add_client PRINT 'Clientul a fost adaugat cu succes' END

20

Figura 5.1- Înregistrarea unui client nou 5.2 Deschiderea unui cont curent nou.  BEGIN TRANSACTION add_current_account INSERT INTO Cont_curent (Codul_IBAN, Id_filiala, Data_deschiderii, Data_inchiderii, Valuta, Suma_cont) VALUES ('MD23456643212566642', 2, '2020-02-20', NULL, 'MDL', 0) COMMIT TRANSACTION add_current_account

Figura 5.2 - Deschiderea unui cont curent 5.3 Deschiderea unui cont de depozit, legat de un cont curent.  BEGIN TRANSACTION open_deposit_account INSERT INTO Cont_depozit (Codul_IBAN, Suma_cont, Cont_curent_IBAN) VALUES ('MD323980301091023', 1000, 'MD23456643212566642') INSERT INTO Depozite (Data_aparitiei, Data_stoparii, Data_modificarii_ratei_flotante, Termen_pastrare_bani_luni, Varsaminte_depozit, Prelungire_automata, Codul_IBAN, Id_tip_depozit) VALUES ('2020-03-02', '2021-03-02', NULL, 12, 'Da', 'Da', 'MD32398932339323693', 2) COMMIT TRANSACTION open_deposit_account

Figura 5.3 - Deschiderea unui cont de depozit 5.4 Depunerea suplimentară de bani de către client într-un cont de depozit existent (suplinirea depozitului), daca acest lucru este acceptat de condițiile depozitului. Suma depusa nu trebuie sa fie mai mică de suma minimă admisă pentru suplinire.  21

BEGIN TRANSACTION depunere_suplimentara DECLARE @Suma_depusa AS FLOAT DECLARE @IsAccepted AS VARCHAR(70) DECLARE @MinSum AS REAL SET @MinSum = (SELECT Completare_suma_lei FROM Tipuri_depozite WHERE Id_tip_depozit = 2) SET @Suma_depusa = FLOOR(RAND()*(1000.00)+7000.00) SET @IsAccepted = (SELECT Completare FROM Tipuri_depozite AS tipuri JOIN Depozite AS depozite ON depozite.Id_tip_depozit = tipuri.Id_tip_depozit WHERE depozite.Codul_IBAN = 'MD323980301091023') UPDATE Cont_depozit SET Suma_cont = CASE WHEN @IsAccepted LIKE 'Da%' THEN Suma_cont + @Suma_depusa ELSE Suma_cont END WHERE Codul_IBAN = 'MD323980301091023' IF @Suma_depusa >= @MinSum AND @MinSum IS NOT NULL BEGIN COMMIT TRANSACTION depunere_suplimentara END ELSE BEGIN ROLLBACK TRANSACTION depunere_suplimentara END

Figura 5.4 - Suplinirea depozitului 5.5 Retragerea partială a banilor din cont, daca e permisă de conditiile depozitului, cu o sumă care e permisă, conform condițiilor depozitului.  SET TRANSACTION ISOLATION LEVEL REPEATABLE READ BEGIN TRANSACTION retragere_partiala DECLARE @IsPermited AS VARCHAR(4) DECLARE @Suma_permisa AS REAL DECLARE @Bilant_cont AS REAL SET @IsPermited = (SELECT Retrageri FROM Tipuri_depozite WHERE Id_tip_depozit = 2) SET @Suma_permisa = FLOOR(RAND()*(100.00)+1000.00) SET @Bilant_cont = (SELECT Suma_cont FROM Cont_depozit

22

WHERE Codul_IBAN = 'MD323980301091023') UPDATE Cont_depozit SET Suma_cont = Suma_cont - @Suma_permisa WHERE Codul_IBAN = 'MD323980301091023' IF @Suma_permisa < @Bilant_cont AND @IsPermited = 'Da' BEGIN COMMIT TRANSACTION retragere_partiala END ELSE BEGIN ROLLBACK TRANSACTION retragere_partiala END

Figura 5.5 - Retragerea parțială

5.6 Retragerea sumei de bani din contul curent de catre client.  BEGIN TRANSACTION retragere_cont_curent DECLARE @Bilant_cont1 AS REAL SET @Bilant_cont1 = (SELECT Suma_cont FROM Cont_curent WHERE Codul_IBAN = 'MD23456643212566642') DECLARE @Suma_retrasa AS REAL SET @Suma_retrasa = FLOOR(RAND()*(100.00)+1000.00) UPDATE Cont_curent SET Suma_cont = Suma_cont - @Suma_retrasa WHERE Codul_IBAN = 'MD23456643212566642' IF @Suma_retrasa < @Bilant_cont1 BEGIN COMMIT TRANSACTION retragere_cont_curent END ELSE BEGIN ROLLBACK TRANSACTION retragere_cont_curent END

Figura 5.6 - Retragerea unei sume de bani

23

5.7 Prelungirea automata a depozitului, daca acest lucru corespunde cu conditiile tipului respectiv de depozit.  BEGIN TRANSACTION prelungire_automata DECLARE @current_data AS DATE SET @current_data = GETDATE() UPDATE Depozite SET Data_aparitiei = CASE WHEN Prelungire_automata = 'da' THEN @current_data ELSE Data_aparitiei END WHERE Codul_IBAN = 'MD323980301091023' UPDATE Depozite SET Data_stoparii = CASE WHEN Prelungire_automata = 'da' THEN DATEADD(month, Termen_pastrare_bani_luni, @current_data) ELSE Data_stoparii END WHERE Codul_IBAN = 'MD323980301091023' COMMIT TRANSACTION prelungire_automata

Figura 5.7 - Prelungirea automată a depozitului

24

Concluzii În prezent bazele de date sunt utilizate practic peste tot, fiecare companie, întreprindere mai ales cu caracter de producere, comercializare are nevoie și la sigur implimentează în sistemul lor o bază de date. Pentru o utilizare fiabilă și corectă a unei baze de date este important să se urmărească pașii corecți în realizarea și proiectarea bazei. Important este ca fiecare etapă în elaborare să se parcurgă conform cerințelor acest lucru fiind într-un mod ierarhic. În urma efectuării proiectului au fost însușite noțiuni noi în tot ceea ce ține de bazele de date. Sa început cu proiectarea unei baze de date, stabilirea problemei pe care are drept scop să o rezolve și descrierea pașilor pentru a atinge scopul dorit. Au fost studiate posibilitățile de manipulare a date prin limbajul T-SQL și anume: crearea bazei de date, crearea planului de întreținere, creare cheilor: PRIMARY KEY, FOREIGN KEY SECONDARY KEY. Au fost analizate interogările sql: interogări cu clauza where, like, interogări cu joncțiuni externe, subinterogări cu operatorul IN, FROM, EXISTS. Baza de date, prezintă, în principal, urmatoarele avantaje:  posibilitatea extragerii înregistrarilor ce corespund anumitor crierii  actualizarea simultană a înregistrărilor  interconectarea datelor din diferite tabele  realizarea de calcule complexe

Bibliografie 1. Noțiuni elementare despre bazele de date [resursa online] - regim de acces: https://support.microsoft.com/ro-ro/office/no%C8%9Biuni-elementare-despre-bazele-de-datea849ac16-07c7-4a31-9948-3c8c94a7c204 2. SQL 3 [resursa online] – regim de acces: https://ro.wikipedia.org/wiki/SQL 3. 3. Vitalie Cotelea, Algebra relationala si limbajul SQL, 2013 [resursa online], pp 225–234 – regim de acces: https://else.fcim.utm.md/pluginfile.php/38778/mod_resource/content/1/Algebra%20relationala %20si%20limbajul%20SQL.pdf 4. Normalizarea bazei de date [resursa online] – regim de acces: https://else.fcim.utm.md/pluginfile.php/54998/mod_resource/content/1/Normalizare.pdf 5. Interogări în SQL [resursa online] – regim de acces: https://else.fcim.utm.md/pluginfile.php/51189/mod_resource/content/1/Curs_06.pdf 25

6. Structura limbajului SQL [resursa online] – regim de acces: https://uncoded.ro/structura-limbajului-sql/

26