Dosar Proiect Baze de date
-
Upload
cristina-vlad -
Category
Documents
-
view
214 -
download
0
Transcript of 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-
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 10
11
12
13
14
15
16
17
18
19
20
21
22
23
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
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
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:]))
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 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.
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,
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
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))
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;