Documente Academic
Documente Profesional
Documente Cultură
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.
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
WHERE (((Cursuri.Ziua)=#1/7/2013#));
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
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
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.
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
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.
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.
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