42
INFORMATICĂ DE GESTIUNE (SGBD) Manual recomandat: Gherasim, Z., Programare şi baze de date, Ed F.R.M., Bucureşti, 2005. Obiectivul principal al cursului: Cursul de Informatică de gestiune (SGBD) se desf ăşoară pe semestrul II ale anului universitar. Obiectivele disciplinei „ Generaţii de baze de date şi de sisteme de gestiune a bazelor de date asociate 1.3 Baze de date relaţionale 1.4 Baze de date orientate obiect 1.5 Proiectarea bazei de date orientată pe obiecte 2. SISTEMUL DE GESTIUNE A BAZELOR DE DATE MICROSOFT ACCESS 2.1 Prezentarea sistemului Microsoft Access 2.2 Cunoaşterea mediului de lucru Microsoft Access 2.2.1 Definirea componentelor principale ale SGBD Microsoft Access 2.2.2 Deschiderea şi închiderea unei baze de date în Microsoft Access 2.3 Tabelul 2.3.1 Crearea unui tabel 2.3.2 Realizarea relaţiilor între tabele 3 Informatic ă de gestiune (SGBD) se concretizează în cunoaşterea şi aprofundarea noţiunilor de bază ale bazelor de date şi sistemelor de gestiune a bazelor de date (SGBD), a elementelor fundamentale ale SGBD Microsoft Access şi ale limbajului structurat de interogare SQL, precum şi în ştigarea deprinderilor practice în rezolvarea prin baze de date a problemelor economice specifice ale domeniului financiar-contabil. Conţinutul tematic al cursului: 1. TEORIA BAZELOR DE DATE SI A SISTEMELOR DE GESTIUNE A BAZELOR DE DATE 1.1 Organizarea datelor în baze de date. Sisteme de gestiune a bazelor de date. 1.2

Curs Blackboard Spiru

  • Upload
    any-ana

  • View
    33

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Curs Blackboard Spiru

INFORMATICĂ DE GESTIUNE (SGBD)

Manual recomandat: Gherasim, Z., Programare şi baze de date, Ed F.R.M., Bucureşti, 2005.

Obiectivul principal al cursului: Cursul de Informatică de gestiune (SGBD) se desfăşoară pe semestrul II ale anului universitar. Obiectivele disciplinei „

Generaţii de baze de date şi de sisteme de gestiune a bazelor de date asociate 1.3 Baze de date relaţionale 1.4 Baze de date orientate obiect 1.5 Proiectarea bazei de date orientată pe obiecte 2. SISTEMUL DE GESTIUNE A BAZELOR DE DATE MICROSOFT ACCESS 2.1 Prezentarea sistemului Microsoft Access 2.2 Cunoaşterea mediului de lucru Microsoft Access 2.2.1 Definirea componentelor principale ale SGBD Microsoft Access 2.2.2 Deschiderea şi închiderea unei baze de date în Microsoft Access 2.3 Tabelul 2.3.1 Crearea unui tabel 2.3.2 Realizarea relaţiilor între tabele

3

Informatică de gestiune (SGBD) ” se concretizează în cunoaşterea şi aprofundarea noţiunilor de bază ale bazelor de date şi sistemelor de gestiune a bazelor de date (SGBD), a elementelor fundamentale ale SGBD Microsoft Access şi ale limbajului structurat de interogare SQL, precum şi în câştigarea deprinderilor practice în rezolvarea prin baze de date a problemelor economice specifice ale domeniului financiar-contabil.

Conţinutul tematic al cursului: 1. TEORIA BAZELOR DE DATE SI A SISTEMELOR DE GESTIUNE A BAZELOR DE DATE 1.1 Organizarea datelor în baze de date. Sisteme de gestiune a bazelor de date. 1.2

Page 2: Curs Blackboard Spiru

2.4. Interogarea 2.5 Formularul 2.6 Raportul 2.7. Paginile (Pages) 2.8 Macroinstrucţiunea (Macro-ul) 2.9 Modulul (Modulul) 2.10 Utilizarea evenimentelor într-o bază de date 3. LIMBAJUL STRUCTURAT DE INTEROGARE SQL 3.1 Noţiuni de bază referitoare la SQL 3.2 Blocurile componente ale operaţiei de regăsire a datelor: SELECT şi FROM 3.3. Operatori utilizaţi în SQL

3.3.1 Operatorii aritmetici 3.3.2 Operatorii de comparaţie 3.3.3. Operatorii caracter 3.3.4. Operatorii logici 3.3.5. Operatorii pentru mulţimi 3.3.6 Alţi operatori, IN şi BETWEEN 3.4. Funcţii în SQL 3.4.1. Funcţii pentru calculul totalurilor 3.4.2.Funcţii dedicate pentru dată calendaristică şi oră 3.4.3. Funcţii aritmetice 3.4.4. Funcţii caracter 3.5. Clauze utilizate în SQL 3.6. Joncţiuni 3.6.1. Subinterogări 3.7. Instrucţiuni de manipulare a datelor

3.8. Crearea şi întreţinerea tabelelor.

Bibliografie minimală obligatore: 1. Fusaru, D., Gherasim, Z., Andronie, M., Bâra, A., Stroe, P., Aplicaţii

economice în Visual Basic şi Access, Ed.F.R.M., Bucureşti, 2003; 2. Gherasim, Z., Programare şi baze de date, Ed F.R.M., Bucureşti, 2005.

Bibliografie facultativă: 1. Fusaru D., Mareş D., Mihai G., Visual Basic şi Access, Ed. F.R.M., 2001; 2. Popa, Gh.; Iliescu, M.; Berbec, Fl.; Ivancenco, V.; Andronache, V. – Visual Basic, Editura CISON, Bucureşti, 1999.

Prezentarea lecţiei / capitolul 1:

1. TEORIA BAZELOR DE DATE SI A SISTEMELOR DE GESTIUNE A BAZELOR DE DATE

Concepte cheie: dată, colecţie de date, bază de date, sistem bază de date, structură de date, sistem de gestiune a bazei de date(SGBD), programe de aplicaţie, bază de date relaţională, bază de date orientată pe obiecte. 1.1 Organizarea datelor în baze de date. Sisteme de gestiune a bazelor de date.

Un sistem informatic eficace oferă utilizatorilor informaţii relevante, corecte (exacte) şi la timp. Aceste informaţii sunt memorate sub formă de date în fişiere, care trebuie să fie aranjate (organizate) şi întreţinute astfel încât utilizatorii să obţină cu uşurinţă informaţiile de care au nevoie.

4

Page 3: Curs Blackboard Spiru

Managementul datelor este o parte foarte importantă a sistemului informatic organizaţional economic deoarece influenţează viteza cu care pot fi obţinute datele şi deci poate fi luată decizia. Există situaţii când viteza de luare a deciziei este o chestiune de supravieţuire pentru organizaţia economică. Datele sunt organizate într-o ierarhie care începe cu biţi şi octeţi (bytes) şi continuă cu câmpuri, înregistrări, fişiere, baze de date şi depozite de date. Sistemul bază de date se defineşte ca fiind ansamblul de colecţii organizate de date, împreună cu descrierea datelor şi a relaţiilor dintre ele, care reprezintă, complet, corect şi coerent, universul real al organizaţie economice (compartimentului specializat al acesteia) prin caracteristicile relevante (reprezentative) ale elementelor sale, percepute de sistem prin semantica lor (semnificaţia lor reală) şi prin legăturile dintre aceste caracteristici. Conceptul de bază de date a fost introdus în anul 1969, cu prilejul prezentării primului raport CODASYL. Ulterior şi alte grupuri de lucru specializate (IIBM, ANSI, DBTG) şi-au adus contribuţia la standardizarea conceptelor din teoria bazelor de date. Colecţia de date, se defineşte ca fiind mulţimea de valori (date) pe care le iau caracteristicile reprezentative ale unui element din universul real al organizaţiei economice, dacă la fiecare moment de timp se aplică asupra lor un predicat, o acţiune din realitatea organizaţiei economice, împreună cu domeniile de definiţie reale ale acestor caracteristici. Într-un sistem bază de date, descrierea datelor constă în descrierea structurii de date a sistemului bază de date şi în descrierea regulilor care asigură coerenţa datelor, în raport cu universul real al organizaţiei economice reprezentat. Tipurile de structuri logice de date sunt: punctuală, liniară, arborescentă, reţea, relaţională, orientată pe obiecte (OO). Structura de date a unui sistem bază de date este determinată de modelul abstract de reprezentare a datelor folosit, numit bază de date. În funcţie de tipul stabilit pentru legăturile dintre datele din colecţiile de date (ierarhic, reţea, relaţional, orientat pe obiecte), s-au realizat mai multe modele abstracte de reprezentare a datelor, dar fiecăruia îi corespunde o singură structură de date a sistemului bază de date. Din acest motiv s-a generalizat utilizarea conceptului de bază de date, BD sau DB (DataBase), care este folosit atât pentru denumirea structurii de date a unui sistem bază de date, cât şi pentru denumirea modelului abstract de reprezentare a datelor care o determină. Mai mult chiar, conceptul de bază de date denumeşte atât colecţia organizată, cît şi structura de date folosită pentru reprezentarea acesteia în sistemul bază de date. Sistemul de gestiune a bazei de date, SGBD sau DBMS (Data-Base Management System) reprezintă un ansamblu complex de programe care asigură interfaţa dintre baza de date şi utilizator. O bază de date trebuie să satisfacă următoarele condiţii: • structura bazei de date trebuie să asigure informaţiile necesare şi suficiente pentru îndeplinirea cerinţelor de informare şi decizie; • să asigure o independenţă sporită a datelor faţă de programe şi invers; • să se realizeze o redundanţă (cardinalitatea informaţiilor colecţiilor de date) minimă şi controlată a datelor memorate; • accesul la datele stocate în baza de date să fie rapid şi eficace. O bază de date poate să fie exploatată, de regulă, în regim de prelucrare pe loturi (batch) şi în regim conversaţional. Accesarea bazei de date se realizează prin aplicaţii generale, programe de aplicaţie, limbaje de manipulare autonome (procedurale şi neprocedurale), interfeţe specializate cu limbajele de programare clasice etc., local sau de la distanţă, prin utilizarea calculatoarelor singulare sau a reţelelor de calculatoare. Rezultatele interogărilor utilizatorilor se prezintă sub formă vizuală, listată, prin memorare pe diverşi suporţi tehnic de date, local sau la distanţă. Sistemul bază de date are rolul de organizare şi stocare a unor volume mari de date, în vederea gestionării, prelucrării, distribuirii şi utilizării multiple, folosind sistemele de calcul, programele utilitare şi programele de aplicaţie. Pornind de la funcţia sa, un sistem bază de date este format, ca structură generală, din: colecţii de date, baza de date, SGBD, programe de aplicaţie şi utilitare, precum şi

5

Page 4: Curs Blackboard Spiru

utilizatori. Dacă conceptul de bază de date denumeşte atât colecţiile de date cît şi structura de date folosită pentru reprezentarea acesteia, atunci structura generală a sistemului bază de date este baza de date, SGBD, programe de utilizare, utilizatori. Arhitectura unui sistem bază de date este definită în conformitate cu specificaţiile utilizatorilor finali (end-users) şi cuprinde baza de date, SGBD, programele de aplicaţie, utilitare, schema bazei de date şi utilizatorii (programatorul de aplicaţie, administratorul bazei de date şi utilizatorii finali). Programatorii de aplicaţie, având la dispoziţie utilitare (programe specializate de proiectare) şi prin colaborarea cu administratorul bazei de date (acesta lucrează nemijlocit cu schema bazei de date), pun la punct programele de aplicaţie. Interfaţa dintre baza de date şi schema BD, utilitare şi programele de aplicaţie este sistemul de gestiune a bazei de date, SGBD. Obiectivele unui SGBD sunt, în principal, următoarele: • asigurarea independenţei datelor faţă de aplicaţie; • asigurarea redundanţei minime şi controlate a datelor; • asigurarea tuturor facilităţilor posibile de exploatare a datelor; • asigurarea securităţii şi protecţiei datelor împotriva accesului neautorizat (inclusiv prin criptarea datelor); • asigurarea coerenţei şi integrităţii datelor împotriva ştergerilor accidentaşle sau intenţionate; • asigurarea partajării datelor (accesul concurent al utilizatorilor la baza de date); • asigurarea nivelului de performanţă globală (volum mare de date complexe gestionate cu un timp de răspuns acceptabil la adresarea cererilor de interogare din partea utilizatorilor multipli). Funcţiile generale ale unui SGBD sunt: 1. descrierea datelor (definirea structurii bazei de date prin intermediul limbajului de definire a datelor); 2. manipularea datelor (încărcarea, actualizarea, prelucrarea şi regăsirea datelor cu ajutorul limbajului de manipulare a datelor); 3. utilizarea bazei de date (de către toate categoriile de utilizatori); 4. administrarea bazei de date. Fiecare grup de lucru pentru standardizarea bazelor de date (CODASYL şi ANSI, în principal) a propus o arhitectură proprie a unui SGBD. Limbajele SGBD (DBMS) pot fi grupate în trei categorii de limbaje: a) limbajul de definire a datelor (DDL, Data Definition Language); b) limbajul de manipulare a datelor (DML, Data Manipulation Language); c) limbajul de descriere a stocării datelor (DSDL, Data Storage Description Language). Limbajul de definire a datelor asigură, în principal: • definirea tuturor tipurilor de înregistrări şi de câmpuri de date, precum şi asocierea corespondenţei acestora cu nivelul conceptual; • specificarea ordinii logice a câmpurilor de date; • definirea câmpurilor ce vor fi folosite drept chei de căutare; • definirea drepturilor de acces; • definirea legăturilor între tipurile de înregistrări. Limbajul de manipulare a datelor permite: • parcurgerea structurilor şi a legăturilor existente; • accesul la înregistrări prin adresă sau prin conţinutul acestora; • actualizări ale înregistrărilor; • reordonări ale câmpurilor de date; • definirea tranzacţiilor şi a condiţiilor de eroare. Limbajul de descriere a stocării datelor oferă posibilităţi de: • asociere a fişierelor la programele de aplicaţie, a dispozitivelor fizice, alocare de spaţii de memorie; • specificarea zonelor de lucru permanente şi tranzitorii;

6

Page 5: Curs Blackboard Spiru

• definirea şi izolarea datelor confidenţiale; • specificarea structurilor de memorare, a mecanismelor de adresare, a modului de translatare a înregistrării logice în înregistrare fizică; • crearea indecşilor asociaţi cheilor de căutare. Operaţiile ce se execută asupra unei baze de date sunt: • creare; • încărcare (populare); • consultare: căutare (selecţie); • actualizare: modificare, adăugare articole noi, ştergerea unor articole, ordonare (sortare, indexare), prelucrare etc. Dicţionarul de date (Data Dictionary) este un fişier care memorează definiţiile datelor şi caracteristicile lor ca: folosirea, reprezentarea fizică, proprietatea (cine este responsabil pentru întreţinerea lor), autorizarea şi securitatea. Prin faptul că reprezintă un inventar a datelor conţinute într-o bază de date, dicţionarul de date este un important instrument de management organizaţional. În realizarea acestor dicţionare de date se folosesc metadatele. Metadatele reprezintă date despre date (nume, conţinut, semnificaţie, proprietar etc.). O bază de date este compusă dintr-o mulţime de atribute (câmpuri, coloane) şi are asociată o mulţime de date (linii, rânduri, înregistrări, articole). O înregistrare (record) reprezintă o asociere a valorilor pentru fiecare câmp (field) al bazei de date. Cele trei nivele de organizare a datelor într-o bază de date sunt logic, virtual şi fizic. Nivelul logic sau extern (nivelul programatorului de aplicaţie) califică o structură de date ce are o realitate în planul semnificaţiei sau utilizării, dar nu şi în implementarea fizică; califică forma în care fiecare utilizator vede structurarea datelor, în funcţie de aplicaţia pe care o foloseşte sau în funcţie de resursele de date pe care administratorul bazei de date i le pune la dispoziţie. Nivelul virtual sau conceptual (nivelul administratorului bazei de date) se referă la definirea structurii datelor din baza de date astfel încât aceasta să îndeplinească cerinţele tuturor utilizatorilor, în condiţii de redundanţă minimă şi controlată a acesteia. Nivelul fizic (nivelul inginerului de sistem) priveşte modul de stocare şi de structurare a datelor pe suportul fizic de memorare a datelor (volum magnetic, cilindru, pistă, sector, bloc, octet şi bit). Structura virtuală reprezintă schema bazei de date, iar structura logică este denumită subschema bazei de date (concepţia CODASYL). Astfel, se poate concluziona că SGBD (DBMS) asigură legătura dintre nivelul conceptual (virtual) şi nivelul fizic. O înregistrare virtuală se poate prezenta sub forma a una sau mai multe înregistrări fizice şi poate participa la construirea unei sau mai multor înregistrări logice. Într-o bază de date ideală datele sunt definite o singură dată şi folosite ori de câte ori este necesar. În funcţie de locul în care sunt memorate colecţiile de date ce formează baza de date, se deosebesc: • baze de date centralizate, CDB (Centralized DataBases), în situaţia în care toate colecţiile care formează baza de date sunt stocate pe un singur calculator; • baze de date distribuite, DDB (Distributed DataBases), în situaţia în care colecţiile care formează baza de date sunt răspândite în nodurile unei reţele de calculatoare şi de comunicaţii. După orientare, bazele de date pot fi generalizate şi specializate. În cadrul DDBMS, accesarea bazelor de date distribuite, DDB se realizează, în principal, prin intermediul limbajului structurat de interogare, SQL (Structured Querry Language) şi al arhitecturii Client/Server (acestea sunt prezentate pe larg în capitolul 7 al lucrării). Realizarea unei baze de date se obţine prin parcurgerea etapelor: analiză sistem, proiectarea structurii bazei de date, popularea (încărcarea) bazei de date cu date, exploatarea şi întreţinerea bazei de date. Conţinutul acestor etape este dependent, de regulă, de tipul bazei de date şi de domeniul în care este ea folosită. Activitatea de analiză a sistemului economic presupune:

7

Page 6: Curs Blackboard Spiru

a. analiza componentelor sistemului şi a legăturilor dintre acestea sau analiza structurală în urma căreia se defineşte modelul structural sau static al sistemului economic; b. analiza stărilor sistemului şi a tranzacţiilor posibile între aceste stări în raport cu anumite evenimente. În urma acestei analize rezultă modelul dinamic sau temporal; c. analiza cerinţelor informaţionale, în urma căreia se defineşte modelul funcţional al sistemului economic; d. integrarea modelelor sistemului economic (structural, dinamic şi funcţional) în scopul corelării şi completării lor. Se face menţiunea că analiza funcţională a sistemului are ca scop determinarea transformărilor de date care se produc în cadrul sistemului în scopul satisfacerii cerinţelor informaţionale specifice acestui sistem. Transformările de date se vor prezenta sub forma unei diagrame de flux a prelucrărilor (modelul funcţional), în care nodurile reflectă procesele de prelucrare informaţională şi arcele fluxurile informaţionale ale datelor în baza de date. La proiectarea unei baze de date, procesul de normalizare ajută proiectantul bazei de date să creeze o structură a bazei de date care poate economisi spaţiul de memorare a datelor şi poate conduce la creşterea eficienţei prelucrării datelor. Scopul normalizării este de a minimiza redundanţa datelor. 1.2 Generaţii de baze de date şi de sisteme de gestiune a bazelor de date asociate În evoluţia istorică, bazele de date şi sistemele de gestiune a bazelor de date (SGBD) asociate au cunoscut trei generaţii: • sistemele ierarhice şi reţea; • sistemele relaţionale; • sistemele în tehnologie avansată (orientate obiect, relaţionale orientate obiect, deductive, distribuite, multibaze, active, multimedia, online etc.). Sistemele ierarhice şi reţea reprezintă datele la nivel de articol, prin legături ierarhice (arbore) sau de tip graf reţea. Deoarece datele prezintă o slabă independenţă fizică, SGBD (DBMS) este mai complicat şi mai greoi în comparaţie cu celelalte sisteme. Drumurile de acces la date sunt specificate prin intermediul limbajului de manipulare a datelor. Diagrama structurii de date (graf orientat ce reprezintă tipuri de entităţi şi legături funcţionale dintre ele) serveşte pentru descrierea, la nivel logic, a structurilor de date specifice sistemelor ierarhice şi reţea. Sistemele relaţionale tratează entităţile ca nişte relaţii. Modelul relaţional (ce aparţine lui E.F.Codd) reprezintă un model formal de organizare conceptuală a datelor, ce realizează reprezentarea legăturilor dintre date, având la bază teoria matematică a relaţiilor. Un sistem relaţional este compus formal dintr-o bază de date relaţională, o colecţie de operatori relaţionali, regulile de integritate care guvernează utilizarea cheilor în model şi un set de asocieri. Elementele de definire a modelului relaţional corespund celor trei componente ale ingineriei software: informaţie, proces, integritate. Problematica de detaliu a sistemelor de gestiune a bazelor de date relaţionale este tratată în paragraful următor. Sistemele de gestiune a bazelor de date în tehnologii avansate elimină cea mai mare parte a acestor dezavantaje. În programarea orientată pe obiecte, OOP (Object-Oriented Programming), efortul esenţial este direcţionat pentru definirea obiectelor. Obiectele de acelaşi tip formează o clasă ce cuprinde, alături de date, şi metodele de acces la aceste date. Datele sunt transparente numai pentru metodele asociate clasei respective (încapsularea datelor). Prin funcţiile denumite constructori şi destructori, se realizează controlul asupra creerii şi ştergerii unui anumit obiect. Prin moştenire, se obţin clase derivate ce moştenesc proprietăţile (date şi funcţii) claselor-părinte. Prin reunirea tehnicilor bazelor de date cu acelea ale limbajelor orientate obiect s-au obţinut bazele de date orientate obiect şi sistemele de gestiune aferente acestora, OODBMS (Object-Oriented DBMS). Se realizează astfel o organizare coerentă a obiectelor partajate între utilizatori concurenţi. OODBMS prezintă următoarele avantaje:

8

Page 7: Curs Blackboard Spiru

• integrarea descrierii structurale şi comportamentale; • posibilităţi superioare de deducţie (ierarhie de clase, moştenire); • considerarea aspectelor dinamice în cadrul aplicaţiilor; • îmbunătăţirea interfeţei cu utilizatorii. Se apreciază, totuşi, că administrarea obiectelor complexe este mai dificilă decât accesul la relaţii prin cereri SQL, specific bazelor de date relaţionale. Avantajele incontestabile ale tehnologiei orientate obiect au fost combinate cu acelea ale modelului relaţional, rezultând bazele de date relaţionale orientate obiect. Relaţiile sunt mulţimi de înregistrări ce reprezintă fapte. Cunoştinţele se definesc ca aseţiuni generale şi abstracte asupra faptelor. Pe baza faptelor cunoscute tezaurizate în cunoştinţe, se pot deduce noi fapte printr-un proces de raţionamente. Bazele de date deductive ce folosesc programarea logică (specifică inteligenţei artificiale) administrează cunoştinţe relativ la baze de date ce sunt, de regulă, RDB. Sistemele multibaze de date sunt compuse din mai multe sisteme de baze de date ce sunt integrate pe baza schemelor globale. Se realizează astfel accesul uniform şi integrat la fiecare dintre bazele de date componente. Dacă se consideră scopul esenţial de analiză a datelor, inclusiv istorice, pentru toată organizaţia, o bază de date optimizată în acest scop defineşte o Data Warehouse (depozit de date), după principiul procesării analitice, OLAP (On-Line Analytical Processing). Sistemele tranzacţionale (ce se folosesc pentru prelucrarea datelor operaţionale ale organizaţiei economice) au la bază principiul procesării tranzacţionale online, OLTP (On-Line Transactional Processing), de control la un moment dat al unei singure tranzacţii. Data Warehouse admite interogări ce nu sunt predefinite şi oferă răspunsuri ad-hoc pe baza analizelor datelor ce se referă la întreaga organizaţie. Data Warehouse se subdivide în baze de date departamentale (domenii de gestiune ale organizaţiei) denumite rafturi de date (Data Marts). Realizarea sistemelor de sprijin al deciziilor, DSS (Decision Support Systems) implică un proces laborios de descoperire a informaţiilor utile din cadrul bazelor mari de date. Procesul este denumit Data Mining (« mineritul datelor ») sau de descoperire a cunoştinţelor în baza de date, KDD (Knowledge Discovery in Databases). O bază de date OLAP poate să fie bază de date relaţională, dar şi bază de date multidimensională. Structura unei baze de date multidimensionale conţine obiecte de următoarele tipuri: variabile, dimensiuni, niveluri, ierarhii, atribute. 1.3 Baze de date relaţionale Termenul de bază de date relaţională (BDR) a fost introdus de E.F.Codd de la firma IBM în anul 1969. Modelul relaţional este fundamentat pe reguli, structuri şi operaţii. Regulile stabilesc modul de manipulare a datelor, structurile sunt obiecte definite ce conţin date şi care sunt accesibile utilizatorului, iar operaţiile reprezintă acţiuni prin care sunt manipulate datele sau obiectele schemei bazei de date. E.F.Codd a formulat în anul 1985 cele 13 reguli de bază care definesc o bază de date relaţională. Trebuie precizat faptul că nici un SGBD actual nu respectă în totalitate cele 13 reguli ale lui Codd. O bază de date relaţională reprezintă o colecţie de relaţii (tabele în accepţiunea uzuală, memorate fizic în fişiere). Coloanele tabelului se numesc atribute, iar liniile se numesc tupluri. Baza de date relaţională (RDB) este compusă dintr-o mulţime de domenii şi o mulţime de relaţii peste care se aplică o mulţime de asocieri. Domeniul este definit ca mulţimea obiectelor de acelaşi tip. Relaţia este o mulţime rezultată ca urmare a agregării (corespondenţei) a două sau mai multe mulţimi. O relaţie în accepţiunea bazelor de date pe domeniile Di constă dintr-un cap de tabel şi un corp de tabel. Asocierea se realizează pe bază de atribute (din capul de tabel).

9

Page 8: Curs Blackboard Spiru

Un astfel de exemplu este tabelul (relaţia) referitor la MATERIALE: Cod_material Denumire_material Cantitate Pret_unitar 01212 Tablă 1200 180000 03214 Cornier 400 420000 04301 Cherestea 850 210000 Fiecare linie descrie un anumit material. Coloanele conţin etichete ce reprezintă nume ale atributelor (Cod_material, Denumire_material, Cantitate, Pret_unitar). Domeniul ce reprezintă codurile materialelor este: D1: {“01212”,”03214”,”04301”}. iar domeniul pentru tipurile de materiale (delimitate prin denumire_material) este: D2: {“TABLA”,”CORNIER”,”CHERESTEA”}. Domeniul pentru cantitate este: D3: {“1200”,”400”,”850”}. Domeniul preţurilor unitare, în acest caz, este: D4: {pret_unitar ⎢pret_unitar∈[180000,420000]}. Mulţimea tuplurilor este definită prin produsul cartezian al domeniilor D1 X D2 X …X Dn. Exemplu de tuplu: <”01212”,”TABLA”,”1200”,”180000”>. Relaţia L se defineşte prin tupluri corespunzătoare din tabel: L: {<”01212”,”TABLA”,”1200”,”180000”>, <”03214”,”CORNIER”,”400”,”420000”>}. Într-o relaţie, este necesar ca tuplurile să fie distincte (nu se permit valori duplicate). Ca urmare, se observă că relaţia este reprezentată prin tabelul bidimensional în care coloanele sunt domenii iar liniile sunt tupluri. Numărul tuplurilor unei relaţii este cardinalul relaţiei. Numărul valorilor unui tuplu este gradul relaţiei. Schema unei relaţii este formată din numele relaţiei şi lista atributelor (pentru fiecare atribut este necesară specificarea domeniului asociat). Modelul relaţional este format din două mulţimi de operatori pe relaţii: algebra relaţională şi calculul relaţional. E.F.Codd a definit algebra relaţională ca o colecţie de operaţii pe relaţii, astfel încât o anumită operaţie dispune de operanzi de tipul relaţie şi are ca rezultat tot o relaţie. Tipurile de operaţii acceptate de algebra relaţională sunt operaţii de bază (reuniunea, diferenţa, proiecţia, produsul cartezian ş.a.), operaţii derivate (intersecţia şi diviziunea) şi operaţii suplimentare (selecţia, splitarea unei relaţii, complementarea unei relaţii, închiderea tranzitivă, joncţiunea etc.). Algebra relaţională permite derivarea procedurală a relaţiilor. Calculul relaţional conţine mulţimea operatorilor din modelul relaţional şi este o adaptare a calculului cu predicate (o relaţie este identificată cu un predicat) pentru domeniul BDR. Calculul relaţional asigură definirea neprocedurală, declarativă a relaţiilor. Relaţiile sunt precizate prin proprietăţile tuplurilor. Iniţial, în BDR, variabilele definite asupra relaţiilor aveau valori care reprezentau tupluri de relaţie (variabile tuplu), obţinându-se calculul relaţional orientat pe tuplu. Când variabilele operează asupra domeniilor – aşa cum se petrec lucrurile în prezent – ele sunt variabile domeniu şi determină calculul relaţional orientat pe domeniu. Regulile de integritate sunt aserţiuni pe care datele ce formează baza de date trebuie să le satisfacă şi sunt în număr de trei: unicitatea cheii (cheia primară trebuie să fie unică şi minimală), integritatea entităţii (atributele cheii primare trebuie să fie diferite de null) şi integritatea referirii (o cheie externă trebuie să fie null în întregime sau să corespundă unei valori a cheii primare asociate). Constrângerile structurale sunt de trei tipuri: de cheie, de referinţă şi de entitate.

Cheia unei relaţii reprezintă o mulţime minimală de atribute ale căror valori identifică în mod unic un tuplu într-o relaţie. Diferitele chei posibile se numesc chei-candidat.

Cheia candidat aleasă pentru a identifica efectiv tupluri se numeşte cheie primară.

10

Page 9: Curs Blackboard Spiru

Conceptele folosite pentru descrierea formală, uzuală şi fizică a elementelor de bază ale organizării datelor în baze de date relaţionale sunt prezentate în tabelul 1. Tabelul 1

Formal Uzual Fizic Relaţie tablou Fişier Tuplu linie Inregistrare Atribut coloană Câmp domeniu tip de dată tip de dată

• Definirea proprietăţilor structurale ale relaţiilor se realizează prin tehnica normalizării. Se afirmă că o relaţie se găseşte într-o formă normală particulară dacă îndeplineşte un număr specificat de restricţii. Normalizarea se obţine printr-un număr de paşi succesivi, în cadrul unui proces reversibil, până la realizarea formei dorite. Forma normală a unei relaţii este necesară deoarece formele normale nu produc anomalii în actualizarea datelor unei baze de date relaţionale. Tipurile de restricţii folosite la formele normale ale relaţiilor sunt restricţiile asupra valorilor atributelor, restricţiile referitoare la dependenţa atributelor secundare de chei, restricţiile cu privire la dependenţa atributelor principale de toate atributele. 1.4 Baze de date orientate obiect Bazele de date orientate pe obiecte, OODB (Object-Oriented DataBase) şi SGBD asociate asigură crearea de obiecte complexe formate din componente simple, fiecare prezentând atribute şi comportament propriu. Aceste sisteme se mai numesc şi sisteme de obiecte, cu originea în limbajele de programare orientate pe obiecte, OOP. Prin aceste tipuri de baze de date se ridică nivelul de abstractizare. Se face menţiunea că între partea de limbaje de programare şi partea de baze de date există multe elemente comune; cu toate acestea, aceste părţi sunt diferite: • un program pe calculator este gândit să rezolve o anumită problemă; • o bază de date este realizată pentru a rezolva o multitudine de probleme, inclusiv cu elemente de pornire nedeterministe. Pentru un program, obiectele complexe simplifică problema, în timp ce în situaţia bazelor de date orientate pe obiecte, de regulă, problemele se complică. Ca urmare, se cuvine să se judece în mod nuanţat atunci când se încearcă reliefarea avantajelor utilizării OOP şi OODB. Sistemul de gestiune al bazelor de date orientate pe obiect (SGBD-OO sau OODBMS) are ca principale obiective:

1. Modelarea superioară a datelor, ceea ce semnifică dezvoltarea de noi aplicaţii; extinderea posibilităţilor de generalizare şi agregare a relaţiilor; evoluţia către multimedia şi hipermedia (sunet, imagine, texte).

2. Capacitatea de deducţie superioară (ierarhie de clase, moştenire); 3. Îmbunătăţirea interfeţei cu utilizatorul: 4. Capacitatea de tratare dinamică, concomitent cu integrarea descrierii structurale şi

comportamentale. Modelul de dată-obiect asigură reprezentarea unor structuri de date complexe şi a unor ierarhii model, creind posibilitatea de definire a unor tipuri de date care combină atât structura de date cât şi definirea procedurii. Un model de date orientat pe obiecte are la bază noţiunea de entitate conceptuală şi defineşte un obiect ca o colecţie de proprietăţi care descriu entitatea. O comparaţie între noţiunile clasice şi cele asociate bazelor de date orientate pe obiecte este prezentată, după Date, în tabelul 2.

11

Page 10: Curs Blackboard Spiru

Tabelul 2 Nr.crt Noţiunea specifică obiectelor Noţiunea clasică de comparaţie 1. Obiect nemutabil (care nu se poate muta) Valoare 2. Obiect mutabil (care se poate muta) Variabilă 3. Clasa de obiecte Tip 4. Metoda Operator 5. Mesaj Invocarea de operator Obiectul reprezintă conceptual o unitate identificabilă cu conţinut propriu, care se deosebeşte de ceea ce o înconjoară. Fiecare obiect dispune de un identificator unic, denumit ID al obiectului, OID (Object ID). Două obiecte cu OID diferiţi sunt diferite, chiar dacă sunt identice sub toate aspectele transparente utilizatorului. Deşi tentaţia iniţială este de a considera obiecte doar unităţile ce se pot muta, prin obiecte se desemnează atât unităţile fixe cât şi cele mutabile. Fiecare obiect posedă un tip care semnifică o clasă de obiecte. Instanţa unui obiect reprezintă un obiect individual. Obiectele sunt încapsulate. Structura obiectului şi modul de acţiune al metodelor sale nu pot fi accesate şi actualizate direct de un agent extern, dar pot fi modificate indirect prin intermediul mesajelor. Această caracteristică ascunsă a obiectului se numeşte încapsulare. Încapsularea presupune independenţa fizică de date. Astfel, prin încapsulare, reprezentarea internă a unui obiect poate să fie modificată fără a fi nevoie ca aplicaţiile care utilizează obiectul să fie rescrise. Starea unui obiect este exprimată prin valorile atributelor sale. Colecţia de atribute trebuie aleasă astfel încât să descrie entitatea, adică să cuprindă atribute pe care utilizatorul trebuie să le cunoască. Metoda reprezintă un program care manipulează obiectul sau indică starea sa. Ea este asociată unei clase, iar specificarea metodei se numeşte „semnătură”. Comportamentul unui obiect reprezintă un set de metode sau operaţii care acţionează asupra atributelor sale. Obiectele se clasifică în: • obiecte elementare ca: întreg, boolean, şir de caractere; • obiecte compuse ca: nume, adresă; • obiecte complexe ca: autoturism, angajat. Un obiect înglobează următoarele elemente: a. structura de date; b. specificarea operaţiilor; c. implementarea operaţiilor. Structura unui obiect şi operaţiile (metodele) permise pentru acel obiect sunt definite împreună. Metodele şi atributele nu sunt vizibile din „exteriorul” obiectului. Un obiect răspunde la mesaje care reprezintă cereri adresate obiectului pentru a returna o valoare sau pentru a-şi schimba starea. Un obiect este divizat în interfaţă publică şi în memorie privată. Interfaţa publică este compusă din definiţiile interfeţelor (corespunzătoare semnăturilor specificaţiei). Interfaţa publică nu face parte din obiectul corespunzător. Această interfaţă publică este inclusă în obiectul de definire a clasei, CDO (Class-Defining Object). CDO este obiectul ce defineşte clasa pentru care obiectul considerat reprezintă o instanţă (este similar unui descriptor). Memoria privată este compusă din variabile de instanţă (atribute sau membri) ale căror valori reprezintă starea internă a obiectului. Deoarece sistemele baze de date orientate pe obiecte reale nu sunt „pure” (cu variabile instanţă care sunt netransparente utilizatorului), variabilele de instanţă apar ca transparente utilizatorului. Se deosebesc variabile de instanţă publice (transparente utilizatorului) şi variabile de instanţă private (cele netransparente utilizatorului). Persistenţa este o proprietate a datelor sau a obiectelor care presupune existenţa lor pe o durată mai mare în comparaţie cu aceea a procesului care le-a generat. Persistenţa

12

Page 11: Curs Blackboard Spiru

reprezintă proprietatea prin care starea bazei de date asigură execuţia unui proces pentru a fi refolosit ulterior în alt proces. Deoarece face parte integrantă din obiect, codul aferent metodelor este stocat în baza de date (ca şi starea obiectului). Tipuri şi clase Obiectele care prezintă acelaşi fel de atribute şi acelaşi comportament fac parte din acelaşi tip sau clasă. În raport cu această caracteristică există două categorii de sisteme orientate pe obiecte: a) sisteme care admit ca noţiune de bază clasa, cum ar fi: VISION, ORION, G-BASSE; b) sisteme care admit ca noţiune de bază tipul, cum sunt: C++, Simula, O2. Într-un sistem orientat pe obiecte, tipul sintetizează elementele comune ale unui set de obiecte cu aceleaşi caracteristici. Acest sistem are ca şi componente, interfaţa şi implementarea. Interfaţa este partea vizibilă pentru utilizator şi constă într-o listă de operaţii. Implementarea presupune descrierea structurii interne a datelor obiectului şi realizarea procedurilor de implementare a operaţiilor interfeţei. Un tip este construit recursiv, începând cu tipurile de bază: caracter, întreg, real, şir de caractere, boolean. Constructorii de tipuri sunt: tuplul, lista, setul şi clasa. O listă este o colecţie ordonată de obiecte ale aceleiaşi clase sau de valori ale aceluiaşi tip. Elementele unei liste sunt accesibile direct prin rangul lor. Operaţiile permise asupra listelor sunt: afectarea (=), comparaţia (= =), concatenarea (+), accesul direct ([i]), apartenenţa (in), sublista ([i ; j]), numărarea (count ( ) ), înlocuirea, ştergerea (list ( ) ), inserarea ([:i]+=), iteraţia ( { }). Noţiunea de clasă, deşi are aceeaşi specificaţie cu cea de tip, este asociată cu faza de execuţie. Ea presupune generarea de obiecte prin operaţia „new” aplicată unei clase şi stocarea setului de obiecte care reprezintă instanţele clasei. Descrierea clasei serveşte ca şablon pentru crearea obiectele noi. O clasă este un tip abstract de date care defineşte atât structura obiectelor din clasa respectivă, cât şi mulţimea metodelor existente pentru aceste obiecte. Astfel, obiectele din aceeaşi clasă prezintă aceleaşi atribute şi aceleaşi metode şi răspund la acelaşi mesaj. Moştenirea Într-o bază de date orientată pe obiecte, clasele sunt aranjate într-o ierarhie în care fiecare clasă moşteneşte toate atributele şi metodele superclasei din care face parte. Moştenirea conduce la reutilizarea codului. Moştenirea reprezintă mecanismul de realizare a definirii unei clase în care derivă variabilele de instanţă şi metodele din altă definire de clasă. Când o clasă moşteneşte, ea este considerată ca subclasă. Conceptele de subclasă şi superclasă sunt analoge conceptelor de generalizare şi specializare. Obiectele, clasele şi moştenirea formează baza modelului de date orientat pe obiecte şi presupune următoarele aspecte: • obiectele sunt entităţi de bază care înglobează structuri de date şi operaţii; • fiecare obiect are asociat un identificator care este unic şi asigurat de sistem; • clasele descriu tipuri generice de obiecte, toate obiectele sunt membrii unei clase; • clasele sunt înrudite prin moştenire; • definirea unei clase este mecanismul de specificare a schemei bazei de date; • definirea unei clase poate include variabile de instanţă, având tipuri de date definite de sistem sau de utilizator; • schema bazei de date poate fi extinsă dinamic prin definirea de noi clase. Operaţiile modelului de date orientat pe obiecte Operaţiile se pot grupa în modul următor: a) obiectele comunică între ele prin mesaje; b) un mesaj poate fi trimis instanţelor mai multor clase; c) metodele pot fi definite, şterse sau modificate; d) clasele pot fi definite şi actualizate prin operaţii de creare, ştergere şi modificare;

13

Page 12: Curs Blackboard Spiru

e) instanţa unei clase poate fi actualizată prin metode care modifică valorile variabilelor propriei instanţe, aceasta modificând starea internă a obiectului. Într-o serie de implementări, definirile de clasă sunt ele însele obiecte, numite obiecte de clasă. Obiectele clasă sunt instanţe ale unei clase generice sau ale unei metaclase. Operaţiile de creare, modificare şi ştergere ale definirilor de clasă pot fi şi implementate ca mesaje. În modelul de date orientat pe obiecte, regulile de integritate reprezintă o consecinţă a structurii modelului şi a următoarelor operaţii: • toate obiectele trebuie să respecte protocolul specificat de definirile lor de clasă; • obiectele sunt încapsulate, acest lucru presupunând accesul limitat la obiecte prin folosirea protocolului de mesaje definit pentru clasa obiectului; • identificatorul obiectului asigură integritatea referirii la un obiect. Ca atare, un obiect nu există fără să aibă asignat un identificator. Dacă un obiect este şters sau mutat, identificatorul său trebuie şi el şters sau mutat. O schemă completă a unei baze de date orientată pe obiecte poate consta din una sau mai multe ierarhii de clasă, împreună cu relaţiile structurale. Modificarea schemei presupune: 1. Definirea unei taxonomii şi a unui model al schimbărilor. Taxonomia defineşte un set de schimbări semnificative ale schemei, iar modelul furnizează o bază pentru specificarea semanticilor schimbărilor schemei; 2. Implementarea schimbărilor schemei. Aceste schimbări pot fi: a) schimbări referitoare la modul de definire al unei clase. Acestea includ schimbările atributelor şi metodelor definite pentru o clasă, cum ar fi: schimbarea numelui sau domeniul unui atribut, adăugarea, ştergerea unui atribut sau a unei metode; b) schimbări referitoare la structura ierarhiei de clase care includ adăugarea sau ştergerea unei clase şi schimbarea relaţiilor superclasă/subclasă dintre o pereche de clase. 1.5 Proiectarea bazei de date orientată pe obiecte Pentru proiectarea unei baze de date orientată pe obiecte se foloseşte tehnica top-down care constă în identificarea componentelor după care se stabilesc corelaţiile între ele şi se rafinează succesiv în „cascadă” componentele sale. Se poate utiliza şi metoda bottom-up prin care mai întâi se identifică componentele funcţionale pe baza cărora se vor identifica, în colecţiile existente, obiectele, care pot fi reutilizate pentru noul proiect. Componentele care nu există vor fi create ca subclase ale unor clase existente. O dată creată o ierarhie potrivită, se testează componentele specifice. Sistemul de gestiune al bazelor de date orientate pe obiecte (SGBD-OO sau OODBMS) conţine structuri şi reguli orientate către lucrul cu obiecte, incluzând: • un sistem de date abstracte pentru construirea de noi tipuri de date; • un constructor de tip şir; • un constructor de tip secvenţă; • un constructor de tip înregistrare; • un constructor de tip set; • funcţii; • un constructor de tip reuniune; • o compunere recursivă a elementelor anterioare. În proiectarea SGBD-OO se au în vedere următoarele: Principiul 1. SGBD-OO utilizează funcţii care conţin metode şi proceduri ale bazei de date, cu restricţia ca acestea să fie cât mai compacte, încapsulate, ermetizate. Încapsularea funcţiilor îl ajută pe programatorul de aplicaţie să asocieze funcţiile pe care şi le creează cu colecţiile utilizate. Principiul 2. SGBD-OO şi în general SGBD–urile din generaţia a treia vor prelua avantajele SGBD–urilor din generaţia a doua. În plus, se caută o modalitate de acces la o înregistrare existentă într-o colecţie oarecare şi aceasta se poate realiza prin utilizarea unui sistem de pointeri către identificatorii de obiecte.

14

Page 13: Curs Blackboard Spiru

Principiul 3. SGBD-OO trebuie să poată conecta şi limbaje din generaţia a patra. Un SGBD-OO lucrează cu obiecte complexe, obiecte care se obţin prin aplicarea de constructori asupra obiectelor simple. Identitatea obiectelor. Orice obiect există independent de valorile atributelor sale, ceea ce conduce la două relaţii posibile: - identitatea a două obiecte, adică sunt unul şi acelaşi obiect; - egalitatea a două obiecte, adică au aceeaşi valoare. Arhitectura SGBD-OO cuprinde trei componente: 1. Gestionarul de obiecte (Object Manager) furnizează interfaţa dintre procesele externe şi SGBD-OO. 2. Server-ul de obiecte (asigură gestiunea tranzacţiei şi gestiunea stocului de obiecte); 3. Stocul rezident de obiecte. Gestionarul de obiecte asigură implementarea completă a modelului de date-obiecte pentru utilizatorul extern. Acest lucru include posibilitatea de a defini structurile şi de a executa operaţiile specificate prin model. El primeşte cereri de creare de definiri de clase, de modificare a definirilor de clase deja existente, de manipulare a mesajelor generate de un program de aplicaţie în execuţie. Server-ul de obiecte asigură refacerea, inserţia, ştergerea şi actualizarea obiectelor în stocul rezident de obiecte. Un singur server poate manipula tranzacţii transmise de la mai mulţi gestionari de obiecte. Limbajul de definire a datelor este realizat prin mecanismul de transmitere a mesajelor. Limbajul pentru cereri ad-hoc se bazează pe transmitere de mesaj pentru selectarea şi regăsirea obiectelor. Prelucrarea mesajelor. Gestionarul de obiecte asigură interfaţa dintre procesele externe şi SGBD-OO. El primeşte mesaje pentru obiecte individuale, realizează legături dinamice şi operaţii de verificare a tipului şi expediază cerinţa externă pentru obiecte, către server-ul de obiecte. Transmiterea de mesaje şi prelucrarea cererii poate fi reprezentată astfel: - controlul sesiunii (menţinerea spaţiului local de lucru al utilizatorului extern pentru operaţii efectuate asupra bazei de date); - legătura dinamică (selectarea unei metode pentru un mesaj trimis unui obiect în momentul execuţiei); - crearea de noi obiecte sau instanţe de clasă trebuie iniţiată de gestionarul de obiecte; - transmiterea cerinţelor obiectului şi actualizare acestuia; - transmiterea cererii. Cererile pot fi translatate în planuri de execuţie în care selecţia şi regăsirea obiectelor sunt realizate prin transmiterea de mesaje. Aceasta presupune că protocolul de mesaje al clasei obiectului este definit pentru a permite accesul la variabilele de instanţă necesare pentru a selecta obiectul. Obiectele, definirile de clasă şi metodele cerute de gestionarul de obiecte sunt regăsite de server-ul de obiecte din stocul rezident de obiecte. Definirea şi modificarea schemei constă din următoarele etape: 1. Asigurarea accesului la definirile de clasă existente. Definirile tuturor claselor asigurate de SGBD-OO, ca şi a claselor create de utilizatorii umani, pot fi stocate permanent în SRO, într-o bibliotecă de clasă sau într-un dicţionar de date. 2. Extensibilitatea schemei bazei de date. Aceasta include prelucrarea declaraţiilor limbajului de baza de date, specificând crearea, mutarea sau identificarea definirilor de clasă. 3. Redefinirea dinamică a clasei (evoluţiei schemei). Gestionarul de obiecte trimite cerinţe pentru regăsirea şi actualizarea definirilor de clasă, server-ului de obiecte. Gestiunea tranzacţiilor este asigurată de server-ul de obiecte. Gestiunea stocului de obiecte se referă la menţinerea nivelului fizic de organizare a bazei de date obiect (ODB) şi la asigurarea căilor de acces necesare realizării accesului eficient la stocul de obiecte. Funcţiile de bază ale stocului de date-obiect se caracterizează ca fiind: 1. Suport pentru rezidenţă, adică obiectele create şi adăugate trebuie reţinute şi după ce se încheie sesiunea.

15

Page 14: Curs Blackboard Spiru

2. Suport pentru obiecte mari. SGBD-OO trebuie să poată suporta stocarea şi manipularea obiectelor de lungime variabilă şi de orice dimensiune. 3. Facilităţi de arhivare şi asigurare de rezerve (dubluri). Caracteristicile care asigură regăsirea şi actualizarea obiectelor stocate pot fi: a) suport pentru căi de acces care este necesar pentru a asigura regăsirea şi actualizarea eficientă a datelor stocate în baze de date mari. Aceasta include indexarea obiectelor pentru a permite regăsirea eficientă a obiectelor individuale, dar şi indexarea obiectelor prin valorile variabilelor de instanţă, pentru regăsirea subseturilor de obiecte pentru satisfacerea cererilor; b) tipuri de indecşi specializaţi pentru obiecte; c) gruparea obiectelor în acelaşi sector de stoc secundar. d) segmentarea obiectelor stocate.

Pentru acest capitol paginile din manual 80 –98. Lista subiectelor pentru pregătirea în vederea evaluării finale:

1. Ce este o colecţie de date? 2. Cum se defineşte o bază de date? 3. Cum este exploatată o bază de date? 4. Cum este accesată o bază de date? 5. În ce constă arhitectura unui sistem bază de date? 6. Care sunt obiectivele şi funcţiile generale ale unui SGBD? 7. Care sunt cele trei categorii de limbaje care definesc comenzile unui SGBD? 8. Precizaţi operaţiile care se pot efectua asupra unei baze de date. 9. Ce este dicţionarul de date? 10. Descrieţi nivelurile de organizare a datelor într-o bază de date? 11. Care este clasificarea bazelor de date în funcţie de locul unde sunt memorate bazele

de date? 12. Care este clasificarea bazelor de date în funcţie de orientare? 13. Care sunt etapele de realizare a unei baze de date? 14. Precizaţi cele trei generaţii de daze de date? 15. Caracterizaţi bazele de date relaţionale. 16. Care sunt conceptele folosite în modelarea bazelor de date relaţionale? 17. Ce reprezintă conceptual de cheie primară şi care sunt proprietăţile acesteia? 18. Caracterizaţi bazele de date orientate pe obiecte. 19. Care sunt principiile de proiectare a bazelor de date orientate pe obiecte?

Teste: 1. În proiectarea bazelor de date relaţionale, domeniul reprezintă:

a. un obiect concret sau abstract al realităţii. b. mulţimea tuturor valorilor posibile pe care le poate lua un atribut într-o anumită

perioadă de timp. c. gradul tabelului. d. numărul de înregistrări ale bazei de date. e. o serie de comenzi pe care Access-ul le execută automat la apariţia unui eveniment. R: b

2. La deschiderea fişierului care conţine componentele bazei de date acestea sunt afişate în fereastra DataWindow. R: F 3. Opţiunea Open din meniul rapid permite deschiderea spre modificare a obiectului selectat. R: F 4. Opţiunea Design din meniul rapid permite ca obiectul selectat să fie deschis în vederea efectuării modificărilor necesare tipului de aplicaţie dorit de utilizator.

16

Page 15: Curs Blackboard Spiru

R: A 5. Într-o asociere de tipul unu - la - unu o înregistrare din tabelul A poate avea cel puţin o înregistrare corespunzătoare în tabelul B şi invers, unei înregistrări din tabelul B îi corespunde cel mult o înregistrare în tabelul A. R: F 6. Într-o asociere de tipul unu-la-mulţi unei înregistrări din tabelul A îi corespund mai multe înregistrări din tabelul B, iar unei înregistrări din tabelul B îi corespunde cel puţin o înregistrare din tabelul A. R: F 7. Într-o asociere de tipul mulţi-la-mulţi unei înregistrări din tabelul A îi pot porespunde mai multe înregistrări din tabelul B, iar unei înregistrări din tabelul B îi pot corespunde, de asemenea, mai multe înregistrări din tabelul A. R: A 8. Pentru proiectarea unei baze de date orientată pe obiecte se pot utiliza două tehnici: a Top-up şi bottom-down b Top-down şi bottom-up c Top-down şi bottom-down R: b Prezentarea lecţiei / capitolul 2: 2. SISTEMUL DE GESTIUNE A BAZELOR DE DATE MICROSOFT ACCESS Concepte cheie:structură relaţională, tabel, formular, subformular, interogare, raport. 2.1 Prezentarea sistemului Microsoft Access Produsul-program Microsoft Access reprezintă un sistem de gestiune a bazelor de date relaţionale (SGBDR) care este inclus în compunerea pachetului de birotică Microsoft Office si care lucreaza sub sistemul de operare Microsoft Windows. Ca urmare, Microsoft Access foloseşte toate facilităţile oferite de sistemul de operare Microsoft Windows. Firma Microsoft a realizat în decursul timpului mai multe versiuni ale produsului Access. În capitolul de faţă referirile sunt efectuate la versiunile Microsoft Access 2000, 2002 (XP) şi 2003. La baza SGBDR Microsoft Access se află modelul relaţional al datelor şi modelul orientat pe obiecte (unui obiect îi sunt asociate evenimente şi proprietăţi). În comparaţie cu alte SGBDR, produsul Microsoft Access dispune de toate componentele unei baze de date stocate într-un fişier cu extensia MDB. Sistemul de gestiune a bazelor de date relaţionale Microsoft Access conservă avantajele sistemelor de gestiune, asigurând astfel interfaţa între baza de date şi utilizator. SGBD Microsoft Access permite definirea, consultarea şi actualizarea bazelor de date şi, în plus, partajarea datelor între mai mulţi utilizatori. Se apreciază că mai mult de 20 de utilizatori pot lucra simultan la o bază de date Access. Pentru execuţia comenzilor prin intermediul interfeţei grafice a SGBD Microsoft Access se asigură următoarele posibilităţi: meniuri, instrumente specifice (unelte ca butoane, casete etc), casete de dialog, combinaţii de taste. Produsul Microsoft Access permite lucrul cu trei limbaje: QBE (Query By Examples), SQL (Structured Query Language) şi VBA (Visual Basic for Applications). Ca urmare, există mai multe modalităţi de realizare a aplicaţiilor pentru baze de date sub SGBD Microsoft Access: interfaţa standard Access, interfaţa SQL, cu ajutorul VBA, interfeţele Access pentru

17

Page 16: Curs Blackboard Spiru

comunicarea cu alte SGBD-uri (Paradox, FoxPro, dBase etc.), interfeţele Access cu alte aplicaţii Windows. Aplicaţiile în sine sunt obiecte ale utilizatorilor destinate pentru o anumită bază de date. Aceste obiecte sunt, de regulă, de tip vizual. Schema bazei de date este formată din ansamblul tabelelor şi poate fi utilizată prin manipularea interogărilor asupra bazei de date. Aceste interogări sunt obţinute prin intermediul limbajului de interogare structurată, SQL. Produsul Microsoft Access este compatibil cu tehnologia ActiveX care este specifică aplicaţiilor de tipul client/server. 2.2 Cunoaşterea mediului de lucru Microsoft Access 2.2.1 Definirea componentelor principale ale SGBD Microsoft Access SGBD Microsoft Access 2003, (XP, 2000) asigură posibilitatea manipulării datelor în conformitate cu cerinţele utilizatorilor. Datele sunt stocate în mod organizat în baze de date. Baza de date permite localizarea rapidă a unui anumit element, compararea statisticilor pe diverse perioade de timp, interogarea anumitor categorii de date şi obţinerea facilă a rezultatelor tipărite. O bază de date Microsoft Access reprezintă o colecţie de obiecte de tipul: tabele, formulare, interogări, rapoarte, pagini, macroinstrucţiuni şi module. Obiectele Microsoft Access sunt percepute prin “ceea ce fac”, comportamentul lor mascând elemente de structură internă. În momentul în care obiectul a fost creat, el poate fi utilizat şi în alte aplicaţii, compuse din obiecte care interacţionează prin specificul comportamentului lor. În acest caz, nu mai există un program care manipulează datele, ci obiecte care îşi transmit reciproc date. Evenimentele care apar şi schimbările de stare pe care acestea le declanşează determină o schimbare a metodologiei de concepere a sistemului. Tabelele (Tables) sunt obiecte utilizate de Access pentru stocarea datelor. Crearea unei baze de date începe cu definirea tabelelor. Fiecare coloană a tabelului este denumită câmp (field), iar fiecare rând al tabelului constituie o înregistrare (record). Înregistrările unui tabel respectă aceeaşi structură de câmpuri. La crearea unui tabel nou se solicită definirea câmpurilor, atribuindu-se fiecăruia o denumire unică şi indicându-i SGBD Access tipul de date corespunzător. Ulterior se pot adăuga şi alte câmpuri, cu condiţia reproiectării eventualelor formulare şi rapoarte care folosesc datele tabelului în structura anterioară acestei operaţii. Interogările (Queries) sunt obiecte Access ce reprezintă întrebări pe care utilizatorul le formulează în legătură cu numite informaţii din baza de date. În momentul în care utilizatorul porneşte la construcţia unei interogări, acesta trebuie să aibă deja o viziune de ansamblu asupra datelor pe care doreşte să le regăsească, şi anume: ce câmpuri se vor utiliza, din care tabele se vor extrage datele, ce criterii trebuie să îndeplinească aceste date, în ce ordine vor fi ele sortate. Construirea unei interogări în SGBD Access reprezintă un proces simplu şi rapid de aşezare a tabelelor şi a câmpurilor necesare pe o grilă de tipul QBE (Query by Example). Limbajul QBE a fost lansat pe piaţă în anii 1970 de firma IBM, care a dorit să pună la dispoziţia utilizatorilor un produs performant de regăsire a datelor într-o bază de date. Succesul limbajului QBE a fost atât de mare încât acesta este prezent într-o formă sau alta în aproape toate sistemele SGBD, inclusiv în Microsoft Access. Formularele (Forms) reprezintă obiecte Access destinate introducerii datelor într-o bază de date (când formularul este asociat unui tabel), precum şi vizualizării datelor datelor din baza de date (când formularul este asociat unei interogări). Astfel cu ajutorul formularelor se pot efectua câteva operaţii tipice în baza de date, şi anume operaţii de adăugare, modificare sau de ştergere a unor date din baza de date. Rapoartele (Reports) reprezintă un alt obiect al unei baze de date Microsoft Access, prin intermediul căruia utilizatorul are posibilitatea de a prezenta date selectate în rezumat, inclusiv în format pentru tipărire. Prin intermediul rapoartelor utilizatorul are un control complet asupra dimensiunilor şi modului de prezentare a datelor de ieşire. De asemenea, rapoartele permit prezentarea unor informaţii de sinteză rezultate ca urmare a prelucrărilor executate în baza de date. Rapoartele se diferenţiază de formulare prin faptul că în timp ce

18

Page 17: Curs Blackboard Spiru

formularul este proiectat pentru a avea un acces aleator la date, el bazându-se pe un set dinamic al datelor, rapoartele nu modifică niciodată datele din baza de date, parcurgerea înregistrărilor realizându-se în mod secvenţial (SGBD Microsoft Access utilizează pentru obţinerea unui raport o copie a datelor protejată la scriere). Paginile (Pages) sunt obiecte Access ce asigură accesarea bazelor de date din Internet prin intermediul navigatoarelor (browser-elor) Web. Aceste obiecte sunt necesare ca urmare a prelucrării integrate a datelor care circulă în Internet sub forma unei aplicaţii globale a datelor, inclusiv pentru funcţia de partajare a datelor. Macroinstrucţiunile sau macro-urile (Macros) reprezintă obiecte Access care definesc ansamble de comenzi pe care sistemul Microsoft Access le execută automat la apariţia unor evenimente. Macro-urile pot fi ataşate unui formular, raport sau control în scopul automatizării unor operaţii de rutină (deschidere sau închidere de formulare, imprimarea unor rapoarte, filtrarea, verificarea sau validarea unor date etc.). Modulele (Modules) sunt obiecte Access ce sunt create în limbajul Visual Basic pentru aplicaţii, VBA (Visual Basic for Applications) destinate extinderii posibilităţilor funcţionale ale unei baze de date. 2.2.2 Deschiderea şi închiderea unei baze de date în Microsoft Access SGBD Microsoft Access poate fi pornit din meniul Start sau din zona de lucru. La pornirea SGBD Access 2003, panoul de lucru Getting Started este disponibil în partea din dreapta ecranului. Din meniul Vizualizare (View) se execută clic pe opţiunea Task Pane de unde se alege panoul de lucru dorit cu clic pe săgeata de listă de pe bara de titlu a panoului respectiv. Comutarea între panourile de lucru se efectuează cu clic pe butoanele Înapoi (Back) şi Înainte (Forward). Închiderea unui panou de lucru se efectuează prin intermediul butonului Închidere (Close). Caseta Search for… serveşte pentru căutarea unui nume sau a unei locaţii de fişier. De asemenea, Search for… poate fi utilă pentru căutarea unei proprietăţi într-o bază de date sau a unui anumit şir de caractere. Deschiderea unei baze de date existente se execută din panoul de lucru Getting Started, cu opţiunea Open din meniul File sau cu butonul Open de pe bara cu instrumente, urmată de numele bazei de date. Crearea unui nou fişier se face cu opţiunea Task Pane. Pentru o bază de date nouă se alege opţiunea Blank database… din meniul New. Deschiderea unei baze de date existente sau noi presupune lucrul cu fereastra Database (bază de date) care afişează obiectele care formează baza de date. Fereastra Database pune la dispoziţie utilizatorului o metodă simplă de gestionare a obiectelor care compun baza de date. În fereastra Database sunt afişate, în partea stângă a ferestrei. cele şapte tipuri de obiecte care formează baza de date, şi anume: • Tabelul (Table); • Interogarea (Query); • Formularul (Form); • Raportul (Report); • Pagini Web (Pages); • Macro-ul (Macro); • Modulul (Module). Cele trei butoane (butonul Open, butonul Design, butonul New) afişate în partea de sus a ferestrei Database, sunt utilizate pentru crearea, modificarea şi respectiv afişarea obiectului curent. Obiectele create vor fi afişate în lista cu obiecte situată în mijlocul ferestrei Database. În interiorul acestei liste se mai află trei opţiuni rapide de creare a obiectelor. Obiectele gestionate cu SGBD Microsoft Access, împreună cu elementele de control care le sunt asociate, conţin proprietăţi şi declanşează apariţia unor tipuri de evenimente.

19

Page 18: Curs Blackboard Spiru

Pentru modificarea proprietăţilor unui obiect, se selectează din partea stângă a ferestrei Database eticheta corespunzătoare tipului de obiect. Această operaţie are ca efect afişarea în ordine alfabetică (în lista cu obiecte) a tuturor obiectelor de acelaşi tip. Se execută un clic cu butonul din partea dreaptă a mouse-ului pe obiectul a cărui proprietate se doreşte a se modifica, iar din meniul rapid care apare se pot efectua următoarele: - deschiderea obiectului respectiv pentru a consulta datele conţinute în el; - deschiderea obiectului în modul Design pentru a efectua modificări de structură; - salvarea obiectului respectiv sub un alt nume; - vizualizarea conţinutului obiectului înainte de a-l trimite pentru tipărire; - realizarea unei copii a conţinutului obiectului la imprimantă; - ştergerea din baza de date a obiectului, sau redenumirea acestui obiect; - realizarea unui duplicat al obiectului curent prin copierea în clipboard (memorie tampon sau temporară) şi apoi recopierea din această memorie tampon. Această comandă este necesară atunci când este nevoie de un tabel similar cu unul deja creat. SGBD Access cere confirmarea copierii tabelului cu toate datele pe care le conţine, sau numai a structurii acestui tabel; - copierea unui tabel sau a unui obiect de tip interogare în clipboard şi apoi recopierea acestuia în programe ca Excel şi Word; se determină astfel copierea datelor Access în programele respective; Butonul Open (deschide), sau alegerea opţiunii Open din meniul rapid, are ca efect o afişare a obiectului selectat pentru o utilizare normală. Butonul Design (proiectare), sau alegerea opţiunii Design din meniul rapid, asigură ca obiectul selectat să fie deschis în modul de afişare Design în vederea efectuării modificărilor necesare tipului de aplicaţie dorit de utilizator. Butonul New (nou) asigură crearea unui obiect nou, de tipul selectat anterior. În timpul lucrului cu SGBD Microsoft Access se pot obţine informaţii de ajutor prin intermediul meniului Help de pe bara cu instrumente. Prin introducerea unui sau mai multor cuvinte-cheie în caseta Search for… se obţin explicaţii detaliate referitoare la subiectul dorit. 2.3 Tabelul 2.3.1 Crearea unui table Tabelul (Table) este un obiect specific SGBD Microsoft Access pentru stocarea datelor. Crearea unei baze de date (structurile de date specifice acesteia) începe cu definirea tabelelor. Această definire înseamnă, de fapt, stabilirea structurii tabelului. Fiecare coloană a tabelului este denumită câmp (field), iar fiecare rând al tabelului constituie o înregistrare (record). Înregistrările unui tabel respectă structura de câmpuri a tabelului. La crearea unui tabel nou se solicită definirea câmpurilor, atribuindu-se fiecăruia o denumire unică şi indicându-i SGBD Microsoft Access tipul de date corespunzător. Ulterior se pot adăuga şi alte câmpuri, cu condiţia reproiectării eventualelor formulare şi rapoarte care folosesc datele tabelului în structura anterioară acestei operaţii. Pentru crearea unui tabel, se poate utiliza una dintre următoarele trei metode: • Create table in Design View (crearea tabelului cu ajutorul ferestrei de proiectare) • Create table by using wizard (crearea tabelului prin folosirea ghidului) • Create table by entering data. (crearea tabelului prin introducerea datelor).

Crearea tabelelor prin alegerea opţiunii Create table by using wizard (program “vrăjitor” dedicat tabelelor) asigură asistarea pe întregul parcurs de construcţie a unui tabel, definind prin intermediul unui dialog cu utilizatorul numele şi tipul de câmpuri care definesc tabelul.

O altă modalitate de a crea un tabel o constituie executarea unui clic de mouse pe

20

Page 19: Curs Blackboard Spiru

butonul New şi alegerea din fereastra de dialog New Table, a uneia dintre cele cinci opţiuni disponibile: 1. Datasheet View – permite crearea unui tabel în modul Datasheet (foaie de date), având 10 câmpuri (coloane) şi 21 de înregistrări (rânduri) libere, pregătit pentru completare. 2. Design View – permite crearea unui tabel în modul Design (proiectare). 3. Table Wizard – permite crearea de tabele cu ajutorul magicienilor bazei de date. 4. Import Table – această facilitate importă tabele şi obiecte aflate în alte baze de date. 5. Link Table – creează tabele în baza de date curentă care sunt legate cu alte tabele din baze de date externe. Crearea tabelelor cu ajutorul opţiunii Design View presupune parcurgerea a trei paşi pentru definirea unui câmp în structura unui tabel: stabilirea numelui câmpului, stabilirea tipului de dată asociată acelui câmp şi stabilirea proprietăţilor acestuia. Când se alege această modalitate de construcţie a unui tabel, pe ecranul monitorului este afişată fereastra de dialog Table. Fereastra de dialog Table este formată din două zone: zona aflată în partea de sus a ferestrei (zonă folosită pentru declararea câmpurilor), alcătuită dintr-un tabel format din trei coloane şi o a doua zonă aflată în partea de jos a ferestrei, zonă în care se stabilesc proprietăţile câmpului. Zona de declarare a câmpurilor este formată dintr-un tabel compus din trei coloane: • Coloana Field Name – în această coloană se declară numele câmpurilor. SGBD Microsoft Access permite folosirea unor nume de câmpuri de maxim 64 de caractere, inclusiv spaţiile. În construcţia numelui unui câmp se pot folosi litere mari şi mici, avându-se în vedere ca aceste nume să nu prezinte aceeaşi denumire cu numele utilizate ca proprietăţi de SGBD Microsoft Access. • Coloana Data Type – indică ce tip de date vor fi memorate în acel câmp şi câtă memorie se va aloca pentru acel câmp. • Coloana Description (Descriere) – în această coloană se poate scrie de către utilizator un text explicativ cu scopul de a detalia destinaţia câmpului. Tipurile de date asociate câmpurilor definesc tipurile de câmpuri şi sunt următoarele: 1. Text Un câmp text are implicit 50 de caractere, dar se poate opta pentru orice lungime cuprinsă între 1 şi 255. 2. Memo Câmpurile memo constau numai din text şi au maxim 255 de caractere, în acestea putând fi incluse şi secvenţele de salt la început de rând/salt la rând nou. Aceste câmpuri sunt utilizate pentru a scrie comentarii. 3. Număr (Number) Tipul Number include mai multe subtipuri de date care diferă prin modul de stocare şi viteza de răspuns, şi anume: • subtipul Byte (octet) care acceptă numai valori întregi pozitive (fără semn) cuprinse între 0 şi 255; • subtipul Integer (întreg) acoperă domeniul numerelor întregi de la –32768 la +32768; • subtipul Long Integer (întreg lung) acoperă domeniul numerelor întregi dincolo de limitele ± 2.000.000.000; • subtipul Single (numere reale reprezentate în virgulă mobilă simplă precizie) acoperă domeniul numerelor fracţionare cu maxim şapte cifre semnificative; • subtipul Double (numere reale reprezentate în virgulă mobilă dublă precizie) acoperă domeniul numerelor fracţionare cu maxim 14 cifre semnificative; • subtipul ReplicationID (identificator duplicare sau identificator multiplicare); această valoare este reprezentată pe 16 octeţi şi a fost creată cu scopul de a asigura un identificator unic global pentru bazele de date în care trebuie realizate sincronizările unui mare volum de date suplimentare.

21

Page 20: Curs Blackboard Spiru

4. Dată calendaristică/oră (Date/Time) SGBD Microsoft Access stochează intern datele calendaristice sub forma unor numere în virgulă mobilă pe 8 octeţi, ora fiind reprezentată ca o fracţiune dintr-o zi. Sistemul introduce automat data curentă prin proprietatea Default Value (valoare implicită) a câmpului = Date(). Se poate folosi opţiunea = Now() pentru a stoca ora şi data. Proprietatea Format trebuie să fie stabilită pentru toate câmpurile dată calendaristică/oră (date/time). 5. Tipul valută (Currency) Tipul Currency acoperă valorile în USD, cu 15 cifre la partea întreagă, iar la partea zecimală până la sutimi de cent. Din punct de vedere al reprezentării interne, tipul valută este un număr în virgulă fixă. 6. Număr cu incrementare automată (AutoNumber) Datele de acest tip au proprietatea că sunt incrementate automat (AutoNumber) şi pot primi valori întregi lungi secvenţiale. Tipul este numit Counter (numărător). 7. Tipul Da/Nu (Yes/No) Datele de acest tip sunt booleene. Ca urmare primesc valorile True/False (adevărat/fals) şi sunt afişate într-una din formele True/False, respectiv On/Off. 8. Obiect OLE Tipul de câmp OLE (Object Linking and Embedding) este destinat păstrării datelor provenite de la alte programe care s-au înregistrat ca servere OLE în Windows. Aceasta permite bazei de date să stocheze documente create de programe de prelucrare a textelor, seturi de foi de calcul, sunete, videoclipuri ş.a. 2.3.2 Realizarea relaţiilor între tabele. Atunci când se creează tabele într-o bază de date relaţională, acestea prezintă o existenţă de sine stătătoare. Pentru a lega tabelele între ele, pentru a crea o relaţie, se utilizează fereastra Relationships, fereastră pe care se poate activa fie din bara de meniuri standard, fie din meniul Tools. Pentru a defini o relaţie, se adaugă în fereastra Relatioships tabelele între care se doreşte să existe legături şi se trage dintr-un tabel cîmpul care trebuie legat spre câmpul corespunzător din celălalt tabel. Ca regulă generală se va lega un câmp care reprezintă o cheie primară din tabelul-părinte, cu un câmp care reprezintă cheie externă (străină) în tabelul-fiu. Cheia externă este un atribut sau o mulţime de atribute care are aceleaşi valori cu un atribut sau un grup de atribute aparţinând tabelului-părinte, acest atribut sau grup de atribute jucând rolul de cheie primară în tabelul-părinte. Pentru validarea relaţiei între cele două tabele, cheia externă trebuie să fie de acelaşi tip şi să aibă aceeaşi dimensiune cu a cheii primare. 2.4. Interogarea Interogarea (Query) este un obiect Access ce reprezintă o întrebare pe care utilizatorul o formulează cu privire la numite informaţii din baza de date. În momentul în care utilizatorul porneşte la construcţia unei interogări, acesta trebuie să aibă deja o viziune de ansamblu asupra datelor pe care doreşte să le regăsească, şi anume: ce câmpuri se vor utiliza, din care tabele se vor extrage datele, ce criterii trebuie să îndeplinească aceste date, în ce ordine vor fi ele sortate. Construirea unei interogări în Microsoft Access reprezintă un proces simplu şi rapid de aşezare a tabelelor şi a câmpurilor necesare pe o grilă QBE (Query by Example). Clasificarea interogărilor Cele mai utilizate interogări sunt interogările denumite interogări de selecţie. O interogare permite: - vizualizarea sau modificarea datelor; - selectarea acelor înregistrări care satisfac criteriile impuse de utilizator;

22

Page 21: Curs Blackboard Spiru

- limitarea unei proceduri la câmpurile care sunt relevante; - sortarea înregistrărilor într-o ordine specificată. Atunci când este executată o interogare de selecţie, rezultatul va fi o mulţime de înregistrări aparţinând unui tabel sau mai multor tabele. Această mulţime poartă numele de dynaset (setul dinamic rezultat al interogării). Un dynaset reprezintă o vedere dinamică asupra datelor care sunt subiectul interogări respective. Asta înseamnă că atunci când datele din tabelele sursă ale interogării suferă modificări, atunci automat rezultatul interogării va fi şi el modificat . O a doua mare categorie de interogări este reprezentată de interogările de acţiune. Aceste interogări au rolul de a modifica anumite date, în cadrul unei singure operaţii. Aceste modificări cuprind capacitatea de a şterge, de a adăuga, a modifica anumite valori dintr-un tabel, ca şi de a crea un tabel nou. Aceste interogări de acţiune sunt: interogările pentru ştergere (Delete Query), interogările pentru adăugare (Append Query), interogările pentru reactualizare (Update Query) şi interogările a căror rezultat este crearea unui tabel nou în baza de date (Make-Table Query). Crearea interogărilor Atunci când se doreşte să se creeze o interogare, se alege din fereastra Database grupul de obiecte Query, apoi se execută un clic pe butonul New, SGBD Microsoft Access afişând caseta de dialog New Query. Fereastra New Query permite cinci moduri de realizare a unei interogări şi anume: 1. Design View – alegând această opţiune de creare a unei interogări, utilizatorul va porni de la zero, cu un obiect blanc în definirea interogării; 2. Simple Query Wizard – alegând această opţiune, utilizatorul va fi ajutat, pe tot parcursul creării unei interogări de selecţie, de ghidul de lucru al SGBD de tip Wizard, care adresează întrebări referitoare la tabelele şi câmpurile care se doresc a fi selectate, iar pe baza răspunsurilor obţinute, se va construi interogarea; 3. Crosstab Query Wizard – această opţiune funcţionează similar cu opţiunea Simple Query Wizard, doar că de această dată wizard-ul va construi o interogare prin încrucişarea tabelelor; 4. Find Duplicates Query Wizard – wizard va construi o interogare care va regăsi înregistrări duble; 5. Find Unmatched Query Wizard – funcţionează identic ca şi opţiunea Find Duplicates Query Wizard, dar de această dată rezultatul va fi construirea unei interogări care va găsi înregistrările fără corespondent în cadrul tabelelor. 2.5 Formularul Formularul (Form) reprezintă un obiect Access destinat introducerii datelor într-o bază de date (când formularul este asociat unui tabel), precum şi vizualizării datelor datelor din baza de date (când formularul este asociat unei interogări). Astfel cu ajutorul formularelor se pot efectua câteva operaţii tipice în baza de date, şi anume operaţii de adăugare, modificare sau de ştergere a unor date din baza de date. Un formular conţine două categorii de informaţii: 1. informaţii de structură – reprezintă informaţiile referitoare la alcătuirea şi vizualizarea formularului (mărimea formularului, aşezarea în formular a atributelor şi controalelor, proprietăţile controalelor etc.). 2. datele care care fac subiectul bazei de date – sunt acele date pe care utilizatorul le introduce în baza de date. Obiectele pe care le poate conţine un formular pot fi obiecte asociate unor câmpuri din tabele (în acest caz, rolul acestor obiecte este de a prelua datele introduse de utilizator şi de a le stoca în tabele sau de a afişa anumite date conţinute de tabele), şi obiecte care prin apariţia unor evenimente pot declanşa anumite acţiuni.

23

Page 22: Curs Blackboard Spiru

Crearea unui formular SGBD Microsoft Access 2003 pune la dispoziţia utilizatorului mai multe metode de a crea un formular. Pentru a crea un formular se va executa un clic pe obiectul Forms din fereastra Database urmat de un clic pe butonul New. Aceste acţiuni vor avea ca rezultat afişarea pe ecranul monitorului a ferestrei de dialog New Form. SGBD Microsoft Access 2003 permite nouă moduri de a crea un formular: • Design View – prin această metodă – cu fereastra de proiectare a formularului, se asigură un control absolut asupra procesului de creare a formularului. • Form Wizard – reprezintă cea mai simplă metodă de creare a unui formular, SGBD Microsoft Access asigurând asistenţa pe toată durata procesului de creare a formularului. Ca şi în cazul opţiunii Table Wizard, se pun întrebări în legătură cu modul în care se doreşte construirea acelui formular, făcând anumite sugestii, culegând informaţiile asupra opţiunilor utilizatorului şi pe baza acestor opţiuni, creând, în final, formularul dorit. • AutoForm: Columnar – alegerea acestei metode, are ca rezultat crearea în mod automat a unui formular simplu, fără ca SGBD Microsoft Access să solicite vreo informaţie suplimentară. Formularul este afişat în mod automat având câmpurile dispuse şi aliniate unul sub celălalt. Ca şi în cazul unui formular creat în modul Design View sau Form Wizard, se poate vizualiza la un moment dat numai o singură înregistrare. • AutoForm: Tabular – asigură crearea unui formular având câmpurile unei înregistrări aliniate pe un rând. Acest tip de formular conţine în partea superioară numele asociat fiecărui câmp, iar în cazul în care tabelul asociat conţine multe înregistrări, în partea dreptă a formularului apare o bară derulantă. • AutoForm: Datasheet – permite crearea unui formular având un mod de vizualizare identic cu a tabelului căruia îi este asociat, introducerea datelor prin intermediul acestui formular realizându-se ca şi cum s-ar introduce date într-un tabel. • AutoForm: PivotTable – prin această metodă, se creează automat un formular ca o vedere (view) a tabelului sau interogării selectate. • AutoForm: PivotChart – este un wizard ce asigură crearea automată a unui formular ca o vedere a unei diagrame (Chart) cu datele provenite dintr-un tabel sau interogare. • Chart Wizard – alegerea acestei metode are ca rezultat crearea unui formular în interiorul căruia se afişează un grafic. • PivotTable Wizard – creează un formular în interiorul căruia datele sunt reprezentate în format Excel. 2.6 Raportul Raportul (Report) reprezintă un obiect al unei baze de date Microsoft Access cu ajutorul căruia utilizatorul poate prezenta anumite date sub formă de rezumat, eventual în format pregătit pentru tipărire. Prin intermediul rapoartelor utilizatorul dispune de un control absolut asupra dimensiunilor şi modului de prezentare a datelor. De asemenea, rapoartele asigură prezentarea unor informaţii de sinteză asupra rezultatelor prelucrărilor efectuate în baza de date. Rapoartele nu modifică datele din baza de date, parcurgerea înregistrărilor realizându-se în mod secvenţial. SGBD Microsoft Access foloseşte pentru obţinerea unui raport o copie protejată la scriere a datelor. Ca şi în cazul formularelor, rapoartele sunt alcătuite din două categorii de informaţii: 1. informaţii de structură – reprezentate de acele informaţii de ordin funcţional stabilite la crearea raportului (controale, secţiuni, elemente de grafică decorative, etc); 2. informaţii reprezentând datele propriu-zise. Majoritatea informaţiilor dintr-un raport sunt culese din tabele, formulare sau interogări asociate raportului respectiv. Din punct de vedere al modului de creare, funcţionare şi utilizare, între formulare şi rapoarte, există multe asemănări. Ambele clase de obiecte folosesc secţiuni şi controale

24

Page 23: Curs Blackboard Spiru

pentru prezentarea datelor, deci modul de creare al unui raport va fi asemăntor cu modul de creare al unui formular. SGBD Microsoft Access 2003 asigură mai multe metode de creare a unui raport, şi anume: 1. Design View – prin această metodă de creare a unui raport, utilizatorul are controlul absolut asupra modului de aranjare a obiectelor în cadrul de proiectare a raportului. 2. Report Wizard – reprezintă o metodă rapidă şi uşoară de creare a unui raport, utilizatorul fiind asistat pe tot parcursul creării raportului cu întrebări referitoare la sursele înregistrărilor, numele câmpurilor şi formatul datelor. SGBD Microsoft Access 2003 creează pe baza răspunsurilor utilizatorului raportul dorit. 3. AutoReport: Columnar sau AutoReport: Tabular – SGBD Microsoft Access 2003 generează în mod automat un raport în care datele sunt afişate într-o coloană (pentru AutoReport: Columnar), sau sub formă de tabel (pentru AutoReport Tabular). 4. Chart Wizard – această opţiune asigură generarea unui raport în interiorul căruia va fi prezentat un grafic. 5. Label Wizard – această opţiune are rolul de a crea etichete poştale care pot fi tipărite la imprimantă pe suporturi speciale de hârtie (auotcolante, etchete detaşabile, etc.) În partea de jos a ferestrei de dialog New Report se află o casetă având în partea dreaptă un buton cu o săgeată desenată pe el. Dacă utilizatorul execută un clic de mouse pe acest buton va apare o listă derulantă care conţine numele tuturor tabelelor şi interogărilor create în baza de date. Pentru crearea unui raport utilizatorul trebuie să aleagă din lista derulantă un tabel sau o interogare. 2.7. Paginile (Pages) Paginile sunt obiecte Access ce asigură accesarea bazelor de date din reţeaua Internet şi WWW (World Wide Web) prin intermediul navigatoarelor (browser-elor) Web. Aceste obiecte sunt necesare ca urmare a prelucrării integrate a datelor care circulă în Internet sub forma unei aplicaţii globale a datelor, inclusiv pentru funcţia de partajare a datelor. SGBD Microsoft Access realizează suportul pentru Web în patru moduri: • cu ajutorul instrumentelor de navigare în Web din interiorul bazei de date; • prin legături între tabelele, interogările, formularele şi rapoartele din baza de date, pe de o parte, şi obiecte Web, pe de altă parte; • desfăşurarea de şedinţe în timp real, prin Internet, cu participanţi situaţi la distanţă; • crearea de pagini Web cu date din baze de date şi posibilitatea de a salva tabele, interogări, formulare şi rapoarte ca pagini Web. Când se apasă butonul corespunzător obiectului Pages din fereastra Database, în zona de opţiuni se afişează cele trei căi oferite de SGBD Microsoft Access: • Create data access page in Design View (crearea paginii de acces la date cu ajutorul ferestrei de proiectare); • Create data access page by using wizard ((crearea paginii de acces la date cu ajutorul ghidului) • Edit Web page that already exists (editarea paginii Web care deja există).

2.8 Macroinstrucţiunea (Macro-ul) Macroinstrucţiunea sau macro-ul (Macro) reprezintă un obiect Access care defineşte un ansamblu de comenzi pe care sistemul Microsoft Access le execută automat la apariţia unor evenimente. Macro-urile pot fi ataşate unui formular, raport sau control în scopul automatizării unor operaţii de rutină (deschidere sau închidere de formulare, imprimarea unor rapoarte, filtrarea, verificarea sau validarea unor date, etc.). Pentru realizarea unui macrou, se selectează din fereastra Database obiectul Macro şi se execută un clic pe butonul New, SGBD Microsoft Access 2003 afişând pe ecranul monitorului fereastra Macro, sub forma unui tabel compus din două coloane şi mai multe rânduri.

25

Page 24: Curs Blackboard Spiru

1. Coloana Action – conţine o listă derulantă formată din comenzi care au ca efect acţiuni prestabilite (ca, de exemplu, OpenForm, OpenReport etc.); 2. Coloana Comment – se foloseşte pentru introducerea unor comentarii sau pentru descrierea acţiunilor pe care le realizează comanda respectivă. În partea de jos a ferestrei Macro se află o zonă destinată specificării unor argumente. Argumentele furnizează SGBD Microsoft Access informaţii suplimentare asupra modului în care se vor îndeplini acţiunile generate de comanda stabilită în coloana Action (de exemplu numele obiectului care va răspunde la acţiunea respectivă, sau modul în care vor fi afişate datele ca urmare a executării comenzii).

2.9 Modulul (Module)

Modulul (Module) este un obiect al SGBD Microsoft Access care este creat în limbajul Visual Basic pentru aplicaţii, VBA (Visual Basic for Applications) şi este destinat extinderii funcţiunilor specifice unei baze de date. Acest obiect Module reprezintă o alternativă a obiectului Macro prezentat în paragraful anterior, pentru dezvoltarea de aplicaţii în SGBD Microsoft Access. Limbajul VBA reprezintă limbajul specific întregului pachet de birotică Microsoft Office 2003 (pentru Word, Excel şi Access). Instrucţiunile VBA sunt asemănătoare limbajului Visual Basic. Sintaxa acestor instrucţiuni este prezentată de un sistem de asistenţă online extins. În programele principale ale pachetului Microsoft Office 2003, limbajul VBA asigură posibilitatea înregistrării automate a instrucţiunilor (secvenţelor de instrucţiuni), implementarea structurilor de control (secvenţială, alternative şi repetitive) pentru controlul aplicaţiilor, schimbul dinamic de date cu alte aplicaţii din familia Microsoft, capacitatea de a folosi funcţiile interfeţei de programare a aplicaţiilor, API (Application Programming Interface) specifică sistemului de operare Windows. În plus, prin limbajul VBA se obţine o aliniere la standardul de realizare a conectivităţii bazelor de date extinse, ODBC (Open-DataBase Connectivity) prin care SGBD-uri diferite pot gestiona aceeaşi bază de date (Microsoft Access, SQL Server, Paradox, FoxPro, dBase etc.). Aceeaşi firmă Microsoft a realizat VBScript (Visual Basic Scripting Edition), limbaj de scripturi interpretat de browser-ul Internet Explorer.

2.10 Utilizarea evenimentelor într-o bază de date

În SGBD Microsoft Access, evenimentele constituie baza oricărei aplicaţii realizate. În comparaţie cu modelul de programare procedural, modelul de programare bazat pe evenimente (events-driven model) presupune că acestea gestionează toate intrările (acţionările de taste, acţionarea butoanelor mouse-ului) şi decid la care program să fie aplicate aceste elemente. Programul primeşte mesajul cu privire la apariţia unui eveniment şi execută secvenţa corespunzătoare acelui eveniment. Dacă un program nu dispune de evenimente cu care să lucreze, atunci el nu va folosi unitatea centrală şi utilizatorul nu va cunoaşte ce eveniment ar putea urma. Programul obţinut prin programarea bazată pe evenimente constă dintr-o serie de programe utilitare de tratare a evenimentelor. Fiecare program utilitar îşi execută secvenţa de instrucţiuni atunci când are loc evenimentul specific, cum ar fi: când utilizatorul a terminat editarea controlului sau intră şi iese dintr-un control, când se acţionează o tastă sau mouse-ul (cu simplu-clic sau dublu-clic) etc. Evenimentele oferă ca posibilităţi; - răspunsul la editări; - verificarea intrărilor; - efectuarea modificărilor în baza de date; - ascunderea controalelor nerelevante; - păstrarea valorilor în „spatele” ecranului; - prevenirea introducerilor de date incorecte;

26

Page 25: Curs Blackboard Spiru

- furnizarea unui sistem de asistenţă suplimentar; - rezolvarea problemelor de blocare în regim de lucru multiutilizator; - arhivarea înregistrărilor înainte ca acestea să fie şterse. Evenimentele au loc în timp ce un utilizator lucrează cu controalele dintr-un formular. Un răspuns programat pentru un eveniment se face utilizând câmpul Evenimente (Events) din caseta Proprietăţi (Properties). Valoarea introdusă în acest câmp poate fi: - numele unei comenzi macro care se va executa; - numele unei funcţii Visual Basic care va fi executată; în acest caz, valoarea introdusă trebuie să fie precedată de semnul “=” şi va include şi parantezele de funcţie; - Procedura eveniment (Event Procedure) pentru a se face referire la elementul de tratare al evenimentului memorat împreună cu formularul. Evenimentele care pot avea loc într-o bază de date pot fi grupate în mai multe categori: a) Evenimente care fac referire la date – acest gen de evenimente apar în momentul în care se introduce, se şterge sau se modifică înregistrări în baza de date, sau când se efectuează deplasarea printre înregistrările din baza de date. Aceste evenimente apar, de regulă, în cadrul formularelor. Dintre evenimentele de bază se pot enumera: 1. AfterDelConfirm – evenimentul apare după confirmarea operaţiunii de ştergere. 2. AfterInsert – evenimentul apare după ce a fost adăugată o nouă înregistrare în baza de date. 3. AfterUpdate – evenimentul are loc după modificarea sau editarea unui control, dar după ce selecţia a părăsit controlul respectiv. 4. BeforeDelConfirm – evenimentul intervine după ce una sau mai multe înregistrări sunt şterse, dar înainte ca SGBD Microsoft Access să afişeze fereastra de dialog pentru confirmarea sau anularea acţiunii de ştergere. 5. BeforeInsert – evenimentul apare în momentul în care se tipăreşte primul caracter al unei noi înregistrări, dar după ce vechea înregistrare a fost introdusă în baza de date. 6. BeforeUpdate – evenimentul are loc înainte ca un control sau o înregistrare să fie modificată, dar înainte ca selecţia să părăsească controlul respectiv. Evenimentul este proiectat pentru operaţia de validare a datelor de intrare, astfel încât dacă datele introduse nu corespund logic, evenimentul poate fi întrerupt, iar utilizatorul va relua operaţia. Dacă se doreşte acceptarea unei valori introduse este de preferat utilizarea evenimentului BeforeUpdate, al formularului, în loc de cel al controlului. Evenimentul BeforeUpdate al controlului nu are loc dacă utilizatorul trece de control sau nu introduce valori. 7. OnChange – acest eveniment se aplică numai în cazul controalelor, şi are loc în momentul în care datele din control îşi schimbă valoarea. 8. OnDelete – evenimentul intervine când o înregistrare este ştearsă din baza de date, dar înainte de apariţia mesajului de confirmare. 9. OnNotInList – evenimentul survine în momentul în care se introduce într-o casetă combinată o valoare care nu se află în lista casetei. b) Evenimente de focalizare – acest grup de evenimente apare în momentul în care un control sau obiect din baza de date devine activ (este selectat de utilizator), sau când devine inactiv. Evenimentele care aparţin acestui grup de evenimente sunt: 1. OnEnter – evenimentul apare în momentul în care cursorul se mută într-un control, dar înainte de evenimentul GotFocus. 2. OnExit – acest eveniment apare chiar înainte de operaţia de părăsire a controlului respectiv, dar după evenimentul LostFocus. 3. OnGotFocus – se aplică controalelor şi formularelor. Acest eveniment intervine în momentul în care utilizatorul se plasează efectiv pe obiectul respectiv. Utilizatorul are o focalizare efectivă la un formular doar dacă acel formular nu conţine controale sau dacă toate controalele vizibile sunt dezactivete. 4. OnLostFocus – mecanismul de funcţionare al acestui eveniment este asemănător cu evenimentul OnGotFocus, cu deosebirea că acesta apare în momentul în care utilizatorul mută focalizarea pe un alt control.

27

Page 26: Curs Blackboard Spiru

c) Evenimentele asociate butoanelor de la tastatură (KeyDown, KeyUp şi KeyPress) – aceste evenimente survin la apăsarea şi/sau eliberarea unei taste sau combinaţii de taste, atunci când controlul este selectat. d) Evenimente asociate mouse-ului – intervin în momentul în care utilizatorul foloseşte butoanele de la mouse. Evenimentele OnMouseDown şi OnMouseUp asigură informaţii despre deplasamentul (offset-ul) faţă de colţul din stânga sus al controlului unde a avut loc evenimentul. Pentru un obiect grafic, această metodă foloseşte la detalierea informaţiilor prezentate pe suprafaţa pe care s-a executat clic. SGBD Microsoft Access nu conţine evenimente pentru operaţiile de tipul Drug-and-Drop (tragere cu mouse-ul), dar acestea se pot simula prin utilizarea evenimentelor OnMouseDown şi OnMouseUp. Evenimentul OnMouseUp conţine o informaţie de offset, care asigură date asupra poziţiei de pe ecran în care a fost eliberat mouse-ul. Chiar dacă, între operaţiile de apăsare şi de eliberare a butonului mouse-ului, acesta este mutat în alt control, evenimentul OnMouseUp are loc pentru controlul care a recepţionat evenimentul OnMouseDown. Evenimentele OnClick şi OnDblClick – apar în momentul în care utilizatorul apasă o dată sau de două ori consecutiv pe butonul din partea stângă de la mouse. Pentru acest capitol paginile din manula 11 –24. Lista subiectelor pentru pregătirea în vederea evaluării finale:

1. Caracterizaţi sistemul Microsoft Access. 2. Componentele principale (arhitectura) ale sistemului de gestiune a bazelor de date

Microsoft Access . 3. Care sunt colecţiile de obiecte Access? 4. Definirea proprietăţilor câmpurilor în tabelele sistemului de gestiune a bazelor de date

Microsoft Access. 5. Popularea şi filtrarea datelor în tabelele sistemului de gestiune a bazelor de date

Microsoft Access. 6. Tabele: modalităţi de creare a acestora, structura tabelelor, utilzarea acestora. 7. Tipuri de câmpuri care pot fi definite în cadrul tabelelor; proprietăţile câmpurilor. 8. Caseta cu instrumente – Toolbox. 9. Crearea formularelor în modul Design View. 10. Metode de creare şi de modificare a ansamblului formular-subformular. 11. Crearea unui subformular bazat pe o cerere de interogare în Access. 12. Proprietăţile unui formular. 13. Interogarea ca obiect al sistemului de gestiune a bazelor de date Microsoft Access 14. Clasificarea interogărilor. 15. Crearea unei cereri de interogare de selecţie în modul Design View. 16. Realizarea cererilor de interogare din mai multe tabele. 17. Cererile de interogare de tipul Analiză încrucişată. 18. Cererile de interogare de tipul Acţiune. 19. Raportul ca obiect al sistemului de gestiune a bazelor de date Microsoft Access. 20. Introducerea evenimentelor într-o bază de date Access. 21. Utilizarea formularelor; modalităţi de creare a formularelor. 22. Definiţi interogările. 23. Rapoarte: crearea acestora şi modul de folosire. 24. Explicaţi ce reprezintă un macro. 25. Ce reprezintă evenimentele unei baze de date? 26. Prezentaţi blocurile componente ale operaţiei de regăsire a datelor SELECT şi FROM.

28

Page 27: Curs Blackboard Spiru

Teste:

Teste de tipul alegere multiplă (MULTIPLE CHOICE)

1.SGBD Micro soft Access este un sistem: a) relaţional; b) mutual; c) de reţea; d) arborescent; e) ierarhic. R:a Teste de tipul adevărat/fals (TRUE/FALSE) 2. SGBD Microsoft Access are schema bazei de date constituită din colecţiile de rapoarte şi poate fi utilizată prin manipularea interogărilor. R: F 3. SGBD Microsoft Access nu permite exportarea structurii de tabele, definiţii de interogări, formulare, rapoarte şi module. R: F 4. SGBD Microsoft Access necesită un sistem de operare pe 32 de biţi, precum Windows 2000 sau Windows NT. R: A

Teste de tipul alegere multiplă (MULTIPLE CHOICE) 5. SGBD Microsoft Access stochează toate componentele unei baze de date într-un singur fişier cu extensia: a) doc; b) xls; c) ppt: d) mbd e) mdb R: e 6. SGBD Microsoft Access afişează obiectele care formează baza de date în fereastra: a) Select View; b) Database; c) Forms; d) Windows; e) Query. R: b Test de tipul adevărat/fals (TRUE/FALSE)

29

Page 28: Curs Blackboard Spiru

7. Produsul Microsoft Access dispune de toate componentele unei baze de date stocate într-un fişier cu extensia MBD. R: F Teste de tipul completare (COMPLETION) 8. Produsul Microsoft Access este compatibil cu tehnologia ___________care este specifică aplicaţiilor de tipul client/server. R: ActiveX 9. ____________sunt obiecte Access ce asigură accesarea bazelor de date din Internet prin intermediul navigatoarelor (browser-elor) Web. R: Paginile,Pages 10. _____________reprezintă obiecte Access care definesc ansamble de comenzi pe care sistemul Microsoft Access le execută automat la apariţia unor evenimente. R:macoinstrucţiunile, macro Teste de tipul DA/NU (YES/NO) 11.În SGBD Microsoft Access, obiectele sunt percepute prin ceea ce fac, comportamentul lor, devenind vizibil prin elementele de structură internă

R: NU

Prezentarea lecţiei / capitolul 3:

3. LIMBAJUL STRUCTURAT DE INTEROGARE SQL

Concepte cheie: interogări,subinterogări, tranzacţii, tabele, operatori, funcţii. Caracteristici generale

Limbajul SQL (Structured Query Language – limbaj structurat de interogare) este utilizat pentru manipularea şi regăsirea datelor din bazele de date relaţionale. SQL-ul pune la dispoziţia programatorului sau a unui administrator de baze de date următoarele facilităţi:

posibilitatea de modificare a structurii bazei de date; posibilitatea schimbării valorilor de configurare pentru securitatea sistemului; permite stabilirea şi modificarea drepturilor date utilizatorilor asupra bazelor de

date sau a tabelelor; permite interogarea unei baze de date; oferă facilităţi multiple referitoare la actualizarea conţinutului unei baze de date.

3.1 Noţiuni de bază referitoare la SQL O interogare SQL nu este neapărat o întrebare pusă bazei de date, ci, cel mai adesea, o comandă pentru executarea uneia dintre acţiunile de mai jos:

să construiască sau să şteargă o bază de date; să insereze, să modifice sau să şteargă linii sau câmpuri; să caute în tabele o anumită informaţie şi să returneze rezultatele într-o anumită

ordine; să modifice securitatea informaţiilor; o simplă interogare (întrebare).

Toate cuvintele scrise cu litere mari ar putea fi scrise şi cu litere mici. Cu litere mari se scriu cuvintele cheie SQL. Semnul punct şi virgulă (;) de la sfârşitul expresiei indică programului SQL în linie de comandă că interogarea este terminată.

30

Page 29: Curs Blackboard Spiru

3.2 Blocurile componente ale operaţiei de regăsire a datelor: SELECT şi FROM SELECT <NUME DE COLOANĂ> FROM <TABEL> Se consideră o bază de date MATERIALE ca model pentru următoarele câteva exemple. Bază de date model: MATERIALE

Nr. înreg

Cod Mat UM Cant Pret_u

1 12345 Cherestea

kg 1000 150000

2 12245 Cherestea

kg 1500 140000

3 11145 Cherestea

kg 270 180000

4 21123 Tabla kg 1221 120000 5 21124 Tabla kg 125 140000 6 31221 Cot kg 1550 120000 7 41124 Con kg 15500 130000

Comandă: SQL> SELECT * FROM MATERIALE; (1) Rezultatul este afişarea unui tabel identic cu cel de mai sus al bazei de date model. Semnul asterisc (*) transmite bazei de date comanda de a returna toate coloanele asociate cu tabelul dat descris în clauza FROM. Ele sunt returnate într-o ordine hotărâtă de baza de date. Semnul punct şi virgulă de la sfârşitul instrucţiunii informează interpretorul că s-a terminat de scris interogarea. Când coloanele nu se afişează în altă ordine, se introduce de la tastatură comanda: Comandă: SQL> SELECT Mat, Cant, Nr_înreg, Cod FROM MATERIALE; (2) Numele de coloane sunt separate prin câte o virgulă, cu un spaţiu după ultimul nume de coloană şi înainte de următoarea clauză (în acest caz FROM). Instrucţiunea ar putea fi scrisă, de asemenea, astfel: Comandă: SELECT Mat, Cant, Nr_înreg, Cod FROM MATERIALE; (3) Selectarea coloanelor individuale Dacă selectăm doar două coloane, introducem de la tastatură următoarea instrucţiune: Comandă: SQL> SELECT Mat, Cant, FROM MATERIALE WHERE Mat=’Cherestea’; (4) Condiţii Pentru a regăsi un anumit element sau grup de elemente în baza de date, sunt necesare una sau mai multe condiţii. În exemplul anterior, condiţia este: Mat = ’Cherestea ’. Dacă problema cere să găsim toate materialele care se găsesc în cantitate mai mare de 1000 kg, putem introduce condiţia: Cant >= 1000. Condiţiile fac posibile interogările selective. În cea mai obişnuită formă a lor, ele se compun dintr-o variabilă, o constantă şi un operator de comparare. În primul exemplu variabila este Mat, constanta este Cherestea şi operatorul de comparare este =. În al doilea exemplu, variabila este Cant, constanta este 1000 şi operatorul de comparare este >. Conceptul de interogări selective în SQL se bazează pe ideea submulţimilor. O interogare selectivă returnează o submulţime de date.

31

Page 30: Curs Blackboard Spiru

Clauza WHERE Sintaxa clauzei WHERE este: WHERE <condiţie de căutare> S-a văzut în exemplul de mai sus că prin această clauză s-a selectat materialul Cherestea. Împreună cu SELECT şi FROM, WHERE este cea mai folosită clauză în SQL. Această clauză face interogările selective. 3.3. Operatori utilizaţi în SQL Operatorii se împart în şase grupe distincte: aritmetici, de comparare, caracter, logici, pentru mulţimi şi alţi operatori.

3.3.1 Operatorii aritmetici Operatorii aritmetici sunt plus (+), minus (-), împărţire (/), înmulţire (*) şi modulo (%). Primii patru sunt descrişi chiar prin numele lor. Dacă se plasează câţiva operatori aritmetici într-o expresie fără paranteze, ei sunt trataţi în ordinea următoare: înmulţire, împărţire, modulo, adunare, apoi scădere. Plus (+) Se introduce comanda: SQL> SELECT Mat, Pret_u, Pret_u + 10000 FROM MATERIALE; (5) Această comandă adaugă 10000 de unităţi monetare la fiecare preţ unitar şi generează următorul rezultat:

Mat Pret_u Pret_u+10000 Cherestea

150000 160000

Cherestea

140000 150000

Cherestea

180000 190000

Tabla 120000 130000 Tabla 140000 150000 Cot 120000 130000 Con 130000 140000

Deoarece capul de tabel este neconcludent, acesta se modifică prin introducerea comenzii: SQL> SELECT Mat, Pret_u, (Pret_u + 10000) Pret_modif FROM MATERIALE; (6) Se obţine:

Mat Pret_u Pret_modif Cherestea 150000 160000 Cherestea 140000 150000 Cherestea 180000 190000 Tabla 120000 130000 Tabla 140000 150000 Cot 120000 130000 Con 130000 140000

Se pot crea noi coloane care se pot redenumi în timpul execuţiei. Redenumirea coloanelor se face folosind sintaxa: <nume_coloană> alias. Minus (-), Înmulţire (*), Împărţire (/) se folosesc similar cu operatorul Plus(+). Modulo (%) este un operator care returneză restul întreg al unei împărţiri. De exemplu: 7 % 3 = 2 9 % 3 = 0 (7)

32

Page 31: Curs Blackboard Spiru

Operatorul modulo nu acceptă tipuri de date care conţin zecimale, ca, de exemplu, tipul real sau number. 3.3.2 Operatorii de comparaţie Operatorii de comparaţie sunt: Egal (=), Mai mare decât (>), Mai mare sau egal (>=), Mai mic decât (<), Mai mic sau egal (<=) şi Inegalitate (<> sau !=). După cum arată şi numele lor, operatorii de comparaţie compară expresiile şi returnează una din următoarele trei valori: TRUE (adevărat), FALSE (fals), sau UNKNOWN (necunoscut). Pentru a înţelege noţiunea UNKNOWN (necunoscut), trebuie s-o asociem conceptului NULL (nul). În termenii folosiţi pentru baze de date, NULL semnifică absenţa datelor dintr-un câmp. Nu înseamnă că o coloană conţine o valoare zero sau un spaţiu. Un zero sau un spaţiu sunt valori. NULL înseamnă că în câmpul respectiv nu se găseşte nimic. Dacă faceţi o comparaţie de genul câmp = no şi câmp este NULL, comparaţia va returna UNKOWN. Egal (=). În clauza WHERE, semnul = este cel mai utilizat operator de comparare, care, folosit singur, devine un mod facil de selectare a unei valori din mai multe existente. Acest lucru se observă în exemplul (4). Mai mare decât (>) şi Mai mare sau egal (>=). Operatorul mai mare decât (>) acţionează în felul următor: Comandă: SELECT Nr_inreg, Cod, Mat, UM, Cant, Pret_u FROM MATERIALE (8) WHERE Cant >1000 AND Mat=’Cherestea’;

Nr. înr Cod Mat UM Cant Pret_u 2 12245 Chereste

a kg 1500 140000

În mod similar acţionează şi ceilalţi operatori de comparaţie Mai mare sau egal (>=), Mai mic decât (<), Mai mic sau egal (<=) şi Inegalitate (<> sau !=). 3.3.3. Operatorii caracter Există mai mulţi operatori caracter, dintre care se vor prezenta: LIKE, UNDERSCORE, Concatenarea. LIKE presupune a găsi într-o bază de date acele înregistrări care nu corespund în totalitate unui model. Forma sa este următoarea: SQL> SELECT * FROM nume bază de date (9) WHERE nume-câmp LIKE expresie; De multe ori, în expresia care urmează după LIKE apare semnul de modulo (%), care are rolul de caracter de înlocuire. Exemplu: SQL> SELECT * FROM MATERIALE WHERE Mat LIKE ’C%’; (10) Execuţia acestei comenzi are ca efect apariţia acelor înregistrări în care Mat începe cu litera C. De remarcar că LIKE diferenţiază literele mari de literele mici. UNDERSCORE. este un caracter de înlocuire doar pentru un singur caracter. Pentru tabelul MATERIALE creat anterior se va exemplifica acest operator: SQL> SELECT * FROM MATERIALE WHERE Mat LIKE ’Co_’; (11)

33

Page 32: Curs Blackboard Spiru

Nr. înreg

Cod Mat UM Cant Pret_u

6 31221 Cot kg 1550 120000 7 41124 Con kg 15500 130000

Într-o instrucţiune SELECT pot apărea mai multe semne underscore. De asemenea, se poate regăsi o înregistrare sau mai multe după un caracter situat oriunde în şirul de caractere. Concatenarea presupune reunirea a două sau mai multe şiruri de caractere. Pentru concatenare se foloseşte simbolul // sau +. SQL> SELECT Cod // Mat CodDenumire_material FROM MATERIALE; (12)

CodDenumire_material 12345Cherestea 12245Cherestea 11145Cherestea 21123Tabla 21124Tabla 31221Cot 41124Con

3.3.4. Operatorii logici Operatorii logici sunt următorii: AND, OR, NOT. Operatorul AND utilizat între două expresii presupune ca ambele să fie adevărate pentru ca acestea să returneze valoarea de adevăr TRUE. Dacă oricare dintre expresii este falsă, AND va returna valoarea FALSE.

Operatorul OR este utilizat pentru însumarea unei serii de condiţii. Când cel puţin una dintre condiţii este adevărată, OR returnează valoarea TRUE. Operatorul NOT În cazul aplicării unei condiţii care are valoarea TRUE, operatorul NOT o va schimba în FALSE. În situaţia în care condiţia care urmează operatorului NOT are valoarea FALSE, ea va deveni TRUE. 3.3.5. Operatorii pentru mulţimi

UNION şi UNION ALL UNION returnează rezultatele a două interogări (selecţii), mai puţin liniile duplicate. UNION ALL returnează rezultatele tuturor interogărilor (selecţiilor), mai puţin liniile duplicate. INTERSECT Operatorul INTERSECT (intersecţie) returnează numai liniile comune găsite în ambele interogări (selecţii). MINUS MINUS (cea de DIFERENŢA) returnează liniile din prima interogare (selecţie) care nu fac parte din a doua interogare (selecţie). 3.3.6 Alţi operatori, IN şi BETWEEN Cei doi operatori IN (În) şi BETWEEN asigură folosirea unei forme scurte pentru funcţii diverse.

34

Page 33: Curs Blackboard Spiru

SQL> SELECT * FROM MATERIALE WHERE Mat IN (’Cherestea’, ’Tabla’); (13) SQL> SELECT * FROM MATERIALE WHERE Pret_u BETWEEN 140000 AND 170000; (14) 3.4. Funcţii în SQL Caracteristicile generale ale funcţiilor Funcţiile din SQL permit executarea calculului sumei pe o coloană sau conversia tuturor caracterelor unui şir în litere mari. Ele se clasifică în:

Funcţii pentru calculul totalurilor. Funcţii pentru data calendaristică şi oră. Funcţii aritmetice. Funcţii caracter. Funcţii de conversie. Funcţii diverse.

Aceste funcţii dezvoltă capacitatea de manipulare a informaţiilor regăsite pe baza funcţiilor de bază ale SQL. Primele cinci funcţii, COUNT, SUM, AVG, MAX şi MIN, sunt funcţii pentru calculul totalurilor şi sunt definite în standardul ANSI. 3.4.1. Funcţii pentru calculul totalurilor Aceste funcţii se mai numesc funcţii de grup. Ele returnează o valoare bazată pe valorile unei coloane. Funcţia COUNT returnează numărul de linii care respectă condiţia din clauza WHERE. SQL> SELECT COUNT(*) FROM MATERIALE WHERE Pret_u < 140000; (15)

Nr. înreg

Cod Mat UM Cant Pret_u

4 21123 Tabla kg 1221 120000 6 31221 Cot kg 1550 120000 7 41124 Con kg 15500 130000

Funcţia SUM returnează suma tuturor valorilor dintr-o coloană. Pentru tabelul MATERIALE, dacă se calculează suma preţurilor unitare pentru materialele date, se va scrie: SQL> SELECT SUM (Pret_u) Total FROM MATERIALE; (16)

Total 980000

Funcţia SUM are efect numai asupra câmpurilor numerice. Funcţia AVG calculează valoarea medie a unei coloane. Funcţia MAX returnează valoarea maximă dintr-o coloană numerică a tabelului. Funcţia MIN operează în acelaşi mod ca MAX, cu excepţia faptului că returnează cea mai mică valoare dintr-o coloană. Funcţia VARIANCE are ca rezultat dispersia, adică pătratul unei deviaţii standard şi operează numai cu numere sau cu variabile de tip numeric. Funcţia STDDEV calculează abaterea sau deviaţia standard a unei coloane de numere (sau variabile numerice). Pentru aceste funcţii se prezintă un exemplu care le înglobează pe toate. SQL> SELECT COUNT (*)

35

Page 34: Curs Blackboard Spiru

AVG (Pret_u) MIN (Pret_u) MAX (Pret_u) STDDEV (Pret_u) VARIANCE (Pret_u) FROM MATERIALE; (17) 3.4.2.Funcţii dedicate pentru dată calendaristică şi oră Funcţia ADD_MONTHS (Adaugă luni) adaugă un număr de luni la o dată calendaristică specificată în cadrul sau în afara instrucţiunii SELECT. Funcţia operează cu tipuri de dată caracter sau numeric, însoţită de o pereche de funcţii ajutătoare, TO CHAR şi TO DATE. Funcţia LAST_DAY întoarce ca rezultat ultima zi a unei luni specificate. Funcţia MONTHS_BETWEEN (Lunile dintre) se foloseşte pentru a afla câte luni sunt între luna x şi luna y. Funcţia NEW_TIME (Ora nouă) serveşte dacă se doreşte a se corecta ora în funcţie de ora unui anumit teritoriu. Funcţia NEXT_DAY găseşte numele primei zile din săptămână egală sau ulterioară unei date calendaristice specificate. Funcţia SYSDATE (data şi ora calendaristică a sistemului) returnează data şi ora calendaristică a sistemului. 3.4.3. Funcţii aritmetice ABS returnează valoarea absolută a unui număr indicat. Această funcţie transformă toate numerele negative în numere pozitive şi lasă numerele pozitive neschimbate. CEIL şi FLOOR Prima dintre aceste funcţii, CEIL, returnează cel mai mic număr întreg care este mai mare sau egal cu un argument dat. A doua, FLOOR, face exact operaţia inversă, returnând cel mai mare număr întreg care este egal sau mai mic cu un argument dat. COS, COSH, SIN, SINH, TAN, TANH Funcţiile COS, SIN, TAN oferă baza pentru numeroase operaţii trigonometrice. Funcţiile COSH, SINH, TANH returnează valorile hiperbolice ale argumentelor primite ca parametri. Toate aceste funcţii operează presupunând că argumentul de intrare are valoarea în radiani. Funcţia EXP (exponenţială) serveşte pentru a ridica constanta ’e’ la o putere. LN şi LOG sunt două funcţii se referă la logaritmi. Prima, LN, returnează logaritmul natural al argumentului primit ca valoare de intrare, iar LOG returnează logaritmul zecimal primit ca argument. MOD Standardul ANSI pentru operatorul modulo, %, este implementat uneori ca funcţia MOD. POWER. Pentru a ridica un număr la putere, se utilizează funcţia POWER. În această funcţie, primul argument este ridicat la puterea exprimată prin al doilea argument. Funcţia SIGN returnează valoarea –1 dacă argumentul primit este mai mic decât 0, 0 dacă argumentul primit este egal cu 0 şi 1 dacă argumentul său este mai mare decât 0. Funcţia SQRT returnează rădăcina pătrată a argumentului primit. Deoarece rădăcina pătrată a unui număr negativ nu este definită, nu putem folosi această funcţie pentru numere negative. 3.4.4. Funcţii caracter CHR Funcţia CHR returnează caracterul echivalent cu numărul folosit ca argument. Caracterul este returnat în funcţie de setul de caractere din numele câmpului care aparţine bazei de date. Funcţia CONCAT este echivalentă semnului // (concatenare)

36

Page 35: Curs Blackboard Spiru

INITCAP. Această funcţie configurează un cuvânt astfel: prima literă din cuvânt este literă mare, iar toate celelalte sunt caractere mici. LOWER şi UPPER. LOWER modifică toate caracterele în litere mici, iar UPPER realizează operaţia inversă. LPAD şi RPAD. Aceste două funcţii primesc minim două şi maxim trei argumente. Primul este şirul de caractere cu care trebuie să opereze. Al doilea argument este caracterul de umplere al spaţiilor adăugate. Al treilea argument are ca valoare prestabilită spaţiu sau poate fi un singur caracter sau un şir de caractere. LTRIM şi RTRIM. Aceste funcţii primesc unul sau două argumente. Primul argument este un şir de caractere. Al doilea argument opţional este un caracter sau un şir de caractere sau are valoarea prestabilită spaţiu. Dacă pentru al doilea argument se utilizează o valoare diferită de spaţiu, aceste funcţii de aliniere vor alinia respectivul caracter în acelaşi mod în care aliniază şi spaţiile. Funcţia REPLACE execută operaţiuni de înlocuire. Din cele trei argumente ale sale, primul este şirul care trebuie căutat. Al doilea argument este cheia de căutare. Ultimul argument este şirul opţional de înlocuire. Dacă al treilea argument lipseşte sau este NULL, toate secvenţele identice cu cheia de căutare din şirul respectiv sunt eliminate şi nu sunt înlocuite cu nimic. Funcţia SUBSTR are trei argumente şi permite preluarea unei părţi din şirul destinaţie. Primul argument este şirul destinaţie. Al doilea argument este poziţia primului caracter ce trebuie afişat. Al treilea argument semnifică numărul de caractere care trebuie tipărite la ieşire. Funcţia TRANSLATE primeşte, de asemenea, trei argumente. Primul este şirul destinaţie. Apoi, este şirul FROM, urmat de şirul TO. Elementele şirului destinaţie, care sunt identice cu şirul FROM, sunt înlocuite cu elementele corespondente din şirul TO. Funcţia INSTR se foloseşte pentru a găsi într-un şir un anumit caracter. Primul argument al acestei funcţii este şirul destinaţie. Al doilea argument este caracterul care trebuie găsit. Următoarele două argumente sunt numere ce reprezintă locul de unde începe căutarea în şir şi, respectiv, al câtelea element este cel identic cu caracterul ce trebuie afişat. Funcţia LENGH returnează lungimea singurului argument (câmp) caracter pe care îl primeşte. FUNCŢII DE CONVERSIE Sunt funcţii de conversie care pun la dispoziţie o metodă rapidă de convertire a unui tip de dată în alt tip de dată. TO_CHAR Modul uzual de operare a acestei funcţii este conversia unui număr într-un caracter. Alte implementări ale limbajului folosesc această funcţie pentru a converti în caracter alte tipuri de date, ca de exemplu DATE. TO_NUMBER Această funcţie este perechea funcţiei TO_CHAR şi primeşte ca parametru un şir pe care îl converteşte într-un număr. 3.5. Clauze utilizate în SQL Se prezintă mai întâi sintaxa generală a instrucţiunii SELECT: SELECT [DISTINCT / ALL] { * | { [schema.] {tabel | vedere | instantaneu }.* | expresie} [AS] c_alias] [, {[schema.] {tabel | vedere | instantaneu}.* | expresie} [AS] c_alias] ]…..} FROM [schema.] {tabel | vedere | instantaneu} [@ dblink] [t_alias] [,[schema.] {tabel | vedere | instantaneu} [@ dblink] [t_alias]… [WHERE condiţie] [GROUP BY expresie [, expresie]…[HEAVING condiţie] ]

37

Page 36: Curs Blackboard Spiru

[{UNION | UNION ALL | INTERSECT | MINUS} SELECT comanda] [ORDER BY {expresie | poziţie } [ASC | DESC] [, {expresie | poziţie} [ASC | DESC] ] …] (18) Clauza WHERE Utilizând doar SELECT şi FROM, acţiunea este limitată la returnarea tuturor liniilor din tabel. Există însă cuvântul cheie WHERE pentru stabilirea de selecţii asupra tabelului (exemplele 8 şi 9). Clauza STARTING WITH Clauza STARTING WITH este o completare la clauza WHERE şi operează la fel ca LIKE (<exp>%). Clauza ORDER BY Când apare necesitatea ca rezultatele interogării să fie prezentate într-o anumită ordine, se utilizează clauza ORDER BY. Instrucţiunea SELECT FROM oferă o listă, iar în cazul în care nu s-a definit o cheie primară, interogarea va apărea în ordinea introducerii înregistrărilor. Clauza ORDER BY oferă o metodă de ordonare a rezultatelor operaţiilor. De exemplu, dacă se doreşte ordonarea listei materialelor după Cod, se procedează în modul următor: SQL> SELECT * FROM MATERIALE ORDER BY Cod; (19) Clauza GROUP BY SQL> SELECT Mat, SUM (Pret_u) Total FROM MATERIALE GROUP BY Mat; (20) Clauza HAVING SQL> SELECT Mat, Pret_u FROM PERSONAL GROUP BY Mat HAVING Pret_u < 140000; (21) Clauza HAVING permite folosirea de funcţii totalizatoare într-o instrucţiune de comparare, asigurând pentru funcţiile totalizatoare ceea ce WHERE asigură pentru înregistrările individuale. 3.6. Joncţiuni Noţiuni şi obiective ale joncţiunilor O caracteristică de bază a SQL-ului este capacitatea de grupare şi manipulare a datelor din mai multe tabele. Tabelele foarte complexe care conţin multe câmpuri şi multe înregistrări sunt mult mai greu de întreţinut decât cele mici şi specifice. Or, tocmai acest avantaj îl oferă funcţia JOIN din SQL. Joncţiunile pe care le pune la dispoziţie SQL-ul sunt

Joncţiuni externe. Joncţiuni stânga. Joncţiuni dreapta. Echi-joncţiuni. Non-echi-joncţiuni. Joncţiunea unui tabel cu el însuşi (auto-joncţiunea).

Regula de bază a joncţiunilor este aceea că ele ’lipesc’ tabelele. Pentru tabelele care intră în joncţiune se folosesc alias-uri pentru a le deosebi. Diferenţa între echi-joncţiune şi non-echi-joncţiune este aceea că prima utilizează semnul egal în instrucţiunea WHERE, în timp ce non-echi-joncţiunea foloseşte oricare alt semn de comparaţie în afară de egal. Există, de asemenea, joncţiuni externe care sunt complementare joncţiunilor interne. Joncţiunea internă este aceea în care liniile unui tabel sunt combinate cu liniile altui tabel, reprezentând un număr total de linii dat de produsul numărului de linii din fiecare tabel, linii folosite pentru a determina rezultatul unei clauze WHERE.

38

Page 37: Curs Blackboard Spiru

O joncţiune internă are ca format general: SQL> SELECT alias1.câmp1, [alias1.câmp1,...], alias2.câmp2, [alias2.câmp2,...] FROM TABEL alias1 JOIN TABEL2 ON TABEL2.câmp <condiţie> (22) O joncţiune externă are aceeaşi formă, numai că înaintea cuvântului cheie JOIN apare RIGHT OUTHER sau LEFT OUTHER. Joncţiunea unui tabel cu el însuşi se comportă ca JOIN-ul pe două tabele diferite. 3.6.1. Subinterogări O subinterogare este o interogare ale cărei rezultate sunt transmise ca argumente unei alte interogări. Ele sunt elementele de legătură între mai multe interogări. Imbricarea subinterogărilor Imbricarea este operaţia de lipire a mai multor subinterogări în serie, forma generală fiind: SQL> SELECT * FROM TABEL WHERE (23) (subinterogare1(subinterogare2(subinterogare3); Există şi subinterogări corelate, care permit folosirea unei referinţe externe. 3.7. Instrucţiuni de manipulare a datelor Instrucţiunea INSERT Instrucţiunea INSERT (Inserează) este asociată operaţiei de introducere a datelor într-o bază de date. Ea poate fi: INSERT...VALUES şi INSERT...SELECT Instrucţiunea INSERT...VALUES este utilizată la introducerea datelor într-un tabel, înregistrare cu înregistrare. Este utilă pentru operaţii care presupun lucrul cu tabele care au înregistrări puţine. Forma generală a comenzii este: SQL> INSERT INTO TABEL (col1, col2, col3,…) VALUES (valoare1, valoare2, valoare3,…) (24) Funcţia principală a acestei instrucţiuni este adăugarea unei înregistrări într-un tabel folosind coloanele menţionate şi valorile corespondente. La inserarea datelor într-un tabel prin folosirea acestei instrucţiuni, trebuie respectate următoarele reguli:

valorile folosite trebuie să aibă acelaşi tip de dată ca şi câmpurile în care sunt adăugate;

dimensiunea datei introduse trebuie să fie mai mică decât dimensiunea coloanei. De exemplu, un şir de 25 de caractere nu poate fi scris într-un câmp de 10 caractere;

localizarea datei în lista VALUES trebuie să corespundă locaţiei din lista de coloane în care este adăugată (adică, prima valoare trebuie să fie introdusă în prima coloană, a doua Inserarea valorilor NULL Când este creată o coloană, i se poate atribui câteva caracteristici. Una dintre aceste caracteristici este aceea că respectiva coloană ar putea avea (sau nu) capacitatea de a conţine valori NULL. O valoare NULL înseamnă că valoarea este vidă. Nu este nici zero, în cazul unui întreg, nici spaţiu, în cazul unui şir. În locul acestora nu există nici un fel de dată în coloana înregistrării respective. Când coloana are definiţia NOT NULL înseamnă că acestei coloane nu i se permite să conţină valori NULL, deci ea trebuie să conţină o valoare. Instrucţiunea INSERT este anulată în cazul în care această regulă nu este respectată şi se recepţionează un mesaj de descriere a erorii apărute. Inserarea valorilor unice

39

Page 38: Curs Blackboard Spiru

Multe sisteme de gestiune a bazelor de date permit crearea unei coloane cu atributul UNIQUE. Aceasta înseamnă că, în tabelul respectiv, valorile din coloana respectivă trebuie să fie completate în mod unic şi, ca atare, nu pot apărea mai mult de o singură dată. Această configurare poate genera probleme la inserarea sau actualizarea valorilor într-o bază de date existentă. Instrucţiunea INSERT…SELECT Instrucţiunea INSERT…VALUES este utilă la adăugarea înregistrărilor simple într-un tabel al bazei de date, dar are evident restricţiile sale. În cazul tabelelor cu îregistrări foarte numeroase, este mult mai indicată utilizarea instrucţiunii INSERT…SELECT. Această instrucţiune permite utilizatorului să copieze într-un tabel informaţii dintr-un alt tabel sau grup de tabele. Deseori, pentru creşterea performanţei sunt create tabele de căutare. Tabelele de căutare pot conţine date care cuprind mai multe tabele din mai multe baze de date. Sintaxa unei instrucţiuni INSERT…SELECT este următoarea: SQL> INSERT INTO TABEL (col1, col2,…) SELECT Col1, Col2,… FROM TABEL WHERE condiţie de căutare; (25) Este important de reţinut că ieşirea unei interogări standard de tip SELECT devine intrare într-un alt tabel al unei baze de date. Aceleaşi reguli se aplică în cazul instrucţiunii INSERT...VALUES. Sunt câteva reguli care trebuie respectate la folosirea instrucţiunii INSERT...SELECT:

instrucţiunea SELECT nu poate selecta linii din tabelul care a fost inserat; numărul de coloane din instrucţiunea INSERT...SELECT trebuie să fie egal cu

numărul de coloane returnate de instrucţiunea SELECT; tipurile de date ale coloanelor din instrucţiunea INSERT SELECT trebuie să fie

aceleaşi cu tipurile de date ale coloanelor returnate de instrucţiunea SELECT. Instrucţiunea UPDATE Instrucţiunea UPDATE (Actualizează) are rolul de a actualiza valorile unui tabel, dar este folosită şi pentru modificarea valorilor din înregistrările existente. Sintaxa instrucţiunii UPDATE este următoarea: SQL> UPDATE TABEL SET Col1 = Valoare1 [Col2 = Valoare2]… WHERE condiţie de căutare (26) Această instrucţiune verifică în primul rând clauza WHERE. Pentru toate înregistrările din tabelul dat în care clauza WHERE este evaluată la valoarea TRUE., valoarea corespunzătoare este actualizată. Instrucţiunea DELETE La fel de frecvent ca şi adăugarea de date într-o bază de date, apare necesitatea de ştergere a altor date pe baza unei anumite operaţii din program. Sintaxa instrucţiunii DELETE (Şterge) este următoarea: SQL> DELETE FROM TABEL WHERE condiţie (27) Instrucţiunea DELETE are următoarele caracteristici:

Instrucţiunea DELETE nu poate fi folosită pentru ştergerea unei valori dintr-un câmp individual (pentru aceasta se foloseşte instrucţiunea UPDATE). Instrucţiunea DELETE şterge înregistrări complete dintr-un singur tabel.

Ca şi instrucţiunile INSERT şi UPDATE, operaţia de ştergere a înregistrărilor dintr-un singur tabel poate determina apariţia unor probleme de integritate referenţială în cadrul altor tabele. Acest aspect trebuie reţinut atunci când se modifică datele dintr-o bază de date.

40

Page 39: Curs Blackboard Spiru

Prin folosirea instrucţiunii DELETE se pot şterge numai înregistrări din tabel, nu şi tabelul. Pentru eliminarea unui tabel se foloseşte instrucţiunea DROP TABLE. CREATE TABLE construieşte un tabel nou în formatul dat, iar DROP TABLE şterge tabelul respectiv. Instrucţiunea DROP TABLE elimină un tabel pentru totdeauna, în timp ce DELETE FROM <TABEL> şterge numai înregistrările dintr-un tabel.

3.8. Crearea şi întreţinerea tabelelor Instrucţiunea CREATE DATABASE are sintaxa generală: SQL> CREATE DATABASE NUME_BAZĂ_DE _DATE (28) Instrucţiunea CREATE TABLE are sintaxa generală: SQL> CREATE TABLE NUME_TABEL (Câmp1 tip_de_dată [NOT NULL], Câmp2 tip_de_dată [NOT NULL], Câmp3 tip_de_dată [NOT NULL]…) (29) Instrucţiunea ALTER TABLE În cazul în care baza de date nu poate memora toate datele necesare, instrucţiunea ALTER TABLE permite administratorului de sistem sau proiectantului să modifice structura unui tabel. Sintaxa instrucţiunii ALTER TABLE este următoarea: SQL> ALTER TABLE NUME_TABEL <ADD Nume_coloană tip_de dată; | MODIFY Nume_coloană tip_de dată;> (30) Instrucţiunea ALTER TABLE are o serie de restricţii, cum sunt:

instrucţiunea nu poate fi utilizată pentru adăugarea sau ştergerea unor câmpuri din baza de date;

se poate utiliza pentru modificarea atributului din NOT NULL în NULL pentru un câmp al bazei de date, dar nu şi în sens invers;

modificarea unui câmp din NULL în NOT NULL poate fi eficient făcută cu această instrucţiune numai când câmpul respectiv nu conţine valori NULL. Instrucţiunea DROP TABLE serveşte pentru eliminarea unui tabel dintr-bază de date.. Odată executată comanda DROP TABLE, nu se poate reveni asupra ei. Comanda DROP TABLE este folosită de obicei după ce s-a creat un tabel temporar. Comanda DROP TABLE are sintaxa următoare: SQL> DROP TABLE NUME_TABEL; (31) Pentru acest capitol paginile din manuaa 159 –172. Lista subiectelor pentru pregătirea în vederea evaluării finale:

1. Caracteristicile de bază ale limbajului SQL. 2. Clasificarea instrucţiunilor SQL. 3. Instrucţiunile pentru definirea datelor în limbajul SQL. 4. Instrucţiunile pentru selecţia datelor în limbajul SQL. 5. Instrucţiunile pentru manipularea datelor în limbajul SQL. 6. Operatori utilizaţi în limbajul SQL. 7. Funcţii utilizate în limbajul SQL. 8. Protecţia şi securitatea bazelor de date. 9. Care sunt principalele funcţii utilizate în SQL? 10. Descrieţi clauzele instrucţiunii SELECT. 11. Cum se creează şi se întreţin tabelele cu instrucţiuni SQL? 12. Instrucţiuni de ştergere a tabelelor şi a bazelor de date.

41

Page 40: Curs Blackboard Spiru

Teste: 1. O interogare SQL nu este neapărat o întrebare pusă bazei de date, ci, cel mai adesea, o ______________ pentru executarea unei anumite acţiuni. R: comandă 2. În limbajul SQL, diferenţa între echi-joncţiune şi non-echi-joncţiune este aceea că prima utilizează semnul ______________ în instrucţiunea WHERE, în timp ce non-echi-joncţiunea foloseşte oricare alt semn de comparaţie în afară de ______________. R: egal, egal 3. În limbajul SQL, o subinterogare este o interogare ale cărei rezultate sunt transmise ca ______________ unei alte interogări. R: argumente Teste de tipul alegere multiplă (MULTIPLE CHOICE)

4. O interogare SQL este destinată:

a) să construiască sau să şteargă o bază de date; b) să insereze, să modifice sau să şteargă linii sau câmpuri; c) să caute în tabele o anumită informaţie şi să returneze rezultatele într-o anumită ordine; d) să modifice securitatea informaţiilor; e) să realizeze o simplă interogare (întrebare).

R:a,b,c,d,e 5. În limbajul SQL, din grupele de operatori utilizaţi fac parte:

a) Operatorii logici b) Operatorii pe calculator c) Operatorii aritmetici d) Operatorii de comparare e) Operatorii pentru mulţimi

R: a,c,d,e 6. În limbajul SQL, operatorii logici sunt:

a) AND b) OR c) TON d) NOT e) RO

R: a,b,d 7. În limbajul SQL, dintre funcţiile utilizate fac parte:

a) Funcţii aritmetice b) Funcţii pentru calculul totalurilor c) Funcţii caracter d) Funcţii de conversie e) Funcţii de saturare f) Funcţii pentru data calendaristică şi oră

42

Page 41: Curs Blackboard Spiru

R: a,b,c,d,f 8. Se consideră tabelul MATERIALE având următoarea structură: MATERIALE (COD, DEN, UM, CANT, PRET_U). Comanda: SQL>SELECT COD, DEN FROM MATERIALE WHERE DEN=’Cherestea’; a Selectează toate înregistrările din tabelă pentru materialele cu denumirea (DEN) ’Cherestea’ b Selectează numai câmpurile COD şi DEN şi toate înregistrările c Selectează numai câmpurile COD şi DEN pentru materialele ’Cherestea’ R: c Teste grilă (modele pentru toată materia) Notă: La examen se vor da teste grilă asemănătoare cu modelele de mai jos. 1. La bazele de date orientate obiect, un obiect înglobează următoarele elemente:

a) Specificarea operaţiilor c) Schema bazei de date b) Structura de date d) Implementarea operaţiilor

2. Produsul Microsoft Access permite lucrul cu următoarele limbaje: a) QBE (Query by Examples) d) SQL (Structured Query Language) b) Paradox e) VBA (Visual Basic for Applications) c) dBase f) FoxPro 3. Să se răspundă cu adevărat (True) sau fals (False):

În SQL, un şir de 25 de caractere poate fi scris într-un câmp de 10 caractere.

4. Să se completeze cuvântul lipsă: Tabelele (Tables) sunt obiecte utilizate de Access pentru ___________datelor.

5. Precizaţi corespondenţa dintre descrierea formală a elementelor de bază ale organizării datelor în baze de date relaţionale (A…D) şi descrierea fizică a aceloraşi elemente (1…4): A. Relaţie 1. Câmp B. Tuplu 2. Tip de dată C. Atribut 3. Fişier D domeniu 4. Înregistrare

6. Răspundeţi cu DA(Yes) sau NU (No):

Macroinstrucţiunea sau macro-ul (Macro) reprezintă un obiect Access care defineşte un ansamblu de comenzi pe care sistemul Microsoft Access le execută automat la apariţia unor evenimente. Macro-urile pot fi ataşate unui formular, raport sau control în scopul automatizării unor operaţii de rutină (deschidere sau închidere de formulare, imprimarea unor rapoarte, filtrarea, verificarea sau validarea unor date, etc.).

7. Care este sintaxa generală a instrucţiunii SELECT din limbajul SQL? a) SELECT [DISTINCT / ALL] { *

| { [schema.] {tabel | vedere | instantaneu }.* | expresie} [AS] c_alias] [, {[schema.] {tabel | vedere | instantaneu}.* | expresie} [AS] c_alias] ]…..}

c) SELECT [DISTINCT / ALL] { * | { [schema.] {tabel | vedere | instantaneu }.* | expresie} [AS] c_alias] [, {[schema.] {tabel | vedere | instantaneu}.* | expresie} [AS] c_alias] ]…..} FROM [schema.] {tabel | vedere |

43

Page 42: Curs Blackboard Spiru

[WHERE condiţie] [GROUP BY expresie [, expresie]…[HEAVING condiţie] ] [{UNION | UNION ALL | INTERSECT | MINUS} SELECT comanda] [ORDER BY {expresie | poziţie } [ASC | DESC] [, {expresie | poziţie} [ASC | DESC] ] …]

instantaneu} [@ dblink] [t_alias] [,[schema.] {tabel | vedere | instantaneu} [@ dblink] [t_alias]… [WHERE condiţie] [GROUP BY expresie [, expresie]…[HEAVING condiţie] ] [{UNION | UNION ALL | INTERSECT | MINUS} SELECT comanda] [ORDER BY {expresie | poziţie } [ASC | DESC] [, {expresie | poziţie} [ASC | DESC] ] …]

b) SELECT [DISTINCT / ALL] { * | { [schema.] {tabel | vedere | instantaneu }.* | expresie} [AS] c_alias] [, {[schema.] {tabel | vedere | instantaneu}.* | expresie} [AS] c_alias] ]…..} OF [schema.] {tabel | vedere | instantaneu} [@ dblink] [t_alias] [,[schema.] {tabel | vedere | instantaneu} [@ dblink] [t_alias]… [WHERE condiţie] [GROUP BY expresie [, expresie]…[HEAVING condiţie] ] [{UNION | UNION ALL | INTERSECT | MINUS} SELECT comanda] [ORDER BY {expresie | poziţie } [ASC | DESC][, {expresie | poziţie} [ASC | DESC] ] …]

d) SELECT ALL { * | { [schema.] {tabel | vedere | instantaneu }.* | expresie} [AS] c_alias] [, {[schema.] {tabel | vedere | instantaneu}.* | expresie} [AS] c_alias] ]…..} FROM [schema.] {tabel | vedere | instantaneu} [@ dblink] [t_alias] [,[schema.] {tabel | vedere | instantaneu} [@ dblink] [t_alias]… [WHERE condiţie] [GROUP BY expresie [, expresie]…[HEAVING condiţie] ] [{UNION | UNION ALL | INTERSECT | MINUS} SELECT comanda] [ORDER BY {expresie | poziţie } [ASC | DESC] [, {expresie | poziţie} [ASC | DESC] ] …]

8. Câte obiecte sunt conţinute în fereastra DATABASE a SGBD Microsoft Access? Răspunsuri: 1. a,b,d; 2. a,d,e; 3. Fals (False); 4. stocarea; 5. 1-C;2-D;3-A;4-B; 6. DA (Yes); 7. c; 8. 7.

44