Sunteți pe pagina 1din 22

Proiect Baze de date

CUPRINS

CUPRINS........................................................................................................................................................................................1
FORMULAREA PROBLEMEI I A REGULILOR DE GESTIUNE.....................................................................................2
STOC=Cantitatea de intrare-Cantitatea de ieire.....................................................................................................2
ANALIZA APLICAIEI ELABORAREA MODELULUI CONCEPTUAL I TRANSPUNEREA LUI N MODEL
RELAIONAL ..............................................................................................................................................................................2
ANALIZA STRUCTURAL ...............................................................................................................................................3
1.Identificarea entitilor............................................................................................................................................................... 3
2.Identificarea atributelor aferente entitatilor................................................................................................................................3
Codul produsului
Codp....................................................................................................................................................3
PRODUCIE
........................................................................................................................................................................ 4
Cod produs
Codp..........................................................................................................................................4
Cod reeta
Codr...........................................................................................................................................4
Cantitatea unitar
Cantunit................................................................................................................................................4
Cod produs
Codp....................................................................................................................................................... 4

Proiectarea structurii bazei de date........................................................................................................................................4


Pe baza celor doua modele se poate trece la proiectarea schemei conceptuale, logice si fizice a bazei de date ........................4
1. proiectarea schemei conceptuale a bazei de date relaionale se face utiliznd tehnica normalizrii......................................4
Forma normal 1( fn1).............................................................................................................................................................. 4
Forma normal 2 (FN2)............................................................................................................................................................ 5
Forma normal 3 (FN 3)........................................................................................................................................................... 7

PRODUCTIE.......................................................................................................................................................7
Aplicarea algebrei relaionale asupra bazei de date..............................................................................................................8

IMPLEMENTAREA MODELULUI RELAIONAL PROIECTAREA APLICAIEI PROGRAM ..............................8


PROC adaugare........................................................................................................................................................................ 9
PROC modificare................................................................................................................................................................... 10
PROC stergere........................................................................................................................................................................ 11
PROC vizualizare.................................................................................................................................................................. 13
PROC calcul.......................................................................................................................................................................... 14
PROC Alegere........................................................................................................................................................................ 16

ANEXE-CAPTURI ALE ECRANULUI....................................................................................................................................17

TRANDAFIR LUMINIA

Proiect Baze de date

Formularea problemei i a regulilor de gestiune


Aplicaia are ca obiectiv proiectarea unei baze de date i construirea produsului program privind
gestiunea unei patiseri .Aprovizionarea cu materii prime (produse) conduce la obinerea de stocuri care
se diminueaz odat cu folosirea lor n producia zilnic .
Principala problem avut n vedere este ca n fiecare zi s cunoatem stocurile de materii prime
existente .
STOC=Cantitatea de intrare-Cantitatea de ieire
Considerm urmtorul model dinamic :
RECEPIE MATERII PRIME

(Cantitatea de intrare)

FIA MAGAZIE
( Stoc )

PRODUCIE consum materii prime


( Cantitatea de ieire =nr. buci * cantitatea unitar)

REETAR
( cantitatea unitar)

Analiza aplicaiei elaborarea modelului conceptual i transpunerea lui n model


relaional .

TRANDAFIR LUMINIA

Proiect Baze de date

ANALIZA STRUCTURAL
1.Identificarea entitilor
Pentru aceast aplicaie pot fi puse n eviden urmtoarele entiti :

Materii prime cu care se aprovizioneaz unitatea :


Furnizorii de materii prime
Recepia materiilor prime:
Raportul de productie zilnic
Retetarul :
Fia de magazie:

PRODUSE
FURNIZOR
RECEPIE
PRODUCTIE
REETE
STOC

2.Identificarea atributelor aferente entitatilor

PRODUSE

Codul produsului

Codp

Denumirea produsului

Denp

Unitatea de masura

UM

Cod furnizor

FURNIZOR

Codf

Adresa furnizor

Adr

Denumire furnizor

Denf

Numarul facturii

NRfact

Data facturii

DATAfact

Cod produs

Codp

Denumire produs

Denp

Cantitatea de intrare

Canti

Pre unitar

PRETunit

RECEPIE
T.V.A
Adaos comercial

TRANDAFIR LUMINIA

TVA
ADcom

Proiect Baze de date

Cod reet

Codr

Denumire reet

Denr

PRODUCIE
Numr de buci

RETETE

STOC

NRbuc

Cod produs

Codp

Cod reeta

Codr

Denumire reet

Denr

Cantitatea unitar

Cantunit

Cod produs

Codp

Denumire produs

Denp

Cantitatea de intrare

Canti

Cantitatea de ieire

Cante

Stoc

Stoc

PROIECTAREA STRUCTURII BAZEI DE DATE


Pe baza celor doua modele se poate trece la proiectarea schemei conceptuale, logice si fizice a bazei
de date .
1. Proiectarea schemei conceptuale a bazei de date relaionale se face utiliznd tehnica normalizrii.
Forma normal 1( FN1)

TRANDAFIR LUMINIA

Proiect Baze de date

O tabel este n forma normal 1 dac toate cmpurile sunt la nivel elementar i nu exist cmpuri
repetitive(la intersecia dintre un rnd i o coloan se gsete o valoare i numai una ).
n cazul aplicaiei analizate relatia (tabela) de la care se pornete-n forma nenormalizat-arat astfel
:
R(#Codp,Denp,Um,Codf,Denf,Adrf,#Nrfact,Datafact,Canti,Pretunit,TVA,ADcom,#Codr,Denr
Cantunit,NRbuc)
Cheia primar a relaiei R este o cheie compus din Codp ,Nrfact i Codr
Pentru a normaliza BDR se separ datele repetitive mpreun cu un cmp comun- cheia extern;
ntr-o relaie separat .

Baza de date n FN 1 arat astfel:


#Codp

Denp

Um

Codf

Denf

#Codp

#Codr

Denr

Cantunit

NRbuc

Adrf

#Nrfact

Datafact

Canti

Pretunit

TVA

ADcom

Forma normal 2 (FN2)


O tabel este n FN2 dac este n FN1 i toate atributele non-cheie depind funcional complet de
cmpul cheie .

Dependenele funcionale arat astfel :


; NRbuc
Codr
Codp

TRANDAFIR LUMINIA

Denr ;Cantiunit
Um ; Denp

Proiect Baze de date

Nrfact
Pretunit ;TVA ; Adcom

TRANDAFIR LUMINIA

Codf ; Denf ; Adrf ;Datafact ;Canti ;

Proiect Baze de date

Baza de date n FN 2 arat astfel :

#Codp

Denp

#Codp

Um

#Nrfact

#Codp

#Codr

NRbuc

#Codr

Codf

Denr

Datafact

Denf

Adrf

Canti

Pretunit

TVA

ADcom

Cantunit

Forma normal 3 (FN 3)


O tabel este n FN 3 dac este n FN 2 i nu exist dependene tranzitive .
O BDR este n FN 3 dac toate tabelele sunt n FN 3 .
Analiznd BDR n FN2 constatm urmtoarele dependene tranzitive:
Denf i Adrf sunt dependente de Codf
Atributele care sunt dependente tranzitiv sunt mutate ntr-un nou tabel mpreun cu
coloana prin care se face tranzitivitatea .
Eliminnd aceast dependen BDR n FN3 arat astfel:
PRODUSE
#Codp

Denp

Um

RECEPTIE
#Codp

#Nrfact

Codf

Datafact

Canti

Pretunit

TVA

ADcom

FURNIZOR
#Codf

Denf

Adrf

RETETE
#Codp

#Codr

Denr

Cantunit

PRODUCTIE
NRbuc

#Codr

TRANDAFIR LUMINIA

Proiect Baze de date

Aplicarea algebrei relaionale asupra bazei de date


Pornind de la tabelele BDR de mai sus,tabela STOC se realizeaz prin implementarea unor
operatori relaionali conform specificaiilor care urmeaz:
JONCIUNEA :
1. Se extrag cmpurile Codp , Denp din tabela PRODUSE i cmpul Canti din tabela recepie i
se nscriu ntr-o nou tabel numit INTRARE .Cele dou tabele iniiale au cmpul Codp
comun .
2. Se extrag cmpurile Codp , Cantunit din tabela RETETE si cmpul NRbuc din tabela
PRODUCIE i se inscriu ntr-o nou tabel numit IEIRE .Cele dou tabele iniiale au
cmpul Codr comun .
3. Se extrag cmpurile Codp , Denp , Canti din tabela INTRARE i cmpurile Cantunit i Nrbuc
din tabela IEIRE i se inscriu ntr-o nou tabel numit STOC .
PROIECTIA:
Din tabela STOC se extrage cmpul Canti din care scdem Cantunit*NRbuc i se afieaz pe
ecran .

Implementarea modelului relaional proiectarea aplicaiei program .


CLEAR ALL
set talk off
set status on
DEFINE WINDOW f1 FROM 2,8 TO 35,85 TITLE 'GESTIUNE PATISERIE' PANEL
ACTIVATE WINDOW f1
DEFINE MENU Operatii COLOR RB/W
DEFINE PAD opt1 OF Operatii PROMPT '\ Adaugare '
DEFINE PAD opt2 OF Operatii PROMPT '\ Modificare '
DEFINE PAD opt3 OF Operatii PROMPT '\ Stergere '
DEFINE PAD opt4 OF Operatii PROMPT '\ Vizualizare '
DEFINE PAD opt5 OF Operatii PROMPT '\ Calcul '
DEFINE PAD opt6 OF Operatii PROMPT '\ %%% '
ON PAD opt1 OF Operatii DO adaugare
ON PAD opt2 OF Operatii DO modificare
ON PAD opt3 OF Operatii DO stergere
ON PAD opt4 OF Operatii DO vizualizare
ON PAD opt5 OF Operatii DO calcul
ON PAD opt6 OF Operatii DO Alegere
ACTIVATE MENU Operatii PAD opt6
SHOW MENU Operatii
@ 8,16 clear TO 12,50

TRANDAFIR LUMINIA

Proiect Baze de date

PROC adaugare
DEFINE WINDOW f2 AT 5,10 SIZE 15,48 IN WINDOW f1 TITLE 'ADAUGARE DE DATE'
PANEL
ACTIVATE WINDOW f2
op1='da'
DO WHILE op1='da'
CLEAR
vcod=0
SELECT 1
USE C:\Dbaza\produse.dbf
APPEND BLANK
@ 1,4 SAY 'Cod produs'
@ 1,23 GET vcod PICTURE '99999'
@ 2,4 SAY 'Denumire produs'
@ 2,23 GET denp PICTURE REPLICATE('X',15)
@ 3,4 SAY 'Unitate de masura'
@ 3,23 GET um PICTURE REPLICATE ('X',8)
@ 4,4 SAY ' --------------------------------- '
READ
REPLACE codp WITH vcod
SELECT 2
USE C:\Dbaza\receptie.dbf
APPEND BLANK
REPLACE codp WITH vcod
@ 5,4 SAY 'Numarul facturii'
@ 5,23 GET nrfact PICTURE '9999999999999'
@ 6,4 SAY 'Cod fiscal'
@ 6,23GET codf PICTURE REPLICATE('X',8)
@ 9,4 SAY 'Data facturii'
@9,23 GET datafact PICTURE '99/99/9999'
READ
vcodf=codf
SELECT 3
USE C:\Dbaza\furnizor.dbf
APPEND BLANK
@ 7,4 SAY 'Denumire furnizor'
@ 7,23 GET denf PICTURE REPLICATE ('X',15)
@ 8,4 SAY 'Adresa furnizor'
@8,23 GET adrf PICTURE REPLICATE ('X',15)
READ
REPLACE codf with vcodf
@ 12,5 SAY 'Continuati adaugarea?(da/nu)'GET op1
READ
ENDDO
CLOSE DATABASE
DEACTIVATE WINDOW f2
RETURN

TRANDAFIR LUMINIA

Proiect Baze de date

PROC modificare
DEFINE WINDOW f3 AT 5,10 SIZE 15,50 IN WINDOW f1 TITLE 'MODIFICARE DE DATE'
PANEL
ACTIVATE WINDOW f3

m2='da'
DO WHILE (m2)='da'
@2,2 clear to 40,50
hai=0
m3='da'
DO WHILE (m3)='da'
cheie=space(5)
@1,5 SAY 'Dati codul RETETEI' GET cheie
READ
SELECT 1
USE C:\Dbaza\Retete.dbf
INDEX ON codr TO C:\Dbaza\Cod2.idx
SET INDEX TO C:\Dbaza\Cod2.idx ASCENDING
REINDEX
SEEK (cheie)
IF NOT FOUND()
@9,5 SAY 'Nu exista produsul cu acest cod '
@10,6 SAY 'Continuati cu alt cod ?(da/nu):'GET m3
READ
hai=1
ELSE
?' Este inregistrarea:'
DISPLAY RECORD RECNO()
??' din baza de date'
m3='nu'
hai=0
ENDIF
ENDDO
IF hai=0
cheie=cheie
SELECT 1

TRANDAFIR LUMINIA

10

Proiect Baze de date

USE C:\Dbaza\Retete.dbf
INDEX ON codr TO C:\Dbaza\Cod2.idx
SET INDEX TO C:\Dbaza\Cod2.idx ASCENDING
SEEK(cheie)
vdenr=Denr
@7,4 SAY'Reteta:'GET vdenr PICTURE REPLICATE ('X',15)
READ
SELECT 1
REPLACE Retete.Denr WITH vdenr
cheie=cheie
SELECT 2
USE C:\Dbaza\Produc.dbf
INDEX ON codr TO C:\Dbaza\Coduri2.idx
SET INDEX TO C:\Dbaza\Coduri2.idx ASCENDING
SEEK(cheie)
vnrbuc=Nrbuc
@8,4 SAY'Numar bucati:'GET vnrbuc PICTURE '9999999'
READ
SELECT 2
REPLACE Produc.Nrbuc WITH vnrbuc
ELSE
@2,2 CLEAR TO 9,50
ENDIF
@10,6 SAY 'Continuati modificarile ?(da/nu):'GET m2
READ
ENDDO
DEACTIVATE WINDOW f3
RETURN
PROC stergere
DEFINE WINDOW f4 AT 5,10 SIZE 15,50 IN WINDOW f1 TITLE 'STERGERE DE DATE'
PANEL
ACTIVATE WINDOW f4
SELECT 1
USE C:\Dbaza\Retete.dbf
SELECT 2
USE C:\Dbaza\Produc.dbf
m2='da'

TRANDAFIR LUMINIA

11

Proiect Baze de date

DO WHILE (m2)='da'
@2,1 clear to 40,50
hai=0
m3='da'
DO WHILE (m3)='da'
cheie=space(5)
@1,5 SAY 'Dati codul RETETEI' GET cheie
READ
SELECT 1
USE C:\Dbaza\Retete.dbf
SET INDEX TO C:\Dbaza\Cod2.idx ASCENDING
SEEK (cheie)
IF NOT FOUND()
@9,5 SAY 'Nu exista produsul cu acest cod '
@10,6 SAY 'Continuati cu alt cod ?(da/nu):'GET m3
READ
hai=1
ELSE
?' Este inregistrarea:'
DISPLAY RECORD RECNO()
??' din baza de date'
m3='nu'
hai=0
ENDIF
ENDDO
IF hai=0
cheie=cheie
SELECT 1
USE C:\Dbaza\Retete.dbf
SET INDEX TO C:\Dbaza\Cod2.idx ASCENDING
SEEK (cheie)
@8,6 SAY'Confirmati:'
DELETE RECORD RECNO()
? DELETED ()
m4='da'
@10,6 SAY 'Confirmati stergerea?:(da/nu)' GET m4
READ
IF m4='da'
PACK
SELECT 2
USE C:\Dbaza\Produc.dbf
SET INDEX TO C:\Dbaza\Coduri2.idx ASCENDING
SEEK (cheie)

TRANDAFIR LUMINIA

12

Proiect Baze de date

DELETE RECORD RECNO()


PACK
ELSE
RECALL RECORD RECNO()
ENDIF
ENDIF
@12,6 SAY 'Continuati modificarile ?(da/nu):'GET m2
READ
ENDDO
DEACTIVATE WINDOW f4
RETURN
PROC vizualizare
@2,2 clear to 40,50
CLOSE DATABASE
SELECT 1
USE C:\Dbaza\produse.dbf
INDEX ON codp TO C:\Dbaza\Cod.idx
SET INDEX TO C:\Dbaza\Cod.idx ASCENDING
SELECT 3
USE C:\Dbaza\Receptie.dbf
INDEX ON codp TO C:\Dbaza\Cod_A.idx
INDEX ON codf TO C:\Dbaza\cf.idx
SET INDEX TO C:\Dbaza\Cod_A.idx,C:\Dbaza\cf.idx ASCENDING
SELECT 2
USE C:\Dbaza\furnizor.dbf
INDEX ON codf TO C:\Dbaza\Cod_F.idx
SET INDEX TO C:\Dbaza\Cod_F.idx ASCENDING
SELECT 3
SET RELATION TO Codf INTO 2
SELECT 5
USE C:\Dbaza\Produc.dbf
INDEX ON codr TO C:\Dbaza\Coduri2.idx
SET INDEX TO C:\Dbaza\Coduri2.idx ASCENDING
SELECT 4
USE C:\Dbaza\Retete.dbf
INDEX ON codp TO C:\Dbaza\Cod_B.idx
SET INDEX TO C:\Dbaza\Cod_B.idx ASCENDING
SET RELATION TO Codr INTO 5
SELECT 1

TRANDAFIR LUMINIA

13

Proiect Baze de date

SET RELATION TO Codp INTO 3


SET RELATION TO Codp INTO 4
?'NUMARUL DE INREGISTRARI DIN BAZA DE DATE SUNT:'
i=RECCOUNT()
??i
?'din care sunt afisate primele:',i/2
?' '
?' '
?'COD_PRODUS DENUMIRE_PRODUS CANTITATE UNITARA

DENUMIRE RETETA'

SCAN;
NEXT i/2
? codp,'

',denp,'

',' ',D.Cantunit,'

', D.denr

ENDSCAN
RETURN
PROC calcul
DEFINE WINDOW f5 AT 5,10 SIZE 15,50 IN WINDOW f1 TITLE 'CALCUL STOC' PANEL
ACTIVATE WINDOW f5
CLOSE DATABASE
m2='da'
DO WHILE (m2)='da'
@1,0 clear to 40,50
hai=0
m3='da'
DO WHILE (m3)='da'
cheie=space(5)
@1,5 SAY 'Dati codul PRODUSULUI' GET cheie
READ
SELECT 1
USE C:\Dbaza\Receptie.dbf
INDEX ON codp TO C:\Dbaza\Cod_A.idx
SET INDEX TO C:\Dbaza\Cod_A.idx ASCENDING
SEEK (cheie)
IF NOT FOUND()
@9,5 SAY 'Nu exista produsul cu acest cod '
@10,6 SAY 'Continuati cu alt cod ?(da/nu):'GET m3
READ
hai=1

TRANDAFIR LUMINIA

14

Proiect Baze de date

ELSE
?' Este inregistrarea:'
DISPLAY FIELDS codp,Canti,Pretunit
??' din baza de date'
m3='nu'
hai=0
ENDIF
CLOSE DATABASE
ENDDO
IF hai=0
cheie=cheie
CLOSE DATABASE
SELECT 1
USE C:\Dbaza\Retete.dbf
INDEX ON codp TO C:\Dbaza\Cod_B.idx
INDEX ON codr TO C:\Dbaza\Cod_E.idx
SET INDEX TO C:\Dbaza\Cod_B.idx ,C:\Dbaza\Cod_E.idx ASCENDING
SELECT 2
USE C:\Dbaza\Produc.dbf
INDEX ON codr TO C:\Dbaza\Cod_C.idx
SET INDEX TO C:\Dbaza\Cod_C.idx ASCENDING
SELECT 1
SET RELATION TO Codr INTO 2
SELECT 3
USE C:\Dbaza\Receptie.dbf
SET INDEX TO C:\Dbaza\Cod_A.idx ASCENDING
SET RELATION TO Codp INTO 1
SEEK(cheie)
cintrare=Canti
? ' Cantitatea de intrare(kg)=',Canti
cu=A.cantunit
SELECT 2
USE C:\Dbaza\Produc.dbf
INDEX ON codr TO C:\Dbaza\Cod_C.idx
SET INDEX TO C:\Dbaza\Cod_C.idx ASCENDING
SELECT 1
SET RELATION TO Codr INTO 2
nr=B.Nrbuc
?' numar de bucati=' ,nr

TRANDAFIR LUMINIA

15

Proiect Baze de date

? ' Cantitatea unitara(kg)=',cantunit/1000


? ' Stocul(kg)=',cintrare-cu*nr/1000
ENDIF
@12,6 SAY 'Continuati ?(da/nu):'GET m2
READ
ENDDO
DEACTIVATE WINDOW f5
RETURN
PROC Alegere
@ 8,16 TO 12,50 DOUBLE COLOR RB/W
@ 10,18 SAY 'ALEGETI O OPTIUNE DIN MENIU'
RETURN

TRANDAFIR LUMINIA

16

Proiect Baze de date

Anexe-capturi ale ecranului

TRANDAFIR LUMINIA

17

Proiect Baze de date

TRANDAFIR LUMINIA

18

Proiect Baze de date

TRANDAFIR LUMINIA

19

Proiect Baze de date

TRANDAFIR LUMINIA

20

Proiect Baze de date

TRANDAFIR LUMINIA

21

Proiect Baze de date

TRANDAFIR LUMINIA

22

S-ar putea să vă placă și