Sunteți pe pagina 1din 11

ACADEMIA DE STUDII ECONOMICE

Facultatea Economie Agroalimentara si a Mediului








Proiect Microsoft Office
Access 2007












Done S.ST. Cristina-Mirela

Grupa 1302




-Bucuresti 2010-



Pentru o mai buna gestionare a produselor si a datelor
referitoare la acestea, un supermarket intentioneaza proiectarea
unei baze de date. In acest sens se considera urmatorul dictionar al
datelor:


DC1302Id_Furnizor
DC1302Denumire_Furnizor
DC1302Adresa
DC1302Localitate
DC1302Cod_Fiscal
DC1302Numar_Achizitie
DC1302Data_Achizitie
DC1302Cantitate_Achizitionata
DC1302Id_Produs
DC1302Denumire_Produs
DC1302UM
DC1302Pret
DC1302Numar_Vanzare
DC1302Data_Vanzarii
DC1302Cantitate_Vanduta
DC1302Id_Client
DC1302Denumire_Client
DC1302Localitate
DC1302Telefon
DC1302Cod_Fiscal





I.Inventarierea atributelor. Pe baza informatiilor referitoare la
activitatea firmei, se poate intocmi dictionarul de attribute:

Nr.
Crt.
Atribut Semnificatie
1 DC1302Id_Furnizor Cod Furnizor
2 DC1302Denumire_Furnizor Denumire Furnizor
3 DC1302Adresa Adresa Furnizor
4 DC1302Localitate Localitate Furnizor
5 DC1302Cod_Fiscal Cod Fiscal Furnizor
6 DC1302Numar_Achizitie Numarul Achizitiei
7 DC1302Data_Achizitie Data Achizitiei
8 DC1302Cantitate_Achizitionata Cantitatea Achizitionata
9 DC1302Id_Produs Cod Produs
10 DC1302Denumire_Produs Denumire Produs
11 DC1302UM Unitate de Masura
12 DC1302Pret Pretul Produsului
13 DC1302Numar_Vanzare Numarul Vanzarii
14 DC1302Data_Vanzarii Data Vanzarii
15 DC1302Cantitate_Vanduta Cantitatea Vanduta
16 DC1302Id_Client Cod Client
17 DC1302Denumire_Client Denumire Client
18 DC1302Localitate Localitate Client
19 DC1302Telefon Telefon Client
20 DC1302Cod_Fiscal Cod Fiscal Client

II.Specificarea regulilor de gestiune:
Fiecare furnizor poate livra mai multe produse.
Un produs poate fi achizitionat de la mai multi furnizori si
poate fi vandut catre mai multi clienti.
Un client poate cumpara mai multe produse.
Unitatea de masura a produselor va fi aleasa dintr-o lista
derulanta.
Data achizitiei precum si data vanzarii nu trebuie sa fie in
viitor(sa fie mai mici decat data curenta).
Cantitatea vanduta nu poate depasi 2000de unitati.

III.Intocmirea dictionarului de date:
DC1302Id_Furnizor, DC1302Denumire_Furnizor, DC1302Adresa,
DC1302Localitate, DC1302Cod_Fiscal, DC1302Numar_Achizitie,
DC1302Data_Achizitie, DC1302Cantitate_Achizitionata,
DC1302Id_Produs, DC1302Denumire_Produs, DC1302UM,
DC1302Pret, DC1302Numar_Vanzare, DC1302Data_Vanzarii,
DC1302Cantitate_Vanduta, DC1302Id_Client, DC1302Denumire_Client,
DC1302Localitate, DC1302Telefon, DC1302Cod_Fiscal.



IV.Stabilirea cheilor primare:
DC1302Id_Furnizor
DC1302Numar_Achizitie
DC1302Id_Produs
DC1302Numar_Vanzare
DC1302Id_Client.


V.Stabilirea dependentelor functionale:

a.Graful dependentelor functionale simple:
1. DC1302Id_Furnizor: - DC1302Denumire_Furnizor
- DC1302Adresa
- DC1302Localitate
- DC1302Cod_Fiscal

2. DC1302Numar_Achizitie: - DC1302Data_Achizitie
- DC1302Cantitate_Achizitionata

3. DC1302Id_Produs: - DC1302Denumire_Produs
- DC1302UM
- DC1302Pret

4. DC1302Numar_Vanzare: - DC1302Data_Vanzarii
- DC1302Cantitate_Vanduta

5. DC1302Id_Client: - DC1302Denumire_Client
- DC1302Localitate
- DC1302Cod_Fiscal
- DC1302Telefon


b.Graful dependentelor functionale multiple:
- DC1302Numar_Achizitie DC1302Id_Furnizor
- DC1302Numar_Achizitie DC1302Id_Produs
- DC1302Numar_Vanzare DC1302Id_Produs
- DC1302Numar_Vanzare DC1302Id_Client









VI.Definirea modelului relational:
Furnizori (DC1302Id_Furnizor, DC1302Denumire_Furnizor,
DC1302Adresa, DC1302Localitate, DC1302Cod_Fiscal)
Achizitii(DC1302Numar_Achizitie, DC1302Data_Achizitie,
DC1302Cantitate_Achizitionata, DC1302Id_Furnizor,
DC1302Id_Produs)
Produse(DC1302Id_Produs, DC1302Denumire_Produs, DC1302UM,
DC1302Pret)
Vanzari(DC1302Numar_Vanzare, DC1302Data_Vanzarii,
DC1302Cantitate_Vanduta, DC1302Id_Produs , DC1302Id_Client)
Clienti(DC1302Id_Client, DC1302Denumire_Client, DC1302Localitate,
DC1302Telefon, DC1302Cod_Fiscal)

Interogari
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
1.DC1302Id_Furnizor # 1 1 1 1
2.DC1302Denumire_Furnizor
3.DC1302Adresa
4.DC1302Localitate
5.DC1302Cod_Fiscal
6.DC1302Numar_Achizitie #

1 1
7.DC1302Data_Achizitie
8.DC1302Cantitate_Achizitionata
9.DC1302Id_Produs # 1 1 1
10.DC1302Denumire_Produs
11.DC1302UM
12.DC1302Pret
13.DC1302Numar_Vanzare #

1 1

14.DC1302Data_Vanzarii
15.DC1302Cantitatea_Vanduta
16.DC1302Id_Client # 1 1 1 1
17.DC1302Denumire_Client
18.DC1302Localitate
19.DC1302Telefon
20.DC1302Cod_Fiscal
I. Interogari de selectie:
a. Sa se calculeze valoarea totala a produselor achizitionate de la furnizori
din Bucuresti.
SELECT DC1302Produse.DC1302Denumire_Produs,
DC1302Furnizori.DC1302Localitate,
Sum([DC1302Cantitate_Achizitionata]*[DC1302Pret]) AS ValoareTotala
FROM DC1302Produse INNER JOIN (DC1302Furnizori INNER JOIN DC1302Achizitii
ON DC1302Furnizori.DC1302Id_Furnizor = DC1302Achizitii.DC1302Id_Furnizor)
ON DC1302Produse.DC1302Id_Produs = DC1302Achizitii.DC1302Id_Produs
GROUP BY DC1302Produse.DC1302Denumire_Produs,
DC1302Furnizori.DC1302Localitate
HAVING (((DC1302Furnizori.DC1302Localitate)="Bucuresti"));

b. Sa se afiseze in ordine alfabetica furnizorii care au livrat produse in
valoare de peste 15.000.000.
SELECT DC1302Furnizori.DC1302Id_Furnizor,
DC1302Furnizori.DC1302Denumire_Furnizor,
Sum([DC1302Cantitate_Achizitionata]*[DC1302Pret]) AS ValoareTotala
FROM DC1302Produse INNER JOIN (DC1302Furnizori INNER JOIN DC1302Achizitii
ON DC1302Furnizori.DC1302Id_Furnizor = DC1302Achizitii.DC1302Id_Furnizor)
ON DC1302Produse.DC1302Id_Produs = DC1302Achizitii.DC1302Id_Produs
GROUP BY DC1302Furnizori.DC1302Id_Furnizor,
DC1302Furnizori.DC1302Denumire_Furnizor
HAVING (((Sum([DC1302Cantitate_Achizitionata]*[DC1302Pret]))>=15000000))
ORDER BY DC1302Furnizori.DC1302Denumire_Furnizor;

c. Sa se afiseze lista furnizorilor dintr-o anumita localitate in ordine
alfabetica.
SELECT DC1302Furnizori.DC1302Id_Furnizor,
DC1302Furnizori.DC1302Denumire_Furnizor, DC1302Furnizori.DC1302Adresa,
DC1302Furnizori.DC1302Localitate, DC1302Furnizori.DC1302Cod_Fiscal
FROM DC1302Furnizori
WHERE (((DC1302Furnizori.DC1302Localitate)=[Dati numele localitatii:]))
ORDER BY DC1302Furnizori.DC1302Denumire_Furnizor;

d. Sa se calculeze valoarea totala a produselor cumparate de un anumit
client.
SELECT DC1302Clienti.DC1302Denumire_Client,
Sum([DC1302Cantitate_Vanduta]*[DC1302Pret]) AS ValoareTotala
FROM DC1302Produse INNER JOIN (DC1302Clienti INNER JOIN DC1302Vanzari ON
DC1302Clienti.DC1302Id_Client = DC1302Vanzari.DC1302Id_Client) ON
DC1302Produse.DC1302Id_Produs = DC1302Vanzari.DC1302Id_Produs
GROUP BY DC1302Clienti.DC1302Denumire_Client
HAVING (((DC1302Clienti.DC1302Denumire_Client)=[Dati numele clientului:]));

e. Sa se afiseze lista furnizorilor care au furnizat produse al caror nume se
termina cu a din localitatile Bucuresti si Brasov, in ordine invers
alfabetica.
SELECT DC1302Furnizori.DC1302Id_Furnizor,
DC1302Furnizori.DC1302Denumire_Furnizor, DC1302Furnizori.DC1302Localitate
FROM DC1302Produse INNER JOIN (DC1302Furnizori INNER JOIN DC1302Achizitii
ON DC1302Furnizori.DC1302Id_Furnizor = DC1302Achizitii.DC1302Id_Furnizor)
ON DC1302Produse.DC1302Id_Produs = DC1302Achizitii.DC1302Id_Produs
WHERE (((DC1302Furnizori.DC1302Localitate)="Bucuresti") AND
((DC1302Produse.DC1302Denumire_Produs) Like "*a")) OR
(((DC1302Furnizori.DC1302Localitate)="Brasov"))
ORDER BY DC1302Furnizori.DC1302Denumire_Furnizor DESC;

f. Sa se afiseze lista produselor vandute de la inceputul anului pana in
present.
SELECT DC1302Produse.DC1302Id_Produs,
DC1302Produse.DC1302Denumire_Produs, DC1302Produse.DC1302UM,
DC1302Produse.DC1302Pret
FROM DC1302Produse INNER JOIN DC1302Vanzari ON
DC1302Produse.DC1302Id_Produs = DC1302Vanzari.DC1302Id_Produs
WHERE (((Year([DC1302Data_Vanzarii]))=2010));

g. Sa se calculeze numarul de produse vandute in luna decembrie 2009.
SELECT Count(DC1302Produse.DC1302Denumire_Produs) AS NrProduse,
Month([DC1302Data_Vanzarii]) AS Luna, Year([DC1302Data_Vanzarii]) AS An
FROM DC1302Produse INNER JOIN DC1302Vanzari ON
DC1302Produse.DC1302Id_Produs = DC1302Vanzari.DC1302Id_Produs
GROUP BY Month([DC1302Data_Vanzarii]), Year([DC1302Data_Vanzarii])
HAVING (((Month([DC1302Data_Vanzarii]))=12) AND
((Year([DC1302Data_Vanzarii]))=2009));

II. Interogari de actiune:
1. Interogari make table:
a.Sa se creeze un nou tabel DC1302Furnizori_Bucuresti ca va contine
furnizorii din Bucuresti.
SELECT DC1302Furnizori.DC1302Id_Furnizor,
DC1302Furnizori.DC1302Denumire_Furnizor, DC1302Furnizori.DC1302Adresa,
DC1302Furnizori.DC1302Localitate, DC1302Furnizori.DC1302Cod_Fiscal
INTO DC1302Furnizori_Bucuresti
FROM DC1302Furnizori
WHERE (((DC1302Furnizori.DC1302Localitate)="Bucuresti"));

b.Sa se creeze un nou tabel DC1302Clienti_Provincie care va contine
clientii din provincie.
SELECT DC1302Clienti.DC1302Id_Client, DC1302Clienti.DC1302Denumire_Client,
DC1302Clienti.DC1302Localitate, DC1302Clienti.DC1302Telefon,
DC1302Clienti.DC1302Cod_Fiscal
INTO DC1302Clienti_Provincie
FROM DC1302Clienti
WHERE (((DC1302Clienti.DC1302Localitate)<>"Bucuresti"));


2. Interogari Update:
a.Sa se micsoreze cu 10% pretul produselor furnizate de furnizorii din
Ploiesti si Brasov.
UPDATE DC1302Produse INNER JOIN (DC1302Furnizori INNER JOIN
DC1302Achizitii ON DC1302Furnizori.DC1302Id_Furnizor =
DC1302Achizitii.DC1302Id_Furnizor) ON DC1302Produse.DC1302Id_Produs =
DC1302Achizitii.DC1302Id_Produs
SET DC1302Produse.DC1302Pret = [DC1302Pret]*90/100
WHERE (((DC1302Furnizori.DC1302Denumire_Furnizor)="Brasov" Or
(DC1302Furnizori.DC1302Denumire_Furnizor)="Ploiesti"));

b.Sa se mareasca, cu 50 de unitati cantitatea de bunuri achizitionata de la
furnizorii din Bucuresti.
UPDATE DC1302Produse INNER JOIN (DC1302Furnizori INNER JOIN
DC1302Achizitii ON DC1302Furnizori.DC1302Id_Furnizor =
DC1302Achizitii.DC1302Id_Furnizor) ON DC1302Produse.DC1302Id_Produs =
DC1302Achizitii.DC1302Id_Produs
SET DC1302Achizitii.DC1302Cantitate_Achizitionata =
[DC1302Cantitate_Achizitionata]+"50"
WHERE (((DC1302Furnizori.DC1302Localitate)="Bucuresti"));

3. Interogari Append:
a.Sa se adauge in tabelul DC1302Furnizori_Bucuresti furnizorii din
Ploiesti.
INSERT INTO DC1302Furnizori_Bucuresti ( DC1302Id_Furnizor,
DC1302Denumire_Furnizor, DC1302Adresa, DC1302Localitate, DC1302Cod_Fiscal
)
SELECT DC1302Furnizori.DC1302Id_Furnizor,
DC1302Furnizori.DC1302Denumire_Furnizor, DC1302Furnizori.DC1302Adresa,
DC1302Furnizori.DC1302Localitate, DC1302Furnizori.DC1302Cod_Fiscal
FROM DC1302Furnizori
WHERE (((DC1302Furnizori.DC1302Localitate)="Ploiesti"));

b.Sa se adauge in tabela DC1302Clienti_Provincie clientii din Bucuresti al
caror nume se termina cu a.
INSERT INTO DC1302Clienti_Provincie ( DC1302Id_Client, DC1302Denumire_Client,
DC1302Localitate, DC1302Telefon, DC1302Cod_Fiscal )
SELECT DC1302Clienti.DC1302Id_Client, DC1302Clienti.DC1302Denumire_Client,
DC1302Clienti.DC1302Localitate, DC1302Clienti.DC1302Telefon,
DC1302Clienti.DC1302Cod_Fiscal
FROM DC1302Clienti
WHERE (((DC1302Clienti.DC1302Denumire_Client) Like "*a") AND
((DC1302Clienti.DC1302Localitate)="Bucuresti"));

4. Interogari Delete:
a.Sa se stearga din tabela DC1302Furnizori toti furnizorii din Dolj.
DELETE DC1302Furnizori.DC1302Localitate
FROM DC1302Furnizori
WHERE (((DC1302Furnizori.DC1302Localitate)="Dolj"));

b.Sa se stearga din tabela DC1302Clienti toti clientii din Galati.
DELETE DC1302Clienti.DC1302Localitate
FROM DC1302Clienti
WHERE (((DC1302Clienti.DC1302Localitate)="Galati"));

III. Interogari de tip crosstab:
a.Sa se afiseze valoarea vanzarilor catre fiecare client, in anul 2009, din
fiecare produs.
TRANSFORM Sum([DC1302Cantitate_Vanduta]*[DC1302Pret]) AS Valoare
SELECT DC1302Produse.DC1302Denumire_Produs
FROM DC1302Produse INNER JOIN (DC1302Clienti INNER JOIN DC1302Vanzari ON
DC1302Clienti.DC1302Id_Client = DC1302Vanzari.DC1302Id_Client) ON
DC1302Produse.DC1302Id_Produs = DC1302Vanzari.DC1302Id_Produs
GROUP BY DC1302Produse.DC1302Denumire_Produs
PIVOT DC1302Clienti.DC1302Denumire_Client;

b.Sa se afiseze achizitiile realizate de la inceputul lunii mai 2009, pentru
fiecare furnizor, din fiecare localitate.
TRANSFORM Sum([DC1302Cantitate_Achizitionata]*[DC1302Pret]) AS Valoare
SELECT DC1302Furnizori.DC1302Denumire_Furnizor
FROM DC1302Produse INNER JOIN (DC1302Furnizori INNER JOIN DC1302Achizitii
ON DC1302Furnizori.DC1302Id_Furnizor = DC1302Achizitii.DC1302Id_Furnizor)
ON DC1302Produse.DC1302Id_Produs = DC1302Achizitii.DC1302Id_Produs
WHERE (((DC1302Achizitii.DC1302Data_Achizitie)>#10/1/2008#))
GROUP BY DC1302Furnizori.DC1302Denumire_Furnizor
PIVOT DC1302Furnizori.DC1302Localitate;

c.Sa se afiseze numarul de produse cumparat de fiecare client din
Bucuresti pe anul 2010.
TRANSFORM Count(DC1302Vanzari.DC1302Numar_Vanzare) AS NrProduse
SELECT DC1302Produse.DC1302Denumire_Produs
FROM DC1302Produse INNER JOIN (DC1302Clienti INNER JOIN DC1302Vanzari ON
DC1302Clienti.DC1302Id_Client = DC1302Vanzari.DC1302Id_Client) ON
DC1302Produse.DC1302Id_Produs = DC1302Vanzari.DC1302Id_Produs
WHERE (((DC1302Clienti.DC1302Localitate)="Bucuresti"))
GROUP BY DC1302Produse.DC1302Denumire_Produs
PIVOT DC1302Clienti.DC1302Denumire_Client;

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