BAZA DE DATE PENTRU GESTIUNEA APROVIZIONARII LA UN SUPERMARKET
Un supermarket urmeaza sa implementeze o baza de date pentru evidenta informatizata a aprovizionarii. Pentru fiecare produs ce poate constitui obiectul aprovizionarii, alaturi de nume (denumire produs) sunt inregistrate urmatoarele informatii: unitatea de masura (UM), stoc initial si prêt catalog; fiecarui produs I se atribuie un cod unic (cod produs). Supermarket-ul se aprovizioneaza cu produse de la mai multi furnizori, identificati prin: cod furnizor, nume frunizor, adresa furnizor, numar telefon, iar in momentul aprovizionarii de la un furnizor se intocmeste o factura pe care sunt consemnate: numar factura, data factura si cod furnizor. Aceste facturi sunt achitate prin documente de plata pentru care se completeaza numar document plata, tip document plata si data document plata. Aprovizionarea supermarket-ului se face pe baza unei comenzi prin care se pot solicita mai multe produse. In comanda sunt specificate: numar comanda, data comanda, data livrare, ora livrare si cod curier. Produsele sunt aduse la supermarket de catre curieri identificate prin: cod curier, nume curier, adresa curier; o comanda fiind livrata de un singur curier. Consideram urmartorul dictionar de atribute: CodProdus, DenumireProdus, UM, StocInitial, PretCatalog, CodFurnizor, NumeFurnizor, AdresaFurnizor, NumarTelefon, NumarFactura, DataFactura, IDFactura, NumarComanda, DataComanda, DataLivrarii, OraLivrarii, CantitateaComandata, CodCurier, NumeCurier, AdresaCurier, NumarDocumentPlata, DataDocumentPlata, SumaPlata, NumarTotalProduseComandate. Reguli de gestiune: (1) Preturile din catalog sunt fixe. (2) O livrare este realizata de un singur curier.
(3) Un curier poate realize mai multe livrari. (4) Se poate solicita pe aceeasi comanda mai multe produse. (5) Cu un document de plata se pot achita mai multe facturi. (6) Un furnizor poate da un singur fel de produs. (7) O factura corespunde unui singur furnizor. (8) Pot exista documente de plata cu acelasi numar, dar de tipuri diferite.
Intocmirea Dictionarului de Date: Pentru intocmirea dictionarului de date inlaturam din dictionarului de attribute elementele sinonime (IDFactura) si atributele calculate (NumarTotalProduseComandate) rezultand urmatorul dictionar de date:
C o Pd or d ,uDs e n u Pm or i dr e,uUs M, S t o c I ln, Pi ter i taC al ot agC , o d F ur,r n i z o N u m e Fo u,rAr nd ir ze s ai zFo, uNr ri nv, Ne lu m a rrFa, Da ca ttua F aa, c t u r DD N u m a r Cd a,oDm a at an C oa, m D a nt ad L i i, Ov r raar L ii,v r a r i C a n t i Ct a ot em a a n, Cd oa dt aC ,uN r ui emr e C, Au dr ir ee rs ae r,C u r i N u m a r De no t cP u,lDma taat a D no tc Pu lm,aS teuam a P l a t a Stabilirea dependentelor functionale: a) Dependenta functionala simpla:
CodProdus : → DenProdus → UM → StocInitial → PretCatalog (1) NrFactura : → DataFactura → CodFz (7) CodFz :
→ NumeFz → Adresa Fz → NrTel → CodProdus (6)
NrComanda : → → → → CodCurier :
DataComanda DataLivrare OraLivrare CodCurier (2)
→ NumeCurier
→ AdresaCurier NrDocPlata : → DataDocPlata TipDocPlata : b) Dependente functionale multivaloare:
CodCurier →→ NrComanda (3) NrComanda →→ CodProduse (4) NrDocPlata →→ NrFactura (5) TipDocPlata Chei primare: CodProdus CodFz NrFactura NrComanda CodCurier NrDocPlata + TipDocPlata
NrComanda si CodProdus NrFactura si NrDocPlata
Atribute izolate: NrComanda si CodProdus NrFactura si NrDocPlata si TipDocPlata
→ CantitateaComandata
→ SumaPlata
Construirea tabelelor: Produse ( CodProdus, DenProdus, UM, StocInitial, PretCatalog ) Furnizori ( CodFz, NumeFz, AdresFz, NrTel, CodProdus )
Facturi ( NrFactura, DataFactura, CodFz ) Comenzi ( NrComanda, DataComanda, DataLivrare, OraLivrare, CodCurier ) Curieri ( CodCurier, NumeCurier, AdresaCurier ) DocumentPlata ( NrDocPlata + TipDocPlata, DataDocPlata ) ProduseComandate ( NrComanda, CodProdus, CantitateComandata ) PlatiFacturi ( NrFactura, NrDocPlata + TipDocPlata, SumaPlata ) Modelul Relational: Produse 1 CodProduse 1 ∞ DenProduse UM StocInitial PretCatalog
1
∞
Furnizori CodFz NumeFz AdresaFz NeTel CodProdus
∞ ddddddddd d
Facturi NrFactura DataFactura CodFz
ProduseComandate NrComanda CodProdus CantComandata
1
∞
∞
PlatiFacturi NrFactura NrDocPlata + TipDocFactura LunaPlata
1
Comenzi NrComanda DataComanda DataLivrare OraLivrare CodCurier
Curieri CodCurier NumeCurier AdresaCurier
1
∞
1
DocumentePlata NrDocPlata + TipDocPlata DataPlata
In tabelele modelului realizat se vor stabili urmatoarele proprietati: a) in cadrul tabelei “ Produse ”, campul “ UM “ poate lua valorile: buc, l, kg;
b) campul “ CodFz “ din tabela “ Facturi “ sa poata fi selectata prin intermediul unei liste in care s figureze codurile din tabela Fz; c) “ DataLivrare “trebuie sa fie ulterioara ( sau cel mult aceeasi ) momentului “ DataComandata “;
∞
d) Tipul documentelor de plata pentru achitarea facturilor poate lua valorile: “ ordin de plata “, “ chitanta “, “ foaie de varsamant ”; e) Data facturii va fi implicit data curenta; f) “ PretCatalog “ si “ CantComandata “ trebuie sa aibe valori mai mari de zero; g) la stabilirea tipurilor de date se va avea in vedere ca: Numele Furnizorului poate avea lungimea maxima de 40 de caractere, iar selectarea produselor 25 de caractere. QBE Sa se afiseze toate facturile din anul curent emis de furnizor din Bucuresti; Sa se afiseze lista alfabetica a produselor care au ca uitate de masura “buc“. Sa se calculeze numarul de facturi pt fiecare furnizor in ultiml an; Sa se calculeze numarul de comenzi effectuate de un curier; Sa se calculeze numarul total de produse comandate. Sa se creeze o tabela noua denumita ProduseNoi care sa contina denumirea fiecarui produs si pretul afferent numai in cazul in care acesta este mai mic de 20 lei; Sa se modifice suma de plata micsorandu-se cu 10%. PlatiFact. Sa se realizeze o interogar pentu a evidential pretul maxim al fiecarui produs in fiecare UM; Sa se calculeze valoarea fiecarui produs comandat; Sa se calculeze numarul total de facturi pe fiecare furnizor pe anul current. SQL 1.Sa se afiseze numele si adresele furnizorilor de la care supermarketul a aprovizionat sucuri; 2.Sa se calculeze cantitatea medie aprovizionata la o comandadin fiecare produs. Voi ordona lista descrescator, dupa cantitatea medie determinate; 3.Sa se afiseze lista furnizorilor de la care s-au realizat cel mult 4 facturi dupa data de 1 ianuarie 2009; 4.Care este cel mai ieftin produs in 2008?; 5.Pe baza cantitatii comandate, sa se realizeze un clasament al primelor 3 produse solicitate de supermarket; 6.Sa se determine numarul de curieri cu care opereaza supermarket-ul din fiecare localitate, rezultatele vor fi odonate alphabetic in functie de localitate;
7.Sa se afiseze toate facturile emise in ultima luna de catre furnizorul din localitatile al caror nume incepe cu “B” mare, afisarea se va realize cronologic; 8.Sa se stearga toti furnizori care nu au emis factura in ultimul an. 9.Sa se calculeze numarul documentelor de plata care au fost necesare pentru achitatrea fiecarui dintre facturi; 10Sa se afiseze in ordinea alfabetica tipurile documentelor de plata.