Upload
phungphuc
View
443
Download
33
Embed Size (px)
Citation preview
Colegiul Național “DINICU GOLESCU” Câmpulung
Gestiunea unui magazin de calculatoare
Lucrare pentru atestarea competențelor profesionale
Elev: Scîrlet Emanuel
Clasa: 12c
Profesor coordonator: Tătulea Maria
Cuprins
Introducere baze de date
Descrierea afacerii
Necesitatea crearii bazei de date
Obiective operationale
Reguli de integritate
Reguli structurale
Reguli procedurale
ERD initial
Rezolvarea relatiilor Many to Many
ERD final
Tabele in Oracle
Implementarea aplicatiei in Oracle
Concluzii
Bibliogafie
Baze de date
Din dorinta de a lucra mai usor, oamenii tind sa-si informatizeze toate
activitatile. Una dintre aceste activitati este si « Depozitul de
Calculatoare »
Pentru aceasta s-a folosit o baza de date in Oracle.
O baza de date este o colectie de informatii corelate, referitoare la un
anumit subiect sau colectate, organizate si memorate intr-un anumit
scop. Sistemul care permite colectarea, organizarea, memorarea si
regasirea informatiilor dintr-o baza de date se numeste sistem de
gestiune al bazelor de date (SGBD). Acesta poate fi conventional, in
care infomatiile sunt stocate pe foi de hartie si computerizat, in care
informatiile sunt pastrate in volume. Oracle este un astfel de sistem
interactiv, computerizat pentru gestionarea bazelor de date relationale.
Cel mai raspandit tip de baze de date este cel relational, in care datele
sunt memorate in tabele. Pe langa tabele, o baza de date relationala
mai poate contine: indecsi, proceduri stocate, declansatori, utilizatori
si grupuri de utilizatori, tipuri de date, mecanisme de securitate si de
gestiune a tranzactiilor etc.
Descrierea afacerii
Trebuie sa se proiecteze o baza de date a unui depozit de calculatoare.
Baza de date trebuie sa contina informatii despre firma, despre
serviciile pe care le ofera, produsele pe care le comercializeaza dar si
despre angajatii si clientii sai.
Se doreste o evidenta clara a angajatilor depozitului cu ajutorul datelor
personale (nume, prenume, data angajarii, adresa, telefon, salariu
precum si departamentul in care acestia lucreaza) .
De asemenea, firma isi propune sa pastreze si o evidenta a clientilor
(nume, prenume, CNP, adresa, e-mail tipul acestuia precum si
reducerea de care acesta se bucura prin prisma fidelitatii sale)
deoarece depozitul deruleaza programe de fidelizare a acestora.
Depozitul poate colabora cu importatori si/sau distribuitori (pot exista
mai multe firme care distribuie acelasi produs), in acest caz
informatiile despre aceste firme trebuie inregistrate in baza de date.
Deoarece este un depozit de calculatoare, firma este specializata in
comercializarea produselor si serviciilor IT. Pentru aceasta are nevoie
sa stocheze in baza sa de date informatii referitoare la produse
(numele produsului, model, pret, tipul licentei si numarul de utilizatori
daca acesta este de tip software sau o descriere amanuntita daca
acesta este de tip hardware, garantie), cat si informatii referitoare la
servicii (denumire, descriere, cost si unde este necesar si observatii).
Deoarece depozitul de calculatoare ofera garantie tuturor produselor
sale are nevoie sa cunoasca si date despre producatorii acestora in
vederea contactarii lor in cazul in care exista probleme cu produsele
lor ( producator, website, locatie, telefon, e-mail) .
De asemenea, firma trebuie sa ai o evidenta clara a produselor care se
afla pe stoc sau care sunt in curs de aprovizionare. Pentru aceasta are
nevoie sa deruleze contracte de furnizare cu furnizorii sai, informatie
care trebuie stocata in baza de date (este necesar sa se cunoasca data
incheierii contractului, cand a fost plasata o comanda, cand a fost
livrata, costul contractului precum si eventualele observatii) .
Firma trebuie sa tina si o evidenta asupra veniturilor si a cheltuielilor,
obtinuta cu ajutorul facturilor.
Angajatii depozitului pot oferi atat servicii clientilor cat si produsele
existente in stoc, in functie de specializarea fiecarui angajat. Fiecare
angajat are un salariu de baza, la care se adauga diferite bonusuri in
functie de performantele acestuia.
Clientii, la randul lor, pot solicita atat servicii cat si produse,
depozitului. Evidenta produselor se tine prin comenzile pe care clientii
le fac depozitului (se memoreaza informatii referitoare la data
comenzii, numarul de bucati, factura, produs si angajatul care i-a
preluat comanda) .
Evidenta serviciilor se memoreaza prin prestarile de servicii pe care
angajatii depozitului le ofera clientilor (se memoreaza date referitoare
la serviciu, angajat si client).
Reguli de integritate Regulile de integritate sunt asertiuni pe care datele continute in baza
de date trebuie sa le satisfaca.
Exista trei tipuri de constrangeri structurale (de cheie, de referinta,
de entitate) ce constituie multimea minimala de reguli de integritate
pe care trebuie sa le respecte un SGBD relational. Restrictiile de
integritate minimale sunt definite in raport cu notiunea de cheie a unei
relatii.
O multime minimala de atribute ale caror valori indentifica unic un
tuplu intr-o relatie reprezinta o cheie pentru relatia respectiva.
Feicare relatie are cel putin o cheie. Una dintre cheile candidat va fi
aleasa pentru a indentifica tupluri si ea va primi numele de cheie
primara. Cheia primara nu poate fi reactualizata. Atributele care
reprezinta cheia primara sunt fie subliniate, fie urmate de semnul #.
O cheie indentifica linii si este diferita de un index care localizeaza
liniile. O cheie secundara este folosita ca index pentru a accesa
tupluri. Un grup de atribute din cadrul unei relatii care contine o cheie
a relatiei poarta numele de supercheie .
Modelul relational respecta trei reguli de integritate structurala .
Regula 1: Unicitatea cheii. Cheia primara trebuie sa fie unica si
minimala .
Regula 2: Integritatea entitatii. Atributele cheii primare trebuie sa fie
diferite de valoarea null .
Regula 3: Integritatea referirii. O cheie externa trebuie sa fie ori null in
intregime, ori sa corespunda unei valori a cheii primare asociate .
Transformarea relatiilor
Relatiile 1:1 si 1:n devin chei externe (chei straine) .
Relatia m:n devine un tabel special, numit tabel asociativ, care are
doua chei externe pentru cele doua tabele asociate. Cheia primara
este compunerea acestor doua chei externe plus eventuale coloane
aditionale. Tabelul se deseneaza punctat .
Relatiile de tip trei devin tabele asociative. Cheia primara este
compunerea a trei chei externe plus eventuale coloane aditionale.
Transformarea atributelor
Un atribut singular devine o coloana.
In anul 1985, E.F. Codd a publicat un set de 13 reguli in raport cu care un sistem de gestiune a bazelor de date poate fi apreciat ca relational .
O restrictie este o regula specificata pentru un obiect al bazei de date (de obicei un tabel sau o coloana), avand rolul de a limita intr-un mod oarecare domeniul de valori permise pentru obiectul respectiv al bazei de date. Exista mai multe tipuri de restrictii pentru bazele de date:
Restrictia NOT NULL poate fi plasata pe o coloana pentru a impedica folosirea valorilor nule .
Restrictia cheie primara (primary key) definita pe coloana (coloanele) cheie primara ale unui tabel pentru a garanta ca valorile cheie primara sunt intotdeauna unice in intreg tabelul .
Restrictia de unicitate (unique) definite pe o coloana sau un set de coloane care trebuie sa contina valori unice ale tabelului .
Restrictia referentiala (numita uneori restrictie de integritate referentiala) este o restrictie care impune o relatie intre doua tabele dintr-o baza de date relationala .
Restrictia CHECK foloseste o instructiune logica simpla (scrisa in SQL) pentru a valida valoarea unei coloane .
Un index reprezinta o cale rapida de localizare si sortare a inregistrarilor dintr-o tabela prin gruparea tuturor inregistrarilor pentru un anumit atribut sau grup de atribute .
Indexarea este utilizată in două scopuri principale :
- accelerarea cautarilor in baza de date
- asigurarea unicitatii inregistrarilor
Anomalia de inserare se refera la o situatie in care nu puteti insera
date in baza de date din cauza unei dependente artificiale dintre
coloanele unui tabel .
Anomalia de stergere este inversul anomaliei de inserare. Se refera la
situatia in care stergerea unor date duce la pierderea neintentionata a
altor date .
Anomalia de actualizare se refera la o situatie in care actualizarea unei
singure valori necesita actualizarea mai multor randuri.
Scopul procesului de normalizare este eliminarea anomaliilor de
inserare, actualizare si stergere .
Primul pas al procesului de normalizare consta in alegerea unui
identificator unic (unique identifier), care este un atribut (o coloana)
sau un set de atribute care identifica in mod unic fiecare rand de date
dintr-o relatie. Identificatorul unic va deveni ulterior cheia primara a
tabelului creat.
Prima forma normala: eliminarea datelor repetate
O relatie este in prima forma normala atunci cand nu contine atribute
cu valori multiple (atribute multi valoare), adica atribute care au mai
multe valori pentru acelasi rand de date.
A doua forma normala: eliminarea dependentelor partiale
Se spune ca o relatie este in a doua forma normala daca indeplineste
urmatoarele criterii:
-Relatia este in prima forma normala
-Toate atributele non-cheie sunt dependente functional de
indentificatorul unic (cheia primara), luat ca intreg.
A doua forma normala se aplica numai relatiilor care au
indentificatoare unice concatenate (adica formate din atribute
multiple).
A treia forma normala: eliminarea dependentelor tranzitive
Un atribut care depinde de un atribut care nu este indentificator unic
(cheie primara) a relatiei se spune ca este dependent tranzitiv. Se
spune ca o relatie este in a treia forma normala daca indeplineste
urmatoarele doua criterii:
Relatia este in a doua forma normala .
Nu exista dependente tranzitive (cu alte cuvinte, toate atributele
non-cheie depind numai de indenficatorul unic) .
Regulile procedurale
Sa se afiseze numele, prenumele, numarul de telefon, adresa tuturor
angajatilor
select angajat, telefon, adresa
from angajati
Sa se afiseze adresa si numarul de telefon al clientului “Popescu Ion”
select adresa, telefon
from clienti
where client = “Popescu Ion”
Sa se afiseze toate produsele care se afla in stoc
select produs, model
from produse
where stoc = “DA”
Sa se afiseze producatorii care au locatia in Bucuresti
select producator, website, telefon, email
from producatori
where locatie = “Bucuresti”
Sa se afiseze angajatii din departamentul de vanzari
select angajat
from angajati
where departament = “Vanzari”
Sa se afiseze comenzile care contin mai mult de 3 produse de acelasi tip
select id_comanda, data
from comenzi
where nr_buc >=3
Sa se afiseze produsele care au fost cumparate de mai mult de 5 ori
select produs
from produse
where id_factura>=5
Reguli structurale
Furnizor – Contract
o Un furnizor are unul sau mai multe contracte .
o Un contract apartine unui singur furnizor .
Contract – Furnizare
o Un contract deruleaza una sau mai multe furnizari .
o O furnizare apare intr-un singur contract .
Furnizare – Produs
o O furnizare contine un singur produs .
o Un produs apare pe unul sau mai multe furnizari .
Producator – Produs
o Un producator produce unul sau mai multe produse .
o Un produs este produs de un singur producator .
Factura – Produs
o O factura contine unul sau mai multe produse .
o Un produs apare pe o singura factura .
Comanda – Factura
o O factura apartine unei singure comenzi .
o O comanda are o singura factura .
Comanda – Client
o O comanda este facuta de un client .
o Un client face una sau mai multe comenzi .
Comanda – Angajat
o O comanda este realizata de un angajat .
o Un angajat realizeaza una sau mai multe comenzi .
Angajat – Serviciu
o Un angajat realizeaza unul sau mai multe servicii .
o Un serviciu este facut de un singur angajat .
Serviciu – Prestari
o Un serviciu apare intr-una sau mai multe liste de prestari servicii .
o O lista de prestari servicii contine un singur serviciu .
Prestari – Clienti
o O lista de prestari servicii are un singur client .
o Un client apare in una sau mai multe liste de prestari servicii .
ERD INITIAL
FURNIZOR
#id_furnizor
*Denumire
*Adresa
*Telefon
*Contact
PRODUS
#id_produs
*Produs
*Model
*Pret
*Tip
*Stoc
*Observatii
PRODUCATOR
#id_producator
*Website
*Telefon
*Locatie
ANGAJAT
#id_angajat
*Angajat
*Data_nasterii
*Data_angajarii
*Adresa
*Telefon
*Gen
*Comision
*Bonus
CONTRACT
#id_contract
*Data
*Pret
°Observatii
SERVICIU
#id_serviciu
*Denumire
*Descriere
*Pret
°Observatii
CLIENT
#id_client
*Client
*CNP
*Adresa
°Reducere
Tehnician
*Salariu_baza
Vanzator
*Salariu_baza
COMANDA
#id_comanda
*Data
*Nr_buc
are
apar
tine
produce
este produs
exis
ta
contine
contine se afla fa
ce
este facuta
pre
ia
est
e p
relu
ata
realizeaza
este realizat
cere
est
e c
eru
t
Rezolvarea relatiilor M : M
Produs - Contract
PRODUS
#id_produs
*Produs
*Model
*Pret
*Tip
*Stoc
*Observatii
CONTRACT
#id_contract
*Data
*Pret
°Observatii
FURNIZARE
#id_furnizare
*Data_plasare
*Data_livrare
*Cantitate
apar
e
furnizeaza
contine
apartine
PRODUS
#id_produs
*Produs
*Model
*Pret
*Tip
*Stoc
*Observatii
COMANDA
#id_comanda
*Data
*Nr_buc
FACTURA
#id_factura
*Data
°Observatii
se a
fla
contine apartine
are
Rezolvarea relatiilor M : M
Produs - Comanda
SERVICIU
#id_serviciu
*Denumire
*Descriere
*Pret
°Observatii
CLIENT
#id_client
*Client
*CNP
*Adresa
°Reducere
Rezolvarea relatiilor M : M
Client - Serviciu
PRESTARE
#id_prestare
*Data
cere
este oferita
apar
tine
contine
ERD Final FURNIZOR
#id_furnizor
*Denumire
*Adresa
*Telefon
*Contact
CONTRACT
#id_contract
*Data
*Pret
°Observatii
FURNIZARE
#id_furnizare
*Data_plasare
*Data_livrare
*Cantitate PRODUS
#id_produs
*Produs
*Model
*Pret
*Tip
*Stoc
*Observatii
PRODUCATOR
#id_producator
*Website
*Telefon
*Locatie
ANGAJAT
#id_angajat
*Angajat
*Data_nasterii
*Data_angajarii
*Adresa
*Telefon
*Gen
*Comision
*Bonus
Tehnician
*Salariu_baza
Vanzator
*Salariu_baza
SERVICIU
#id_serviciu
*Denumire
*Descriere
*Pret
°Observatii
CLIENT
#id_client
*Client
*CNP
*Adresa
°Reducere
PRESTARE
#id_prestare
*Data
COMANDA
#id_comanda
*Data
*Nr_buc
FACTURA
#id_factura
*Data
°Observatii
are
apartine contine
apar
tine
apare
furnizeaza
produce
este produs
se afla
contine ap
artine
are face
este facuta
cere
est
e o
feri
ta
contine
apartine
realizeaza
este realizat
preia este preluata
Tabele in Oracle
Angajati
Tabele in Oracle
Servicii
Tabele in Oracle
Prestari
Tabele in Oracle
Clienti
Tabele in Oracle
Comenzi
Tabele in Oracle
Facturi
Tabele in Oracle
Producatori
Tabele in Oracle
Furnizori
Tabele in Oracle
Contracte
Tabele in Oracle
Furnizari
Tabele in Oracle
Produse
Bibliografie
Alan Shalloway, James Trott – Design Patterns Explained: A New
Perspective on Object-Oriented Design, 2nd Edition, Addison Wesley
Professional, 2005
Avornicului C., Tomai N, Avornicului M. – Proiectarea obiectuala si
UML, Editura RISOPRINT, Cluj-Napoca, 2004
Pantiru Mariana, Pantiru Ionut – Baze de date, Editura L&S Informat
Bucureşti, 1999
Doina Narcisa Merlan – Aplicatii ORACLE - SQL si PL/SQL pentru
elevii claselor a XII-a, matematica-informatica, Else, 2011
Constantin Lupsoiu – Sisteme de baze de date - fundamente teoretice,
Sitech, 2011
www.en.wikipedia.org