Sunteți pe pagina 1din 30

Aplicație rezolvată 3

O firmă de calculatoare doreşte informatizarea activităţii privind gestiunea componenetelor materiale


folosite la asamblarea unui calculator (procesoare, memorii, carcase, plăci de bază, etc). Se doreşte în cadrul
acestui sistem să se evidenţieze toţi furnizorii de la care s-au cumpărat astfel de materiale, toate facturile
primite de la furnizor care să ateste cumpărarea acestor componenete, precum şi bonurile de consum emise
de către magazii spre secţiile de producţie pentru realizarea produsului final (a calculatorului gata asamblat).
Pentru a micşora gradul de dificultate al aplicaţiei propuse, vom considera că toate materialele cuprinse pe o
anumită factură esmisă de furnizor sunt destinate unei singure magazii. Materialele sunt recepţionate de o
magazie pe baza facturii (cazul fericit) şi sunt eliberate secţiilor de producţie pe baza bonurilor de consum.
Vom presupune, de asemenea, că materialele au un preţ unitar de achiziţie fix. Se doreşte aflarea stocurilor
de materiale existente la o anumită dată în oricare din magazii sau în toate laolaltă.

Rezolvare:

Conform teoriei bazelor de date se defineşte într-un prim pas modelul conceptual al datelor (MCD) sau
modelul Entitate – Atribut – Corespondenţă). Pasul al doilea presupune transformarea modelului conceptual
al datelor în model logic al datelor (MLD) sau modelul relaţional. Pasul al treilea presupune transformarea
modelului logic al datelor în model fizic al datelor (MFD) sau modelul ACCESS.
Aşadar: modelul conceptual al datelor (MCD) este:
- Furnizor – Factură: conform enunţului, firma va achiziţiona de la un furnizor aceste materiale.
Deci, furnizorul va emite una sau mai multe facturi către societatea noastră, rezultând astfel o
corespondenţă numită de noi EMITE.
- Factură - Material: pe o factură sunt cuprinse una sau mai multe produse în diferite cantităţi, de
unde rezultă o corespondenţă LINIE FACTURĂ cu atributul Cantitate intrată.
- Factură – Magazie: o magazie primeşte una sau mai multe facturi atunci când se face
aprovizionarea cu materiale. Rezultă deci o corespondenţă PRIMEŞTE.
- Bon de Consum – Material: într-un bon de consum sunt cuprinse una sau mai multe materiale în
diferite cantităţi, de unde rezultă o nouă corespondenţă numită LINIE BON DE CONSUM cu
atributul Cantitate ieşită.
- Bon de Consum – Magazie: o magazie întocmeşte pentru ieşirea materialelor din magazie unul sau
mai multe bonuri de consum, de unde rezultă o nouă corespondenţă ÎNTOCMEŞTE.
Dat fiind faptul că am presupuns, în enunţ, că recepţionarea materialelor de la furnizori de către
magaziile proprii se face pe baza facturii, nu mai este necesară o corelaţie între Materiale – Magazie,
deoarece facturile conţin deja această informaţie.
În concluzie modelul fizic al datelor se prezintă astfel:

Pagina | 1
TABELE ŞI INTEROGĂRI
Enunţul aplicaţiei impune crearea următoarelor tabele:

A. Furnizori:
Structură:
- Pe câmpul Cod Furnizor nu se acceptă decât valori cuprinse între 1 şi 10. Mesajul de
eroare fiind: “Cod eronat. Codul furnizorului este între 1 şi 10”.

Înregistrări
- Presupunem că acestea sunt:

B. Magazie
Structură:
- Pe câmpul Cod Magazin nu se acceptă decât valori cuprinse între 21 şi 30. Mesajul de
eroare fiind: “Cod eronat. Tastaţi codul magaziei între 21 şi 30”.

Pagina | 2
Înregistrări
- Presupunem că acestea sunt:

C. Materiale
Structură:
- Pe câmpul Cod Material nu se acceptă decât valori cuprinse între 31 şi 40. Mesajul de
eroare fiind: “Cod eronat. Tastaţi codul materialului între 31 şi 40”.

- Câmpul Unitate de Masura va fi o listă derulantă cu valorile: Kg, Buc, Role, Metru
Pagina | 3
Înregistrări
- Presupunem că acestea sunt:

D. Bon de Consum
Structură:
- Pe câmpul Nr Bon de Consum nu se acceptă decât valori cuprinse între 41 şi 50.
Mesajul de eroare fiind: “Eroare. Tastaţi nr bonului de consum între 41 şi 50”.

- Câmpul Cod Magazin (aici cheie externă) va fi o listă derulantă cu valorile câmpului
Cod Magazin din tabela Magazie (acolo cheie primară).

Pagina | 4
Înregistrări
- Presupunem că acestea sunt:

E. Factura
Structură:
- Pe câmpul Numar Factura nu se acceptă decât valori cuprinse între 11 şi 20. Mesajul de
eroare fiind: “Eroare. Numarul facturii este între 11 şi 20”.

Pagina | 5
- Câmpul Cod Furnizor (aici cheie externă) va fi o listă derulantă cu valorile câmpului
Cod Furnizor din tabela Furnizor (acolo cheie primară).

- Câmpul Data Facturii va fi completat cu o data mai mică sau egală decât data curentă.
Mesajul de eroare este: „Data facturii este <= decat data curenta”.

- Câmpul Cod Magazin (aici cheie externă) va fi o listă derulantă cu valorile câmpului
Cod Magazin din tabela Magazie (acolo cheie primară).

Pagina | 6
Înregistrări
- Presupunem că acestea sunt:

F. Linie Factura
Structură:

- Câmpul Numar Factura (aici cheie externă) va fi o listă derulantă cu valorile câmpului
Numar Factura din tabela Factura (acolo cheie primară).

Pagina | 7
- Câmpul Cod Material (aici cheie externă) va fi o listă derulantă cu valorile câmpului
Cod Material din tabela Materiale (acolo cheie primară).

Înregistrări
- Presupunem că acestea sunt:

G. Linie Bon de Consum


Structură:

Pagina | 8
- Câmpul Nr Bon de Consum (aici cheie externă) va fi o listă derulantă cu valorile
câmpului Nr Bon de Consum din tabela Bon de Consum (acolo cheie primară).

- Câmpul Cod Material (aici cheie externă) va fi o listă derulantă cu valorile câmpului
Cod Material din tabela Materiale (acolo cheie primară).

Înregistrări
- Presupunem că acestea sunt:

Cerințe INTEROGĂRI

Pagina | 9
Cunoscându-se tabelele, să se realizeze următoarele interogări folosind modul de lucru QBE şi SQL:

1. Query 1 - Lista furnizorilor din Bucureşti sau Cluj, sortaţi alfabetic după câmpul Adresa Furnizor.

Codul SQL al acestei interogări este:

2. Query 2 - Lista furnizorilor a căror denumire începe cu litera A.

Codul SQL al acestei interogări este:

3. Query 3 - Lista materialelor al căror preţ este între 6 mil si 10 mil.


Varianta 1:

Pagina | 10
Codul SQL al acestei interogări este:

Varianta 2:

Codul SQL al acestei interogări este:

Varianta 3:

Pagina | 11
Codul SQL al acestei interogări este:

4. Query 4 - Afişarea nr de zile trecute de la emiterea fiecărei facturi, sortată descrescător după numărul de
zile de întârziere.

Codul SQL al acestei interogări este:

5. Query 5 - Care sunt materialele de pe factura cu numărul X.

Pagina | 12
Codul SQL al acestei interogări este:

6. Query 6 - Care sunt materialele de pe facturile cu numărul 13 sau 14.

Codul SQL al acestei interogări este:

7. Query 7 - Furnizorii de la care am cumpărat materialul ce are codul 31.

Pagina | 13
Codul SQL al acestei interogări este:

8. Query 8 - Câte bonuri de consum a emis fiecare magazie în parte.

Codul SQL al acestei interogări este:

Pagina | 14
9. Query 9 - Materialele din magazia 22.

Codul SQL al acestei interogări este:

10. Query 10 - În ce cantitate se găsesc materialele din magazia 22.

Codul SQL al acestei interogări este:

11. Query 11 - Furnizorii de la care s-a cumpărat în ultimele 6 luni.


Pagina | 15
Varianta 1:

Codul SQL al acestei interogări este:

Varianta 2:

Codul SQL al acestei interogări este:

Pagina | 16
12. Query 12 - Furnizorii de la care nu am cumpărat în ultimele 45 de zile.
Pentru rezolvare se parcurg două etape:
 Determinarea furnizorilor de la care am cumparat în ultimele 45 de zile;

Codul SQL este:

 Determinarea furnizorilor de la care nu am cumpărat în ultimele 45 de zile, prin excluderea


din lista tuturor furnizorilor a celor de la care am cumpărat

Codul SQL este:

Pagina | 17
13. Query 13 - Lista materialelor ieşite din magazia X în anul Y.

Codul SQL al acestei interogări este:

14. Query 14 - Sa se afiseze lista materialelor achizitionate în luna X, anul Y.


Varianta 1:

Pagina | 18
Codul SQL al acestei interogări este:

Varianta 2:

Codul SQL al acestei interogări este:

15. Query 15 - Să se afişeze lista materialelor achiziţionate între doua date, X şi Y.

Codul SQL al acestei interogări este:

Pagina | 19
16. Query 16 - Situaţia achiziţionărilor de materiale pe furnizori.

Codul SQL al acestei interogări este:

17. Query 17 - Suma valorică pe fiecare furnizor de la care s-au achiziţionat materiale în ultimele 6 luni.

Codul SQL al acestei interogări este:

Pagina | 20
Interogări de acţiune
18. Query 18 - Crearea unui noi tabele cu lista furnizorilor din Bucureşti sau Cluj.

Click dreapta

După alegerea opţiunii Make-Table Query apare o subfereastră în care utilizatorul trebuie să numească
noua tabelă ce va fi creată atunci când se va lansa în execuţie interogarea respectivă:

După lansarea în execuţie a interogării apar:

Pagina | 21
Codul SQL al acestei interogări este:

19. Query 19 – Să se adauge în noua tabela creata anterior şi furnizorii din Rm. Vâlcea.

Click dreapta

După alegerea opţiunii Append Query apare o subfereastră în care utilizatorul trebuie să specifice numele
tabelei în care se doreşte adăugarea automată de noi înregistrări (în cazul de faţă tabela creată anterior şi
anume “Furnizori din Bucureşti sau Cluj”):

După lansarea în execuţie a interogării apar:

Pagina | 22
ATENŢIE: Lansarea în execuţie de mai multe ori a acestei interogări conduce la adăugarea
repetată de înregistrări în tabela menţinată ca destinaţie, fiind astfel create duplicate.
Codul SQL al acestei interogări este:

20. Query 20 - Să se şteargă din tabela nou creată furnizorii din Cluj.

Click dreapta

După lansarea în execuţie a interogării apar:

Pagina | 23
Codul SQL al acestei interogări este:

21. Query 21 - Micşorarea cu 10% a preţului materialelor achiziţionate după 25 decembrie 2004.

Click dreapta

După lansarea în execuţie a interogării apar:

Codul SQL al acestei interogări este:

Pagina | 24
22. Query22 - Care este valoarea lunară totală a achiziţiilor de materiale în fiecare an?

Click dreapta

Sau

Atenţie: Într-o interogare Crosstab trebuie să avem una sau mai multe opţiuni Row Heading, o
singură opţiune Column Heading şi o singură opţiune Value.
Codul SQL al acestei interogări este:

respectiv,

Pagina | 25
23. Query23 - Care este valoarea achiziţiilor efectuate de la furnizori, pe ani şi pe trimestre?

Click

dreapta

Codul SQL al acestei interogări este:

24. Query24 - Care este valoarea achiziţiilor realizate anul trecut pe trimestre şi pe categorii de
materiale?

Pagina | 26
Codul SQL al acestei interogări este:

25. Query25 - Să se afişeze valoarea discount-ului de pe fiecare factură, ştiind că acesta se determine
astfel:
 Dacă valoarea totală a facturii este mai mică de 50.000.000 lei, atunci discount-ul este de 0;
 Dacă valoarea totală a facturii este între 50.000.00 şi 75.000.000lei, atunci discount-ul este de
15% din valoare;
 Dacă valoarea totală a facturii este peste 75.000.000, atunci discount-ul este de 20% din
valoare.

Codul SQL al acestei interogări este:

Pagina | 27
26. Query26 - Să se afişeze numărul facturii cu valoarea cea mai mare.
Varianta 1
Pentru a rezolva această cerintă trebuie să realizăm 3 interogări, astfel:
 Afişarea valorilor de pe fiecare factură – Query26-1;

 Afişarea valorii maxime existente – Query26-2;

 Afişarea facturii cu această valoare maximă.

Pagina | 28
Codul SQL al acestei interogări este:

Varianta 2

Opţiune de afişare. Implicit este ALL.

Codul SQL al acestei interogări este

Pagina | 29
De rezolvat:
27. Să se afişeze numărul de facturi emise pe ani.
28. Să se afişeze materialul cu frecvenţa ce mai mai mare de achiziţionare, ştiind că pe o factură un
produs poate să apară de mai multe ori.
EXPLICAŢII: De exemplu, dacă pe factura cu numărul 11, materialul 31 apare de 3, iar pe factura
cu numărul 12, materialul cu numărul 31 apare de 2 ori, nu trebuie să rezulte că materialul 31 a fost
cerut de 3+2=5 ori, ci numai de 2 ori pentru că apare pe 2 facturi diferite. Există posibilitatea ca
materialul 33 să fi fost achiziţionat pe 4 facturi, deci acesta, materialul 33, ar trebui să fie cel mai
frecvent material achiziţionat.
29. Să se afişeze anul în care s-a emis factura cu valoarea maximă.
30. Să se afişeze anul în care s-a înregistrat cel mai mare valoare totală a tranzacţiilor.
31. Să se afişeze numărul facturii cu valorea cea mai mică.
32. Să se afişeze topul primelor 3 facturi după valoare.

Pagina | 30

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