Sunteți pe pagina 1din 19

1.

Prezentare baza de date


Firma Lexus dorește să țină contabilitatea vânzărilor efectuate.
În acest scop, firma furnizează informațiile de care are nevoie:
1. Mașini – firma dorește să aibă o gestiune a mașinilor vândute. Se vor reține:
 Modelul mașinii;
 Id-ul pachetului de dotări;
 Culoarea exteriorului;
 Culoarea interiorului;
 Seria șasiului;
 Motorizarea mașinii;
 Prețul mașinii (cu TVA inclus).
2. Clienți - firma dorește să aibă o gestiune a clienților săi. Se vor reține:
 Numele clientului;
 Prenumele clientului;
 CNP client;
 Statul de rezidență;
 Telefon;
 Email;
 Venitul lunar.
3. Dealer - firma dorește să aibă o gestiune a dealerilor existenți. Se vor reține:
 Denumirea dealerului;
 Adresa reprezentanței;
 Telefon;
 Email.
4. Discount - firma dorește să aibă o gestiune a discounturilor practicate. Se vor reține:
 Denumirea discountului;
 Valoarea acestuia.
5. Contract firma dorește să aibă o gestiune a contractelor. Se vor reține:
 Data încheierii contractului;
 Tipul plății;
 Ce mașină s-a vândut pe acest contract;
 Cărui client i s-a vândut mașina;
 De la ce dealer s-a efectuat vânzarea;
 Ce discount s-a aplicat.

Page 1 of 19
2.Diagrama entitate-relație:

3.Diagrama conceptuală:

Page 2 of 19
4.Implemenatre diagrama
DECLARE
v_sir varchar2(400);
BEGIN
v_sir:='create table DEALER ( ID_DEALER number(5), DENUMIRE varchar2(20),
ADRESA varchar2(40), TELEFON varchar2(12), EMAIL varchar2(40) )';
dbms_output.put_line(v_sir);
execute immediate v_sir;
END;
/

BEGIN
execute immediate
'create table CAR (
ID_CAR number(10),
MODEL varchar2(10),
ID_PACHET number (10),
CULOARE_EXT varchar2(10),
CULOARE_INT varchar2(10),
SERIE_SASIU varchar2(15),
MOTORIZARE varchar2(10),
PRET number(10) )';
END;
/
BEGIN
execute immediate
'create table FEATURES (
ID_FEATURE number(10),
DESCRIERE varchar2(20) )';
END;
/
BEGIN

Page 3 of 19
execute immediate
'create table HAS_FEATURE (
ID_FEATURE number(10),
ID_CAR number(10) )';
END;
/

BEGIN
execute immediate
'create table CLIENT (
ID_CLIENT number(10),
NUME varchar2(20),
PRENUME varchar2(20),
CNP varchar2(13),
ADRESA varchar2(40),
TELEFON varchar2(12),
EMAIL varchar2(40),
VENIT_MEDIU number(10),
STARE_CIVILA varchar2(10) )';
END;
/
DECLARE
v_sir varchar2(400);
BEGIN
v_sir:='create table CONTRACT (
ID_CONTRACT number(10),
ID_CLIENT number(10),
ID_CAR number(10),
ID_DEALER number(5),
ID_DISCOUNT number(10),
DATA date )';
dbms_output.put_line(v_sir);
execute immediate v_sir;
END;
/

DECLARE
v_sir varchar2(400);
BEGIN
v_sir:='create table DISCOUNT (
ID_DISCOUNT number(10),
DENUMIRE varchar2(20),
VALOARE number(10,2) )';
dbms_output.put_line(v_sir);
execute immediate v_sir;
END;
/

DECLARE
v_sir varchar2(400);
BEGIN

Page 4 of 19
v_sir:='alter table DEALER add constraint ID_DEALER_PK primary key
(ID_DEALER)';
dbms_output.put_line(v_sir);
execute immediate v_sir;
END;
/

BEGIN
execute immediate 'alter table DEALER add constraint DENUMIRE_NN check
("DENUMIRE" IS NOT NULL)';
END;
/

DECLARE
v_sir1 varchar2(400);
v_sir2 varchar2(400);
v_sir3 varchar2(400);
v_sir4 varchar2(400);
v_sir5 varchar2(400);
BEGIN
v_sir1:='alter table CAR add constraint ID_CAR_PK primary key (ID_CAR)';
v_sir2:='alter table CAR add constraint SERIE_SASIU_UQ unique
(SERIE_SASIU)';
v_sir3:='alter table CAR add constraint MODEL_NN check ("MODEL" IS NOT
NULL)';
v_sir4:='alter table CAR add constraint PACHET_NN check ("ID_PACHET" IS
NOT NULL)';
v_sir5:='alter table CAR add constraint PRET_NN check ("PRET" IS NOT
NULL)';
DBMS_OUTPUT.PUT_LINE (v_sir1);
execute immediate v_sir1;
DBMS_OUTPUT.PUT_LINE (v_sir2);
execute immediate v_sir2;
DBMS_OUTPUT.PUT_LINE (v_sir3);
execute immediate v_sir3;
DBMS_OUTPUT.PUT_LINE (v_sir4);

Page 5 of 19
execute immediate v_sir4;
DBMS_OUTPUT.PUT_LINE (v_sir5);
execute immediate v_sir5;
END;
/

BEGIN
execute immediate 'alter table CLIENT modify ADRESA varchar2(2)';
END;
BEGIN
execute immediate 'alter table CLIENT rename column ADRESA to STAT';
END;
BEGIN
execute immediate 'alter table CLIENT add constraint ID_CLIENTS_PK primary
key (ID_CLIENT)';
execute immediate 'alter table CLIENT add constraint NUME_NN check ("NUME"
IS NOT NULL)';
execute immediate 'alter table CLIENT add constraint STAT_NN check ("STAT"
IS NOT NULL)';
execute immediate 'alter table CLIENT add constraint TELEFON_NN check
("TELEFON" IS NOT NULL)';
END;

Page 6 of 19
BEGIN
execute immediate 'alter table CONTRACT add constraint ID_CONTRACT_PK
primary key (ID_CONTRACT)';
execute immediate 'alter table CONTRACT add constraint DATA_NN check
("DATA" IS NOT NULL)';
END;
/
BEGIN
execute immediate 'alter table DISCOUNT add constraint ID_DISCOUNT_PK
primary key (ID_DISCOUNT)';
END;
/
BEGIN
execute immediate 'alter table CONTRACT add constraint CONTRACT_DISCOUNT
foreign key (ID_DISCOUNT) references DISCOUNT (ID_DISCOUNT)';
execute immediate 'alter table CONTRACT add constraint CONTRACT_CLIENT
foreign key (ID_CLIENT) references CLIENT (ID_CLIENT)';
execute immediate 'alter table CONTRACT add constraint CONTRACT_CAR
foreign key (ID_CAR) references CAR (ID_CAR)';
execute immediate 'alter table CONTRACT add constraint CONTRACT_DEALER
foreign key (ID_DEALER) references DEALER (ID_DEALER)';
END;
/

Page 7 of 19
BEGIN
execute immediate 'alter table CLIENT drop column STARE_CIVILA cascade
constraints';
END;
BEGIN
execute immediate 'alter table CONTRACT add TIP_PLATA varchar2(10)';
END;

5.Adaugare informatii in tabele


BEGIN
insert into DEALER ( ID_DEALER, DENUMIRE, ADRESA, TELEFON, EMAIL)
values (1, 'Kendall Lexus', '5th Avenue AK', '8886933719', null );
insert into DEALER ( ID_DEALER, DENUMIRE, ADRESA, TELEFON, EMAIL)
values (2, 'Huntsville', 'Huntsville, AL', '8807219560',
'sales@lexusofhuntsville.com');
insert into DEALER ( ID_DEALER, DENUMIRE, ADRESA, TELEFON, EMAIL)
values (3, 'Lexus of Mobile', 'Government Boulevard, AL', '8882200922',
'sales@lexusmobile.com');
insert into DEALER ( ID_DEALER, DENUMIRE, ADRESA, TELEFON, EMAIL)
values (4, 'Arlington', 'East Dundee Road, IL', '8882024838',
'alip.sales@rohrman.com');
insert into DEALER ( ID_DEALER, DENUMIRE, ADRESA, TELEFON, EMAIL)
values (5, 'Bredemann', 'Waukegan Road, IL', '8475105507',
'lexussales@bredemann.com');
insert into DEALER ( ID_DEALER, DENUMIRE, ADRESA, TELEFON, EMAIL)
values (6, 'Bay Ridge', '5th Avenue, NY', '8669275745',
'sales@bayridgelexus.com');
insert into DEALER ( ID_DEALER, DENUMIRE, ADRESA, TELEFON, EMAIL)
values (7, 'Burdick', 'Circle Drive, NY', '3154587800',
'lexussales@burdickcars.com');
insert into DEALER ( ID_DEALER, DENUMIRE, ADRESA, TELEFON, EMAIL)
values (8, 'Dorschel', 'W. Henrietta Road, NY', '8007810863',
'mail@dorschel.com');
insert into DEALER ( ID_DEALER, DENUMIRE, ADRESA, TELEFON, EMAIL)
values (9, 'Southampton', 'County Road, NY', '8774726016',
'mikep@lexusofsouthampton.com');
insert into DEALER ( ID_DEALER, DENUMIRE, ADRESA, TELEFON, EMAIL)
values (10, 'Northside', 'North Freeway, TX', '8002892998',
'northside_lexus@northsidelexus.com');
insert into DEALER ( ID_DEALER, DENUMIRE, ADRESA, TELEFON, EMAIL)
values (11, 'Park Place', 'Preston Road, TX', '8888298831',
'sales@parkplacetexas.com');

Page 8 of 19
END;/

Page 9 of 19
Page 10 of 19
BEGIN
insert into DISCOUNT (ID_DISCOUNT,
DENUMIRE, VALOARE)
values (1, 'fidelitate', 0.15);
insert into DISCOUNT (ID_DISCOUNT,
DENUMIRE, VALOARE)
values (2, 'multi', 0.2);
insert into DISCOUNT (ID_DISCOUNT,
DENUMIRE, VALOARE)
values (3, 'promotie', 0.1);
insert into DISCOUNT (ID_DISCOUNT,
DENUMIRE, VALOARE)
values (4, 'corporate', 0.4);
insert into DISCOUNT (ID_DISCOUNT,
DENUMIRE, VALOARE)
values (5, 'fara tva', 0.24);
END;
/

BEGIN
insert into CAR ( ID_CAR, MODEL, ID_PACHET, CULOARE_EXT, CULOARE_INT,
SERIE_SASIU, MOTORIZARE, PRET)
values (100, 'RXH', 150, 'black', 'beige', 'U17T89E560B7S64', '2.0V', 50000);
insert into CAR ( ID_CAR, MODEL, ID_PACHET, CULOARE_EXT, CULOARE_INT,
SERIE_SASIU, MOTORIZARE, PRET)
values (110, 'RXH', 150, 'black', 'beige', 'B1789R5W607QA65', '1.8V', 52000);
insert into CAR ( ID_CAR, MODEL, ID_PACHET, CULOARE_EXT, CULOARE_INT,
SERIE_SASIU, MOTORIZARE, PRET)
values (120, 'RXH', 100, 'gray', 'black', 'Q1789VZ56E07N66', '1.8V', 50000);
insert into CAR ( ID_CAR, MODEL, ID_PACHET, CULOARE_EXT, CULOARE_INT,
SERIE_SASIU, MOTORIZARE, PRET)
values (130, 'RXH', 100, 'black', 'beige', 'N178VST95607Y67', '1.8V', 49000);
insert into CAR ( ID_CAR, MODEL, ID_PACHET, CULOARE_EXT, CULOARE_INT,
SERIE_SASIU, MOTORIZARE, PRET)
values (140, 'ES', 150, 'black', 'black', 'MQ1789X560G7T68', '1.6V', 35000);
insert into CAR ( ID_CAR, MODEL, ID_PACHET, CULOARE_EXT, CULOARE_INT,
SERIE_SASIU, MOTORIZARE, PRET)
values (150, 'ES', 100, 'gray', 'black', 'E1789V5H6SS0Y69', '1.6V', 38000);
insert into CAR ( ID_CAR, MODEL, ID_PACHET, CULOARE_EXT, CULOARE_INT,
SERIE_SASIU, MOTORIZARE, PRET)
values (160, 'ES', 150, 'gray', 'black', 'V1AA7895T60W770', '2.0V', 34000);
insert into CAR ( ID_CAR, MODEL, ID_PACHET, CULOARE_EXT, CULOARE_INT,
SERIE_SASIU, MOTORIZARE, PRET)
values (170, 'LS', 50, 'black', 'beige', 'W17GE84B5607R57', '1.8V', 67000);
insert into CAR ( ID_CAR, MODEL, ID_PACHET, CULOARE_EXT, CULOARE_INT,
SERIE_SASIU, MOTORIZARE, PRET)
values (180, 'LS', 50, 'black', 'beige', 'Y17GE8H95607R57', '1.8V', 67000);
insert into CAR ( ID_CAR, MODEL, ID_PACHET, CULOARE_EXT, CULOARE_INT,
SERIE_SASIU, MOTORIZARE, PRET)
values (190, 'LS', 150, 'red', 'beige', 'G178R95ER607H59', '2.0V', 51000);
insert into CAR ( ID_CAR, MODEL, ID_PACHET, CULOARE_EXT, CULOARE_INT,
SERIE_SASIU, MOTORIZARE, PRET)
values (200, 'IS', 100, 'black', 'black', 'B178D9ER56R0760', '1.6V', 39000);
END;
/

Page 11 of 19
Page 12 of 19
BEGIN
insert into FEATURES (ID_FEATURE, DESCRIERE)
values (1, 'Dual Front Airbags');
insert into FEATURES (ID_FEATURE, DESCRIERE)
values (2, 'Anti-lock Braking');
insert into FEATURES (ID_FEATURE, DESCRIERE)
values (3, 'ISOFIX Mounts');
insert into FEATURES (ID_FEATURE, DESCRIERE)
values (4, ' Rear Defogge');
insert into FEATURES (ID_FEATURE, DESCRIERE)
values (5, 'Rear Parking Sensor');
END;

BEGIN
insert into HAS_FEATURE (ID_FEATURE, ID_CAR)
values(2, 100);
insert into HAS_FEATURE (ID_FEATURE, ID_CAR)
values(4, 100);
insert into HAS_FEATURE (ID_FEATURE, ID_CAR)
values(1, 160);
insert into HAS_FEATURE (ID_FEATURE, ID_CAR)
values(5, 190);
insert into HAS_FEATURE (ID_FEATURE, ID_CAR)
values(5, 110);
insert into HAS_FEATURE (ID_FEATURE, ID_CAR)
values(3, 190);
insert into HAS_FEATURE (ID_FEATURE, ID_CAR)
values(5, 150);
insert into HAS_FEATURE (ID_FEATURE, ID_CAR)
values(1, 160);
insert into HAS_FEATURE (ID_FEATURE, ID_CAR)
values(2, 200);
insert into HAS_FEATURE (ID_FEATURE, ID_CAR)
values(4, 140);
END;

Page 13 of 19
BEGIN
insert into CLIENT (ID_CLIENT, NUME, PRENUME, CNP, STAT, TELEFON, EMAIL,
VENIT)
values (5, 'Moise', 'Mihai', 1750131578934, 'NY', '8973650385',
'mihai@yahoo.com', 90000);
insert into CLIENT (ID_CLIENT, NUME, PRENUME, CNP, STAT, TELEFON, EMAIL,
VENIT)
values (10, 'Dumitru','Gabriela', 2840611458632, 'AL', '8973657385',
'gabriela@yahoo.com', '60000');
insert into CLIENT (ID_CLIENT, NUME, PRENUME, CNP, STAT, TELEFON, EMAIL,
VENIT)
values (15, 'Gravu','Adrian', 1621103002344, 'AL', '8453650385',
'adrian@yahoo.com', 70000);
insert into CLIENT (ID_CLIENT, NUME, PRENUME, CNP, STAT, TELEFON, EMAIL,
VENIT)
values (20, 'Laur', 'Alexa', 2710323468997, 'AK', '8973750385',
'alexa@yahoo.com', 120000);
insert into CLIENT (ID_CLIENT, NUME, PRENUME, CNP, STAT, TELEFON, EMAIL,
VENIT)
values (25, 'Banciu', 'Valeriu', 1870408350049, 'TX', '8002750385',
'valeriu@yahoo.com', 180000);
insert into CLIENT (ID_CLIENT, NUME, PRENUME, CNP, STAT, TELEFON, EMAIL,
VENIT)
values (30, 'Mihnea', 'Iuliana', 2681030757642, 'AK', '8973750385',
'iuliana@yahoo.com', 64000);
insert into CLIENT (ID_CLIENT, NUME, PRENUME, CNP, STAT, TELEFON, EMAIL,
VENIT)
values (35, 'Chirita', 'Ana', 2760609488621, 'IL', '8473759645',
'c_ana@yahoo.com', 80000);
insert into CLIENT (ID_CLIENT, NUME, PRENUME, CNP, STAT, TELEFON, EMAIL,
VENIT)
values (40, 'Lazar', 'Andrei', 1650827365478, 'AL', '8880100385',
'lazar_andrei@yahoo.com', 130000);
insert into CLIENT (ID_CLIENT, NUME, PRENUME, CNP, STAT, TELEFON, EMAIL,
VENIT)
values (45, 'Valentin', 'Liviu', 1631122655211, 'TX', '8000100385',
'liviu_v@yahoo.com', 58000);
insert into CLIENT (ID_CLIENT, NUME, PRENUME, CNP, STAT, TELEFON, EMAIL,
VENIT)
values (50, 'Georgescu', 'Mircea', 1740914332574, 'IL', '8470115479',
'g.mircea@yahoo.com', 87000);
END;
/

Page 14 of 19
BEGIN
insert into CONTRACT (ID_CONTRACT, ID_CLIENT, ID_CAR, ID_DEALER, ID_DISCOUNT,
DATA, TIP_PLATA)
values (15000, 30, 110, 1, null, to_date('10-10-2009','dd-mm-
yyyy'),'transfer');
insert into CONTRACT (ID_CONTRACT, ID_CLIENT, ID_CAR, ID_DEALER, ID_DISCOUNT,
DATA, TIP_PLATA)
values (16000, 35, 190, 4, null, to_date('22-10-2009','dd-mm-yyyy'),'online');
insert into CONTRACT (ID_CONTRACT, ID_CLIENT, ID_CAR, ID_DEALER, ID_DISCOUNT,
DATA, TIP_PLATA)
values (17000, 40, 200, 1, null, to_date('29-10-2009','dd-mm-yyyy'),'online');
insert into CONTRACT (ID_CONTRACT, ID_CLIENT, ID_CAR, ID_DEALER, ID_DISCOUNT,
DATA, TIP_PLATA)
values (18000, 45, 170, 11, 3, to_date('09-11-2009','dd-mm-yyyy'),'cash');
insert into CONTRACT (ID_CONTRACT, ID_CLIENT, ID_CAR, ID_DEALER, ID_DISCOUNT,
DATA, TIP_PLATA)
values (19000, 50, 100, 5, 3, to_date('19-11-2009','dd-mm-yyyy'),'finantare');
insert into CONTRACT (ID_CONTRACT, ID_CLIENT, ID_CAR, ID_DEALER, ID_DISCOUNT,
DATA, TIP_PLATA)
values (20000, 20, 140, 1, 3, to_date('04-12-2009','dd-mm-yyyy'),'online');
END;
/

Page 15 of 19
7.Subprogram stocat care utilizeaza un tip de cursor studiat
CREATE OR REPLACE PROCEDURE search_dealer
(p_id_dealer IN dealer.id_dealer%type, p_denumire OUT dealer.denumire%type)
IS
BEGIN
SELECT denumire INTO p_denumire FROM dealer
WHERE id_dealer=p_id_dealer;
IF SQL%NOTFOUND THEN dbms_output.put_line('Nu exista dealer cu acest id!');
ELSE dbms_output.put_line('Dealerul cu id-ul '||p_id_dealer||' se numeste'||
p_denumire);
END IF;
END;
/

DECLARE
v_denumire dealer.denumire%type;
BEGIN search_dealer(6,v_denumire);
END;
/

Page 16 of 19
10. Trigger LMD la nivel de comanda

CREATE OR REPLACE TRIGGER warning


BEFORE INSERT OR UPDATE OR DELETE
ON car
BEGIN
dbms_output.put_line('Se efectueaza o modificare pe tabela CAR!');
END;
/

CREATE TABLE TEMP_LOG (TIP char(1), UTILIZ varchar2(50), DATA date default
sysdate);

CREATE OR REPLACE TRIGGER discount_trigger


BEFORE INSERT OR DELETE OR UPDATE on discount
DECLARE v_tip temp_log.tip%type;
BEGIN
CASE
WHEN INSERTING THEN v_tip:='I';
WHEN UPDATING THEN v_tip:='U';
ELSE v_tip:='D';
END CASE;
INSERT INTO TEMP_LOG(TIP,UTILIZ,DATA) VALUES(v_tip,user,sysdate);
END;
/

Page 17 of 19
INSERT INTO discount (id_discount, denumire, valoare) VALUES
(6,'special',0.5);
DELETE FROM discount WHERE id_discount=6;
commit;
select * from temp_log;

11.Trigger LMD la nivel de linie


CREATE OR REPLACE TRIGGER max_pret
BEFORE INSERT OR UPDATE ON car
FOR EACH ROW
DECLARE
v_pret_max number;
BEGIN
SELECT MAX(pret) INTO v_pret_max FROM car;
IF :new.pret>v_pret_max THEN
RAISE_APPLICATION_ERROR(-20202,'Pretul depaseste limita maxima!');
END IF;
END;
/
UPDATE car SET pret=90000 WHERE id_car=400;

Page 18 of 19
12.Trigger LDD
CREATE TABLE audit_user
(nume_bd VARCHAR2(50),
user_logat VARCHAR2(30),
eveniment VARCHAR2(20),
tip_obiect_referit VARCHAR2(30),
nume_obiect_referit VARCHAR2(30),
data TIMESTAMP(3));

CREATE OR REPLACE TRIGGER audit_schema


AFTER CREATE OR DROP OR ALTER ON SCHEMA
BEGIN
INSERT INTO audit_user
VALUES (SYS.DATABASE_NAME, SYS.LOGIN_USER,
SYS.SYSEVENT, SYS.DICTIONARY_OBJ_TYPE,
SYS.DICTIONARY_OBJ_NAME, SYSTIMESTAMP(3));
END;
/

Page 19 of 19

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