Subiect 4

O bază de date conţine informaţii despre elevii unei şcoli şi diriginții acestora. Fiecare diriginte îndrumă unul sau mai mulți elevi, fiecare elev este îndrumat de un singur diriginte. Diagrama ERD ce modelează situația este dată în figură. Se cere:

S4 ERD

a) Construiţi baza de date cu tabele corespunzătoare şi relaţiile reprezentate in ERD şi populaţi tabelele cu înregistrări relevante pentru cerinţele următoare:

b) Afişaţi specializările profesorilor care sunt diriginţi. Dacă există 2 profesori cu aceeaşi specializare, aceasta va fi afişată o singură dată.

c) Afişaţi în ordine alfabetică elevii care au ca diriginţi profesori a căror specializare o citiţi de la tastatură.

d) Înlocuiți numele şi prenumele elevilor astfel încât să fie memorate în felul următor: inițiala litera mare, restul literelor mici.

Rezolvare

a) Construiţi baza de date cu tabele corespunzătoare şi relaţiile reprezentate in ERD şi populaţi tabelele cu înregistrări relevante pentru cerinţele următoare:

Structura tabelului ELEV pentru fiecare câmp:

- id - cheie primară, Data Type: AutoNumber

- nume - Data Type: Text

proprietăţi modificate

Field Size: 30

Caption: Nume elev

Validation Rule: Is Not Null

Validation Text: Introduceti numele

Required: Yes

- prenume - Data Type: Text

proprietăţi modificate

Field Size: 30

Caption: Prenume elev

Validation Rule: Is Not Null

Validation Text: Introduceti prenumele

Required: Yes

- clasa - Data Type: Text

proprietăţi modificate

Field Size: 5 - presupunem că maximum de caractere sunt 5 (ex.: XIII A)

Required: Yes

* Pentru a putea realiza o relaţie între cele două tabele după diriginte, este necesară crearea unui câmp în plus în tabel, pe care îl vom numi id_diriginte, de tip Number, Field Size: Long Integer, Required: Yes.

Se introduc datele în tabel.

Structura tabelului DIRIGINTE pentru fiecare câmp:

- id - cheie primară, Data Type: AutoNumber

- nume - Data Type: Text

proprietăţi modificate

Field Size: 30

Caption: Nume diriginte

Validation Rule: Is Not Null

Validation Text: Introduceti numele dirigintelui

Required: Yes

- prenume - Data Type: Text

proprietăţi modificate

Field Size: 30

Caption: Prenume diriginte

Validation Rule: Is Not Null

Validation Text: Introduceti prenumele dirigintelui

Required: Yes

- specializare - Data Type: Text

proprietăţi modificate

Field Size: 30

Required: Yes

Se realizează relaţia dintre tabele legând

câmpul-cheie primară id din tabelul DIRIGINTE la

câmpul id_diriginte din tabelul ELEV.

S4 relatie

b) Afişaţi specializările profesorilor care sunt diriginţi. Dacă există 2 profesori cu aceeaşi specializare, aceasta va fi afişată o singură dată.

Faptul că specializarea trebuie afişată o singură dată, elimină din start interogarea (care afişează pentru fiecare înregistrare specializarea).

Deci se realizează un raport grupat după specializare, în care se vor afişa specializarea, numele şi prenumele diriginţilor.

Click pe butonul Create din meniu, apoi pe Report Wizard din grupul de butoane Reports.

Se aleg din tabelul DIRIGINTE câmpurile care vor fi afişate în raport: nume, prenume şi specializare.

În fereastra următoare, gruparea datelor se face după specializare.

Din fereastra următoare se poate alege încă un nivel de grupare: după numele dirigintelui.

Următoarea fereastră ne propune modul de afişare al datelor folosind diferite şabloane (layout), după care, în ultima fereastră, ni se cere numele raportului nou creat şi deschiderea acestuia pentru previzualizare (care arată cum va fi listat raportul la imprimantă) sau pentru modificare.

Ulterior, raportul poate fi modificat din modul Design View, unde se pot rearanja etichetele raportului şi se pot adăuga elemente grafice etc.

c) Afişaţi în ordine alfabetică elevii care au ca diriginţi profesori a căror specializare o citiţi de la tastatură.

Se creează o interogare care preia date din ambele tabele Create - Query Wizard - Simple Query Wizard:

- din tabelul ELEV se preiau numele şi prenumele elevilor;

- din tabelul DIRIGINTE se preia câmpul specializare (care nu se va afişa).

S4 interogare1

Ordonarea elevilor se face alfabetic - pe rândul Sort se alege opţiunea Ascending pentru nume şi prenume.

Pentru citirea specializării de la tastatură, în coloana corespunzătoare câmpului specializare, pe rândul Criteria se introduce între paranteze pătrate textul Introduceti specializarea.

Câmpul specializare nu se afişează, deci se debifează marcatorul de pe rândul Show.

d) Înlocuiți numele şi prenumele elevilor astfel încât să fie memorate în felul următor: inițiala litera mare, restul literelor mici.

Se creează o interogare de actualizare (Update) care modifică numele şi prenumele din tabelul ELEV - prima literă o transformă în majusculă, restul literelor transformându-le în litere mici. Pentru aceasta, se va folosi funcţia StrConv (alte informaţii referitoare la această funcţie se pot găsi şi aici).

Create - Query Wizard - Simple Query Wizard: din tabelul ELEV se preiau câmpurile nume şi prenume.

După salvarea interogării, în modul de vizualizare Design View, se fac câteva modificări:

1. Se dă click pe butonul Update (din meniul Design, grupul Query Type) pentru a indica aplicaţiei Access că interogarea va realiza actualizarea (modificarea) câmpurilor selectate.

S4 upd btn

2. Pentru transformare, pe rândul Update to, se foloseşte funcţia StrConv şi valoarea 3.

Câmpul nume va fi transformat cu funcţia StrConv([nume],3), iar

câmpul prenume va fi transformat cu funcţia StrConv([prenume],3) - (vezi figura de mai jos).

S4 interogare2

Am ataşat şi fişierul în format mdb.

Spor la lucru!