dosar proiect microsoft access 20007

15
ACADEMIA DE STUDII ECONOMICE Facultatea Economie Agroalimentara si a Mediului Proiect Microsoft Office Access 2007 Done S.ST. Cristina-Mirela

Upload: cristina-done

Post on 24-Nov-2015

16 views

Category:

Documents


6 download

DESCRIPTION

Pentru o mai buna gestionare a produselor si a datelor referitoare la acestea, un supermarket intentioneaza proiectarea unei baze de date.

TRANSCRIPT

ACADEMIA DE STUDII ECONOMICEFacultatea 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.AtributSemnificatie

1DC1302Id_FurnizorCod Furnizor

2DC1302Denumire_FurnizorDenumire Furnizor

3DC1302AdresaAdresa Furnizor

4DC1302LocalitateLocalitate Furnizor

5DC1302Cod_FiscalCod Fiscal Furnizor

6DC1302Numar_AchizitieNumarul Achizitiei

7DC1302Data_AchizitieData Achizitiei

8DC1302Cantitate_AchizitionataCantitatea Achizitionata

9DC1302Id_ProdusCod Produs

10DC1302Denumire_ProdusDenumire Produs

11DC1302UMUnitate de Masura

12DC1302PretPretul Produsului

13DC1302Numar_VanzareNumarul Vanzarii

14DC1302Data_VanzariiData Vanzarii

15DC1302Cantitate_VandutaCantitatea Vanduta

16DC1302Id_ClientCod Client

17DC1302Denumire_ClientDenumire Client

18DC1302LocalitateLocalitate Client

19DC1302TelefonTelefon Client

20DC1302Cod_FiscalCod 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

1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.

1.DC1302Id_Furnizor #1111

2.DC1302Denumire_Furnizor

3.DC1302Adresa

4.DC1302Localitate

5.DC1302Cod_Fiscal

6.DC1302Numar_Achizitie #11

7.DC1302Data_Achizitie

8.DC1302Cantitate_Achizitionata

9.DC1302Id_Produs #111

10.DC1302Denumire_Produs

11.DC1302UM

12.DC1302Pret

13.DC1302Numar_Vanzare #11

14.DC1302Data_Vanzarii

15.DC1302Cantitatea_Vanduta

16.DC1302Id_Client #1111

17.DC1302Denumire_Client

18.DC1302Localitate

19.DC1302Telefon

20.DC1302Cod_Fiscal

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)

InterogariI. 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 ValoareTotalaFROM DC1302Produse INNER JOIN (DC1302Furnizori INNER JOIN DC1302Achizitii ON DC1302Furnizori.DC1302Id_Furnizor = DC1302Achizitii.DC1302Id_Furnizor) ON DC1302Produse.DC1302Id_Produs = DC1302Achizitii.DC1302Id_ProdusGROUP BY DC1302Produse.DC1302Denumire_Produs, DC1302Furnizori.DC1302LocalitateHAVING (((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 ValoareTotalaFROM DC1302Produse INNER JOIN (DC1302Furnizori INNER JOIN DC1302Achizitii ON DC1302Furnizori.DC1302Id_Furnizor = DC1302Achizitii.DC1302Id_Furnizor) ON DC1302Produse.DC1302Id_Produs = DC1302Achizitii.DC1302Id_ProdusGROUP BY DC1302Furnizori.DC1302Id_Furnizor, DC1302Furnizori.DC1302Denumire_FurnizorHAVING (((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_FiscalFROM DC1302FurnizoriWHERE (((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 ValoareTotalaFROM DC1302Produse INNER JOIN (DC1302Clienti INNER JOIN DC1302Vanzari ON DC1302Clienti.DC1302Id_Client = DC1302Vanzari.DC1302Id_Client) ON DC1302Produse.DC1302Id_Produs = DC1302Vanzari.DC1302Id_ProdusGROUP BY DC1302Clienti.DC1302Denumire_ClientHAVING (((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.DC1302LocalitateFROM DC1302Produse INNER JOIN (DC1302Furnizori INNER JOIN DC1302Achizitii ON DC1302Furnizori.DC1302Id_Furnizor = DC1302Achizitii.DC1302Id_Furnizor) ON DC1302Produse.DC1302Id_Produs = DC1302Achizitii.DC1302Id_ProdusWHERE (((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.DC1302PretFROM DC1302Produse INNER JOIN DC1302Vanzari ON DC1302Produse.DC1302Id_Produs = DC1302Vanzari.DC1302Id_ProdusWHERE (((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 AnFROM DC1302Produse INNER JOIN DC1302Vanzari ON DC1302Produse.DC1302Id_Produs = DC1302Vanzari.DC1302Id_ProdusGROUP 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_BucurestiFROM DC1302FurnizoriWHERE (((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_ProvincieFROM DC1302ClientiWHERE (((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/100WHERE (((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_FiscalFROM DC1302FurnizoriWHERE (((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_FiscalFROM DC1302ClientiWHERE (((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.DC1302LocalitateFROM DC1302FurnizoriWHERE (((DC1302Furnizori.DC1302Localitate)="Dolj"));

b.Sa se stearga din tabela DC1302Clienti toti clientii din Galati.DELETE DC1302Clienti.DC1302LocalitateFROM DC1302ClientiWHERE (((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 ValoareSELECT DC1302Produse.DC1302Denumire_ProdusFROM DC1302Produse INNER JOIN (DC1302Clienti INNER JOIN DC1302Vanzari ON DC1302Clienti.DC1302Id_Client = DC1302Vanzari.DC1302Id_Client) ON DC1302Produse.DC1302Id_Produs = DC1302Vanzari.DC1302Id_ProdusGROUP BY DC1302Produse.DC1302Denumire_ProdusPIVOT 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 ValoareSELECT DC1302Furnizori.DC1302Denumire_FurnizorFROM DC1302Produse INNER JOIN (DC1302Furnizori INNER JOIN DC1302Achizitii ON DC1302Furnizori.DC1302Id_Furnizor = DC1302Achizitii.DC1302Id_Furnizor) ON DC1302Produse.DC1302Id_Produs = DC1302Achizitii.DC1302Id_ProdusWHERE (((DC1302Achizitii.DC1302Data_Achizitie)>#10/1/2008#))GROUP BY DC1302Furnizori.DC1302Denumire_FurnizorPIVOT DC1302Furnizori.DC1302Localitate;

c.Sa se afiseze numarul de produse cumparat de fiecare client din Bucuresti pe anul 2010.TRANSFORM Count(DC1302Vanzari.DC1302Numar_Vanzare) AS NrProduseSELECT DC1302Produse.DC1302Denumire_ProdusFROM DC1302Produse INNER JOIN (DC1302Clienti INNER JOIN DC1302Vanzari ON DC1302Clienti.DC1302Id_Client = DC1302Vanzari.DC1302Id_Client) ON DC1302Produse.DC1302Id_Produs = DC1302Vanzari.DC1302Id_ProdusWHERE (((DC1302Clienti.DC1302Localitate)="Bucuresti"))GROUP BY DC1302Produse.DC1302Denumire_ProdusPIVOT DC1302Clienti.DC1302Denumire_Client;