Dosar Proiect Baze de date

18
ACADEMIA DE STUDII ECONOMICE Facultatea Economie Agroalimentara si a Mediului Proiect Microsoft Office Access 2007 Bunea Tiberiu Bogdan

Transcript of Dosar Proiect Baze de date

Page 1: Dosar Proiect Baze de date

ACADEMIA DE STUDII ECONOMICEFacultatea Economie Agroalimentara si a Mediului

Proiect Microsoft Office Access 2007

Bunea Tiberiu Bogdan

Grupa 1301

-Bucuresti 2010-

Page 2: Dosar Proiect Baze de date

Pentru o mai buna gestionare a produselor, un magazin de calculatoare intentioneaza proiectarea unei baze de date, considerandu-se urmatorul dictionar al datelor:

BB1301CodFurnizor BB1301DenumireFurnizor BB1301Adresa BB1301Localitate BB1301Telefon BB1301NumarFactura BB1301DataFactura BB1301Cantitate BB1301ICodProdus BB1301DenumireProdus BB1301UM BB1301CategorieCalitate BB1301PretUnitar BB1301NumarComanda BB1301DataComanda BB1301Cantitate BB1301DataLivrare BB1301CodClient BB1301NumeClient BB1301Localitate BB1301Adresa BB1301Telefon BB1301CodPostal

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

Page 3: Dosar Proiect Baze de date

Nr. Crt.

Atribut Semnificatie

1 BB1301CodFurnizor Cod Furnizor

2 BB1301DenumireFurnizor Denumire Furnizor

3 BB1301Adresa Adresa Furnizor

4 BB1301Localitate Localitate Furnizor

5 BB1301Telefon Telefon Furnizor

6 BB1301NumarFactura Numarul Factura

7 BB1301DataFactura Data Factura

8 BB1301Cantitate Cantitatea Facturata

9 BB1301CodProdus Cod Produs

10 BB1301DenumireProdus Denumire Produs

11 BB1301UM Unitate de Masura

12 BB1301CategorieCalitate Categoria de Calitate

13 BB1301PretUnitar Pretul Produsului

14 BB1301NumarComanda Numarul Comenzii

15 BB1301DataComanda Data Comenzii

16 BB1301Cantitate Cantitatea Comandata

17 BB1301DataLivrare Data Livrarii

18 BB1301CodClient Cod Client

19 BB1301NumeClient Nume Client

20 BB1301Localitate Localitate Client

21 BB1301Adresa Adresa Cleint

22 BB1301Telefon Telefon Client

23 BB1301CodPostal Cod Postal Client

Page 4: Dosar Proiect Baze de date

Specificarea regulilor de gestiune:

Unitatea de masura va fi aleasa din lista derulanta. Pretul unitar sa fie cuprins intre 50 si 1.000.000. Data facturii nu poate fi mai mare de data curenta(nici data comenzii nici data livrarii). Cantitatea maxima pe o comanda va fi de 5000. Fiecare furnizor poate livra mai multe produse. Un produs poate fi achizitionat de mai multi clienti.

Intocmirea dictionarului de date: BB1301CodFurnizor, BB1301DenumireFurnizor, BB1301Adresa, BB1301Localitate, BB1301Telefon, BB1301NumarFactura, BB1301DataFactura, BB1301Cantitate, BB1301CodProdus, BB1301DenumireProdus, BB1301UM, BB1301CategorieCalitate, BB1301PretUnitar, BB1301NumarComanda, BB1301DataComanda, BB1301Cantitate, BB1301DataLivrare, BB1301CodClient, BB1301NumeClient, BB1301Localitate, BB1301Adresa, BB1301Telefon, BB1301CodPostal.

Stabilirea cheilor primare: BB1301CodFurnizor BB1301NumarFactura BB1301CodProdus BB1301NumarComanda BB1301CodClient.

Stabilirea dependentelor functionale:

Page 5: Dosar Proiect Baze de date

a.Graful dependentelor functionale simple:1. BB1301CodFurnizor: BB1301DenumireFurnizor

BB1301Adresa BB1301Localitate BB1301Telefon

2. BB1301NumarFactura: BB1301DataFactura BB1301Cantitate

3. BB1301CodProdus: BB1301DenumireProdus BB1301UM BB1301CategorieCalitate BB1301PretUnitar

4. BB1301NumarComanda: BB1301DataComanda BB1301Cantitate BB1301DataLivrare

5. BB1301CodClient: BB1301NumeClient BB1301Localitate BB1301Adresa BB1301Telefon BB1301CodPostal

b.Graful dependentelor functionale multiple:- BB1301NumarFactura → BB1301CodFurnizor- BB1301NumarFactura → BB1301CodProdus- BB1301NumarComanda→ BB1301CodProdus- BB1301NumarComanda→ BB1301CodClient

1 2 3 4 5 6 7 8 9 10

11

12

13

14

15

16

17

18

19

20

21

22

23

Page 6: Dosar Proiect Baze de date

1.BB1301 CodFurnizor #

1 1 1 1

2.BB1301 DenumireFurnizor3. BB1301 Adresa4.BB1301 Localitate5.BB1301 Telefon6.BB1301 NumarFactura #

1 1

7.BB1301 DataFactura8.BB1301 Cantitate9.BB1301 CodProdus #

1 1 1 1

10.BB1301 DenumireProdus11.BB1301 UM12.BB1301 CategorieCalitate13.BB1301 PretUnitar14.BB1301 NumarComanda #

1 1 1

15.BB1301 DataComanda16.BB1301 Cantitate 17.BB1301 DataLivrare18.BB1301 CodClient #

1 1 1 1 1

19.BB1301 NumeClient20.BB1301 Localitate21.BB1301 Adresa22.BB1301 Telefon23.BB1301 CodPostal

Page 7: Dosar Proiect Baze de date

Definirea modelului relational:Furnizori (BB1301CodFurnizor, BB1301DenumireFurnizor,

BB1301Adresa, BB1301Localitate, BB1301Telefon)Factura(BB1301NumarFactura, BB1301DataFactura,

BB1301Cantitate, BB1301CodFurnizor, BB1301CodProdus)Produse(BB1301CodProdus, BB1301DenumireProdus,

BB1301UM, BB1301CategorieCalitate, BB1301PretUnitar)Comanda(BB1301NumarComanda, BB1301DataComanda,

BB1301Cantitate, BB1301DataLivrare, BB1301CodProdus, BB1301CodClient)

Clienti(BB1301CodClient, BB1301NumeClient, BB1301Localitate, BB1301Adresa, BB1301Telefon, BB1301CodPostal)

InterogariI. Interogari de selectie: a. Interogari cu functii agregate:

1.Sa se calculeze valoarea totala a produselor achizitionate de la furnizori in anul curent.SELECT Sum([BB1301Cantitate]*[BB1301PretUnitar]) AS

ValoareTotala, Year([BB1301DataFactura]) AS An, BB1301Produse.BB1301DenumireProdus

FROM BB1301Produse INNER JOIN BB1301Factura ON BB1301Produse.BB1301CodProdus = BB1301Factura.BB1301CodProdus

GROUP BY Year([BB1301DataFactura]), BB1301Produse.BB1301DenumireProdus

HAVING (((Year([BB1301DataFactura]))=2010));

2.Sa se afiseze numarul produselor achizitionate de la furnizori in anul 2009.SELECT Count(BB1301Produse.BB1301CodProdus) AS

CountOfBB1301CodProdus, Year([BB1301DataFactura]) AS AnFROM BB1301Produse INNER JOIN BB1301Factura ON

BB1301Produse.BB1301CodProdus = BB1301Factura.BB1301CodProdus

Page 8: Dosar Proiect Baze de date

GROUP BY Year([BB1301DataFactura])HAVING (((Year([BB1301DataFactura]))=2009));

3.Sa se afiseze numarul de produse comandate de clientii al caror nume incep cu “b”.SELECT Count(BB1301Produse.BB1301CodProdus) AS

CountOfBB1301CodProdus, BB1301Clienti.BB1301NumeClientFROM BB1301Produse INNER JOIN (BB1301Clienti INNER JOIN

BB1301Comanda ON BB1301Clienti.BB1301CodClient = BB1301Comanda.BB1301CodClient) ON BB1301Produse.BB1301CodProdus = BB1301Comanda.BB1301CodProdus

GROUP BY BB1301Clienti.BB1301NumeClientHAVING (((BB1301Clienti.BB1301NumeClient) Like "B*"));

4.Sa se afiseze valoarea totala a produselor comandate de clientii din Bucuresti in luna februarie 2010.SELECT [BB1301Cantitate]*[BB1301PretUnitar] AS ValoareTotala,

BB1301Clienti.BB1301Localitate, Month([BB1301DataComanda]) AS Luna, Year([BB1301DataComanda]) AS An

FROM BB1301Produse INNER JOIN (BB1301Clienti INNER JOIN BB1301Comanda ON BB1301Clienti.BB1301CodClient = BB1301Comanda.BB1301CodClient) ON BB1301Produse.BB1301CodProdus = BB1301Comanda.BB1301CodProdus

WHERE (((BB1301Clienti.BB1301Localitate)="Bucuresti") AND ((Month([BB1301DataComanda]))=2) AND ((Year([BB1301DataComanda]))=2010));

b. Interogari parametrizate:1.Sa se afiseze lista furnizorilor dintr-o anumita localitate in ordine invers alfabetica.SELECT BB1301Furnizori.BB1301CodFurnizor,

BB1301Furnizori.BB1301DenumireFurnizor, BB1301Furnizori.BB1301Adresa, BB1301Furnizori.BB1301Localitate, BB1301Furnizori.BB1301Telefon

FROM BB1301FurnizoriWHERE (((BB1301Furnizori.BB1301Localitate)=[Dati nume Localitate:]))

Page 9: Dosar Proiect Baze de date

ORDER BY BB1301Furnizori.BB1301DenumireFurnizor DESC;

2.Sa se afiseze lista clientilor care au comandat un anumit produs in ordine inversa a localitatii.SELECT BB1301Clienti.BB1301CodClient,

BB1301Clienti.BB1301NumeClient, BB1301Clienti.BB1301Localitate, BB1301Clienti.BB1301Telefon, BB1301Clienti.BB1301CodPostal

FROM BB1301Produse INNER JOIN (BB1301Clienti INNER JOIN BB1301Comanda ON BB1301Clienti.BB1301CodClient = BB1301Comanda.BB1301CodClient) ON BB1301Produse.BB1301CodProdus = BB1301Comanda.BB1301CodProdus

WHERE (((BB1301Produse.BB1301DenumireProdus)=[Dati nume Produs:]))

ORDER BY BB1301Clienti.BB1301Localitate DESC;

3.Sa se afiseze lista produselor care incep cu “m” achizitionate de la un anumit furnizor.SELECT BB1301Produse.BB1301CodProdus,

BB1301Produse.BB1301DenumireProdus, BB1301Produse.BB1301UM, BB1301Produse.BB1301CategorieCalitate, BB1301Produse.BB1301PretUnitar

FROM BB1301Produse INNER JOIN (BB1301Furnizori INNER JOIN BB1301Factura ON BB1301Furnizori.BB1301CodFurnizor = BB1301Factura.BB1301CodFurnizor) ON BB1301Produse.BB1301CodProdus = BB1301Factura.BB1301CodProdus

WHERE (((BB1301Produse.BB1301DenumireProdus) Like "M*") AND ((BB1301Furnizori.BB1301DenumireFurnizor)=[Dati nume Furnizor:]));

4.Sa se afiseze lista produselor comandate de un client dintr-o anumita localitate.SELECT BB1301Produse.BB1301CodProdus,

BB1301Produse.BB1301DenumireProdus, BB1301Produse.BB1301UM, BB1301Produse.BB1301CategorieCalitate, BB1301Produse.BB1301PretUnitar

Page 10: Dosar Proiect Baze de date

FROM BB1301Produse INNER JOIN (BB1301Clienti INNER JOIN BB1301Comanda ON BB1301Clienti.BB1301CodClient = BB1301Comanda.BB1301CodClient) ON BB1301Produse.BB1301CodProdus = BB1301Comanda.BB1301CodProdus

WHERE (((BB1301Clienti.BB1301Localitate)=[Dati nume Localitate:]));

II.Interogari de actiune: A .Interogari “make table”:

a.Sa se creeze un nou tabel “BB1301ProduseBucati” care va contine toate produsele masurate in bucati.SELECT BB1301Produse.BB1301CodProdus,

BB1301Produse.BB1301DenumireProdus, BB1301Produse.BB1301UM, BB1301Produse.BB1301CategorieCalitate, BB1301Produse.BB1301PretUnitar

INTO BB1301ProduseBucatiFROM BB1301ProduseWHERE (((BB1301Produse.BB1301UM)="Bucati"));

b.Sa se creeze un nou tabel “BB1301FurnizoriProvincie” care va contine furnizorii din provincie care au livrat produse in cantitate mai mare de 100.SELECT BB1301Furnizori.BB1301CodFurnizor,

BB1301Furnizori.BB1301DenumireFurnizor, BB1301Furnizori.BB1301Adresa, BB1301Furnizori.BB1301Localitate, BB1301Furnizori.BB1301Telefon

INTO BB1301FurnizoriProvincieFROM BB1301Furnizori INNER JOIN BB1301Factura ON

BB1301Furnizori.BB1301CodFurnizor = BB1301Factura.BB1301CodFurnizor

WHERE (((BB1301Furnizori.BB1301Localitate)<>"Bucuresti") AND ((BB1301Factura.BB1301Cantitate)>100));

c.Sa se creeze un nou tabel “BB1301ClientiBucuresti” care va contine clientii din Bucuresti care au comandat produse in luna decembrie2009.

Page 11: Dosar Proiect Baze de date

SELECT BB1301Clienti.BB1301CodClient, BB1301Clienti.BB1301NumeClient, BB1301Clienti.BB1301Localitate, BB1301Clienti.BB1301Adresa, BB1301Clienti.BB1301Telefon, BB1301Clienti.BB1301CodPostal

INTO BB1301ClientiBucurestiFROM BB1301Clienti INNER JOIN BB1301Comanda ON

BB1301Clienti.BB1301CodClient = BB1301Comanda.BB1301CodClient

WHERE (((BB1301Clienti.BB1301Localitate)="Bucuresti") AND ((Month([BB1301DataComanda]))=12) AND ((Year([BB1301DataComanda]))=2009));

B .Interogari “Update”: a.Sa se mareasca cu 10% pretul produselor comandate in anul 2010.

UPDATE BB1301Produse INNER JOIN BB1301Comanda ON BB1301Produse.BB1301CodProdus = BB1301Comanda.BB1301CodProdus

SET BB1301Produse.BB1301PretUnitar = [BB1301PretUnitar]*110/100WHERE (((Year([BB1301DataComanda]))=2010));

b.Sa se micsoreze cu 20% pretul produselor comandate de clientii din Ploiesti.UPDATE BB1301Produse INNER JOIN (BB1301Clienti INNER JOIN

BB1301Comanda ON BB1301Clienti.BB1301CodClient = BB1301Comanda.BB1301CodClient) ON BB1301Produse.BB1301CodProdus = BB1301Comanda.BB1301CodProdus

SET BB1301Produse.BB1301PretUnitar = [BB1301PretUnitar]*80/100WHERE (((BB1301Clienti.BB1301Localitate)="Ploiesti"));

C. Interogari “Append”: a.Sa se adauge in tabelul “BB1301ProduseBucati” si produsele

masurate in metri.INSERT INTO BB1301ProduseBucati ( BB1301DenumireProdus,

BB1301CodProdus, BB1301UM, BB1301CategorieCalitate, BB1301PretUnitar )

SELECT BB1301Produse.BB1301DenumireProdus, BB1301Produse.BB1301CodProdus, BB1301Produse.BB1301UM,

Page 12: Dosar Proiect Baze de date

BB1301Produse.BB1301CategorieCalitate, BB1301Produse.BB1301PretUnitar

FROM BB1301ProduseWHERE (((BB1301Produse.BB1301UM)="Metri"));

b.Sa se adauge in tabela “BB1301FurnizoriProvincie” furnizorii care au livrat produse in cantitate mai mare de 100.INSERT INTO BB1301FurnizoriProvincie ( BB1301CodFurnizor,

BB1301DenumireFurnizor, BB1301Adresa, BB1301Localitate, BB1301Telefon )

SELECT BB1301Furnizori.BB1301CodFurnizor, BB1301Furnizori.BB1301DenumireFurnizor, BB1301Furnizori.BB1301Adresa, BB1301Furnizori.BB1301Localitate, BB1301Furnizori.BB1301Telefon

FROM BB1301Furnizori INNER JOIN BB1301Factura ON BB1301Furnizori.BB1301CodFurnizor = BB1301Factura.BB1301CodFurnizor

WHERE (((BB1301Factura.BB1301Cantitate)>100));

c.Sa se adauge in tabela “BB1301ClientiBucuresti” clientii care au comandat in anul in curs.INSERT INTO BB1301ClientiBucuresti ( BB1301CodClient,

BB1301NumeClient, BB1301Localitate, BB1301Adresa, BB1301Telefon, BB1301CodPostal )

SELECT BB1301Clienti.BB1301CodClient, BB1301Clienti.BB1301NumeClient, BB1301Clienti.BB1301Localitate, BB1301Clienti.BB1301Adresa, BB1301Clienti.BB1301Telefon, BB1301Clienti.BB1301CodPostal

FROM BB1301Clienti INNER JOIN BB1301Comanda ON BB1301Clienti.BB1301CodClient = BB1301Comanda.BB1301CodClient

WHERE (((BB1301Clienti.BB1301Localitate)="Bucuresti") AND ((Year([BB1301DataComanda]))=2010));

D . Interogari “Delete”: a.Sa se stearga din tabela “BB1301Furnizori” toti furnizorii din Cluj.

DELETE BB1301Furnizori.BB1301LocalitateFROM BB1301Furnizori

Page 13: Dosar Proiect Baze de date

WHERE (((BB1301Furnizori.BB1301Localitate)="Cluj"));

b.Sa se stearga din tabela “BB1301Clienti” toti clientii din Buzau.DELETE BB1301Clienti.BB1301LocalitateFROM BB1301ClientiWHERE (((BB1301Clienti.BB1301Localitate)="Buzau"));

III. Interogari de tip crosstab:a.Sa se afiseze valoarea vanzarilor realizate catre fiecare client in anul

2009 din fiecare produs.TRANSFORM Sum([BB1301Cantitate]*[BB1301PretUnitar]) AS

ValoareTotalaSELECT BB1301Clienti.BB1301NumeClientFROM BB1301Produse INNER JOIN (BB1301Clienti INNER JOIN

BB1301Comanda ON BB1301Clienti.BB1301CodClient = BB1301Comanda.BB1301CodClient) ON BB1301Produse.BB1301CodProdus = BB1301Comanda.BB1301CodProdus

WHERE (((Year([BB1301DataComanda]))=2009))GROUP BY BB1301Clienti.BB1301NumeClient,

Year([BB1301DataComanda])PIVOT BB1301Produse.BB1301DenumireProdus;

b.Sa se afiseze numarul de produse livrate catre fiecare client din Bucuresti pe anul 2009.

TRANSFORM Count(BB1301Produse.BB1301CodProdus) AS CountOfBB1301CodProdus

SELECT BB1301Clienti.BB1301NumeClientFROM BB1301Produse INNER JOIN (BB1301Clienti INNER JOIN

BB1301Comanda ON BB1301Clienti.BB1301CodClient = BB1301Comanda.BB1301CodClient) ON BB1301Produse.BB1301CodProdus = BB1301Comanda.BB1301CodProdus

WHERE (((BB1301Clienti.BB1301Localitate)="Bucuresti") AND ((Year([BB1301DataComanda]))=2009))

Page 14: Dosar Proiect Baze de date

GROUP BY BB1301Clienti.BB1301NumeClient, BB1301Clienti.BB1301Localitate, Year([BB1301DataComanda])

PIVOT BB1301Produse.BB1301DenumireProdus;

c.Sa se afiseze facturile realizate pentru fiecare furnizor, din fiecare localitate.

TRANSFORM Count(BB1301Factura.BB1301NumarFactura) AS CountOfBB1301NumarFactura

SELECT BB1301Furnizori.BB1301DenumireFurnizorFROM BB1301Furnizori INNER JOIN BB1301Factura ON

BB1301Furnizori.BB1301CodFurnizor = BB1301Factura.BB1301CodFurnizor

GROUP BY BB1301Furnizori.BB1301DenumireFurnizorPIVOT BB1301Furnizori.BB1301Localitate;