Вы находитесь на странице: 1из 14

База данных DEPOZIT (пример разработки)

1. Цель работы

Разработать проект и создать средствами СУБД Microsoft Access базу данных


для коммерческой фирмы, занимающейся оптовыми закупками и продажами
товаров. Фирма владеет несколькими складами для хранения, обработки и
продажи товара. База данных должна:
 Хранить информацию о поставщиках, товарах и покупателях;
 Вести учет поступающих товаров по накладным поставщиков;
 Формировать новые цены на товары на складах;
 Вести учет реализуемых товаров и выписывать накладные на
реализуемые товары;
 Вести учет наличия на данных момент на каждом складе товаров по
объему и цене.

Baza de date DEPOZIT (exemplu de elaborare)

1. Scopul lucrării

Scopul lucrării constă în proiectarea şi elaborarea bazei de date pentru un depozit


de mărfuri industriale folosind SGBD Microsoft Access. Baza de date trebuie să:
 conţină informaţii despre furnizori, marfă, clienţi;
 asigure evidenţa mărfurilor primite de la furnizori prin facture de primire;
 asigure evidenţa mărfurilor realizate clienţilor prin facture de vânzare;
 asigure evidenţa mărfurilor prezentate în depozit la momentul dat;

2. Modelarea semantică a bazei de date.


Elementele modelului ER – entitate-relaţie

Metode de modelare

Elaborarea sistemului informaţional cu baze de date constă din mai multe etape,
principalele dintre care sunt analiza domeniului concret din lumea reală, elaborarea
proiectului (modelarea sistemului) şi realizarea bazei de date fizice în cadrul unui
sistem de gestiune a bazelor de date (SGBD). În acest capitol ne vom preocupa de
elaborarea proiectului logic care nu depinde de softul în cadrul cărora el va fi
realizat.

1
Анализ
Этап анализа предполагает подробное исследование бизнес-процессов (функций, определенных
на этапе выбора стратегии) и информации, необходимой для их выполнения (сущностей, их
атрибутов и связей (отношений)). На этом этапе создается информационная модель, а на
следующем за ним этапе проектирования - модель данных.

Problema proiectării a sistemului informaţional are cel puţin două subprobleme:


 Colectarea informaţiei şi modelarea business-proceselor;
 Elaborarea structurii (sau architecturii mai bine zis) a sistemului
informaţional.

La modelarea business-proceselor trebuie de considerat trei aspecte:


 Obiectele cu care operează business-procesul;
 Procesele implicate în business;
 Evenimentele care gestionează procesele.

Există două modalităţi (tehnologii) de modelare a sistemului informaţional cu bază


de date:
 Modelare prin normalizarea schemei bazei de date. Reprezintă procedeie de
normalizare consecutivă a relaţiilor cu scopul înbunătăţirii calităţii proiectului
BD;
 Modelare semantică, bazată pe sensul datelor. Este o modelare a structurelor
de date reieşind din sensul (semantica) acestor date.

Modelarea semantică este cea mai naturală şi des utilizată. Ca instrument de


modelare semantică se folosesc diferite variante de diagrame Entitate-relaţie
(ER). Diagramele se bazează pe reprezentarea în forma grafică a:
 Entităţilor (obiectelor şi proceselor);
 Atributelor entităţilor;
 Legăturilor dintre entităţi.

În baza modelării semantice la momentul dat activ se elaborează tehnologii


(mijloace de program) de proiectare automatizată a BD asistată de calculator –
CASE-tehnologii (Computer Aided Software Engineering). Cel mai cunoscut
instrumentar pentru acest caz este pachetul ER-Win.

Modelare cu ER diagrame. Sistemul de notaţii

Prima variantă de model „Entitate-relaţie” a fost propus de Piter Chen în 1976. În


prezent există mai multe notaţii folosite pentru expunerea diagramelor:
 Notaţia IDEF1X;
 Nortaţia lui R. Barker;

2
 Notaţia lui J. Martin;

Noi vom folosi o variantă simplă de notaţie, apropriată de cea a lui R. Barker. Vom
aduce în continuare definiţiile necesare.

Definiţia 1. Entitate – o colecţie (o clasă) de obiecte sau procese de acelaşi


tip, informaţia despre care trebuie să fie considerată în model.

Se prezintă prin substantiv în numărul singular. Exemple: Colaborator,


Furnizor, Marfă, Factură, Client, Student, Livrare, Vinzare, Închiriere, Eliberare
de materiale. Se notează prin box cu nume

Colaborator

Definiţia 2. Atributul entităţii – o caracteristică denumită a entităţii care


reprezintă o proprietate careva a ei. Totalitatea atributelor unei entităţi
reprezintă această entitate în modelul relaţional. Colecţia de atribute trebuie să
fie completă, consistentă şi neexcidentă.

Exemple: Număr de tabel, Nume, Telefon, Salariu, ... Se înscriu în boxul entităţii:

Colaborator

Număr de tabel
Nume
Data naşterii
Salariu

Definiţia 3. Exemplarul entităţii – reprezentant concret al entităţii.

Exemple: SCI201, Cebanu, 2700.50, ... Totalitatea exemplarelor entităţii reprezintă


conţinutul informaţional – datele propriu zise care se referă la această entitate.

Definiţia 4. Cheia entităţii – un set minimal (neexcedent) de atribute


totalitatea de valori a cărora în ansamblu unic determină fiecare exemplar al
entităţii.

3
Serveşte drept unicul mijloc de identifiare a exemplarelor entităţii. În entitate pot fi
mai multe chei diferite. Cea care este aleasă pentru identificare unică în procesul
practic se notează prin subliniere

Colaborator

Număr de tabel
Nume
Data naşterii
Adresa

Aceasta cheie se numeşte şi cheia primară – Primary Key.

Definiţia 5. Legătură – o asociere dintre două entităţi.

Legăturile permit unirea entităţilor într-o structură integră. În diagramă se prezintă


(se arată) prin linii care leagă două entităţi – entitatea conducătoare (părinte) şi
entitatea copil (condusă)

Furnizor Livrare Marfa


FurnizorId OrdNum MarfaId
FurnizorName LivrareDate MarfaName
FurnizorHeader Furnizor FurnizorHeader
FurnizorSddress Marfa MarfaUnitMeasure
FurnizorPhone MarfaVolume MarfaProducator
FurnizorAbout MarfaPrice MarfaAbout
.... .... ....

Fig. 1. Trasarea legăturilor între relaţii. Baza de date LIVRARI

Liniile se trag de la atributul care joacă rolul cheei primare în relaţia părinte spre
atributul care joacă rolul cheei externe (Foreign Key) în relaţia copil. Valorile
cheei primare trebuie se fie cunoscute şi unice, iar valorile cheei externe trebuie să
se conţină printre valorile cheei primare la care se referă prin legătură. Acestea
sunt restricţii obligatorie în modelul relaţional de date care de fapt şi reprezintă
legăturile dintre relaţii.

Aşadar în procesul de modelare cu ER-diagrame trebuie să dispunem de


următoarea informaţie despre lumea reală:
 lista entităţilor;
 lista atributelor pentru fiecare entitate;
 descrierea legăturilor dintre entităţi.

4
3. Schema logică a bazei de date DEPOZIT

Fie avem de elaborat baza de date pentru o firmă de comerţ angro (cu râdicata).
Începem cu studierea acestui domeniu concret: vorbim cu experţii, citim
documentaţie, studiem documentele de întrare/ieşire. Aici trebuie se clarificăm:
 Ce prezintă domeniul concret al lumii reale?
 Care este scopurile elaborării?
 Care funcţii trebuie să îndeplinească aplicaţia de bază de date?
 Ce informaţie trebuie să fie memorată în BD?

Aşadar, aflăm că domeniul concret prezintă:


O firmă de comerţ care este posesor de încăperi de depozitare a mărfurilor.
Activitatea ei constă în colectarea mărfurilor de la furnizori angro şi vînzarea
mărfurilor cu râdicata clienţilor.

Din convorbiri cu managerul de comerţ a firmei aflăm că BD trebuie să:


 Păstreză informaţie despre mărfuri, furnizori şi clienţi;
 Să ducă evidenţa mărfurilor primite de la furnizori prin facture de primire
(document de întrare);
 Să ducă evidenţa mărfurilor în depozit existente în prezent;
 Să formeză şi să tipărească facture de eliberare a mărfurilor (document de
ieşire);

Din analiza aceastei informaţie construim diagrama ER a bazei de date. Aceasta va


fi schema logică a bazei de date.

5
Fig. 2. ER-диаграмма базы данных DEPOZIT

Ware
Supplier Client
WareId
SupplId Category WareName ClientId
SupplName WareCategory ClientName
SupplPhone CategId WareClass Producer ClientPhone
SupplCity CategName WUnitMeasure ClientCity
CategType ProdId
SupplBankCount WProducer ClientBankCo
.... ProdName
... .... unt
ProdCity
....
ProdCountry
WareInWHouse ....
SupplInvoice WareNumPozition ClientInvoice
SuppInvlId WareId InvClientId
WareHouseId Sales SaleDate
DeliveryDate
SupplId Volume SaleNum ClientId
Deliveries
DeliverySum Price ClientInvId SaleSum
DeliveryNum TVA WareHouseId
WareHouseId WareId
SupplInvId .... …
... WareNumPozition
WareId ...
Volume
Volume
Price
Price
....
.... WareHouse
WareHouseId
WareHouseName
WareHouseCheaf
DepPhone
DepAddress

6
4. Schema fizică a bazei de date DEPOZIT

Schema fizică a bazei de date se obţine din schema ei logică prezentată în Fig. 2
reieşind din particularităţile sistemului de programare implementat. În cazul dat va
fi aplicat limbajul de programare C. Deaceea relaţiile şi atributele din ER-diagramă
(modelul logic, Fig. 2) se transformă în tabele şi respectiv câmpuri. În cadrul
limbajului implementat tabelele vor fi memorate în memoria externă în formă de
fişiere cu structura câmpuriliâor specificată.

Mai jos vom specifica structura tabelelor (fişierelor) indicând explicit denumirea
câmpurilor, tipul de date în ele şi lungimea câmpurilor în stricta corespundere cu
cerinţele limbajului C.

4.1. Tabelul Furnizori. Conţine informaţie despre furnizorii de mărfuri.

Tabelul Furnizori
No. Nume câmp Tip de date Descriere
1 FurnId char(6) Codul (identificatorul) furnizorului. Cheie
primară
2 FurnName char(30) Denumirea furnizorului
3 FurnPhone char(6) Numărul de telefon
4 FurnCity char(30) Nume de oraş
5 FurnCont Char(15) Contul bancar

4.2. Tabelul FacturaLivrare. Conţine informaţie despre facturele de livrare cu


care mărfurile vin de la furnizori. Este un document de întrare.

Tabelul FacturaLivrare
No. Nume câmp Tip de date Descriere
1 FactLivrId char(6) Codul facturei de livrare. Cheie primară
2 Data datetime Data livrării
3 FurnId char(6) Codul furnizorului. Cheie externă
4 LivrareSum decimal(12,2) Suma totală în factură de livrăre

4.3. Tabelul Livrari. Conţine informaţie în detalii despre conţinutul livrărilor în


facturele de livrare – liste de mărfuri în facturele de livrare cu indicaţia volumelor
şi preţurilor de livrare.

Tabelul Livrari
No. Nume câmp Tip de date Descriere
1 OrdNumber numeric Numărul de rând a livrării de marfă concretă

7
2 FactLivrId char(6) Codul facturei de livrare. Cheie externă
3 MarfaId char(6) Codul marfei. Cheie externă
4 Volume numeric Volumul livrării de marfa dată
5 Price decimal(12,2) Preţul de livrare a marfei dată

4.4. Tabelul Marfa. Conţine informaţie despre toate mărfurile trecute vre-o dată
prin depozit. Mărfurile cu care operează firma dată.

Tabelul Marfa
No. Nume câmp Tip de date Descriere
1 MarfaId char(6) Codul marfei. Cheie primară
2 MarfaName char(30) Denumirea marfei
3 Producator char(30) Firma producator

4.5. Tabelul Depozit. Conţine informaţie despre toate mărfurile trecute vre-o dată
prin depozit. Mărfurile cu care operează firma dată.

Tabelul Depozit
No. Nume câmp Tip de date Descriere
1 NumPoziţie numeric Numărul de poziţie a marfei în depozit
2 MarfaId char(6) Codul marfei. Cheie externă
3 Volume numeric Volumul curent de marfă în depozit
4 Price decimal(12,2) Preţul marfei dată în depozit

4.6. Tabelul Vinzari. Conţine informaţie în detalii despre conţinutul vînzărilor în


facturele de vânzare – liste de mărfuri în facturele de vânzare cu indicaţia
volumelor şi preţurilor de vânzare.

Tabelul Vinzari
No. Nume câmp Tip de date Descriere
1 OrdNumber numeric Numărul de rând a vânzării de marfă
concretă
2 FactVinzId char(6) Codul facturei de vînzare. Cheie externă
3 MarfaId char(6) Codul marfei. Cheie externă
4 Volume numeric Volumul vânzării de marfa dată
5 Price decimal(12,2) Preţul de vânzare a marfei dată

4.7. Tabelul FacturaVinzare. Conţine informaţie despre facturele de vânzare cu


care mărfurile sunt procurate de clienţii firmei. Este un document de ieşire.

8
Tabelul FacturaVinzare
No. Nume câmp Tip de date Descriere
1 FactVinzId char(6) Codul facturei de vânzare. Cheie primară
2 Data datetime Data vânzării
3 ClientId char(6) Codul clientului. Cheie externă
4 VinzareSum decimal(12,2) Suma totală în factură de vânzare

4.8. Tabelul Clienti. Conţine informaţie despre furnizorii de mărfuri.

Tabelul Clienti
No. Nume câmp Tip de date Descriere
1 ClientId char(6) Codul (identificatorul) clientului. Cheie
primară
2 ClientName char(30) Denumirea clientului
3 ClientPhone char(6) Numărul de telefon a clientului
4 ClientCity char(30) Nume de oraş
5 ClientCont Char(15) Contul bancar a clientului

5. Sarcini

Sarcini la Figura 1:

1. În Fig.1. este dată ER-diagrama bazei de date LIVRARI. De a-o transforma


în schema fizică şi de a crea tabelele bazei de date cu operatorii SQL;
2. În Fig.1. este dată ER-diagrama bazei de date LIVRARI. Scrieţi comenzile
SQL pentru a calcula sumele totale de livrări pentru fiecare oraş;
3. În Fig.1. este dată ER-diagrama bazei de date LIVRARI. Scrieţi comenzile
SQL pentru a calcula sumele totale de livrări pentru fiecare furnizor;
4. În Fig.1. este dată ER-diagrama bazei de date LIVRARI. Scrieţi comenzile
SQL pentru a calcula sumele totale de livrări pentru fiecare marfă
5. În Fig.1. este dată ER-diagrama bazei de date LIVRARI. Scrieţi comenzile
SQL pentru a calcula sumele totale de livrări pentru fiecare oraş pe data
indicată;
6. În Fig.1. este dată ER-diagrama bazei de date LIVRARI. Scrieţi comenzile
SQL pentru a calcula sumele totale de livrări pentru fiecare furnizor pe data
indicată;
7. În Fig.1. este dată ER-diagrama bazei de date LIVRARI. Scrieţi comenzile
SQL pentru a calcula sumele totale de livrări pentru fiecare marfă pe data
indicată;
8. În Fig.1. este dată ER-diagrama bazei de date LIVRARI. Scrieţi comenzile
SQL pentru a calcula sumele totale de livrări pentru fiecare oraş în perioada
indicată de timp;

9
9. În Fig.1. este dată ER-diagrama bazei de date LIVRARI. Scrieţi comenzile
SQL pentru a calcula sumele totale de livrări pentru fiecare furnizor în
perioada indicată de timp;
10. În Fig.1. este dată ER-diagrama bazei de date LIVRARI. Scrieţi comenzile
SQL pentru a calcula sumele totale de livrări pentru fiecare marfă în
perioada indicată de timp.

Schema bazei de date LIVRARE2 (Fig. 3)

Interogări la Fig. 3

Interogări unitabelare:
 Lista furnizorilor cu indicaţia conducătorului şi numărul de telefon;
 Lista furnizorilor din oraşul dat cu indicaţia conducătorului şi numărul de
telefon;
 Lista mărfurilor cu indicaţia categoriei;
 Lista mărfurilor cu indicaţia categoriei şi unităţilor de măsură;
 Lista producatorilor din fiecare ţară;

Interogări multitabelare:
 Lista furnizorilor şi mărfurilor livrate de ei;
 Lista furnizorilor şi mărfurilor livrate de ei cu preţurile de livrare;
 Lista mărfurilor cu indicaţia categoriei şi producătorului;

Funcţii de totalizare.Interogări cu câmpuri calculate:


 Costul total ale mărfurilor livrate;
 Costul mărfurilor livrate în fiecare zi;
 Costul mărfurilor livrate în fiecare zi pentru o perioadă de timp;

Gruparea datelor.Constructor de expresii:


 Costul mărfurilor livrate, grupate pe categorii;
 Costul mărfurilor livrate, grupate pe furnizori;
 Costul mărfurilor livrate, grupate pe furnizori şi categorii;
 Costul mărfurilor livrate, grupate pe producatori de marfă;
 Care din furnizori a livrat mai rar/des marfă;
 Care din furnizori a livrat marfă de o sumă mai mare/mică;

10
Categorie
1
CatId
Furnizor Livrare Marfa CatName
1 1 CatAbout
FurnId OrdNum MarfaId
FurnName LivrareDate MarfaName ....
∞ ∞
FurnHeader Furnizor ∞ MarfaCateg
FurnPhone Marfa MafaUnitMeas
FurnCity ∞
MarfaQuantity MarfaProduc
FurnAddress MarfaPrice MarfaAbout Producator
FurnAbout .... .... 1
ProdId
....
ProdName
ProdCountry
ProdAbout
....

Fig. 3. Diagrama ER a bazei de date VINZARI2

11
Sarcini la baza de date DEPOZIT (Figura 2):

1. De calculat sumele totale de livrări pentru fiecare oraş;


2. De calculat sumele totale de livrări pentru fiecare furnizor;
3. De calculat sumele totale de livrări pentru fiecare marfă;
4. De calculat sumele totale de livrări pentru fiecare oraş pe data
indicată;
5. De calculat sumele totale de livrări pentru fiecare furnizor pe data
indicată;
6. De calculat sumele totale de livrări pentru fiecare marfă pe data
indicată;
7. De calculat sumele totale de livrări pentru fiecare oraş în perioada
indicată de timp;
8. De calculat sumele totale de livrări pentru fiecare furnizor în
perioada indicată de timp;
9. De calculat sumele totale de livrări pentru fiecare marfă în perioada
indicată de timp.
10. De calculat sumele totale de vânzări pentru fiecare oraş;
11. De calculat sumele totale de vânzări pentru fiecare client;
12. De calculat sumele totale de vânzări pentru fiecare marfă;
13. De calculat sumele totale de vânzări pentru fiecare oraş pe data
indicată;
14. De calculat sumele totale de vânzări pentru fiecare client pe data
indicată;
15. De calculat sumele totale de vânzări pentru fiecare marfă pe data
indicată;
16. De calculat sumele totale de vânzări pentru fiecare oraş în perioada
indicată de timp;
17. De calculat sumele totale de vânzări pentru fiecare client în perioada
indicată de timp;
18. De calculat sumele totale de vânzări pentru fiecare marfă în perioada
indicată de timp;
19. De calculat venitul total pentru fiecare marfă;
20. De calculat venitul total pentru fiecare marfă în perioada indicată de
timp.
21. Care furnizor ne-a livrat marfă de mai multe ori?
22. Care client a cumpărat marfă de mai multe ori?
23. Care furnizor ne-a livrat marfă de mai puţine ori?
24. Care client a cumpărat marfă de mai puţine ori?

12
Запросы к базе данных ДЕПОЗИТ (Рис. 2)

Первая группа запросов


1. Получить общие суммы поставок по каждому городу;
2. Получить общие суммы поставок по каждому поставщику;
3. Получить общие суммы поставок по каждому товару;
4. Получить общие суммы поставок по каждому городу на
определенную дату;
5. Получить общие суммы поставок по каждому поставщику на
определенную дату;
6. Получить общие суммы поставок по каждому товару на
определенную дату;
7. Получить общие суммы поставок по каждому городу за
определенный период времени;
8. Получить общие суммы поставок по каждому поставщику за
определенный период времени;
9. Получить общие суммы поставок по каждому товару за
определенный период времени;
10. Получить общее количество поставок по каждому поставщику
11. Получить общее количество поставок по каждому поставщику
за определенный период времени;
12. Получить общие суммы продаж по каждому городу;
13. Получить общие суммы продаж по каждому клиенту;
14. Получить общие суммы продаж по каждому товару;
15. Получить общие суммы продаж по каждому городу на
определенную дату;
16. Получить общие суммы продаж по каждому клиенту на
определенную дату;
17. Получить общие суммы продаж по каждому товару на
определенную дату;
18. Получить общие суммы продаж по каждому городу за
определенный период времени;
19. Получить общие суммы продаж по каждому клиенту за
определенный период времени;
20. Получить общие суммы продаж по каждому товару за
определенный период времени;
21. Получить общее количество покупок по каждому клиенту;
22. Получить общее количество покупок по каждому клиенту за
определенный период времени.

13
Вторая группа запросов

23. Получить общий размер дохода, приходящийся на каждый


реализованный товар;
24. Получить размер дохода, приходящийся на каждую единицу
реализованного товара;
25. Получить общий размер дохода, приходящийся на каждый
реализованный за определенный период времени товар;
26. Получить размер дохода, приходящийся на каждую единицу
реализованного за определенный период времени товара;
27. Получить информацию о том, какой поставщик чаще других
поставлял товар;
28. Получить информацию о том, какой покупатель чаще других
покупал товар;
29. Получить информацию о том, какой поставщик реже других
поставлял товар;
30. Получить информацию о том, какой покупатель реже других
покупал товар;
31. Получить средние суммы поставок по каждому поставщику;
32. Получить средние суммы продаж по каждому покупателю;
33. Получить информацию о том, в каком объеме и на какую
сумму, имеются товары всех наименований по каждому складу;
34. Получить информацию об общем количестве поставок по
каждому складу;
35. Получить информацию об общем количестве продаж с
каждого склада.

14

Вам также может понравиться