Sunteți pe pagina 1din 14

ACADEMIA DE STUDII ECONOMICE

Facultatea Economie Agroalimentara si a Mediului








Proiect Microsoft Office
Access 2007












Bunea Tiberiu Bogdan

Grupa 1301




-Bucuresti 2010-


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:

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

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:

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 1
0
1
1
1
2
1
3
1
4
1
5
1
6
1
7
1
8
1
9
2
0
2
1
2
2
2
3
1.BB1301
CodFurnizor #
1 1 1 1
2.BB1301
DenumireFurni
zor

3. BB1301
Adresa

4.BB1301
Localitate

5.BB1301
Telefon

6.BB1301
NumarFactura
#


1 1


7.BB1301
DataFactura

8.BB1301
Cantitate

9.BB1301
CodProdus #
1 1 1 1
10.BB1301
DenumireProd
us

11.BB1301
UM

12.BB1301
CategorieCalit
ate

13.BB1301
PretUnitar

14.BB1301
NumarComan
da #


1 1 1

15.BB1301
DataComanda

16.BB1301
Cantitate

17.BB1301
DataLivrare

18.BB1301
CodClient #
1 1 1 1 1
19.BB1301
NumeClient

20.BB1301
Localitate

21.BB1301
Adresa

22.BB1301
Telefon

23.BB1301
CodPostal





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)

Interogari
I. 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 An
FROM BB1301Produse INNER JOIN BB1301Factura ON
BB1301Produse.BB1301CodProdus =
BB1301Factura.BB1301CodProdus
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.BB1301NumeClient
FROM BB1301Produse INNER JOIN (BB1301Clienti INNER JOIN
BB1301Comanda ON BB1301Clienti.BB1301CodClient =
BB1301Comanda.BB1301CodClient) ON
BB1301Produse.BB1301CodProdus =
BB1301Comanda.BB1301CodProdus
GROUP BY BB1301Clienti.BB1301NumeClient
HAVING (((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 BB1301Furnizori
WHERE (((BB1301Furnizori.BB1301Localitate)=[Dati nume Localitate:]))
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
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 BB1301ProduseBucati
FROM BB1301Produse
WHERE (((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 BB1301FurnizoriProvincie
FROM 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.
SELECT BB1301Clienti.BB1301CodClient,
BB1301Clienti.BB1301NumeClient, BB1301Clienti.BB1301Localitate,
BB1301Clienti.BB1301Adresa, BB1301Clienti.BB1301Telefon,
BB1301Clienti.BB1301CodPostal
INTO BB1301ClientiBucuresti
FROM 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/100
WHERE (((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/100
WHERE (((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,
BB1301Produse.BB1301CategorieCalitate,
BB1301Produse.BB1301PretUnitar
FROM BB1301Produse
WHERE (((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.BB1301Localitate
FROM BB1301Furnizori
WHERE (((BB1301Furnizori.BB1301Localitate)="Cluj"));

b.Sa se stearga din tabela BB1301Clienti toti clientii din Buzau.
DELETE BB1301Clienti.BB1301Localitate
FROM BB1301Clienti
WHERE (((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
ValoareTotala
SELECT BB1301Clienti.BB1301NumeClient
FROM 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.BB1301NumeClient
FROM 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))
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.BB1301DenumireFurnizor
FROM BB1301Furnizori INNER JOIN BB1301Factura ON
BB1301Furnizori.BB1301CodFurnizor =
BB1301Factura.BB1301CodFurnizor
GROUP BY BB1301Furnizori.BB1301DenumireFurnizor
PIVOT BB1301Furnizori.BB1301Localitate;