You are on page 1of 22

CURS

Sumar

1

Iniţiere în
sisteme de
gestiune a bazelor
de date

 Noţiunea de bază de date
 Conceptul de sistem de gestiune a
bazelor de date
 Categorii de utilizatori
 Arhitectura ANSI-SPARC a bazelor de
date
 Limbajele bazelor de date
 Definirea sistemelor de gestiune a
bazelor de date relaţionale
 Lucrare aplicativă propusă spre rezolvare

1. Noţiunea de bază de date
Evoluţia diferitelor metode şi tehnici de organizare a datelor, pe suporturi de
memorie externă, a fost determinată de necesitatea de a avea un acces cât mai uşor la
un volum cât mai mare de date. Datele stocate şi prelucrate sunt foarte complexe cu
foarte multe interdependenţe, lucru care a făcut necesară apariţia bazelor de date.
În sensul larg, o bază de date [engl.: database] este o colecţie de date corelate
din punct de vedere logic, care reflectă un anumit aspect al lumii reale şi este destinat
unui anumit grup de utilizatori. În acest sens, bazele de date pot fi create şi menţinute
manual (un exemplu ar fi fişele de evidenţă a cărţilor dintr-o bibliotecă, aşa cum erau
folosite cu ani în urmă) sau computerizat aşa cum sunt majoritatea bazelor de date în
momentul de faţă. O definiţie într-un sens mai restrâns a unei baze de date este
următoarea:
O bază de date este o colecţie de date centralizate, creată şi menţinută
computerizat, în scopul prelucrării datelor în contextul unui set de aplicaţii.
Prelucrarea datelor se referă la operaţiile de introducere, ştergere, actualizare şi
interogare a datelor.
Orice bază de date are următoarele proprietăţi implicite:
Baza de date este o colecţie logică coerentă de date ce are cel puţin un înţeles.
Baza de date este destinată, construită şi populată de date despre un domeniu
bine precizat. Ea are un grup de utilizatori şi se adresează unui anumit grup de
aplicaţii
O bază de date reprezintă câteva aspecte ale lumii reale creând orizontul
propriu. Schimbările orizontului sunt reflectate în baza de date.
Faţă de vechile metode de înregistrare a datelor privind diferite activităţi pe
fişe (documente scrise) sau chiar în fişiere pe disc, sistemele de baze de date oferă
avantaje considerabile, ceea ce explică extinsa utilizare a acestora. Câteva dintre
avantajele oferite sunt:

Curs 1 – SGBD

2

Mircea Musan

 Controlul centralizat al datelor, putând fi desemnată o persoană ca responsabil cu
administrarea bazei de date.
 Viteză mare de regăsire şi actualizare a informaţiilor.
 Sunt compacte: volumul ocupat de sistemele de baze de date este mult mai redus
decât documentele scrise.
 Flexibilitatea ce constă în posibilitatea modificării structurii bazei de date fără a fi
necesară modificarea programelor de aplicaţie
 Redundanţă scăzută a datelor memorate, care se obţine prin partajarea datelor între
mai mulţi utilizatori şi aplicaţii. În sistemele de baze de date, mai multe aplicaţii
pot folosi date comune, memorate o singură dată. De exemplu, o aplicaţie pentru
gestionarea personalului dintr-o universitate şi o aplicaţie pentru gestionarea
rezultatelor la examene din aceeaşi universitate care foloseşte o singură bază de
date, pot folosi aceleaşi informaţii referitoare la structurarea facultăţilor.
 Posibilitatea introducerii standardelor privind modul de stocare a datelor, ceea ce
permite interschimbarea datelor între organizaţii
 Menţinerea integrităţii datelor prin politica de securitate (drepturi de acces
diferenţiate în funcţie de rolul utilizatorilor), prin gestionarea tranzacţiilor şi prin
refacerea datelor în caz de funcţionare defectuoasă a diferitelor componente
hardware sau software.
 Independenţa datelor faţă de suportul hardware utilizat. Sistemul de gestiunea a
bazelor de date oferă o vizualizare a datelor, care nu se modifică atunci când se
schimbă suportul de memorare fizic, ceea ce asigură imunitatea structurii bazei de
date şi a aplicaţiilor la modificări ale sistemului hardware utilizat.

2. Conceptul de sistem de gestiune a bazelor de date
Sistemul de gestiune a bazelor de date (SGBD) reprezintă sistemul de
programe care permite construirea bazelor de date, stocarea şi prelucrarea de
informaţii sub formă de înregistrări în bazele de date şi dezvoltarea de aplicaţii privind
bazele de date, permiţând astfel accesul utilizatorului.
Orice sistem de gestionare a bazelor de date conţine:
 limbajul de descriere a datelor (LDD), care permite descrierea structurii bazei de
date, a componenţei, a relaţiilor dintre componente, a drepturilor de acces al
utilizatorilor la baze de date (BD);
 limbajul de cereri (LC) este limbajul în care se scriu programele pentru realizarea
prelucrării datelor;
 limbajul de prelucrare a datelor (LPD), care permite operaţii asupra BD, cum ar fi
încărcarea BD, inserarea, ştergerea, căutarea sau modificarea unui element,
realizarea de statistici.

2.1 Activităţile unui SGBD
SGBD-ul este format din programe de software care interactioneaza cu
programele de aplicaţie ale utilizatorilor şi cu baza de date. Sistemul de gestiune al
bazei de date asigură realizarea următoarelor activităţi:
 definirea structurii bazei de date;

 integritatea datelor. actualizare).  securitatea datelor. Asigurarea independenţei datelor – trebuie privită din două puncte de vedere:  independenţa logică – se referă la posibilitatea adăgării de noi tipuri de înregistrări de date sau extinderea structurii conceptuale. liste. se definesc eventualele criterii de validare a datelor. Pentru satisfacerea performanţelor enumerate. tabele etc. realizându-se descrierea atributelor din cadrul structurii BD. Aşadar. 2.      În plus un SGBD mai asigură şi alte servicii: suport pentru limbaj de programare. accesare a datelor din baza de date. 1.2 Funcţiile unui SGBD Un SGBD trebuie să asigure următoarele funcţii:  funcţia de descriere a datelor – se face cu ajutorul LDD.. integritatea datelor. fără a determina rescrierea programelor de aplicaţie. SGBD trebuie să asigure un minim de obiective.3 Obiectivele unui SGBD Un SGBD are rolul de a furniza suportul software complet pentru dezvoltarea de aplicaţii informatice cu baze de date. interfaţă cât mai atractivă pentru comunicare cu utilizatorul.  flexibilitatea aplicaţiilor şi  protecţia datelor. sistemul de gestiune al bazei de date apare ca un sistem complex de programe care asigura interfata între o baza de date şi utilizatorii acestuia.Curs 1 – SGBD 3 Mircea Musan  încarcarea datelor în baza de date. organizare. metode de acces la date.  întretinerea bazei de date (colectarea şi reutilizarea spatiilor goale. . legăturile dintre entităţile BD. 2. El trebuie să asigure:  minimizarea costului de prelucrare a datelor.  reducerea timpului de răspuns. “help” pentru ajutarea utilizatorului în lucrul cu baza de date. utilitare încorporate: sistem de gestiune a fişierelor. tehnici avansate de memorare.  funcţia de utilizare – asigură mulţimea interfeţelor necesare pentru comunicare a tuturor utilizatorilor cu BD.  accesul la date (interogare. Concretizarea acestei funcţii este schema BD. refacerea bazei de date în cazul unui incident).  reorganizarea bazei de date (restructurarea şi modificarea strategiei de acces).  funcţia de manipulare – este cea mai complexă şi realizează actualizarea şi regăsirea datelor.

6. 3. 8. în sensul că datele pot fi folosite de mai mulţi utilizatori în acelaşi timp.  accesul cât mai simplu al utilizatorilor la date – fără ca ei să fie nevoiţi să cunoască structura întregii baze de date. problemă care apare mai ales în lucrul în mediu de reţea de calculatoare. a unor protocoale de control concurent şi a unor proceduri de refacere a bazei de date. această sarcină cade în seama administratorului bazei de date. iar utilizatorii pot avea cerinţe diferite şi care pot fi incompatibile. 7. cel care a stat la baza organizării fişierului. SGBD trebuie să rezolve probleme legate de concurenţă la date. Categorii de utilizatori După cum spuneam mai sus. 4. Totuşi.Curs 1 – SGBD 4 Mircea Musan  independenţa fizică – modificarea tehnicilor fizice de memorare fără a determina rescrierea programelor de aplicaţie. controlată. Orice SGBD trebuie să permită definirea şi descrierea structurii de date.  sistemul de gestiune trebuie să ofere posibilitatea unui acces multicriterial la informaţiile din baza de date – spre deosebire de sistemul clasic de prelucrare pe fişiere unde există un singur criteriu de adresare. 5. Asigurarea coerenţei şi integrităţii datelor împotriva unor ştergeri intenţionate sau neintenţionate – se realizează prin intermediul unor proceduri de validare. Asigurarea redundanţei minime şi controlate a datelor – stocarea informaţiilor în bazele de date se face astfel încât datele să nu fie multiplicate. Asigurarea partajabilităţii datelor – se referă pe de o parte la asigurarea accesului mai multor utilizatori la aceleaşi date şi de asemenea la posibilitatea dezvoltării unor aplicaţii fără a se modifica structura bazei de date. Administrarea şi controlul datelor – sunt asigurate de SGBD. se acceptă o anumită redundanţă a datelor. sistemul de gestiune al bazei de date apare ca un sistem complex de programe care asigura interfata între o baza de date şi utilizatorii . conform unui model de date (de exemplu modelul relaţional). pentru a îmbunătăţi performanţele legate de timpul de răspuns. Asigurarea facilităţilor de utilizare a datelor – presupune ca SGBD-ul să aibă anumite componente specializate pentru:  folosirea datelor de către mai mulţi utilizatori în diferite aplicaţii – datele de la o aplicaţie trebuie să poată fi utilizate şi în alte aplicaţii. 2. Asigurarea securităţii datelor împotriva accesului neautorizat. pentru a asigura coerenţa bazei de date şi eficienţa utilizării resurselor hardware.  existenţa unor limbaje performante de regăsire a datelor – care permit exprimarea interactivă a unor cereri de regăsire a datelor. Asigurarea legăturilor între date – corespund asocierilor care se pot realiza între obiectele unei aplicaţii informatice. precum şi a legăturilor dintre acestea. 3.

reface baza în caz de incident. Într-o formă de prezentare a categoriilor de utilizatori ai bazelor de date. c) administratorul bazei de date – utilizator special. Limbajele bazelor de date Limbajele bazelor de date sunt împărţite în 2 categorii: limbaje de definire a datelor (DDL) şi limbaje de manipulare a datelor (DML). acces concurent. cum sunt Pascal. . C. Acesta asigură următoarele funcţii:  funcţia de administrare – administratorul este cel care realizează schema conceptuală a bazei de date. 4. aceştia ar arăta precum mai jos: a) neinformaticieni – beneficiarii informaţiei. mai întâi comenzile specifice sublimbajului de date sunt înlocuite prin apelări de funcţii. Aceste limbaje sunt numite sublimbaje de date deoarece ele nu includ construcţii pentru toate necesităţile de calcul. DDL este utilizat pentru a specifica schema bazei de date. cum sunt cele asigurate de limbajele de nivel înalt. b) informaticieni – crează structura BD şi realizează procedurile complexe de exploatare a BD. Apoi fişierul preprocesat este compilat şi rezultatul este plasat într-un modul obiect. limbajul de nivel înalt se numeşte limbaj gazdă. cu rol hotărâtor în funcţionarea optimă a întregului sistem. Pentru a compila fişierul încorporat. criptare). În acest caz. iar în perioada de exploatare a BD autorizează accesul la date. salvare/restaurare) şi securităţii datelor (autorizare acces. nu trebuie să cunoască structura BD.Curs 1 – SGBD 5 Mircea Musan acestuia. Multe SGBD au o facilitate de încorporare a sublimbajului într-un limbaj de programare de nivel înalt. legat legat la o librărie care conţine funcţiile ănlocuite. Java etc. iar DML este utilizat pentru citirea şi reactualizarea bazei de date.  funcţia de protecţie a bazei de date – ansamblul de măsuri necesare pentru asigurarea integrităţii (semantică. nu trebuie să programeze aplicaţii ci doar să le folosească prin intermediul unei interfeţe suficient de prietenoase. utilizare viziuni.

DML Asigură un set de procedee ce permit operaţii de bază pentru manipularea datelor din bază de date: • inserarea de date noi • modificări de date • regăsirea datelor • ştergerea de date 5.  procedurale specifică modul cum trebuie să fie obţinut rezultatul unei instrucţiuni DML  neprocedurale descriu numai ce rezultat trebuie obţinut. datorită eforturilor producătorilor de a realiza sisteme cât mai perfomante care să satisfacă cerinţele şi exagerările utilizatorilor. Cât de aproape (sau de departe) de modelul relaţional teoretic trebuie să fie modelul datelor efectiv utilizat de SGBD pentru a putea afirma că SGBD-ul respectiv utilizează sau nu modelul relaţional.Curs 1 – SGBD 6 Mircea Musan 4. cât şi în raport cu modelul “teoretic”. se poate considera un sistem de gestiune a bazelor de date relaţionale (SGBDR) ca reprezentând un SGBD care utilizează drept concepţie de organizare a datelor modelul relaţional. deoarece modul de implemantare a modelului relaţional diferă. care permite administratorului bazei de date sau utilizatorului să descrie şi să denumească entităţile cerute de aplicaţie şi relaţiile care pot exista între diferitele entităţi. Conceptele specifice organizăriidatelor în fişiere. în mod natural existanţa unei mari diversităţii de SGBDR. De exemplu. sisteme complet relaţionale. denumite global catalog de sistem. cel definit în cadrul teoriei relaţionale. Acesta conţine meta-datele – adică datele care descriu obiectele din baza de date. deci este sau nu SGBDR? Diversitatea modelelor relaţionale operaţionale au determinat. Definirea sistemelor de gestiune a bazelor de date relaţionale Într-o primă încercare de definire. Astfel spus. sisteme pseudorelaţionale. DDL Este un limbaj descriptiv.2 Limbajul de manipulare a datelor (DML) Limbajele DML pot fi de două tipuri: procedurale şi neprocedurale. de regulă atât între diferitele SGBDR. Au apărut o serie de sintagme precum: sisteme cu interfaţă relaţională. SQL este un limbaj neprocedural. pentru a căror prezentare a fost necesară nuanţarea terminologiei. Definiţia de mai sus este prea generală pentru a putea fi operaţională.1 Limbajul de definire a datelor (DDL) Rezultatul compilării instrucţiunilor DDL este un set de tabele stocate în fişiere speciale. SGBDR şi teoriei relaţionale între care se pot stabili analogii: . 4. un SGDBR reprezintă un sistem care suportă modelul relaţional.

Acest lucru înseamnă că sistemul trebuie să-şi îndeplinească toate funcţiile prin manipulări în care unitatea de informaţie să fie mulţimea (relaţia). Orice dată din baza de date relaţională trebuie să poată fi accesată prin specificarea numelui de tabelă. R0: Regula privind gestionarea datelor la nivel de relaţie Sistemul trebuie să gestioneze baza de date numai prin mecanisme relaţionale. concepte SGBDR şi ale teoriei relaţionale. în special pentru interogare. 5. conceptele utilizate la prezentarea SGBDR şi a modelelor relaţionale operaţionale diferă de cele din cadrul teoriei relaţionale. Unele sisteme utilizează mecanisme releţionale numai pentru o parte din funcţii. Codd a formulat 13 reguli care exprimă cerinţele pe care trebuie să le prezinte un SGBD ca să fie relaţional. Această regulă exprimă cerinţa ca linbajul de cereri al SGBDR să permită accesul la fiecare valoare atomică din baza de date.1 Regulile lui Codd Definirea unui SGBDR impune o detaliere a caracteristicilor pe care trebuie să le prezinte un SGBD pentru a putea fi considerat relaţional. În acest sens. Informaţiile privind numele de tabele. Deşi reguli au stârnit o serie de controverse. vor fi prezentate în continuare. restricţii de integritate trebuie să fie memotare tot în tabele de date (cataloage). Deci SGBD nu trebuie să accepte operaţii non-relaţionale care să îndeplinească operaţiile de definire şi manipulare a datelor. R1: Regula privind reprezenterea logică a datelor Toate datele din daza de date relaţională trebuie să fie reprezentate explicit la nivel logic. Figura de mai sus prezintă comparativ conceptele organizării datelor în fişiere. care să opereze la un moment dat pe o întreagă relaţie. . R2: Regula privind garantarea accesului la date. adică să utilizeze limbaje.Curs 1 – SGBD Organizarea datelor în fişiere Fişier Record(înregistrare) Câmp 7 Mircea Musan SGBDR Tabelă Linie Coloană Teoria relaţională Relaţie Tuplu Atribut În general.coloane. definiţiile tabelelor virtuale. în scopul asigurării succesului comercial al acestor sisteme. domenii. Faptul că se pot stabili analogii între conceptele organizării datelor în fişiere şi conceptele relaţionale. ele fiind deosebit de utile în evaluarea unui SGBDR. Aceste lucru înseamnă că toate datele trebuie să fie memorate şi prelucrate în acelaşi mod. valorii cheii primare şi numelui de coloană. Aceste sisteme se numesc sisteme cu interfaţă relaţională ţi nu SGBDR. într-un singur mod. precum SQL. Referinţa la 'nivelul logic' înseamnă că construcţia fizică nu este reprezentată şi nu necesită explicaţie. şi anume ca valori în tabele de date. i-au determinat pe unii producători să prezinte sisteme fără nici o legătură cu modelul relaţional drept SGBDR.

R9: Regula privind independenţa logică a datelor Programele de aplicaţie nu trebuie să fie afectate de schimbările efectuate asupra relaţiilor bazei de date. definirea tabelelor virtuale. utilizând o singură structură. Nu toate atributele din cadrul unei tabele virtuale. în mai multe moduri. R6: Regula privind actualizarea tabelelor virtuale Toate tabelele virtuale care teoretic sunt posibil de actualizat trebuie să poată fi efectiv actualizabile. există o unică structură logică folosită pentru a depozita informaţiile de sistem. R5: Regula privind facilitaţile limbajelor utilizate Un sistem relaţional trebuie să facă posibilă utilizarea mai multor limbaje. ci şi în acţiuni de inserare. care diferă de şirurile de caractere 'spaţiu' sau de şirurile vide da caractere sunt deosebit de importante în implementarea restricţiilor de integritate (integritatea entităţii şi integritatea refereanţială).Curs 1 – SGBD 8 Mircea Musan R3: Regula privind valorile null Sistemele trebuie să permită declararea să manipularea sistematică a valorilor null. şi anume cea relaţionala. definirea restricţiilor de integritate. schimbări care conservă datele şi care toeretic garantează valabilitatea programelor de apicaţie existente. R4: Regula privind metadatele Descrierea bazei de date trebuie să se prezinte la nivel logic în acalaşi mod cu descrierea datelor propiu-zise. . manipularea datelor (interactiv dau prin program). Trebuie să existe însă cel puţin un limbaj de nivel înalt ale cărui instrucţiuni să poată exprima oricare din următoarele operaţii: definirea tabelelor de date. Sisteme nu trebuie să facă diferenţieri în definirea şi tratarea datelor şia metadatelor. astfel încât utilizatorii autorizaţi să poată descrierii bazei de date aceleaşi operaţii ca şi asupra datelor obijnuite. deci orice limbaj care acceptă acest standard va satisface automat această regulă. O schimbare a structurii fizice a datelor nu trebuie să blocheze funcţionarea programelor de alpicaţie. mai mult. R8: Regula privind independenţa fizică a datelor Programele de aplicaţie nu trebuie să fie afectate de schimbările efectuate în modul de reprezentare a datelor sau în metodele de acces. R7: Regula privind inserările. deci nu toate tabele virtuale sunt toeretic actualizabile. modificările şi ştergerile în baza de date Sistemul trebuie să ofere posibilitatea manipulării unei tabele (da bază sau virtuală) nu numai în cadrul operaţiilor de regăsire. modificare şi ştergere a datelor. A se nota aici că noul standard O/I pentru SQL furnizează toate aceste funcţii. Valorile null. Această regulă exprimă cerinţa ca prin operaţiile în care se schimbă bazei da date să se lucreze la un moment dat pe o întreagă relaţie. Acestă regulă specifică că trebuie să existe un unic limbaj de manipulare a metedatelor şi a datelor propui-zise. autorizarea accesului. cu semnificaţia unor date lipsă sau inaplicabile. precizarea limitelor tranzacţiilor.

fiind formulate în schimb o serie de cerinţe minimale pa care trebuie să la satisfacă un sistem de gestiune a bazelor de date pentru a putea fi considerat releţional. în cadrul celor 13 reguli. acest limbaj nu trebuie să fie utilizat pentru a se evitarestricţiile de integritate sau restricţiile introduse prin utilizarea limbajelor de nivel înalt. Toate datele din cadrul relaţiei sunt reprezentate prin valori în tabele. programele de aplicaţie să fie logic aceleaşi cu cele utilizate în cazul în care datele sunt fizic centralizate. De aceea pentru caracterizarea unui SGBD nu sunt utilizate regulile lui Codd. Unele revendicări ale produselor existente sunt că ele pot indeplini cea mai mare parte din reguli. dar nu toate. adică accesul la toate dazele va fi controlat de SGBDR. în situaţia în care datele sunt distribuite. 3) Reguli privind integritatea datelor. . Un SGBD este minimal relaţional dacă satisface următoarela condiţii: 1. Sarcina de localizare a datelor. Această discuţie a generat într-o dispută între utilizatori şi teoreticienii prietăţilor esenţiale ale unui SGBDR. altfel integritate bazelor de date nu poate fi compromisă fără cunoaşterea utilizatorului sau a administratorului bazei de date. Pentru a accentua implicaţia regulilor lui Codd în analiza unum SGBDR. indecşi. etc. 2) Reguli structurale. fişiere inverse. R11: Regula privind distribuirea geografică a datelor Limbajul de manipulare a datelor utilizat de sistem trebuie să permită ca. 2.Curs 1 – SGBD 9 Mircea Musan R10: Regula privind restricţiile de integritate Restrictiile de integritate trebuie să fie definite în limbajul utilizat de sistem pentru definirea datelor ţi să fie memorate în cadrul bazei de date şi nu în cadrul programului de aplicaţie. şi anume: 1) Reguli fundamentale. Pe parcursul anilor regulile lui Codd au generat o seamă de controverse. atunci când acestea sunt distribuite geografic precum şi sarcina recompunerii datelor trebuie să revină sistemului şi nu utilizatorului. 4) Reguli privind manipularea datelor. R12: Regula privind prelucrarea datelor la nivelul de bază Dacă sistemul posedă un limbaj de bază (de nivel scăzut) orientat pe prelucrare de recorduri (tupuri) şi nu pe prelucrarea mulţimiilor (relaţiilor). 5.2 Criterii minimale de definire a unui SGBDR Nici unul dintre SGBDR disponibile astăzi nu respectă întrutotul cerinţele exprimate de Codd. Utilizatorul trebuie să perceapă datele ca fiind centralizate. aceste reguli au fost reorganizate în cinci categorii. 5) Reguli privind independenţa datelor. în sensul că operaţiile cu releţii nu fac apel la pointeri. Câteva argumente sunt că aceste reguli nu sunt mai mult decât nişte exerciţii academice. Nu există pointeri observabili de către utilizatori în tabele.

Informix. se poate considera ca aceste din urma dezvoltari reprezinta generatia a treia de SGBD.Curs 1 – SGBD 10 Mircea Musan 3. o extensie orientată obiect. se bazează pe SQL standard extins. Unitatea de informaţie ciu care se lucrează în cadrul acestor operaţii trebuie să fie relaţia. Este realizat de firma Microsoft. Visual FoxPro.. respectă teoria relaţională şi permite lucru distribuit. Este realizat de firma Computer Associates. Paradox. Este realizat de firma Microsoft. Sistemul suportă două dintre restricţiile de integritate de bază al modelului relaţional şi anume unicitatea cheii unei relaţiişi restricţia referenţială. Este realizat de firma Oracle Corporation USA. permţând lucrul. Sistemul suportă operatori relaţionali de proiecţie. implementează două limbaje relaţionale (întâi QUEL şi apoi SQL) şi este suportat de diferite sisteme de operare (Windows. Este realizat de firma Borland. fără limitări împuse de considerente interne (cum ar fi de exemplu. Cu toate ca modelul de date ce sta la baza noilor modele nu este atat de clar ca în cazul modelului relaţional. DB2. selecţie şi joing natural. Access. şi 3. Are BD Internet şi modul de optimizare a regăsirii. SQL Server. Este realizat de firma Progress Software. Ultima versiune este Oracle 10g. robust. Un SGBD este pseudorelaţional dacă satisface numai condiţiile 1. cu observaţia că cerinţa 3. Este realizat de firma IBM. Se bazează pe SQL. . 5.ERDM). cu obiecte şi distribuit. Are limbaj procedural propiu (PAL) şi suportă SQL. Organizarea fizică a tabelelor se face prin sistemul de operare. 5. Sistemul suportă toate operaţiile de bază ale algebrei relaţionale. are extensie cu facilităţi orientate obiect şi permite aplicaţii de tip Internet. Are un limbaj procedural propiu foarte puternic. are limbajul procedural gazdă (Basic Access) şi instrumente de dezvoltare. Este un SGBDR complet. Arhitectura sistemului este client/server. programare vizuală şi nucleu extins de SQL. Se bazează pe SQL şi rulează în arhitectura client/server. şi 3. fără limitări înpuse de considerente interne.OODM) şi modelul de date relaţional extins (Extended Relational Data Model . Ingress II.3 Exemple de sisteme de gestiune a bazelor de date relaţionale Oracle. Permite lucrul distribuit şi are modul de optimizare a regăsirii. Este realizat de firma Microsoft. Rulează pe o gamă largă de calculatoare sub diferite sisteme de operare. Are limbaj propriu (Progress 4GL) dar suportă şi SQL. necesitetea indexării atributelor). ca răspuns la necesitatea de a creşte complexitatea aplicaţiilor cu baze de date (încurajată şi de progresele apărute în programare odata cu programarea orientata obiect) au apărut modelul de date orientat obiect (Object-Oriented Data Model . este robust şi se bazează pe SQL standard. UNIX). Un SGBD este complet relaţional dacă este minimal ralaţional şi satisface în plus următoarele condiţii: 4. Lucrează distribuit în arhitectura client/server. este îndeplinită numai în raport cu funcţia de interogare În ultimii ani. Sistemul este complet relaţional. Progress. Un SGBD cu interfaţă relaţională este un SGBD are satisface condiţiile 1. Sistemul respectă teoria relaţională. Este realizat de firma Informix.

DIR. SUPERIOARE> .. jud.mdb. Baza de date va conţine tabelele descrise mai jos: Funcţii Cod fct Functia Studii 1:n Angajaţi Id ang Nume Prenume Functia Data ang Sal incad 1:n 1:1 Date pers Id ang CI Data nast Adresa Copii ang Cod ang Prenume Alocatie Angajati Nume câmp Tip/dimensiune Id ang Numeric – întreg Nume Prenume Functia Text – 20 Text – 40 Text – 3 Data incad Sal incad Dată calendaristică Numeric – întreg Index/cheie Restricţii primară Cheie primară – – Index cu Se găseşte în lista duplicate <ING.Curs 1 – SGBD 11 Mircea Musan 6.. Pentru dezvoltare se va folosi aplicaţia Access. str. e-mail:” Functii Nume câmp Tip/dimensiune Cod fct Text – 3 Functia Studii Text – 15 Text – 10 Copii angajati Index/cheie primară Cheie primară – – Restricţii Se găseşte în lista <PRIMARE. MCT. Lucrare aplicativă propusă spre rezolvare a) Se va proiecta o bază de date pentru evidenţa angajaţilor unei societăţi comerciale.. iar fişierul de gestiune va purta numele Evidenţă angajati. MEDII. MST. ECO. nr. INF> – – >=600 Date personale Nume câmp Tip/dimensiune Id ang Numeric – întreg Index/cheie primară Index unic CI Data nast Adresa Text – 8 Dată calendaristică Memo – – – Restricţii Se găseşte în lista codurilor angajaţilor din tabela Angajaţi Se crează un şablon “Loc... ap. tel.

Ex. dar. a) varianta Query Design view – QBE: b) varianta SQL: SELECT [Id ang]. aranjaţi în ordine alfabetică. . pentru formularea de cereri pe baza de date Evidenta angajati. [Sal incad] FROM Angajati ORDER BY Nume. Functia. Prenume. Prenume. 1 a: Se cer date complete despre angajaţii firmei folosind setul complet de câmpuri din tabela Angajati.Curs 1 – SGBD 12 Nume câmp Tip/dimensiune Cod ang Numeric – întreg Prenume Alocatie Text – 40 Numeric – întreg Mircea Musan Index/cheie Restricţii primară Index cu Se găseşte în lista duplicate codurilor angajaţior din tabela Angajaţi – – Valoarea implicită va fi 40 Rezultatul la care trebuie să se ajungă este indicat mai jos: b) Vom continua aplicaţia începută. 1 b: Acelaşi enunţ ca în exerciţiul anterior. Nume. [Data incad]. Ex.mdb. într-o altă formă de reprezentare a interogării.

2: Să se refacă prima interogare. 3 a: Să se refacă prima interogare. Ex. astfel încât în listă să apară acei angajaţi al căror nume începe cu litera ‘P’.Curs 1 – SGBD 13 Mircea Musan a) varianta Query Design view – QBE: b) varianta SQL: SELECT Angajati. astfel încât să apară în listă doar acei angajaţi care sunt de profesie ‘inginer’. Ex. SELECT Angajati. Prenume.* FROM Angajati ORDER BY Nume. Prenume.* . SELECT Angajati.* FROM Angajati WHERE Functia='ING' ORDER BY Nume.

3 b: Se va reface interogarea anterioară. Prenume.* FROM Angajati WHERE Nume Like '*op*' ORDER BY Nume. Nume. Functia. Ex. functia.Curs 1 – SGBD 14 Mircea Musan FROM Angajati WHERE Nume Like 'P*' ORDER BY Nume. Ex. Int((Date()-[Data incad])/365) AS [Vechime in munca]. în listă să apară denumirea completă a funcţiei angajaţilor şi nu doar codul acesteia. Ex. [Data incad]. [Sal incad] FROM Angajati. astfel încât. 4: Se cere o listă: id-ul de angajat. data incadrării în funcţie. numele. vechimea în muncă şi salariul cu care este încadrat fiecare angajat. prenumele. astfel încât în listă vor apărea toţi acei angajaţi al căror nume conţine grupul de litere ‘op’. Prenume. Prenume. . a) varianta Query Design view: b) varianta SQL: SELECT Angajati. 5: Să se modifice interogarea 4. a) varianta Query Design view: b) varianta SQL: SELECT [Id ang].

în acest caz se cer acei angajaţi care sunt de profesie inginer sau muncitor. .Functia='ing' Or Angajati. Nume. [Sal incad] FROM Functii INNER JOIN Angajati ON Functii. [Data incad]. Angajati. Angajati. Prenume. Ex.Nume.Functia WHERE Int((Date()-[Data incad])/365)<4 AND Angajati.Functia. Angajati.Functia. au vechime de până în 4 ani în câmpul muncii.Functia. Int((Date()-[Data incad])/365) AS [Vechime in munca]. SELECT Angajati. salariul este peste media pe economie (considerăm această medie ca fiind 1250 lei). Ex. astfel încât.[Sal incad] FROM Functii INNER JOIN Angajati ON Functii.[Id ang]. Functii. iar. sau au salariul peste medie şi sunt de profesie inginer sau muncitor. 7: Se va reface enunţul anterior. doar că. Functii.Functia='mct') ORDER BY Angajati.Prenume.[Cod fct] = Angajati.[Cod fct] = Angajati.[Data incad].[Sal incad]>=1250 AND (Angajati. Angajati.Curs 1 – SGBD 15 Mircea Musan SELECT [Id ang]. 6: Se cere o situaţie similară celei precedente.Functia. va exista posibilitatea afişării unei liste a acelor angajaţi care sau au sub 4 ani vechime. Int((Date()-[Data incad])/365) AS Vechime.

Angajati. Avg([Sal incad]) AS [Media salariala]. dar. Int((Date()-[Data incad])/365) AS [Vechime in munca]. . Astfel de cereri se numesc cereri de totalizare sau de grupare şi se activează prin butonul .[Cod fct] = Angajati. Max([Sal incad]) AS [Maxim salarial].Functia='ing' Or Angajati.[Data incad]. situaţia se cere a se obţine pe fiecare funcţie în parte. media salarială generală şi valoarea totală a fondului de salarii.Nume.[Sal incad]>=1250 AND (Angajati.Curs 1 – SGBD 16 Mircea Musan SELECT Angajati.Functia. 9: Aceleaşi cerinţe ca în interogarea anterioară. Ex. Sum([Sal incad]) AS [Fond salarii] FROM Angajati. SELECT Count([Id ang]) AS [Numar angajati].Functia WHERE (Angajati. Angajati.[Id ang]. Functii. Min([Sal incad]) AS [Minim salarial].[Sal incad] FROM Functii INNER JOIN Angajati ON Functii. 8: O listă cu numărul de angajaţi. Angajati. maximul salarial. Angajati.Functia.Prenume.Functia='mct')) OR Int((Date()-[Data incad])/365)<4 ORDER BY Angajati. Ex.

[Id ang]) . pentru care nu sunt înregistraţi angajaţi. CI. Data nast. Adresa. SELECT Angajati. Functia (în denumirea sa completă).[Sal incad]) AS [Minim salarial]. Max(Angajati. dar.Functia.[Cod fct] = Angajati.[Id ang].[Id ang]) AS [Numar angajati].Functia. Ex. Count(Angajati. Min(Angajati. Lista se va da în ordine alfabetică a angajaţilor.[Id ang] = [Date personale]. Studii FROM Functii INNER JOIN (Angajati INNER JOIN [Date personale] ON Angajati.Functia GROUP BY Functii. Nume. Count(Angajati.Functia. Nume. Se va face o sortare descrescătoare după fondul de salarii.Functia GROUP BY Functii. Prenume. CI. 11: Date complete (Id ang.[Sal incad]) AS [Fond salarii] FROM Functii LEFT JOIN Angajati ON Functii. Adresa.Functia. [Data nast]. Data incad şi Sal incad). Ex.[Sal incad]) AS [Maxim salarial]. Functii. Min(Angajati. 10: Să se refacă interogarea anterioară astfel încât în listă să apară şi acele funcţii existente în nomenclatorul de funcţii. studiile aferente respectivei funcţii.[Cod fct] = Angajati.[Id ang]) AS [Numar angajati]. Sum(Angajati. SELECT Functii.Curs 1 – SGBD 17 Mircea Musan SELECT Functii.Functia. Sum(Angajati. Prenume.[Sal incad]) AS [Fond salarii] FROM Functii INNER JOIN Angajati ON Functii.[Sal incad]) AS [Minim salarial]. Max(Angajati.[Sal incad]) AS [Maxim salarial].

Studii FROM Functii INNER JOIN (Angajati INNER JOIN [Date personale] ON Angajati. [Data nast]. Functii. dar cerinţele să fie pentru o anumită categorie de funcţie. iniţiala prenumelui angajatului (ca si tată de copii) şi prenumele copiilor. Nume. Prenume.Functia WHERE Angajati.Curs 1 – SGBD 18 Mircea Musan ON [Cod fct] = Angajati.[Id ang] = [Date personale]. Ex.Functia.[Id ang].Functia WHERE Functii. CI. 12: Aceleaşi cerinţe ca la interogarea anterioară. numele lor de familie. Prenume.[Id ang]. Nume. . Studii FROM Functii INNER JOIN (Angajati INNER JOIN [Date personale] ON Angajati.[Id ang]=[Dati un cod de angajat:] ORDER BY Nume.Functia ORDER BY Nume. Adresa. Functii.[Id ang] = [Date personale]. SELECT Angajati. şi anume: codurile angajaţilor.[Id ang]) ON [Cod fct] = Angajati. [Data nast]. Adresa.Functia=[Introduceti o functie:] ORDER BY Nume. ce va fi dată de la tastatură în momentul rulării interogării (ca parametru). Prenume. Prenume. 13: Aceleaşi cerinţe ca la interogarea precedentă.Functia. Ex. Ex. pentru un anumit angajat dat prin codul său de la tastatură (ca parametru). 14: Se cere o listă cu toţi copii salariaţilor. dar. Prenume.[Id ang]) ON [Cod fct] = Angajati. CI. SELECT Angajati.

[Cod ang]. indiferent că aceştia au sau nu copii. 15: O situaţie cu angajaţii din firmă (codul. Ex. [Copii angajati]. cu toţi angajaţii. numele şi prenumele lor) cu numărul de copii ai fiecăruia şi suma totală obţinută din alocaţiile acestora. în cazul angajaţilor ce au copii. Nume.[Cod ang] GROUP BY [Id ang]. . Prenume.[Id ang] = [Copii angajati]. Nume. Count([Cod ang]) AS [Numar copii] Sum(Alocatie) AS [Valoare din alocatii] FROM Angajati INNER JOIN [Copii angajati] ON Angajati.1)+'. 16: Interogări de modificare.' AS [Intiala tata]. Prenume. se modifică interogarea anterioară astfel încât în loc de INNER JOIN se va scrie LEFT JOIN.[Id ang] = [Copii angajati].Prenume AS [Prenume copil] FROM Angajati INNER JOIN [Copii angajati] ON Angajati.Curs 1 – SGBD 19 Mircea Musan SELECT [Id ang] AS [Cod angajat]. Toate salariile de încadrare ale angajaţilor se măresc cu 10%. Nume AS [Nume familie]. SELECT [Id ang]. Observaţie: Dacă se doreşte o situaţie care să includă o listă completă. LEFT(Prenume. Ex.

Ex. UPDATE Angajati SET [Sal incad] = [sal incad]+[sal incad]*[Introduceti un procent de modificare salariala:]/100 WHERE Functia=[Introduceti o categorie de functii:]. sau UPDATE Angajati SET [Sal incad] = [sal incad]*1. UPDATE Angajati SET [Sal incad] = [sal incad]+[sal incad]*[Introduceti un procent de modificare salariala:]/100. 18: Toate salariile unei anumite categorii de angajaţi se modifică cu un anumit procent. Categoria de funcţii şi procentul de modificare se dau de la tastatură. 19: Salariul unui anumit angajat.Curs 1 – SGBD 20 Mircea Musan UPDATE Angajati SET [Sal incad] = [sal incad]+[sal incad]*10/100. Ex. dat prin codul său se modifică cu un anumit procent. Ex. . 17: Toate salariile de încadrare ale suferă modificări cu un anumit procent dat de la tastatură.1.

[Cod ang] WHERE Int((Date()-[Data nast])/365)>=60. Delete Query pentru cea de ştergere. Indicaţie: Această interogare presupune ştergerea tuturor angajaţilor care au îndeplinit respectivul criteriu.* FROM Angajati INNER JOIN [Date personale] ON Angajati. adică 60 de ani. împreună cu datele lor personale şi copii lor. se alege relaţia între tabelele Angajati si Date personale şi se realizează ştergere în cascadă pe cele două tabele. Se şterg din baza de date acei angajaţi care au împlinit vârsta de pensionare. prin bifarea opţiunilor Enforce Referential Integrity. ştergerea setarea unui astfel de tip de interogare se face în modul Query Design view prin click dreapta pe zona de lucru a interogării şi selectarea opţiunii Update Query pentru cea de modificare. 20: Interogări de ştergere. Apoi. Operaţiunea anterioră se repetă în mod similar şi pentru tabelele Angajati şi Copii angajati. Ex. respectiv.[Id ang] = [Date personale]. şi ulterior Cascade Delete Related Records.Curs 1 – SGBD 21 Mircea Musan UPDATE Angajati SET [Sal incad] = [sal incad]+[sal incad]*[Introduceti un procent de modificare salariala:]/100 WHERE [Id ang]=[Introduceti un cod angajat:]. . respectiv. DELETE Angajati. Pentru aceasta trebuie intrat în relaţia realizată pe baza de date. Observaţie: În cazul interogărilor de modificare.

Curs 1 – SGBD 22 Mircea Musan Acelaşi lucru se mai poate realiza şi folosind meniul Query. care este de altfel şi forma implicită de interogare. . . pentru c) Se va continua aplicaţia începută folosind elemente de construcţie a formularelor şi de transmitere a rezultatelor obţinute prin intermediul rapoartelor. sau . în varianta de interogare interogări de ştergere. activ după deschiderea unei interogări. şi comutarea din opţiunea – interogări de selecţie – . pentru interogări de modificare.