Sunteți pe pagina 1din 20

Unitatea de nvare

Aplicaii Access crearea unei baze de date relaionale cu mai multe entiti

Cuprins

1. Crearea unei baze de date relaionale1 1.1. Realizarea bazei de date..1 1.2. Crearea relaiilor dintre entiti.3 1.3. Realizarea interogrilor ..6 1.3. Realizarea de rapoarte .13 2 Teste de autoevaluare .17 3 Rspunsurile testelor de autoevaluare 18 4 Tem 18 5 Bibliografie/webografie .20

Obiective:

n acest modul este prezentat realizarea unei baze de date format din patru tabele ntre care sunt definite relaii. Este exemplificat realizarea interogrilor i rapoartele referitoare la o baz de date relaional.

Competene:

Dobndirea abiliti referitoare la construirea unei baze de date relaionale de complexitate medie.

1. Crearea unei baze de date relaionale


1.1. Realizarea bazei de date
n cadrul acestei aplicaii o s realizm o baz de date care include mai multe entiti, cu structura din figura 6.1 ( imaginea este realizat n cadrul unui raport referitor la aceast baz de date v. punctul 1.3). Baza de date este construit pe urmtoarea idee: se presupune c avem un grup de studeni exprimat prin entitatea Studeni, care se nscriu la mai multe cursuri facultative: fizic, matematic, chimie, foraj, mediu. Aceste cursuri sunt grupate n entitatea corespunztoare Cursuri. Se face o repartiie a studenilor n funcie de preferinele acestora pentru anumite cursuri, exprimat prin entitatea Repartiie. Fiecare curs este inut de un profesor cu specializarea respectiv, de la o anumit facultate, entitatea Profesori.
1

Structura celor patru tabele care formeaz baza de date este: STUDENTI (nr matricol, nume i prenume, grupa, facultatea); CURSURI (cod curs, denumire curs, ziua, ora ); PROFESORI (cod profesor, specializarea, norma de baz, cod curs); REPARTIIE (cod, nr matricol, cod curs, apreciere) este dat n figura 6.2. n reprezentarea de mai sus, atributele numite chei primare (subliniate cu linie continu) caracterizeaz n mod unic realizrile de entitate (un numr matricol este specific unui student i numai unuia, aceeai proprietate este valabil pentru codul unui profesor, fiecare curs are un cod unic, iar fiecare linie a tabelului Repartiie este identificat printr-un numr, pstrat n cod). Tab. 6.1. Datele referitoare la entitatea Cursuri Cursuri
Cod_curs Denumire curs 1 fizica 2 matematica 3 chimie 4 foraj 5 mediu Ziua 07.01.2013 08.01.2013 09.01.2013 10.01.2013 10.01.2013 Ora 13:00:00 10:00:00 09:00:00 09:00:00 15:00:00

Cmpurile subliniate cu linie punctat numite chei secundare sau externe au un rol de legtur i anume, modeleaz relaiile ntre entitile identificate n faza de analiz . Se observ c am utilizat pe post de chei secundare atributele cheie primar din cadrul entitilor la care urmeaz s ne legm (relaionm). Astfel n entitatea Profesor avem cheia secundar Cod curs care este cheia primar din cadrul entitii Cursuri. n timp ce cheile primare au valori unice, cheile secundare pot avea valori duplicate (se va observa, studiind baza de date oferit ca exemplu, c numrul matricol 1 apare n trei linii ale tabelei repartiie, iar cursul cu codul 3 n dou linii).n tabelele 6.1-6.4 sunt tablele corespunztoare entitilor completate cu cteva nregistrri folosite pentru exemplificarea utilizrii bazei de date. Dup realizarea bazei de date la fel ca la UI4, vom introduce relaiile ntre tabele.

Fig. 6.1. Structura bazei de date relaionale: cheile primare sunt ncercuite, cheile secundare sunt subliniate. 2

Fig. 6.2. Vizualizarea tabelelor din baza de date n modul proiectare.

Tab. 6.2. Datele referitoare la entitatea Profesori Profesori


Cod_profesor Specializarea Norma de baza Cod_curs 1 matematica IME 1 2 fizica IME 2 3 chimie TPP 3 4 foraj IPG 4 5 mediu TPP 5

1.2. Crearea relaiilor dintre entiti


Se folosete meniul Instrumente baza de date i opiunea Relaii figura 6.3,a. Apelnd la aceast opiune apar tabelele din cadrul bazei de date; folosim n continuare opiunea Editare relaii figura 6.3,b (2). Se deschide o fereastr din care alegem butonul Creare, figura 6.3,c. Alegem (entitile) tabelele din stnga respectiv dreapta i (atributele) coloanele corespunztoare, figura 6.3,d; nchidem cu OK. n noua fereastr figura 6.3,e remarcm tabelele corelate, cheile folosite, tipul relaiei unul la mai muli (un student folosete la mai multe nregistrri din tabelul Repartiii); nchidem cu butonul OK. Procedm la fel cu a doua relaie dintre entitile Repartiie i Cursuri figurile 6.3,f-g; n acest timp relaiile create sunt figurate pe ecran cu o linie care unete atributele din entitile selectate, figura 6.3,h. Continum cu ultima relaie dintre entitile Cursuri i Profesori figurile 6.3,i-j; n final obinem relaiile figurate n 6.1 . Se recomand consultarea lucrrilor [1,5-7,9] pentru aprofundarea acestui subiect.

j Fig. 6.3. Crearea relaiilor din baza de date Cursuri studenti.

1.3. Realizarea interogrilor


Vom exemplifica cu proiectarea a patru interogri referitoare la aceast baz de date. Prima interogare se refer la selectarea studenilor care au cursuri n ziua de 7 ianuarie, 2013. Intrm n meniul Proiectare interogare figura 6.4,a. Apare caseta Afiare tabel, figura 6.4,b. n aceast caset selectm tabelele (entitile): Tab. 6.3. Datele referitoare la entitatea Studeni , Repartiie i Cursuri Repartitie figura 6.4,b. Tabelele apar cu Cod Nr_matricol Cod_curs Apreciere relaiile dintre ele figura 6.4,c iar 1 1 1 8 tabelul inferior de proiectare a 2 1 2 9 interogrii este necompletat. 3 1 3 7 Urmeaz s facem alegerile n 4 2 1 4 acest tabel. Selectm Nume i 5 2 2 8 prenume studentului din tabelul 6 2 4 3 Studeni, Grupa din tabelul 7 3 1 3 Studeni, crem un nou atribut 8 4 1 9 Data (n care vom introduce 9 4 5 10 numele zilei: n loc de data 10 5 1 10 calendaristic luni, mari, 11 5 2 5 miercuri..) i Ziua din tabelul 12 5 3 5 Cursuri figurile 6.4,d-e. Se observ 13 6 1 4 c ziua nu va fi afiat; s-a ales 14 6 4 8 ziua de 7 ianuarie 2013 care pic 15 6 5 luni. Salvm interogarea sub numele Cursuri 7_01_13 , figura 6.4,f. Interogarea n limbajul SQL creat automat de program este dat n continuare: SELECT Studenti.[Nume si prenume], Studenti.Grupa, [Ziua saptamanii] AS Data Tab. 6.4. Datele referitoare la entitatea FROM Cursuri INNER JOIN (Studenti INNER JOIN Repartitie ON Studenti.[Nr_matricol] = Repartitie.[Nr_matricol]) ON Cursuri.[Cod_curs] = Repartitie.[Cod_curs] Studenti
Nr_matricol Nume si prenume Grupa Facultatea 1 Avram Constantin 1220 IME 2 Banica Maria 1220 IME 3 Calarasu Victor 1310 IPG 4 Donose Mircea 1310 IPG 5 Tanase Victor 1410 TPP 6 Zaharia Maria 1410 TPP

WHERE (((Cursuri.Ziua)=#1/7/2013#));

f Fig. 6.4. Proiectarea interogrii Cursuri 7_01_13.

Cursuri_7_01_13
Nume si prenume Grupa Avram Constantin 1220 Banica Maria Calarasu Victor Donose Mircea Tanase Victor Zaharia Maria 1220 1310 1310 1410 Data

1410 b Fig. 6.5. Utilizarea interogrii Cursuri 7_01_13.

luni luni luni luni luni luni

Dac executm interogarea apare mai nti caseta pentru atributul Ziua sptmnii n care completm numele zilei n care pic 7 ianuarie 2013 luni, figura 6.5,a. Apoi se genereaz tabelul corespunztor acestei interogri figura 6.5,b. Rezultatul const n afiarea studenilor care particip la cursuri n ziua de 7 ianuarie 2013. Analog se va proiecta interogarea Note studenti, care are ca scop afiarea notelor obinute de studeni la aceste cursuri. Folosim dou tabele Studeni i Repartiie i selectm aprecierile (cnd acestea exist) la fiecare student, figura 6.6,a. Structura interogrii n limbajul SQL este dat mai jos, iar rezultatul utilizrii n figura 6.6,b. SELECT Studenti.[Nume si prenume], Repartitie.Apreciere FROM Studenti LEFT JOIN Repartitie ON Studenti.Nr_matricol=Repartitie.Nr_matricol WHERE Repartitie.Apreciere <>null; Vom realiza acum interogarea Medii studeni cu ajutorul interogrii definite anterior, figura 6.7,a. Scopul interogrii este de a afla media fiecrui student. S-a considerat c aceste cursuri sunt facultative iar lipsa

unei note nu implic nencheierea mediei, acesta fcndu-se cu restul notelor. n limbajul SQL interogarea este :

SELECT DISTINCTROW [Note_studenti].[Nume si prenume], Format(Avg([Note_studenti].Apreciere),"####.00") AS [Medie al Apreciere] FROM Note_studenti GROUP BY [Note_studenti].[Nume si prenume];

Note_studenti
Nume si prenume Apreciere Avram Constantin 7 Avram Constantin 9 Avram Constantin 8 Banica Maria 3 Banica Maria 8 Banica Maria 4 Calarasu Victor 3 Donose Mircea 10 Donose Mircea 9 Tanase Victor 5 Tanase Victor 5 Tanase Victor 10 Zaharia Maria 8 Zaharia Maria 4 b Fig. 6.6. Utilizarea interogrii Note studeni.

10

Medii studenti
Nume si prenume Medie al Apreciere Avram Constantin 8,00 Banica Maria 5,00 Calarasu Victor 3,00 Donose Mircea 9,50 Tanase Victor 6,67 Zaharia Maria 6,00 b Fig. 6.7. Interogarea Medii studeni.

Mediile se vd n figura 6.7,b. Interogarea Note la matematic este construit prin elementele indicate n figura 6.8,a. Rezultatul utilizrii se vede n figura 6.8,b. Sunt afiate numai notele la matematic ale studenilor. Codul n limbaj SQL este: SELECT Studenti.[Nume si prenume], Studenti.Grupa, Studenti.Facultatea, Repartitie.Cod_curs, Repartitie.Apreciere

11

FROM Studenti INNER JOIN Repartitie ON Studenti.[Nr_matricol] = Repartitie.[Nr_matricol]


WHERE (((Repartitie.Cod_curs)=1));

Note_matematica
Nume si prenume Grupa Facultatea Cod_curs Apreciere Avram Constantin 1220 IME 1 8 Banica Maria 1220 IME 1 4 Calarasu Victor 1310 IPG 1 3 Donose Mircea 1310 IPG 1 9 Tanase Victor 1410 TPP 1 10 Zaharia Maria 1410 TPP 1 4 b Fig. 6.8. Proiectarea i rezultatul interogrii Note matematic.

Ultima interogare proiectat Participare la cursuri figura 6.9,a urmrete participarea studenilor la aceste cursuri facultative (organizate n sptmna 7-11 ianuarie 2013). Codul SQL este: SELECT Studenti.Facultatea, Studenti.Grupa, Studenti.[Nume si prenume], Cursuri.[Denumire curs] FROM Cursuri INNER JOIN (Studenti INNER JOIN Repartitie ON Studenti.Nr_matricol = Repartitie.Nr_matricol) ON Cursuri.Cod_curs = Repartitie.Cod_curs; Rezultatul interogrii se vede n figura 6.9,b.

12

Participare la cursuri
Facultatea Grupa Nume si prenume Denumire curs IME 1220 Avram Constantin fizica IME 1220 Avram Constantin matematica IME 1220 Avram Constantin chimie IME 1220 Banica Maria fizica IME 1220 Banica Maria matematica IME 1220 Banica Maria foraj IPG 1310 Calarasu Victor fizica IPG 1310 Donose Mircea fizica IPG 1310 Donose Mircea mediu TPP 1410 Tanase Victor fizica TPP 1410 Tanase Victor matematica TPP 1410 Tanase Victor chimie TPP 1410 Zaharia Maria fizica TPP 1410 Zaharia Maria foraj TPP 1410 Zaharia Maria mediu b Fig. 6.9. Interogarea Participare la cursuri.

1.3. Realizarea de rapoarte


R1.Pentru ultima interogare vom proiecta un raport. Se alege din meniul Creare opiunea Expert Raport figura 6.10,a. Realizarea raportului pe
13

aceast cale este cea mai simpl, deoarece presupune parcurgerea unor ferestre succesive i selectarea opiunilor pe care le dorim, figurile 6.10,b-f. Alegem mai nti tabelul generat de interogarea Participare la cursuri figura 6.10,b, table ce constituie baza pentru raportul creat. Selectm toate coloanele i apsm butonul Urmtorul. Se alege o opiune de vizualizare indicat de program ntr-o fereastr figura 6.10,c (2), apoi butonul Urmtorul. Se poate alege n continuare aezarea n pagin a atributelor figura 6.10,d, sortarea nregistrrilor pentru fiecare atribut figura 6.10,e, modul de aezare n pagin figura 6.10,f, numele raportului i posibilitatea de examinare imediat a acestuia figura 6.10,g; forma final a raportului este dat n figura 6.10,h .

14

g 15

h Fig. 6.10. Realizarea unuii raport pentru interogarea Participare la cursuri

R2.Un al doilea raport referitor la aceast baz de date este legat de prezentarea relaiilor dintre entitile bazei de date. Pentru realizarea sa intrm n Instrumente baz de date Proiectare i de aici alegem Relaii figura 6.11,a. Acionm apoi opiunea Raport relaii figura 6.11,b; este generat automat raportul din figura 6.11,c; raportul este pstrat dup salvare n seciunea de rapoarte a bazei de date, figura 6.11,d. Este util
consultarea lucrrilor [2-4] pentru dezvoltarea competenelor referitoare la proiectarea elementelor bazelor de date.

16

d Fig. 6.11. Realizarea unui raport referitor la relaiile din baza de date Cursuri studeni.

Explicaii suplimentare la clas

2 Teste de autoevaluare
1. n clauza FROM Studenti LEFT JOIN Repartitie ON Studenti.Nr_matricol=Repartitie.Nr_matricol, operatorul LEFT JOIN: a. se folosete pentru a crea o imbricare extern,rezultatul cuprinde toate nregistrrile provenite din tabelul Studeni chiar dac nu exist o valoare corespunztoare n tabelul Repartiie; b. se folosete pentru a crea o imbricare extern,rezultatul cuprinde toate nregistrrile provenite din tabelul Repartiie chiar dac nu o exist valoare corespunztoare n tabelul Studeni ; c. nu se folosete pentru o imbricare ntre tabele. 2. Instruciunile SELECT: a) SELECT Studenti.[Nume si prenume], Repartitie.Apreciere FROM Repartitie Right JOIN Studenti ON Studenti.Nr_matricol = Repartitie.Nr_matricol; b)SELECT Studenti.[Nume si prenume], Repartitie.Apreciere

17

FROM Studenti LEFT JOIN Repartitie ON Studenti.Nr_matricol = Repartitie.Nr_matricol; : a. a doua instruciune are o eroare de sintax; b. prima instruciune are o eroare de sintax; c. au acelai efect. 3. Instruciunea SELECT, SELECT DISTINCT Prenume FROM Studenti; selecteaz : a. doar nregistrrile n care prenumele sunt distincte; b. toate nregistrrile; c. doar nregistrrile n care prenumele sunt distincte dar predicatul DISTINCT trebuie nlocuit cu predicatul DISTINCTROW . 4. Clauza FROM Studenti INNER JOIN Repartitie ON Studenti.Nr_matricol> Repartitie.Nr_matricol : a. instruciunea nu este corect condiia ce urmeaz dup ON poate fi numai de egalitate; b. este corect producnd o combinaie dintre tabele pe baza condiiei care urmeaz dup ON, dar trebuie s existe date n ambele tabele la atributele introduse n comparaie; c. este corect producnd o combinaie dintre tabele pe baza condiiei care urmeaz dup ON.

3 Rspunsurile testelor de autoevaluare


1-a, 2-c, 3-a, 4-b

4 Tem
T1. Realizai o baz de date referitoare la activitatea comercial a unei firme. Se vor descrie furnizorii i produsele achiziionate de firm, personalul firmei, clienii si comenzile pe care acetia le emit, precum i modul de transport al produselor ctre clieni. Se presupune c un produs, identificat prin codul su, Produs_id, este cumprat de la un singur

18

furnizor, pentru a putea relaiona tabelele Furnizori i Produse printr-o legtur de tip 1-n. Se consider c fiecare client emite cte o comand pentru fiecare produs, astfel c tabelele Clieni i Comanda au o relaie 1-n, iar tabelele Comanda i Produs_comanda au o relaie 1-1. Aplicaia este constituit din opt tabele, avnd urmtoarele cmpuri: 1. Ageni (Agent_id, Nume_agent, Prenume_agent, Funcie, Nscut, Angajat, Adres, Ora, JudeT, Cod_potal, Tel_acas, notes) 2. Categorie (Categorie_id, Categorie_nume, Descriere) 3. Clieni (Client_id, Denumire_client, Persoana_contact, Funcie_contact, Adresa, Ora, Jude, Cod_potal, Telefon, Max_comanda, Min_comanda, Discount) 4. Comanda (Comanda_id, Client_id, Transportator_id, Numr_comand, Data_comand, Client_nume, Client_adresa, Client_ora, Client_cod_potal, Discount, Data_livrrii, notes, Agent_id) 5. Furnizori (Furnizor_id, Denumire_furnizor, Persoana_contact, Funcie_contact, Adresa, Ora, Jude, Cos_postal, Telefon) 6. Produs_comanda (Comand_id, Produs_id, Pret_unitar, Cantitate) 7. Produse (Produs_id, Furnizor_id, Categorie_id, Nume_produs, Unitate_msur, Pre_unitar) 8. Transportatori (Transportator_id, Denumire_transportator).

Fig. 6.12. Relaiile din cadrul bazei de date la care se refer tema UI6.

19

Acest model logic al aplicaiei evideniaz att cheile primare (subliniate cu linie continu), ct i cheile externe (subliniate cu linie punctat). Relaiile ce vor fi adugate n cadrul acestei baze de date sunt date n figura 6.12. T2. Proiectai o interogare a situaiei angajailor, n care s se specifice, grupat pe funcii: - numele complet al agenilor, - data angajrii, - oraul de domiciliu i - numrul lor de telefon.

5 Bibliografie/webografie

1. Constantinescu C. Baze de date. Universitatea din Craiova, 2007. 2. Doro I. Baze de date. Editura Cibernetic MC, Bucureti , 2010. 3. Fusaru D., Gherasim Z., Andronic, M. Bra A. Stroe, P. Aplicaii economice n Visual Basic i Acces, Ed. Fundaiei Romnia de mine, Bucureti, 2003. 4. Gavot M. Baze de date. Editura SNSPA - Facultatea de Comunicare i Relaii Publice: Bucureti, 2001. 5. Garsia Molina H., Ullman H., Wiondom J. Database Systems. The Complete Book. Pretience Hall, Upper Saddle Riner, 2002. 6. Georgescu C., Georgescu M. Baze de date relaionale i multidimensionale, Ed. did. i ped. RA, Bucureti, 2005. 7. Giulvezean C., Mircea G., Trnveanu D., Margea C. Baze de date, Ed. Univ. de Vest, Timioara 2009. 8. Trandafir R. , Nistorescu M.S. Bazele informaticii i Limbaje de programare Baze de date relaionale, Univ. Tehnic de Construcii Bucureti, 2007. 9. Tudor N.L. Sisteme informatice i gestiunea bazelor de date, Ed. Univ. din Ploieti, 2007.

20

S-ar putea să vă placă și