Baze de date. Noţiuni deare a bazelor de date relaţionale




La nivelul cel mai general, o bază de date reprezintă o modalitate de stocare a unor informaţii (date) pe un suport extern, cu posibilitatea regăsirii acestora. Uzual, o bază de date este memorată într-unul sau mai multe fişiere.
Aplicaţiile care folosesc baze de date sunt, în general, aplicaţii complexe folosite pentru gestionarea unor informaţii de dimensiuni mari într-o manieră sigură şi eficientă.
Organizarea datelor în baze de date constituie o forma de centralizare a acestora, sub influenţa unui administrator al bazei de date, ceea ce prezintă o serie de avantaje: reducerea redondanţei datelor memorate, evitarea inconsistenţei datelor memorate, posibilitatea partajării datelor, posibilitatea aplicării restricţiilor de securitate, menţinerea integrităţii datelor, încurajarea introducerii standardelor.
Dintre producătorii cei mai importanţi de baze de date trebuie amintite companiile Oracle, Microsoft, Sybase, IBM, Informix, etc. fiecare furnizând o serie întreagă de produse şi utilitare pentru lucrul cu baze de date. Aceste produse sunt în general referite prin termenii DBMS (Database Management System) sau, în traducere, SGBD (Sistem de Gestiune a Bazelor de Date).



Caracteristicile unei baze de date[3]:
. Asigură independenţa datelor prin prezenţa Schemei de Date, precum şi a Limbajului de Definire a Datelor (LDD), asociat schemelor de date
. Asigură accesul (cel mai adesea multiaccesul) la colecţii mari de date prin prezenţa Nivelului Fizic de Acces la Date precum şi a Limbajului de Manipulare a Datelor (LMD). Totodată există implementate funcţii de Securitate a Datelor; asigurarea securităţii se realizează prin controlul accesului la date şi prin restaurarea colecţiilor de date în caz de incident.

Deşi există mai multe posibilităţi de organizare a datelor într-o bază de date, o baza de date relaţională este una dintre cele mai eficiente, deoarece foloseşte un set de teorii din matematică pentru a organiza datele.
Modelul clasic de baze de date este de fapt cel relaţional, în care datele sunt memorate în tabele. Un tabel reprezintă o structură de date formată dintr-o mulţime de articole, fiecare articol având definite o serie de atribute - aceste atribute corespund coloanelor tabelului, în timp ce o linie va reprezenta un articol. Pe lângă tabele, o bază de date mai poate conţine: proceduri şi funcţii, utilizatori şi grupuri de utilizatori, tipuri de date, obiecte, etc.
Pentru proiectarea unei baze de date, trebuie urmaţi o serie de paşi.
În primul rând, deoarece datele în sine nu constituie informaţie, pentru a fi utile în procesul de inferare a informaţiei, ele trebuie să fie organizate într-un anumit mod. Pentru aceasta este necesară o modelare a datelor prin care se urmăreşte organizarea lor, astfel încât să fie îndeplinite următoarele două cerinţe:
- să se reprezinte cât mai fidel situaţia din lumea reală;
- datele să fie adaptate reprezentării şi prelucrării pe calculator.[1]
Un model de date este un instrument teoretic care permite obţinerea unei interpretări adecvate a datelor. Modelarea datelor, în vederea utilizării lor pentru a fi utilizate în aplicaţii, presupune identificarea celor mai importante caracteristici ale datelor, caracteristici care surprind esenţa semnificaţiei acestora. Modul în care datele sunt stocate este foarte important pentru felul în care ele pot fi accesate şi manipulate utilizând limbajul SQL.
Pentru structurarea şi vizualizarea datelor se foloseşte abstractizarea. Abstractizarea constă în neglijarea aspectelor nerelevante şi concentrarea asupra proprietăţilor care prezintă interes dintr-un anumit punct de vedere (se reţin acele elemente care sunt relevante pentru scopul propus). În modelarea datelor, abstractizarea este folosită pentru a obţine categorii de date sau pentru a combina categorii de date în categorii mai generale.
O formă elementară de abstractizare este tipizarea, prin care se defineşte un tip pornind de la o clasă de obiecte similare. Relativ la obiectele din bazele de date se folosesc două forme de abstractizare:
a) generalizarea - care asociază unei mulţimi de obiecte sau unei mulţimi de tipuri un singur tip generic;
b) agregarea - prin care un obiect este construit din părţile sale componente.[1]
. Deoarece bazele de date relaţionale nu au analogii în lumea reală, cele mai multe dintre ele încearcă să modeleze câteva aspecte ale lumii reale. Acea parte a lumii care se doreşte a fi modelată se numeşte spaţiul problemei. În această parte de identificare o mare importanţă o are abstractizarea. Pentru succesul unui proiect este vitală delimitarea corectă a spaţiului problemei şi definirea unui set de obiecte şi interacţiuni.
. După stabilirea spaţiului problemei, următorul pas constă în descrierea conceptuală a spaţiului problemei printr-un model de date. Aceasta include definirea entităţilor, atributelor lor şi a relaţiilor şi constrângerilor dintre entităţi. Prin entitate se înţelege ceva ce există şi se poate distinge de restul universului[1]; este un conţinut de sine stătător, o realitate obiectivă care există prin ea însăşi. Orice entitate este caracterizată prin proprietăţile sale reprezentate de atribute.

. Urmează partea de transformare a modelului de date în schema relaţională. Aceasta este o reprezentare fizică a modelului conceptual, care poate fi implementată folosind un sistem de gestiune a bazelor de date. Schema nu reprezintă nimic altceva decât modelul de date exprimat în termeni cunoscuţi de database engine - tabele, triggere, etc. Realizarea schemei se poate face fie folosind un mediu interactiv (ca Enterprise Manager în SQL Server 2000), fie scriind cod.
. Engine va crea câteva obiecte fizice (de obicei undeva pe hard disk) în care vor putea fi stocate date. Combinaţia dintre această structură şi date va reprezenta de fapt baza de date. Această bază de date include tabelele, vederile definite, interogările, procedurile stocate şi regulile pe care engine le va impune pentru a proteja datele. [6]

Termenul de bază de date nu include aplicaţia, care conţine rapoarte cu care utilizatorii vor interacţiona. De asemenea, noţiunea exclude şi database engine. Pentru a descrie toate aceste componente - aplicaţia, baza de date, database engine şi middleware - se foloseşte termenul de sistem al bazei de date. [6]


Tabele. Chei. Relaţii

Tabelele în modelul relaţional sunt folosite pentru a reprezenta entităţi (obiecte/evenimente din lumea reală). Fiecare tabel trebuie să reprezinte o singură entitate. Un tabel este format din linii (înregistrări, tuple) şi coloane(atribute, câmpuri), iar modelul relaţional cere ca fiecare tuplă să fie unic identificată. Dacă se permit înregistrări duplicate într-un tabel, atunci este imposibilă adresarea unei anumite linii. Aceasta ar crea ambiguităţi şi probleme care se recomandă a fi evitate.
Garantarea unicităţii unui tabel este făcută de către aşa numita cheie primară - o combinaţie de una sau mai multe coloane care identifică în mod unic fiecare rând. Deoarece datele nu pot fi accesate în funcţie de locaţia lor fizică, este nevoie de o descriere logică a lor pentru ca engine să le găsească [curs - Keys.ppt].
Fiecare tabel poate avea o singură cheie primară, chiar dacă mai multe coloane sau combinaţii ale coloanelor conţin valori unice. Toate coloanele dintr-un tabel care conţin valori unice sunt referite sub numele de chei candidate, dintre care trebuie aleasă cheia primară.
Cheile pot fi simple sau compuse. O cheie simplă este formată dintr-un singur atribut (o singură coloană), iar o cheie compusă constă din două sau mai multe atribute. Decizia de a alege o cheie primară aparţine administratorului bazei de date, însă nu există o regulă care să spună care din cheile candidate e cea mai bună. Totuşi, după cum menţionează Fabian Pascal în cartea sa "SQL and Relational Basics", decizia ar trebui să se bazeze pe următoarele principiile: minimalitate (cheia primară să fie reprezentată de cât mai puţine coloane), stabilitate (alegerea unei chei nevolatile - neschimbătoare) şi simplitate/familiaritate (alegerea unei chei care e simplă şi familiară pentru utilizatori).[7]
O altă componentă importantă a bazelor de date o reprezintă relaţiile. Între două tabele este o relaţie dacă există posibilitatea de a asocia înregistrările primului tabel cu înregistrările celui de-al doilea tabel [8]. Pentru a modela relaţiile din lumea reală, trebuie definite cheile străine. Când se determină faptul că între două tabele există o relaţie, această relaţie este stabilită luând o copie a cheii primare din prima tabelă şi încorporând-o în structura celei de-a doua tabele, unde devine cheie străină. Aceasta, în afară de faptul că stabileşte o legătură între doua tabele, asigură şi integritatea relaţiei: înregistrările din ambele tabele vor fi întotdeauna corect relaţionate deoarece valorile cheii străine trebuie să se potrivească cu valorile cheii primare la care se referă.[8]
Aşadar, relaţiile pot fi stabilite printr-un set de chei primare şi străine, dar şi printr-o a treia tabelă numită tabelă de legătură. Modul în care se stabileşte relaţia depinde de tipul relaţiei care există între tabele.
Există trei tipuri de relaţii între tabele (cunoscute şi sub numele de cardinalitate): one-to-one, one-to-many şi many-to-many.
Relaţia one-to-one dintre două tabele apare atunci când o singură înregistrare din prima tabelă este în relaţie cu o singură înregistrare din tabela a doua şi o singură înregistrare din a doua tabelă este în relaţie cu o singură înregistrare din prima tabelă.
O relaţie one-to-many dintre două tabele apare atunci când o singură înregistrare din prima tabelă poate fi în relaţie cu o mai multe înregistrări din tabela a doua, dar o singură înregistrare din a doua tabelă este în relaţie numai cu o singură înregistrare din prima tabelă.
O relaţie many-to-many dintre două tabele apare atunci când o singură înregistrare din prima tabelă poate fi în relaţie cu o mai multe înregistrări din tabela a doua şi o singură înregistrare din a doua tabelă este în relaţie cu mai multe înregistrări din prima tabelă. Această relaţie se stabileşte prin intermediul unei tabele de legătură, care face mai uşoară asocierea înregistrărilor dintr-o tabelă cu cele din cealaltă tabelă şi asigură faptul că nu vor exista probleme la adaugarea, stergerea sau modificarea datelor relaţionate[8].


Normalizarea relaţiilor - vezi pe qscoala.com

După ce s-au identificat entităţile sistemului, regulile de normalizare constituie un ghid pentru ca modelul de date să fie performant, eficient şi cu capabilităţi de interogare.
Normalizarea este un proces de organizare a tabelelor într-o bază de date, în structuri logice eficiente cu scopul de a elimina redundanţa datelor şi de a creşte integritatea. Aduce eficienţă atât în cazul stocării datelor, cât şi în managementul datelor. Prin eliminarea datelor redundante şi a celor derivate (date care rezultă din alte atribute), necesităţile de stocare fizică a datelor sunt reduse. Ceea ce rezultă fizic în urma normalizării este un număr mai mare de tabele mai mici, relaţionate între ele[carte4].
Deşi există şapte reguli de normalizare, numite forme, primele trei forme ale normalizării sunt cele mai semnificative şi cel mai des utilizate. Restul formelor normale sunt mai mult academice.
Prima formă normală (FN1) - elimină grupurile repetitive şi atributele neatomice (sau câmpurile care conţin valori multiple).
A doua formă normală (FN2) - elimină dependenţele parţiale. Nu se poate trece la FN2 dacă tabelele nu sunt în FN1, deoarece fiecare formă a normalizării are la bază formele de normalizare anterioare ei. Aşadar, tabelele care sunt în FN2 trebuie să îndeplinească următoarele condiţii:
- orice atribut care nu este cheie trebuie să depindă total de orice cheie a relaţiei;
- tabelele trebuie să îndeplinească regulile FN1.
A treia formă normală (FN3) - elimină atât dependenţele dintre atributele neprime (care nu sunt chei) cât şi coloanele derivate care apar. Pentru ca un tabel să fie în FN3, trebuie să urmeze următoarele reguli:
- atributele neprime nu pot fi dependente de nici un alt atribut neprim;
- trebuie înlăturată orice coloană derivată;
- tabelul trebuie să îndeplinească regulile pentru FN2. [carte4]
Regulile de normalizare sunt aplicate cu scopul de evita inconsistenţa datelor şi anomaliile de ştergere, adăugare, actualizare, apărute din cauza redundanţei datelor.

1.1. Microsoft SQL Server
Microsoft SQL Server 2000 este o soluţie complexă de analiză şi proiectare a bazelor de date, oferind din punct de vedere tehnologic caracteristici şi performanţe care permit
dezvoltarea unor aplicaţii la scară mare, extensibile şi performante. [4]
SQL Server 2000 este un sistem de gestiune al bazelor de date relaţionale (engleză RDBMS) care utilizează Transact-Sql pentru a permite comunicarea dintre un computer client şi un computer SQL Server 2000. Un RDBMS include baza de date, motorul bazei de date şi aplicaţiile necesare pentru a lucra cu datele şi componentele RDBMS-ului. RDBS-ul este responsabil pentru structura bazei de date, şi:
. Menţinerea relaţiilor dintre datele din baza de date
. Asigurarea faptului ca datele sunt stocate corect şi regulile care definesc relaţiile dintre date nu sunt încălcate
. Recuperarea datelor consistente în cazul căderii sistemului
Pentru a lucra cu datele din baza de date, trebuie utilizat un set de comenzi (un limbaj) suportat de către sistemul de gestiune al bazei de date. Cel mai comun şi mai des utilizat limbaj în acest sens este SQL. Dialectul SQL suportat de SQL Server se numeşte Transact-SQL şi este principalul limbaj folosit în aplicaţiile SQL Server.[carte4]
Nu este necesară rularea mai multor copii a motorului bazei de date pentru a permite mai multor utilizatori să acceseze baza de date pe un server. O instanţă a versiunii SQL Server Standard sau Enterprise Edition poate face faţă miilor de utilizatori care lucrează în baze de date multiple simultan. Fiecare instanţă a SQL Server face disponibile toate bazele de date din instanţă tuturor utilizatorilor care se conectează la instanţă, în conformitate cu permisiunile de securitate definite.
Conexiunea la SQL Server este asociată unei anumite baze de date de pe server, numită bază de date curentă. De obicei, conexiunea se face la baza de date definită ca implicită de către administratorul de sistem; dar se poate specifica o altă bază de date la opţiunile conexiunii. Trecerea de la o bază de date la alta se poate face prin statement-ul Transact-SQL USE database_name, sau printr-o funcţie API care modifică contextul curent al bazei de date.

Caracteristicile SQL Server 2000:
. SQL Server 2000 oferă un set de unelte grafice care uşurează procesul de instalare sau upgrade, şi permite administratorilor să efectueze sarcini administrative simplu şi rapid.
. SQL Server 2000 se reconfigurează automat singur şi dinamic, în timpul rulării. Pe măsură ce mai mulţi utilizatori se conectează, SQL Server 2000 achiziţionează dinamic resurse adiţionale ca memoria şi spaţiul de pe disc, pe care le eliberează când nu mai sunt necesare. Este de asemenea capabil de a mări sau scădea dimensiunea bazei de date automat, în funcţie de operaţiile de inserare sau ştergere.
. SQL Server 2000 oferă administratorilor un set de unelte care uşurează sarcinile administrative, ca SQL Server Enterprise Manager şi SQL Profiler.
. Administratorii SQL Server 2000 pot programa serverul astfel încât acesta să trateze condiţiile de excepţie, sau ce puţin să trimită e-mail sau pagini administratorului de serviciu.
. SQL Server 2000 este un sistem scalabil. De exemplu, se poate adapta dinamic pentru suportul bazelor de date de dimensiuni foarte mari(Very Large Database Environments) şi în plus, permite execuţia statement-urilor SQL în planuri paralele, după ce au fost împărţite în mai multe părţi. Fiecare parte poate fi procesată de unităţi de procesare diferite, ajungându-se la rezultat mult mai rapid decât în cazul în care părţile ar fi fost executate serial.
SQL Server 2000 este disponibil în diferite ediţii pentru a răspunde cererilor de performanţă, run-time şi preţ ale diferitelor organizaţii şi persoane.
- SQL Server 2000 Enterprise Edition - ediţie completă, potrivită pentru orice organizaţie
- SQL Server 2000 Standard Edition - potrivită pentru organizatiile mici şi mijlocii
- SQL Server 2000 Personal Edition - optimizată pentru uz personal;
- SQL Server 2000 Developer Edition - permite dezvoltatorilor dezvoltarea unor aplicaţii peste SQL Server
- SQL Server 2000 Desktop Engine (MSDE) - conţine motorul bazei de date SQL Server 2000, însă nu are interfaţă pentru utilizator, nici unelte de management şi limitează şi dimensiunea bazelor de date
- SQL Server 2000 Windows CE Edition - versiune a SQL Server 2000 pentru dispozitive care folosesc Windows CE Edition.

1.2. Limbajul SQL

Limbajul SQL (Structured Query Language) este un limbaj de interogare a SGBD-urilor relaţionale, dezvoltat de IBM, pentru SGBD-ul propriu System R. Este disponibil şi sub alte Sisteme de Gesiune a Bazelor de Date relaţionale, cum sunt: ORACLE, MSSQL, MySQL [1].
SQL este un limbaj neprocedural: sunt specificate informaţiile dorite, nu modul în care se obţin acestea. Cu alte cuvinte, SQL nu cere să fie specificată metoda de acces la date. Execuţia comenzilor SQL asupra înregistrărilor nu se poate face decât secvenţial, asupra câte unei singure înregistrări, setul de înregistrări fiind văzut ca set de linii ale unui tabel [1].
Limbajul SQL include comenzi pentru o varietate de sarcini, cum sunt:
- selecţia unor date;
- inserarea, extragerea şi ştergerea rândurilor dintr-un tabel;
- crearea, modificarea si ştergerea obiectelor de tip bază de date;
- controlul accesului la baza de date şi la obiectele de tip bază de date;
- verificarea - garantarea consistenţei bazei de date;
Logic, comenzile limbajului SQL sunt împărţite în trei componente:
- limbajul de definire a datelor (Data Definition Language) - DDL
- limbajul de control al datelor (Data Control Language) - DCL
- limbajul de manipulare a datelor (Data Manipulation Language) - DML
Comenzile folosite pentru definirea datelor (DDL): CREATE, ALTER, DROP. Aceste trei comenzi sunt utilizate dinamic pentru a crea, utiliza şi şterge orice structură de date, în particular tabele.
Comenzile de control (DCL) pot fi folosite numai de administratorul bazei de date (DBA). Acestea sunt: GRANT şi REVOKE, utilizate pentru a da sau a revoca drepturi de acces la comenzi DML.
Comenzile de manipulare a datelor (DML): SELECT, INSERT, UPDATE şi DELETE sunt utilizate pentru a introduce, pentru a actualiza (modifica), pentru a şterge sau pentru a selecta anumite înregistrări.

 CLAUZA SELECT
Operaţia fundamentală în SQL este maparea reprezentată din punct de vedere sintactic printr-o construcţie SELECT-FROM-WHERE. Această construcţie corespunde unei succesiuni de operatori algebrici de forma selecţie-proiecţie-cuplare, foarte frecventă în algebra relaţională.
Clauza SELECT realizează operaţia de proiecţie şi este urmată de lista atributelor care se reţin în relaţia rezultat. Proiecţia SQL diferă de operatorul de proiecţie din algebra relaţională prin faptul că nu elimină tuplele duplicat. Eliminarea tuplelor duplicat se face de către utilizator, atunci când se doreşte, prin folosirea operatorului DISTINCT.
Operaţia de cuplare poate fi realizată prin clauza FROM, atunci când este urmată de o listă formată din cel puţin două nume de relaţie, împreună cu condiţia de cuplare formulată în cazul predicatului din clauza WHERE. [2]
Sintaxa instrucţiunii este următoarea:

Clauza INTO - creează o nouă tabelă în care se inserează relaţia rezultat.
Clauza FROM - specifică sursele din care se selectează tuplele (tabele, vederi, fraze SELECT imbricate). Această clauză este obligatorie ori de câte ori în clauza SELECT se face referire la cel puţin un nume de atribut.
Clauza WHERE - specifică o condiţie de căutare prin care se restricţionează setul tuplelor din relaţia rezultat.
Clauza GROUP BY - specifică grupurile care se formează din tuplele selectate prin clauzele anterioare.
Clauza HAVING - specifică o condiţie de căutare la nivelul grupurilor. Clauza HAVING poate fi folosită numai în prezenţa clauzei GROUP BY.
În SQL Server se poate folosi operatorul UNION pentru a reuni rezultatele mai multor fraze SELECT într-o singură relaţie rezultat.

 Instrucţiunea INSERT
Adaugă una sau mai multe tuple noi la o tabelă sau vedere. Sintaxa instrucţiunii este următoarea:

nume_tabela - este numele tabelei în care se face inserarea
nume_vedere - este numele unei vederi actualizabile în care se face inserarea
lista_coloane - este o listă de una sau mai multe coloane
VALUES - precede lista de valori de inserat.
valoare - lista valorilor de inserat
Între valori şi numele de atribute trebuie să existe o corespondenţă unu la unu.

 Instrucţiunea UPDATE
Instrucţiunea permite modificarea datelor existente într-o tabelă. Sintaxa instrucţiunii este următoarea:

nume_tabela - este numele tabelei în care se face inserarea
nume_vedere - este numele unei vederi actualizabile în care se face inserarea
nume_coloana = expresie_de_actualizare - setează coloana specificată la variabila specificată prin expresie_de_actualizare
Operatorul de actualizare îndeplineşte două funcţii:
- selectează prin condiţia de căutare din clauza WHERE tuplele care urmează a fi actualizate (în lipsa clauzei, se actualizează implicit toate tuplele relaţiei specificate);
- în tuplele selectate modifică valorile atributelor specificate. Expresiile de actualizare pot conţine: constante, nume de atribute, valoarea NULL sau expresii aritmetice construite cu acestea. În SQL este permisă chiar şi actualizarea atributelor care fac parte dintr-o cheie primară.

 Instrucţiunea DELETE
Instrucţiunea realizează ştergerea de tuple dintr-o tabelă.
Sintaxa instrucţiunii este următoarea:

nume_tabela - este numele tabelei în care se face ştergerea
nume_vedere - este numele unei vederi actualizabile în care se face ştergerea


1.3. Proceduri stocate şi triggere SQL Server

Orice aplicaţie care doreşte comunicarea cu SQL Server trebuie să folosească limbajul Transact-SQL. Acesta este o extensie a limbajului SQL: are la bază toate noţiunile SQL prezentate
anterior, dar în plus aduce şi alte particularităţi.
Două dintre cele mai importante particularităţi, de o mare utilitate, sunt procedurile stocate şi trigger-ele.

a) Proceduri stocate
O procedură stocată reprezintă un grup de instrucţiuni care sunt compilate odată şi care pot fi executate apoi de mai multe ori. Această funcţionalitate determină creşterea performanţei sistemului, deoarece la execuţia procedurii, instrucţiunile Transact-SQL nu trebuie recompilate.
Procedurile stocate din SQL Server sunt similare procedurilor din alte limbaje de programare, în sensul că: acceptă parametrii de intrare şi returnează valori prin parametri de ieşire; conţin instrucţiuni de programare care efectuează operaţii în baza de date şi pot apela, la rândul lor alte proceduri stocate; returnează către apelant o valoare care indică succesul sau eşecul execuţiei procedurii, eventual cauza eşecului [2].
Utilizarea procedurilor stocate prezintă mai multe avantaje faţă de varianta programelor stocate la nivelul aplicaţiilor utilizator:
. Programare modulară: o procedură stocată poate fi creată o singură dată şi apelată de mai multe ori din mai multe aplicaţii.
. Performanţă îmbunătăţită: în cazul programelor cu volum mare de cod sau a celor executate în mod repetat procedurile stocate sunt mai eficiente deoarece compilarea şi optimizarea lor se face o singură dată la crearea procedurii şi sunt memorate într-o formă direct executabilă prin care se evită repetarea fazelor de compilare şi optimizare la fiecare apel al procedurii.
. Reducerea traficului de reţea: o prelucrare care presupune execuţia a sute de linii de cod poate fi realizată printr-o singură linie de comandă care apelează procedura stocată prin care este implementată acea prelucrare. Se evită astfel transmiterea prin reţea a codului respectiv la fiecare executare a acelei prelucrări.
. Oferă un mecanism suplimentar de securitate: utilizatorii nu au acces direct la codul procedurilor stocate, iar dreptul de execuţie al unei proceduri poate fi acordat sau nu în funcţie de statutul fiecărui utilizator de către administratorul bazei de date.

 Instrucţiunea CREATE PROCEDURE
Această instrucţiune creează o procedură stocată în baza de date. Sintaxa instrucţiunii este următoarea:

OUTPUT - indică faptul că parametrul curent este unul de ieşire şi poate fi folosit pentru a returna valori dinspre procedură. Dacă nu există specificată această clauză înseamnă că parametrul respectiv este unul de intrare.

 Instrucţiunea EXECUTE
Lansarea în execuţie a unei proceduri stocate, se realizează prin intermediul comenzii EXECUTE. În urma executării cu succes a instrucţiunii CREATE PROCEDURE numele şi textul procedurii stocate corespunzătoare sunt înregistrate în tabelele director ale SQL SERVER. La primul apel de execuţie al procedurii are loc compilarea acesteia şi construirea unui plan de execuţie optimizat. Sintaxa comenzii EXECUTE este următoarea:


 Instrucţiunea ALTER PROCEDURE
Această instrucţiune modifică o procedură stocată anterior, fără a afecta obiectele dependente(proceduri stocate sau triggere care apelează procedura). Utilizarea ei este preferată variantei care presupune ştergerea şi recrearea procedurii deoarece, în acest caz, procedurile dependente nu mai trebuie recompilate.




 Instrucţiunea DROP PROCEDURE
Această instrucţiune şterge una sau mai multe proceduri sau grupuri de proceduri din baza de date curenta. Ştergerea unei proceduri înseamnă eliminarea definiţiei sale din baza de date.
Sintaxa instrucţiunii este:

nume_procedura - numele procedurii sau al grupului de proceduri care se şterge
b) Triggere SQL Server
Triggerele sunt o clasă specială de proceduri stocate, asociate unei tabele, definite pentru a fi lansate în execuţie automat la iniţierea unei operaţii de tip UPDATE, INSERT sau DELETE asupra tabelei în cauză. Un trigger este iniţiat ori de câte ori se încearcă operaţia de modificare corespunzătoare asupra tabelei căreia îi este ataşat. Un trigger poate conţine instrucţiuni SQL complexe şi poate accesa datele din alte tabele. Triggerul şi operaţia care îl declanşează sunt considerate ca un tot unitar (tranzacţie) ceea ce înseamnă că dacă execuţia triggerului eşuează, dintr-un motiv sau altul, atunci şi operaţia care a declanşat triggerul se anulează. O tabelă poate avea asociate mai multe trigerre [2].

 Instrucţiunea CREATE TRIGGER
Această instrucţiune creează un trigger, ataşat unei anumite tabele pentru a fi executat la iniţierea unui anumit tip de operaţie de modificare a tabelei.
Sintaxa:


2. Limbajul Java

2.1. Concepte de programare obiectuală
Programarea orientată pe obiecte - Object Oriented Programming sau OOP - este o tehnologie care permite modelarea unui program ca un set de obiecte aflate in interacţiune. OOP este singura soluţie viabilă pentru dezvoltarea de sisteme software complexe şi performante.
Obiectul este o entitate caracterizată prin stare si comportament. Starea unui obiect e dată de totalitatea atributelor (variabilelor) ce le conţine. Comportamentul unui obiect este exprimat prin totalitatea metodelor (interfaţa obiectului) definite de clasa ce caracterizează obiectul. Prin intermediul acestor metode, obiectele pot comunica între ele, transmiţând mesaje unul altuia.
Clasa defineşte structura internă a unui obiect (atributele) şi exprimă funcţionalitatea lui prin metodele ce le defineşte. Atributele şi metodele definite de o clasă constituie membrii clasei. Pentru a da consistenţă atributelor este necesară instanţierea unui obiect dintr-o clasă.
Constructorul este o metodă specială a unei clase, utilizată în momentul creării unui obiect din acea clasă. Această metodă este apelată la crearea unui obiect imediat după crearea şi iniţializarea fiecărui atribut al clasei. Constructorul nu e considerat un membru al clasei.
Încapsularea este termenul ce defineşte accesul la membrii unei clase. Un atribut sau o metoda a unui obiect (clase) poate să fie accesat de alt obiect exterior sau nu. O parte din membrii unei clase sunt utilizaţi în bucătăria internă şi nu se doreşte accesul lor din afară. Ca urmare aceştia vor fi încapsulaţi în interiorul clasei fără a fi vizibili din exterior. Definirea accesului la un membru al unei clase se face prin intermediul unor specificatori de acces (cuvinte cheie).
O clasă poate fi definită, utilizând o clasă definită anterior pe baza unei relaţii de apartenenţă ce există între ele (moştenire). O clasă poate aparţine unei clase anterior definite, poate fi o specializare a unei alte clase. Prima se numeşte clasă derivată iar ce de-a doua se numeşte clasă de bază sau superclasă.
Polimorfismul este o caracteristică prezentă în OOP prin care un obiect se adaptează în funcţie de contextul de program în care apare luând diferite forme (poate fi de diferite tipuri-clase). Polimorfismul este strâns legat de conceptul de moştenire [5].