I. SPECIFICAREA PROBLEMEI
O firma de inchiriat CD-uri doreste sa-si informatizeze activitatea.
Clientii pot fi numai persoane fizice si se caracterizeaza printr-un cod reprezentand seria si numarul buletinului, nume, prenume si adresa. Fiecare CD este caracterizat printr-un numar unic si tariful de inchiriere pe 24 de ore. Melodiile sunt caracterizate printr-un numar unic, titlul, durata si cantaretul care interpreteaza melodia.In momentul imprumutului se intocmeste un bon de imprumut caracterizat printr-un numar, data imprumutului si numarul de zile pentru vare a fost imprumutat CD-ul. Pe baza unui bon de imprumut se pot imprumuta unul sau mai multe CD-uri. In momentul restituirii se anuleaza bonul de imprumut, specificandu-se data la care a fost facuta restituirea. Pentru fiecare zi de intarziere se percepe o penalizare de 10% din tariful de inchiriere zilnica.
In urma acestei aplicatii putem raspunde urmatoarelor interogari:
Data scadenta pentru fiecare CD.
Penalizarile pentru fiecare CD.
Totalul incasarilor din penalizari pentru CD-uri ce au fost restituite cu mai mult de 3 zile intarziere in perioada 05.01.2005- 09.01.2005.
II. ANALIZA PROBLEMEI
IDENTIFICAREA ENTITATILOR SISTEMULUI
Din specificarea problemei se deduce ca elementele semnificative(entitatile) ale acestui sistem sunt:
Clienti
Melodii
CD
Bonuri
IDENTIFICAREA RELATIILOR SI STABILIREA CARDINALITATII ACESTORA
Intre entitatile sistemului se stabilesc relatiile urmatoare:
In momentul efectuarii unui imprumut entitatii Clienti i se intocmeste un Bonuri. Un client poate impumuta de mai multe ori, deci poate avea mai multe bonuri - cardinalitatea max n, un client poate primi sau nu un bon (clientul este in baza de date dar la un moment dat nu imprumuta - cardinalitatea minima este 0.
Un bon poate fi primit doar de un client- cardinalitatea maxima 1, un buletin trebuie sa apartina unui client - cardinalitatea minima este 1.
Intre entitatea CD si entitatea Bonuri apare relatia imprumut. Printr-un bon se pot imprumuta mai multe CD-uri - cardinalitatea maxima n, pe baza unui bon trebuie sa se imprumute cel putin un CD - cardinalitatea minima este 1.
Un cd poate fi imprumutat de mai multe ori, deci poate aparea pe mai multe bonuri - cardinalitatea maxima n, un CD poate sa nu fie deloc imprumutat- cardinalitatea minima este 0.
Intre entitatea CD si Melodii exista relatia contine.
Un CD poate contine mai multe melodii- cardinalitatea maxima n. Un CD trebuie sa contina cel putin 0 melodii- cardinalitatea minima este 1.
O melodie poate fi continuta de mai multe CD- uri- cardinalitatea maxima este n. O melodie trebuie sa fie continuta cel putin de un CD - cardinalitatea minima este 1.
0, n 1, 1
CLIENTI BONURI
Cod_client
Den_client
Adresa
Nr_bon
Data_imprumut
CD
Cod_cd
Tarif zilnic
1, n
0,n 1,n
MELODII Titlul Durata Cantaret
Cod_melodie
0,n
1,n
IDENTIFICAREA ATRIBUTELOR ENTITATILOR
Fiecare din entitatile identificate au niste caracteristici numite atributele entitatilor care participa la sistem.
Atibutele entitatilor identificate in sistemul nosru sunt:
Entitatea Clienti :cod_client(serie si numar Buletin de identitate), den_client(nume si prenume), adresa
Entitatea Melodii: Cod_melodie, Titlul, Cantaret
Entitatea CD: Cod_cd, Tarif_zilnic
Entitatea Bonuri:Nr_bon,Data_imprumut
STABILIREA CHEILOR PRIMARE ALE ENTITATILOR
Presupunem ca fiecare Clienti este identificat printr-un cod unic de identificare format din seria si numarul buletinului de identitate, numit Cod_client care nu poate fi nul si care formeaza cheie primara pentru entitatea client.
Cod_melodie reprezinta cheie primara pentru entitatea Melodii.
Nr_bon reprezinta cheie primara pentru entitatea Bonuri.
Cod_cd reprezinta cheie primara pentru entitatea CD
TRASAREA DIAGRAMEI ENTITATE-ASOCIERE (E-A)
IMPRUMUT
Nr_bon
Cod_cd
Durata
Data_imprumut
Data_restituire
Den_client Adresa
CLIENT
Cod_client
Data_imprumut
BON
Nr_bon
Cod_client
MODELUL RELATIONAL AL SISTEMULUI
Din diagrama E-A rezulta ca tabelele care vor compune baza de date vor fi:
Tabela Clienti (Cod_Client, Den_client, Adresa);
Tabela Bon (Nr_bon, Cod_client, Data imprumut);
Tabela Melodie (Cod_melodie, Titlul, Cantaret);
Tabela CD (Cod_cd, Tarif_zilnic);
Tabela Imprumut (Nr_bon, Cod_cd, Durata, Data _imprumut, Data _restituire);
Tabela Contine (Cod_cd, Cod_melodie)
II. IMPLEMENTARE
CREAREA TABELELOR
CREATE TABELE client(
cod_client VARCHAR2(12) PRIMARY KEY,
den_client VARCHAR2(30),
adresa VARCHAR2(30));
INSERT INTO client
VALUES('MS321547', 'Olteanu Doina', 'Busuiocului 8 ap.12');
INSERT INTO client
VALUES(' MS321542', 'Popoviciu Dana', 'Teatrului 12 ap.14');
INSERT INTO client
VALUES( 'MS023511''Serban Tudor','Vadului 3');
INSERT INTO client
VALUES('MS054280', 'Moraru Radu', ' Revolutiei 5');
INSERT INTO client
VALUES('MS115006', Moldovan Anca', 'Hateg 25 ap.10');
INSERT INTO client
VALUES('MS416418', 'Pascan Lavinia', 'Bucinului 1 ap.3');
INSERT INTO client
VALUES('MS667210', 'Banu Paul','Postei 8 ap.20');
INSERT INTO client
VALUES('MS358000','Cionca Emil','Moldovei 1 ap.16');
CREATE TABLE bon(
nr_bon NUMBER(3), PRIMARY KEY,
cod_client VARCHAR2(12),
data_imprumut VARCHAR2(20),
constraint cheie_externa_client foreign key(cod_client) reference client(cod, client));
INSERT INTO bon
VALUES('1','MS321547','03ian2004);
INSERT INTO bon
VALUES('2',' MS321542','04ian2004);
INSERT INTO bon
VALUES('3',' MS023511','04ian2004);
INSERT INTO bon
VALUES('4',' MS321547 ','05ian2004);
INSERT INTO bon
VALUES('5',' MS115006','05ian2004);
INSERT INTO bon
VALUES('6',' MS416418','06ian2004);
INSERT INTO bon
VALUES('7','' MS115006,'07ian2004);
INSERT INTO bon
VALUES('8',' MS023511','08ian2004);
INSERT INTO bon
VALUES('9',' MS667210','08ian2004);
INSERT INTO bon
VALUES('10',''MS358000'','09ian2004);
CREATE TABLE melodie(
cod_melodie NUMBER(3) PRIMARY KEY,
titlu VARCHAR2(30),
cantaret VARCHAR2(30));
INSERT INTO melodie
VALUES('1','Dincolo de noapte','Nicola');
INSERT INTO melodie
VALUES('2','Dac-ai sti','Directia 5');
INSERT INTO melodie
VALUES('3','Vreau sarutarea ta','Andra',);
INSERT INTO melodie
VALUES('4','Jumatatea mea','Holograf');
INSERT INTO melodie
VALUES('5','N-am iubit','Holograf');
INSERT INTO melodie
VALUES('6','Am nevoie de tine','Directia 5');
INSERT INTO melodie
VALUES('7','Doua maini','Bosquito');
INSERT INTO melodie
VALUES('8','Dragostea mea','Holograf');
INSERT INTO melodie
VALUES('9','Inocentza','Anna Lesko');
INSERT INTO melodie
VALUES('10','Cantec pentru mama','Talisman');
INSERT INTO melodie
VALUES('11','Mai dulce',Hi-Q');
INSERT INTO melodie
VALUES('12','Culoarea dragostei','Milenium');
CREATE TABLE cd(
cod_cd NUMBER(3),PRIMARY KEY,
tarif_zilnic NUMBER(6));
INSERT INTO cd
VALUES('1','10000');
INSERT INTO cd
VALUES('2','10000');
INSERT INTO cd
VALUES('3','10000');
INSERT INTO cd
VALUES('4','10000');
INSERT INTO cd
VALUES('5','10000');
INSERT INTO cd
VALUES('6','10000');
CREATE TABLE bon_imprumut(
nr_bon NUMBER(3),
cod_cd NUMBER(3),
constraint cheie_primara primary key(nr_bon,cod_cd);
constraint cheie_externa_bon foreign key(nr_bon) reference bon(nr_bon);
constraint cheie_externa_cd foreign key(cod_cd) reference cd(cod_cd));
INSERT INTO bon_imprumut
VALUES('1','1');
INSERT INTO bon_imprumut
VALUES('2','3');
INSERT INTO bon_imprumut
VALUES('3','2');
INSERT INTO bon_imprumut
VALUES('4','4');
INSERT INTO bon_imprumut
VALUES('5','6');
INSERT INTO bon_imprumut
VALUES('6','5');
INSERT INTO bon_imprumut
VALUES('7','3');
INSERT INTO bon_imprumut
VALUES('8','2');
INSERT INTO bon_imprumut
VALUES('8','4');
INSERT INTO bon_imprumut
VALUES('10','1');
CREATE TABLE bon_restituit(
nr_bon NUMBER(3),
cod_cd NUMBER(3),
data_restituire VARCHAR2(20),
penalizare number(3),
constraint cheie_primara primary key(nr_bon,cod_cd)
constraint cheie_externa_bon foreign key(nr_bon) reference bon(nr_bon),
constraint cheie_externa_cd foreign key(cod_cd) reference cd(cod_cd));
INSERT INTO bon_restituit
VALUES('1','1','04ian2004');
INSERT INTO bon_restituit
VALUES('2','3','05ian2004');
INSERT INTO bon_restituit
VALUES('3','2','05ian2004');
INSERT INTO bon_restituit
VALUES('4','9','06ian2004');
INSERT INTO bon_restituit
VALUES('5','6','07ian2004', '1');
INSERT INTO bon_restituit
VALUES('6','5','10ian2004', '3');
INSERT INTO bon_restituit
VALUES('7','3','09ian2004', '1');
INSERT INTO bon_restituit
VALUES('8','3','09ian2004');
INSERT INTO bon_restituit
VALUES('9','1','09ian2004 ');
INSERT INTO bon_restituit
VALUES('10','2','10ian2004');
CREATE TABLE melodie_cd(
cod_cd NUMBER(3),
cod_melodie NUMBER(3),
constraint cheie_primara primary key(cod_cd,cod_melodie)
constraint cheie_externa_cd foreign key(cod_cd) reference cd(cod_cd),
constraint cheie_externa_melodie foreign key(cod_melodie) reference melodie(cod_melodie));
INSERT INTO melodie_cd
VALUES('1','1');
INSERT INTO melodie_cd
VALUES('2','2');
INSERT INTO melodie_cd
VALUES('3','3');
INSERT INTO melodie_cd
VALUES('4','4');
INSERT INTO melodie_cd
VALUES('5','5');
REZOLVAREA INTEROGARILOR
Data scadenta pentru fiecare CD
SELECT Bon.Nr_bon, Bon.Cod_client, [Bon imprumut].Cod_cd,
Bon.Data_imprumut, DateAdd("d", [Durata], [Data_imprumut])
AS Data_scadenta
FROM Bon INNER JOIN [Bon imprumut] ON Bon.Nr_bon=
[Bon imprumut].Nr_bon;
Penalizarile pentru fiecare CD
SELECT Bon.Nr_bon, [Bonrestituit].Cod_cd, [Data scadenta].Data scadenta, [Bon restituit].Data_restituire, [Tarif_zilnic]*0.1*[Zile_penalizare]
AS Penalizari, Iif(DateDiff("d",[Data_scadenta],[Data_restituire])>=0. DateDiff("d",[Data_scadenta],[Data_restituire]).0) AS Zile_penalizare
FROM ((Bon INNER JOIN [Data scadenta] ON Bon.Nr_bon=
[Data scadenta].Nr_bon) INNER JOIN CD ON [Data scadenta].Cod_cd=CD.cod_cd) INNER JOIN [Bon restituit] ON(CD.Cod_cd=[Bon restituit].Cod_cd) AND(Bon.Nr_bon=[Bon restituit].Nr_bon);
Totalul incasarilor din penalizari pentru Cd-uri ce au fost restituite cu mai mult de 3 zile intarziere in perioada 05.01.2005- 09.01.2005.
FROM Penalizari
WHERE Penalizari.Zile_penalizari>=3 AND
Penalizari.Data_restituire>= #05ian2004# AND
Penalizari.Data_restituire<= #09ian2004# ));
CREAREA SECVENTELOR
CREATE SEQUENCE Cod_client
INCREMENT BY 1
START WITH 1
MAXVALUE 9999
NOCYCLE
CREATE SEQUENCE Nr_bon
INCREMENT BY 1
START WITH 1
MAXVALUE 9999
NOCYCLE
CREATE SEQUENCE Cod_melodie
INCREMENT BY 1
START WITH 1
MAXVALUE 9999
NOCYCLE
CREATE SEQUENCE Cod_cd
INCREMENT BY 1
START WITH 1
MAXVALUE 9999
NOCYCLE
TRIGGER
create or replace trigger timp_de_lucru
before insert or update or delete on IMPTUMUT
begin
if (to_char (sysdate, `hh24`)not between `07` and`20`
then raise_application_error (-20500, `Firma este inchisa`);
end if;
end;
INSERAREA UNEI NOI DATE
ACCEPT titlul_nou PROMPT ` titlul`
ACCEPT durata_nou PROMPT ` durata`
ACCEPT cantaret_nou PROMPT ` cantaret`
Insert into MELODII (titlul, durata, cantaret) values (`&titlul_nou` , `& durata_nou` , `cantaret_nou`);
Politica de confidentialitate |
.com | Copyright ©
2024 - Toate drepturile rezervate. Toate documentele au caracter informativ cu scop educational. |
Personaje din literatura |
Baltagul – caracterizarea personajelor |
Caracterizare Alexandru Lapusneanul |
Caracterizarea lui Gavilescu |
Caracterizarea personajelor negative din basmul |
Tehnica si mecanica |
Cuplaje - definitii. notatii. exemple. repere istorice. |
Actionare macara |
Reprezentarea si cotarea filetelor |
Geografie |
Turismul pe terra |
Vulcanii Și mediul |
Padurile pe terra si industrializarea lemnului |
Termeni si conditii |
Contact |
Creeaza si tu |