Sunteți pe pagina 1din 9

Scenariu-Supermaket

Lasca Loredana Adelina IE gr 2

Se realizeaza Diagrama Entitate-Relatie penrtu a surprinde activitatea in


cadrul unui supermarket local . Am ales un supermarket limitat in ceea ce
priveste cantitatea de produse.
Produsele din supermaketul nostrum le-am incadrat in 2 categorii mari si
anume : alimente si bauturi, alimentele pot de la lactate, paste fainoase, dulciuri,
carne, la legume, fructe, conserve etc iar in cateogria bauturilor putem incadra :
sucurile indifferent daca sunt natural sau nu , apa plata/mineral,laptele, etc. Am
ales un criteriu destul de important in zilele naostre in care am impartit cele 2
categorii de produse si anume daca alimentele si bauturile se incadreaza ca fiind
aliment dietetic sau nedietetic(fapt care este relevat prin procentul coloric).
Clientii tinta sunt cei din localitate persoanele care se afla intr-o zona mai
apropiata de supermarketul respective . Clientii supermaketului pot fi atat oameni
de rand cat si alte firme/magazine mai mici care se aprovizionaza direc de la
supermsrket nu mai realizeaza contracte cu diferiti furnizori.
Produsele noastre pot fii date spre vanzare sau spre donatie, spre vanzare
adica vindem clientilor de zi cu zi sau altor magazine (vom obtine venituri in
bani) , spre donatie adica alimentele care sunt aproape de termenulde expirare sunt
donate oamenilor nevoiasi sau expuse in magazine la un pret foarte foarte mic (nu
vom face profit din aceste produse). Vom investiga si decursul preturilor(istoricul
pretului).
Angajatii sunt impartiti in 2 categorii si anume vanzatori si agent gestiune
marfa diferentele dintre cele 2 categorii sunt vanzatorii vor fi platiti pe luna si
pentru a fi vanzator trebuie sa existe experienta iar agentul de gestiune marfa va fi
platit la ora si nu necesita experienta.
Creare tabele
Vom crea urmatorele tabele: Vanzari, Clienti, Localitati, Judete, Produs, Aprovizionare,Angajati,
pret, donatii, Categorie.
Creare tabela VANZARI:
create table vanzari(
numar int not null,
data date not null,
cantitate int not null,
id_produs int not null,
cif int not null,
primary key(numar),
foreign key(id_produs) references produs(id_produs),
foreign key(cif) references clienti(cif)
);
Creare tabela CLIENTI:
create table clienti(
cif int not null,
nr_inreg varchar(20) not null unique,
nume varchar(20) not null,
strada varchar(50) not null,
nr int not null,
ap int not null,
cod_postal int not null,
id_localitate int not null,
primary key(cif),
foreign key(id_localitate) references localitati(id_localitate)
);
Creare tabela Localitati:
create table localitati(
id_localitate int not null,
nume varchar(40) not null,
id_judet int not null,
primary key(id_localitate),
foreign key(id_judet) references judete(id_judet)
);
Creare tabela JUDETE:
create table judete(
id_judet int not null primary key,
nume varchar(20) not null unique
);
Creare tabela PRET:
create table pret(
data_start date not null,
pret int not null,
id_produs int not null,
primary key(data_start),
foreign key(id_produs) references produs(id_produs));
Creare tabela DONATII:
create table donatii(
numar int not null,
data date not null,
cantitate int not null,
id_produs int not null,
primary key (numar),
foreign key (id_produs) references produs(id_produs));
Creare tabela APROVIZIONARE:
create table aprovizionare(
data date not null,
nr number(10) not null,
cost int not null,
ore_lucrate int not null,
id_angajat int not null,
id_produs int not null,
primary key(data),
foreign key(id_angajat) references angajati(id_angajat),
foreign key(id_produs) references produs(id_produs)
);
Creare tabela PRODUS:
create table produs(
id_produs int not null,
nume varchar(20),
UM varchar(10),
tip_prd varchar(20),
cod_categ int not null,
primary key(id_produs),
foreign key(cod_categ) references categorie(cod)
);
Creare tabela CATEGORIE:
create table categorie(
cod int not null primary key,
valoare_calorica varchar(3) not null);
Creare tabela ANGAJATI:
create table angajati(
id_angajat number(5) primary key,
nume varchar(20) not null,
prenume varchar(20) not null,
data_nasterii date,
data_angajarii date,
nr_contract_munca number(5),
salar number,
salar_orar number,
experienta varchar(10),
tip_ang varchar(20));

Populare tabele

Inserare in tabela produse :


Insert into produse values (‘11223344’,’j01/256/99’,’Pagus’,’Abrudului’, ‘8’,’ 1’,’ 515200’ , ‘1’);
Insert into produse values (‘11553344’,’j02/256/88’,’Promenada’,’Marasti’, ‘6’,’2’,’ 515200’ , ‘1’);
Insert into produse values (‘22553344’,’j03/256/88’,’Pangasius’,’Macesirlor’, ‘6’,’ 2’,’ 515200’ , ‘2’);
Insert into produse values (‘22553366’,’j03/564/88’,’Paloma’,’Aurel Vlaicu’, ‘26’,’ 1’,’ 515200’ , ‘3’);
Insert into produse values (‘22553377’,’j03/564/77’,’Loris’,’florilor’, ‘10’,’ 12’,’ 515200’ , ‘4’);

11223344 j01/256/99 Pagus Abrudului 8 1 515200 1

11553344 j02/256/88 Promenada Marasti 6 2 515200 1

22553344 j03/256/88 Pangasius Macesilor 6 2 515200 2

22553366 j03/546/88 Paloma Aurel Vlaicu 26 1 515200 3

22553377 j03/546/77 Loris florilor 10 12 515100 4


La fel se procedeaza si pentru celelalte tabele, doar valorile vor fi corespunzatoare.

Inserarea unui atribut de tip CLOB:


Vom introduce in tabela angajati o noua coloana “bonus_pt_angajati” de tip clob in
care vom introduce sumele in lei primate bonus pentru fiecare nivel de experienta al
angajatilor.
Alter table angajati
Add bonus_pt_experienta clob;

Update angajati set bonus_pt_experienta=’500’ where experienta=’avansat’;


Update angajati set bonus_pt_experienta=’250’ where experienta=’medie’;
Update angajati set bonus_pt_experienta=’100’ where experienta=’slab’;
Update angajati set bonus_pt_experienta=’0’ where experienta=’’;

Proceduri:
1.Procedura adaugareAngajat_fara_param inseriaza un nou angajat iar informatile care
urmeaza a fi adaugate se vor face din cadrul comenzii “insert”. Procedura fara parametrii.
CREATE OR REPLACE PROCEDURE adaugareAngajat_fara_param IS
p_id_angajat angajati.id_angajat%TYPE;
p_nume angajati.nume%TYPE;
p_prenume angajati.prenume%TYPE;
p_data_nasterii angajati.data_nasterii%TYPE;
p_data_angajarii angajati.data_angajarii%TYPE;
p_nr_contract_munca angajati.nr_contract_munca%TYPE;
p_salar angajati.salar%TYPE;
p_salar_orar angajati.salar_orar%TYPE;
p_experienta angajati.experienta%TYPE;
p_tip_ang angajati.tip_ang%TYPE;
p_bonus_pt_experienta angajati.bonus_pt_experienta%TYPE;
BEGIN
p_id_angajat:='6';
p_nume:='Popsor';
p_prenume:='Maria';
p_data_nasterii:='10-Jan-1990';
p_data_angajarii:='10-Jan-2005';
p_nr_contract_munca:='10';
p_salar:='1500';
p_salar_orar:='';
p_experienta:='avansat';
p_tip_ang:='vanzator';
p_bonus_pt_experienta:='500';
INSERT INTO
angajati(id_angajat,nume,prenume,data_nasterii,data_angajarii,nr_contract_munca,salar,salar_or
ar,experienta,tip_ang,bonus_pt_experienta)
VALUES(p_id_angajat,p_nume,p_prenume,p_data_nasterii,p_data_angajarii,p_nr_contract_mu
nca,p_salar,p_salar_orar,p_experienta,p_tip_ang,p_bonus_pt_experienta);
DBMS_OUTPUT.PUT_LINE('Angajatul a fost introdus cu success!');
END;
In continuare vom apela procedura:
begin
adaugareAngajat_fara_param;
end;
Produsul a fost introdus in tabela produs.

CREARE PACKAGE
Se va crea un package pentru procedurile si functiile urmatoare.

2.Procedura adauga_produs adauga cate un produs nou pe baza unui id pe care il primeste
ca si parametru. Procedura apeleaza procedura privata afiseaza_mesaj.
CREATE OR REPLACE PROCEDURE afiseaza_mesaj IS
BEGIN
DBMS_OUTPUT.PUT_LINE('Ati adaugat un nou produs!');
END afiseaza_mesaj;
PROCEDURE adauga_produs(
p_id_produs produs.id_produs%TYPE,
p_nume produs.nume%TYPE,
p_um produs.um%TYPE,
p_tip_prd produs.tip_prd%TYPE,
p_cod_categ produs.cod_categ%TYPE,
p_tara_provenienta produs.tara_provenienta%TYPE) IS
BEGIN
INSERT INTO produs(id_produs,nume,um,tip_prd,cod_categ,tara_provenienta)
VALUES(p_id_produs,p_nume,p_um,p_tip_prd,p_cod_categ,p_tara_provenienta);
afiseaza_mesaj;
END adauga_produs;

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