Biologie | Chimie | Didactica | Fizica | Geografie | Informatica | |
Istorie | Literatura | Matematica | Psihologie |
CUPRINS
1. Formularea problemei
2. Notiuni introductive
3. Diagrama ERD
4. Maparea diagramei(Relatii entitati-atribute)
5. Regulile afacerii
6. Analiza CRUD
7. Structuri de date folosite
8. Detalii tehnice de implementare
9. Bibliografie
I. Formularea problemei
Lantul de magazine alimentare "PROTI" doreste realizarea unei baze de date in care sa retina datele despre vanzarile realizate de fiecare angajat al magazinului, precum si amanuntele(detaliile)produselor vandute.
Fiecare punct de desfacere al acestei firme va avea un numar de produse in gestiune, dar si un numar de comenzi catre distribuitori.
In urma datelor colectate se va realiza o clasificare al tipului de produs cel mai bine vandut, realizandu-se astfel un studiu de piata in vederea preferintelor consumatorilor.
Rezolvarea propusa de mine se refera la o baza de date in care se poate tine evidenta atat a produselor vandute, cat si a angajatilor. Astfel se poate face o clasificare a angajatilor in functie de vanzari, o clasificare a intervalului de timp in care anumite produse se vand cel mai bine, precum si o clasificare a producatorilor cu cele mai multe produse vandute pe piata.
II. Notiuni introductive
CE ESTE ORACLE?
Oracle consta dintr-un set complet de constructori de aplicatii si produse pentru utilizatori, cautand sa asigure solutii complete in tehnologia informatiei.
Aplicatiile Oracle sunt portabile peste un numar mare de statii de lucru si sisteme de operare, de la calculatoare personale la procesoare paralele.
Oracle este inzestrat cu un flexibil Sistem de Management al Bazelor de Date(DBMS)-Serverul Oracle-pentru stocarea si managementul informatiei utilizate de aplicatii.
Ultimul server Oracle, ORACLE 7, conduce o baza de date cu toate avantajele unei structuri relationale, avand in plus capacitatea de a stoca si executa obiecte de tip baza de date precum proceduri si mecanisme de siguranta.
Despre Serverul ORACLE
Serverul Oracle cuprinde un DBMS care controleaza:
Stocarea de date in sfera bazelor de date dedicate
Recuperarea de date pentru aplicatii utilizand tehnici de optimizare adecvate
Securitatea bazelor de date si a taskurilor permise pentru anumiti utilizatori
Consistenta si protectia datelor, incluzand arhivarea taskurilor si mecanisme de cautare
Comunicarea si integritatea informatiilor, cand bazele de date sunt distribuite intr-o retea.
Aplicatiile Oracle trebuie rulate pe acelasi computer la fel ca si Serverul Oracle.
Alternativ, aplicatiile si utilitarele utilizate de ele pot sa fie rulate pe un sistem local pentru utilizator (sistemul 'client'), in timp ce Oracle DBMS ruleaza pe un altul (sistemul 'server').
In acest mediu 'client-server', un numar mare de resurse de calcul pot fi rulate. De exemplu, o aplicatie 'Oracle Forms' poate rula pe un computer personal client, in timp ce accesarea datelor este condusa conventional de un Server Oracle pe un computer central
SQL, SQL*PLUS si PL/SQL
SQL, SQL*PLUS si PL/SQL sunt
facilitatile Oracle care vor fi discutate in acest curs. Este important de
inteles in fiecare caz diferentele lor, rolul si locul lor in familia Oracle.
*SQL
este limbajul utilizat pentru a accesa o baza de date relationala, inclusiv Oracle.
poate fi utilizat de fiecare instrument Oracle, cand accesul la baza de date este necesar.
*PL/SQL
este limbajul Procedural al lui Oracle pentru scrierea aplicatiilor si pentru manipularea datelor in afara bazei de date.
poate include un subset al comenzilor SQL, cand accesul la baza de date este cerut
este accesibil in fiecare din produsele CDE. De asemenea in insusi serverul Oracle(daca optiunea procedurala este instalata).
*SQL*Plus
este un produs Oracle in care limbajele SQL si PL/SQL pot fi utilizate.
de asemenea are propriul limbaj de comanda pentru controlul comportarii produsului si pentru formatarea rezultatelor interogarilor SQL.
In concluzie, SQL si PL/SQL sunt limbaje care sunt utilizate intr-un numar de produse Oracle . SQL*PluS este unul din produsele pe care acestea se afla. Noi vom discuta acum principiile de baza ale bazelor de date relationale, pentru care Oracle este un exemplu.
Abordarea relationala
Principiile modelului relational au fost pentru prima data expuse de Dr. E. F. Codd, care in iunie 1970 a publicat un articol numit 'Un model relational de date pentru marile banci de date'. In acest articol Dr. Codd a propus modelul 'relational' pentru sistemele de baze de date.
Baza de date relationala este perceputa de utilizatorii sai ca o colectie de tabele bidimensionale care sunt usor de inteles. Sunt doar patru concepte de inteles:
Modelul relational imita procesele unei ramuri a algebrei cunoscuts sub numele de 'Algebra relationala'. Aceste procese implica:
O Relatie poate fi inteleasa ca o Tabela. Modificarea datelor este realizata prin operatiile relationale aplicate asupre tabelelor.
Operatori relationali
Operatorii relationali sunt definiti mai jos:
Relatia/Descrierea
Selectia
este o operatie care preia si afiseaza datele din relatie. Este posibil sa se afiseze toate randurile sau doar randurile care indeplinesc o conditie sau mai multe conditii . Aceasta este de multe ori numita 'submultime orizontala'
Proiectia
este operatia care afiseaza anumite coloane din relatie si de aceea este numita 'submultime verticala'.
Produs
este rezultatul obtinut cand randurile a doua multimi de date sunt concatenate conform conditiilor specificate.
Join
este rezultatul obtinut cand randurile a doua multimi de date sunt concatenate conform conditiilor specificate.
Reuniunea
afiseaza toate randurile care apar in una, in cealalta sau in ambele din cele doua relatii.
Intersectia
afiseaza toate randurile care apar in ambele din cele doua relatii.
Diferenta
afiseaza randurile care apar numai intr-o singura relatie (SQL utilizeaza operatorul minus ).
Proprietati ale bazelor de date relationale
O baza de date relationala apare ca o colectie de relatii(tabele) catre utilizator.
Formatul coloanei/randului este familiar si usor pentru vizualizarea datelor .
Exista o multime de operatori pentru partitionarea si combinarea relatiilor(selectia, proiectia, produsul, joinul, uniunea, intersectia, diferenta).
Nu sunt pointeri expliciti;conexiunile sunt facute numai pe baza datelor.
Limbajul utilizat pentru interogarea bazei de date este non-procedural si similar limbii engleze.
Utilizatorul nu specifica calea de acces si nu are nevoie sa stie cum este informatia aranjata fizic.
Comenzile pentru refacerea datelor si acelea pentru realizarea schimbarilor in baza de date sunt incluse intr-un singur limbaj SQL.
Exista o independenta totala a datelor.
Proprietatile relatiilor tabelare
O singura tabela are urmatoarele proprietati:
Nu exista randuri duplicate
Nu exista nume de coloana duplicate
Ordinea randurilor este neimportanta
Ordinea coloanalor este neimportanta
Valorile sunt atomice(nedecompozabile).
IV. Relatiile entitati-atribute
PRODUS:#cod_produs, *nume_produs, *pretul, *tipul_produsului, sdata_expirarii,
s data_fabricatiei;
ANGAJAT:#id_angajat, *nume, *prenume, *program, s adresa, s data_angajarii,
s salariul;
FACTURA:#id_factura, *nume_produs, *numar_produse, *data_facturarii, *valoarea_facturii, s mod_plata
CLIENT id_client, *nume_firma, soras
STOC:#id_stoc, *numar_de_produse, *maximul_stocului, s data_stocarii;
DEPOZIT:#id_depozit, *nume, s adresa, soras, s tara, scod_postal
DISTRIBUITOR:#id_distribuitor, *nume, s adresa, s oras, s tara;
REGIUNE:#id_regiune, *nume;
1. Fiecare angajat poate facturauna sau mai multe facturi.
Fiecare factura poate fi data de un singur angajat.
2. Fiecare client poate plati una sau mai multe facturi.
Fiecare factura este platita de un singur client.
3. Fiecare client isi are sediul intr-o singura regiune.
Fiecare regiune are unul sau mai multi clienti.
4. Fiecare produs poate fi vandut de un singur angajat.
Fiecare angajat poate vinde unul sau mai multe produse.
6. Fiecare stoc poate contine unul sau mai multe produse.
Fiecare produs poate fi pe un singur stoc.
7. Fiecare stoc poate fi pe un singur depozit.
Fiecare depozit poate avea unul sau mai multe stocuri.
8. Fiecare distribuitor poate preia comenzi pentru unul sau mai multe produse.
Fiecare produs poate fi distribuit de un singur distribuitor.
9. Fiecare depozit poate fi intr-o singura regiune.
Fiecare regiune poate avea unul sau mai multe depozite.
10. Fiecare distribuitor poate fi intr-o singura regiune.
Fiecare regiune poate avea unul sau mai multi distribuitori.
PRODUSUL
NUME COLOANA |
TIP COLOANA |
TIP CHEIE |
OPTIONALITATE |
cod_produs |
NUMBER |
Pk |
* |
nume_produs |
VARCHAR 2 |
* |
|
pretul |
NUMBER |
* |
|
tip_produs |
VARCHAR 2 |
* |
|
data_expirarii |
DATE |
s |
|
data_fabricarii |
DATE |
s |
FACTURA
NUME COLOANA |
TIP COLOANA |
TIP CHEIE |
OPTIONALITATE |
id_factura |
NUMBER |
Pk |
* |
nume_produse |
VARCHAR 2 |
* |
|
numar_produse |
NUMBER |
* |
|
data_facturarii |
DATE |
|
* |
valoarea_facturii |
NUMBER |
* |
|
mod_plata |
VARCHAR 2 |
s |
|
client_id |
NUMBER |
FK |
* |
ANGAJAT
NUME COLOANA |
TIP COLOANA |
TIP CHEIE |
OPTIONALITATE |
id_angajat |
NUMBER |
Pk |
* |
nume |
VARCHAR 2 |
* |
|
prenume |
VARCHAR 2 |
* |
|
program |
DATE |
* |
|
data_angajarii |
DATE |
s |
|
adresa |
VARCHAR 2 |
s |
|
salariul |
NUMBER |
* |
CLIENT
NUME COLOANA |
TIP COLOANA |
TIP CHEIE |
OPTIONALITATE |
id_client |
NUMBER |
PK |
* |
nume_client(firma) |
VARCHAR 2 |
* |
|
oras |
VARCHAR 2 |
s |
STOC
NUME COLOANA |
TIP COLOANA |
TIP CHEIE |
OPTIONALITATE |
id_stoc |
NUMBER |
Pk |
* |
numarul-de_produse |
NUMBER |
* |
|
maximul_de_produse |
NUMBER |
* |
|
data_stocarii |
DATE |
s |
|
produs_id |
NUMBER |
FK |
* |
DEPOZIT
NUME COLOANA |
TIP COLOANA |
TIP CHEIE |
OPTIONALITATE |
id_depozit |
NUMBER |
Pk |
* |
nume |
VARCHAR 2 |
* |
|
adresa |
VARCHAR 2 |
s |
|
oras |
VARCHAR 2 |
s |
|
tara |
VARCHAR 2 |
s |
|
cod_postal |
NUMBER |
s |
DISTRIBUITOR
NUME COLOANA |
TIP COLOANA |
TIP CHEIE |
OPTIONALITATE |
id_distribuitor |
NUMBER |
Pk |
* |
nume |
VARCHAR 2 |
* |
|
adresa |
VARCHAR 2 |
s |
|
oras |
VARCHAR 2 |
s |
|
tara |
VARCHAR 2 |
s |
REGIUNE
NUME COLOANA |
TIP COLOANA |
TIP CHEIE |
OPTIONALITATE |
id_regiune |
NUMBER |
Pk |
* |
nume |
VARCHAR 2 |
* |
V. Regulile afacerii
Firma " PROTI" trebuie sa aiba pentru fiecare depozit aflat intr-o anumita regiune, un anumit stoc al produselor existente intr-un anumit moment.
Fiecare angajat trebuie sa verifice daca in magazin este sau nu produsul respectiv.
In cazul in care un anumit produs nu se afla in stoc, angajatii vor inainta o comanda la distribuitor.
VI. Analiza CRUD
CREARE=se creaza un stoc de produse ce serveste drept inventar, se
creaza fisa angajatului;
RETRIEVE=trebuie sa avem un stoc pentru a sti daca avem sau nu
un anumit produs;
UPDATE=se poate updata fisa angajatului, daca acesta isi schimba
adresa, numele, starea matrimoniala, etc;
DELETE=se poate sterge un produs de pe lista de inventar sau o comanda
pentru distribuitori.
VII. Structuri de date folosite
In structura bazei de date, am folosit 8 tabele corespunzatoare fiecarei entitati din ERD. Felul in care sunt definite relatiile dintre entitati se vor face prin intermediul cheilor straine reprezentate de id-urile entitatilor.
VIII. Detalii tehnice de implementare
CREATE TABLE produs( cod_produsNUMBER(4) PRIMARY KEY NOT NULL,
nume_produs VARCHAR 2(20),
pretul NUMBER(3),
tipul_produsului VARCHAR 2(25),
data_expirarii DATE,
data_fabricarii DATE);
cod_produs |
nume_produs |
pretul |
tipul_produsului |
data_expirarii |
data_fabricarii |
VIVA |
1, 5 lei |
alimentar | |||
PEPSI |
3, 5 lei |
bauturi racotitoare | |||
DANONINO |
2 lei |
alimentar | |||
PANTENE |
10 lei |
diverse | |||
CAMEY |
1, 5 lei |
diverse |
CREATE TABLE factura(id_factura NUMBER(3)PRIMARY KEY NOT NULL,
nume_produse VARCHAR 2(20),
numar_produse NUMBER(45),
data_facturari DATE,
valoarea_facturii NUMBER(18),
mod_plata VARCHAR 2(6),
client_id NUMBER(12) FOREIGN KEY);
id_factura |
nume_produs |
numar_produse |
data_facturarii |
valoarea |
mod_plata |
Client_id |
7DAYS |
cash | |||||
PALLETE |
567 lei |
cash | ||||
GIUSTO |
1000 lei |
card | ||||
ORBIT |
100 lei |
card | ||||
TEMPO |
300 lei |
card | ||||
COCA-COLA |
450 lei |
card |
CREATE TABLE client(id_client VARCHAR 2(20) PRIMARY KEY NOT NULL,
nume_client VARCHAR 2(15),
oras VARCHAR 2(20)
factura_id NUMBER(4) FOREIGN KEY);
id_client |
nume_client |
oras |
Jucanut |
Botosani |
|
Janir |
Harlau |
|
Patrusa |
iasi |
CREATE TABLE angajat(id_angajat NUMBER(3) PRIMARY KEY NOT NULL,
nume VARCHAR 2(45),
prenume VARCHAR 2(50),
program DATE,
data_angajarii DATE,
adresa VARCHAR 2(45),
salariul NUMBER(4)
);
id_angajat |
nume |
prenume |
program |
data_agajarii |
adresa |
salariul |
Ionescu |
Ion |
Iasi |
700 lei |
|||
Rusu |
Maria |
Tomesti |
450 lei |
|||
Neamtu |
Ionela |
Iasi |
800lei |
|||
Rucar |
Marcica |
Iasi |
670 lei |
CREATE TABLE stoc(id_stoc NUMBER(4) PRIMARY KEY NOT NULL,
numarul_de_produseNUMBER(67),
maximul_stocului NUMBER(100),
data_stocarii DATE,
produs_id NUMBER (4) FOREIGN KEY
);
id_stoc |
numarul_de_produse |
maximul_stocului |
data_stocarii |
produs_id |
CREATE TABLE depozit(id_depozit NUMBER(3)PRIMARY KEY NOT NULL,
nume VARCHAR 2(45),
adresa VARCHAR 2(56),
orasul VARCHAR 2(67),
tara VARCHAR 2(78),
cod_postal NUMBER(10)
);
id_depozit |
nume |
adresa |
orasul |
tara |
cod_postal |
Vinnom |
str, albinelor, nr. . 6 |
Tg. mures |
Romania | ||
Adrio |
str. petru pavel, nr. 45 |
Iasi |
Romania |
CREATE TABLE distribuitor(id_distribuitor NUMBER(5)PRIMARY KEY
NOT NULL,
nume VARCHAR 2(56),
adresa VARCHAR 2(67),
oras VARCHAR 2(23),
tara VARCHAR 2(34)
);
id_depozit |
nume |
adresa |
orasul |
tara |
cod_postal |
Vinnom |
str, albinelor, nr. . 6 |
Tg. mures |
Romania | ||
Adrio |
str. petru pavel, nr. 45 |
Iasi |
Romania |
CREATE TABLE regiune(id_regiune NUMBER(3) PRIMARY KEY NOT NULL,
nume VARCHAR 2(56)
);
id_depozit |
nume |
adresa |
orasul |
tara |
cod_postal |
Vinnom |
str, albinelor, nr. . 6 |
Tg. mures |
Romania | ||
Adrio |
str. petru pavel, nr. 45 |
Iasi |
Romania |
1. SELECT *FROM Angajat
ORDER BY salariul and oras!='Iasi'
id_angajat |
nume |
prenume |
program |
data_agajarii |
adresa |
salariul |
Rusu |
Maria |
Tomesti |
450 lei |
2. SELECT *FROM Factura
WHERE mod_plata='card' and ORDER BY id_factura DESC
id_factura |
nume_produs |
numar_produse |
data_facturarii |
valoarea |
mod_plata |
Client_id |
ORBIT |
100 lei |
card | ||||
TEMPO |
300 lei |
card | ||||
COCA-COLA |
450 lei |
card | ||||
GIUSTO |
1000 lei |
card |
3. SEELCT *FROM Clienti
WHERE nume_client LIKE '-J%' and oras='Harlau'
id_client |
nume_client |
oras |
Janir |
Harlau |
IX. BIBIOGRAFIE
https://academy. oracle. com0. 03 seconds
Copyright © 2024 - Toate drepturile rezervate