Subiect_19

Proiectaţi baza de date necesară unei bănci pentru evidenţa creditelor acordate clienţilor şi a achitărilor lor, compusă din tabelele:

CREDITE (cod-credit, nume-client, valoare-credit, durata-în-luni);

ACHITĂRI (număr-document, cod-credit, data, suma achitată);

Cerinţe:

a) Populaţi fiecare tabel cu minim 5 înregistrări.

b) Afişaţi numele clientului şi valoarea creditului pentru clienţii care au credite pe o durată de cel puţin 3 ani.

c) Care este numele clientului (clienţilor) cu valoarea creditului maximă?

d) Care este suma achitată de către clientul cu valoarea creditului maximă?

e) Afişaţi clienţii în ordinea descrescătoare a valorii creditului. Doi clienţi cu aceeaşi valoare a creditului vor fi afişaţi alfabetic.

Rezolvare

a) Populaţi fiecare tabel cu minim 5 înregistrări.

Structura tabelului CREDITE pentru fiecare câmp:

- cod_credit - cheie primară, Data Type: AutoNumber

- nume_client - Data Type: Text

proprietăţi modificate

Field Size: 30

Required: Yes

- valoare_credit - Data Type: Numeric

proprietăţi modificate

Field Size: Long Integer

Format: Standard

Decimal Places: 2

Required: Yes

- durata_in_luni - Data Type: Numeric

proprietăţi modificate

Field Size: Integer

Format: Standard

Decimal Places: 0

Required: Yes

Structura tabelului ACHITARI pentru fiecare câmp:

- numar_document - cheie primară, Data Type: AutoNumber

- cod_credit - Data Type: Number

proprietăţi modificate

Field Size: Long Integer

Required: Yes

Opţional: Pentru a completa mai rapid datele în câmpul cod_credit, se poate realiza o interogare care să preia codul şi numele clientului din tabelul CREDITE.

Access preia doar valorile din prima coloană (Bound Column), chiar dacă afişează şi coloana cu numele clientului.

Lookup cod credit

- valoare_credit - Data Type: Numeric

proprietăţi modificate

Field Size: Long Integer

Format: Standard

Decimal Places: 2

Required: Yes

- data - Data Type: Date

proprietăţi modificate

Format: Short Date

Decimal Places: 0

Required: Yes

- suma_achitata - Data Type: Date

proprietăţi modificate

Field Size: Long Integer

Format: Standard

Decimal Places: 2

Required: Yes

Se realizează relaţia de tip one-to-many legând

câmpul-cheie primară cod_credit din tabelul CREDITE la

câmpul cod_credit din tabelul ACHITARI.

S19 relatii

b) Afişaţi numele clientului şi valoarea creditului pentru clienţii care au credite pe o durată de cel puţin 3 ani.

Se creează o interogare care preia date din tabelul CREDITE. Se vor afişa doar înregistrările care au durata în luni mai mare ca 36 (3 ani x 12 luni).

S19 interogare b

c) Care este numele clientului (clienţilor) cu valoarea creditului maximă?

Se creează o interogare care preia date din tabelul CREDITE.

S19 i

Pentru ca să fie afişată doar prima înregistrare, se adaugă predicatul TOP 1 în interogarea SQL :

SELECT TOP 1 credite.nume_client

FROM credite

GROUP BY credite.nume_client, credite.valoare_credit

ORDER BY credite.valoare_credit DESC;

Descrierea predicatului TOP dintr-o interogare poate fi găsită în limba română aici.

d) Care este suma achitată de către clientul cu valoarea creditului maximă?

S19 interogare D

Ca şi la cerinţa c), pentru a se afişa doar prima înregistrare, se adaugă predicatul TOP 1 în interogarea SQL :

SELECT TOP 1 credite.nume_client, Sum(achitari.suma_achitata) AS SumaAchitata

FROM credite INNER JOIN achitari ON credite.cod_credit = achitari.cod_credit

GROUP BY credite.nume_client, credite.valoare_credit

ORDER BY credite.valoare_credit DESC;

e) Afişaţi clienţii în ordinea descrescătoare a valorii creditului. Doi clienţi cu aceeaşi valoare a creditului vor fi afişaţi alfabetic.

Se creează o interogare care preia din tabelul CREDITE câmpurile valoare_credit (ordonat descrescător) şi nume_client (ordonat crescător).

S19 interogare E

Am ataşat mai jos fişierul rezolvat în format .mdb.