Documente Academic
Documente Profesional
Documente Cultură
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:
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.
Pagina | 10
Codul SQL al acestei interogări este:
Varianta 2:
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.
Pagina | 12
Codul SQL al acestei interogări este:
Pagina | 13
Codul SQL al acestei interogări este:
Pagina | 14
9. Query 9 - Materialele din magazia 22.
Varianta 2:
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;
Pagina | 17
13. Query 13 - Lista materialelor ieşite din magazia X în anul Y.
Pagina | 18
Codul SQL al acestei interogări este:
Varianta 2:
Pagina | 19
16. Query 16 - Situaţia achiziţionărilor de materiale pe furnizori.
17. Query 17 - Suma valorică pe fiecare furnizor de la care s-au achiziţionat materiale în ultimele 6 luni.
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ă:
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”):
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
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
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
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.
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;
Pagina | 28
Codul SQL al acestei interogări este:
Varianta 2
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