Sunteți pe pagina 1din 12

Descrierea bazei de date

Tema acestui proiect o reprezinta crearea si gestiunea unei baze de date pentru
Biblioteca Centrala a Academiei de Studii Economice din Bucuresti. Aceasta necesita
dezvoltarea si implementarea unor sisteme informatice care sa ajute la imbunatatirea
serviciilor pe care le ofera dar si pentru a fluidiza operatiunile care se pot face in interiorul
bibliotecii.
Scopul acestei baze de date este acela de a avea o evidenta a numarului de persoane
care intra in biblioteca, care fie decid sa imprumute carti, fie studiaza in incinta bibliotecii. De
asemenea este foarte importanta evidenta zilei cand se imprumuta o carte si cand trebuie
restituita si evidenta cartilor pe care biblioteca le detine.

Construirea Diagramei Entitate-Asociere (ERD)

CARTE

CITITOR

# ISBN
* titlu
* autor
* editura
* id_domeniu
* data aparitiei

# reader_ID
* nume
* adresa
* telefon
* tip
* email -- -- -- -- -o data nasterii

are

are
-- -- -- -- --

|
inclus |
|
aparine

aparine

include

DOMENIU

ISTORIC_MPRUMUT

# id_domeniu
* gen

# id
* data_mprumut
* data_restituire

COMENZI PENTRU DEFINIREA DATELOR (LDD)


CREAREA TABELELOR

1. Crearea tabelei CARTE


CREATE TABLE CARTE(ISBN NUMBER(11), TITLU VARCHAR2(30), AUTOR
VARCHAR2(30), EDITURA VARCHAR2(30), ID_DOMENIU NUMBER,
DATA_APARITIEI DATE)

2. Crearea tabelei CITITOR


CREATE TABLE CITITOR(READER_ID NUMBER, NUME VARCHAR2(30), ADRESA
VARCHAR2(30),TELEFON NUMBER(10),TIP VARCHAR2(15),DATA_NASTERII
DATE,EMAIL VARCHAR2(30));

3. Crearea tabelei ISTORIC_MPRUMUT


CREATE TABLE ISTORIC_MPRUMUT(ID NUMBER, ISBN NUMBER(11),
READER_ID NUMBER, DATA_MPRUMUT DATE, DATA_RESTITUIRE DATE);

4. Crearea tabelei DOMENIU


CREATE TABLE DOMENIU(ID_DOMENIU NUMBER, ISBN NUMBER(11),GEN
VARCHAR2(20));

ADAUGAREA DE CONSTRANGERI
1. Adaugarea constrangerilor pentru tabela CARTE
ALTER TABLE CARTE ADD CONSTRAINT ISBN_PK PRIMARY KEY(ISBN);
ALTER TABLE CARTE ADD CONSTRAINT AUTOR_NN CHECK(AUTOR IS NOT
NULL);
ALTER TABLE CARTE ADD CONSTRAINT TITLU_NN CHECK(TITLU IS NOT NULL);
ALTER TABLE CARTE ADD CONSTRAINT ID_DOMENIU_FK FOREIGN
KEY(ID_DOMENIU) REFERENCES DOMENIU(ID_DOMENIU);

2. Adaugarea constrangerilor pentru tabela CITITOR


ALTER TABLE CITITOR ADD CONSTRAINT READER_ID_PK PRIMARY
KEY(READER_ID);
ALTER TABLE CITITOR ADD CONSTRAINT TELEFON_UQ UNIQUE(TELEFON);
ALTER TABLE CITITOR ADD CONSTRAINT EMAIL_UQ UNIQUE(EMAIL);

3. Adaugarea constrangerilor pentru tabela ISTORIC_MPRUMUT


ALTER TABLE ISTORIC_IMPRUMUT ADD CONSTRAINT ID_PK PRIMARY
KEY(ID);
ALTER TABLE ISTORIC_IMPRUMUT ADD CONSTRAINT ISBN_FK FOREIGN
KEY(ISBN) REFERENCES CARTE(ISBN);
ALTER TABLE ISTORIC_IMPRUMUT ADD CONSTRAINT READER_ID_FK
FOREIGN KEY(READER_ID) REFERENCES CITITOR(READER_ID);

4. Adaugarea constrangerilor pentru tabela DOMENIU


ALTER TABLE DOMENIU ADD CONSTRAINT ID_DOMENIU_PK PRIMARY
KEY(ID_DOMENIU);
ALTER TABLE DOMENIU ADD CONSTRAINT ISBN_FK FOREIGN KEY(ISBN)
REFERENCES CARTE (ISBN);

COMENZI PENTRU MANIPULAREA DATELOR (LMD)


POPULAREA TABELELOR (INSERT)
1. Popularea tabelei CARTE
INSERT INTO CARTE(ISBN, TITLU, AUTOR, EDITURA, ID_DOMENIU,
DATA_APARITIEI) VALUES(17783239592,Mos Goriot,Honore de
Balzac,Polirom,1,06/FEB/2012);
INSERT INTO CARTE(ISBN, TITLU, AUTOR, EDITURA, ID_DOMENIU,
DATA_APARITIEI) VALUES(17783239593,Decameronul,Giovanni
Boccaccio,Humanitas,2,09/DEC/2009);
INSERT INT0 CARTE (ISBN, TITLU, AUTOR, EDITURA, ID_DOMENIU,
DATA_APARITIEI) VALUES (17783239594,Fictiuni,Jorges Luis
Borges,Litera,3,11/JUN/2014);
INSERT INTO CARTE (ISBN,TITLU,AUTOR,EDITURA,ID_DOMENIU,
DATA_APARITIEI) VALUES (17783239596,La rascruce de vanturi,Emily
Bronte,Art,4,01/MAR/1999);
INSERT INTO CARTE(ISBN, TITLU, AUTOR, EDITURA, ID_DOMENIU,
DATA_APARITIEI) VALUES(17783239597,Calatorie la capatul noptii,Louis Ferdinand
Celine,Humanitas,5,05/IAN/2007);

2. Popularea tabelei CITITOR


INSERT INTO CITITOR(READER_ID, NUME, ADRESA, TELEFON, TIP,
DATA_NASTERII, EMAIL) VALUES (1,ANITEI COSMIN,Str. Cicoarei
nr.45,0747538590,student,05/JAN/1991, a.cosmin@yahoo.com);
INSERT INTO CITITOR(READER_ID, NUME, ADRESA, TELEFON,TIP,
DATA_NASTERII, EMAIL) VALUES(2,CISLARU SIMONA,Str. Amzei
nr.56,0720486035, profesor,IS NULL, simona.cislaru@cig.ase.ro);
INSERT INTO CITITOR(READER_ID, NUME, ADRESA,TELEFON,TIP,
DATA_NASTERII, EMAIL) VALUES(3, STANGACIU MARIA,Bd. Dacia nr.
77 ,0765948795,vizitator,23/NOV/1999,maria_stangaciu@gmail.com);
INSERT INTO CITITOR(READER_ID, NUME, ADRESA, TELEFON,TIP,EMAIL)
VALUES(4,CRETU SORIN,Bd. Unirii nr. 43,0743659340,
profesor ,s.cretu@yahoo.com);
INSERT INTO CITITOR( READER_ID, NUME, ADRESA, TELEFON,
TIP,DATA_NASTERII, EMAIL) VALUES (5,TARCAN IONELA,Bd. Carol
nr.5,0730589574,student,28/JUL/1994,ionela_tarcan@yahoo.com);

3. Popularea tabelei ISTORIC_MPRUMUT


INSERT INTO ISTORIC_IMPRUMUT(ID, ISBN, READER_ID, DATA_MPRUMUT,
DATA_RESTITUIRE) VALUES(1,17783239594,1,28/FEB/2014,02/MAR/2014);
INSERT INTO ISTORIC_IMPRUMUT(ID,ISBN,READER_ID, DATA_MPRUMUT,
DATA_RESTITUIRE) VALUES(2,17783239592,2,02/JAN/2015,10/JAN/2015);
INSERT INTO ISTORIC_IMPRUMUT(ID,ISBN,READER_ID, DATA_MPRUMUT,
DATA_RESTITUIRE) VALUES(3,17783239596,3,30/NOV/2014,05/DEC/2014);

INSERT INTO ISTORIC_IMPRUMUT(ID,ISBN,READER_ID, DATA_MPRUMUT,


DATA_RESTITUIRE)VALUES(4,17783239593,4,12/NOV/2014,15/NOV/2014);
INSERT INTO ISTORIC_IMPRUMUT(ID,ISBN,READER_ID, DATA_MPRUMUT,
DATA_RESTITUIRE) VALUES(5,17783239597,5,13/JUL/2014,23/JUL/2014);

4. Popularea tabelei DOMENIU


INSERT INTO DOMENIU(ID_DOMENIU,ISBN,GEN) VALUES (1,
17783239592 ,Beletristica);
INSERT INTO DOMENIU(ID_DOMENIU,ISBN,GEN) VALUES (2,
17783239593 ,Beletristica);
INSERT INTO DOMENIU(ID_DOMENIU,ISBN,GEN) VALUES
(3,17783239594 ,Fictiune);
INSERT INTO DOMENIU(ID_DOMENIU,ISBN,GEN)
VALUES(4,17783239597 ,Beletristica);
INSERT INTO DOMENIU(ID_DOMENIU,ISBN,GEN) VALUES(5,17783239596,
Calatorie);

CONSTRUCTIE EXPRESII SQL


7

ALTER
1. Pentru a putea adauga date in tabela CARTE trebuie sa dezactivam
pentru moment anumite constrangeri.
ALTER TABLE CARTE
DISABLE CONSTRAINT ID_DOMENIU_FK;

Dupa ce am adaugat toate datele in tabela putem activa constrangerea pe


care am dezactivat-o anter++ ior.
ALTER TABLE CARTE
ENABLE CONSTRAINT ID_DOMENIU_FK;

UPDATE
2. Sa se modifice denumirea editurii cartii cu ISBN=17783239593 in Art
UPDATE CARTE
SET EDITURA=Art
WHERE ISBN=17783239593;

3. Sa se modifice data de returnare a cartii care a fost imprumutata de


catre cititorul cu id 3, in 10 Decembrie 2014
UPDATE ISTORIC_IMPRUMUT
SET DATA_RESTITUIRE=10/DEC/2014
WHERE READER_ID=3

SELECT
4. Sa se afiseze numele si numarul de telefon al tuturor studentilor
SELECT NUME, TELEFON
FROM CITITOR
WHERE TIP=student
AND DATA_NASTERII= 28/JUL/1994;
8

5. Sa se afiseze numele cititorilor care s-au nascut in luni care incep cu


litera J.
SELECT NUME
FROM CITITOR
WHERE DATA_NASTERII LIKE %J%;

6. Sa se afiseze cititorii care au imprumutat carti in anul 2014.


SELECT C.READER_ID, C.NUME, I.DATA_MPRUMUT
FROM CITITOR C, ISTORIC_IMPRUMUT I
WHERE I.DATA_MPRUMUT BETWEEN TO_DATE(01.01.2014) AND
TO_DATE(12.31.2014)
AND C.READER_ID=I.READER_ID;

ALTER
7. Sa se redenumeasca tabela ISTORIC_IMPRUMUT cu ISTORIC
ALTER TABLE ISTORIC_IMPRUMUT RENAME TO ISTORIC;

8. Sa stearga toate campurile din coloana adresa, tabela cititor.


ALTER TABLE CITITOR DROP COLUMN ADRESA;

9. Sa se afiseze titlurile cartilor care au fost publicate de catre editura


art si sa se ordoneze descrescator dupa data aparitiei.
SELECT TITLU, DATA_APARITIEI
FROM CARTE
WHERE EDITURA= Art
ORDER BY DATA_APARITIEI DESC

10

10. Sa se afiseze titlul, autorul si genul cartii


SELECT C.TITLU, C.AUTOR, D.GEN
FROM CARTE C, DOMENIU D
WHERE C.ISBN=D.ISBN;

DELETE
11. Sa se stearga randurile din tabelul istoric care au data de imprumut
mai mica de 01/JUN/2014.
DELETE FROM ISTORIC
WHERE DATA_MPRUMUT < '01/JUN/2014';

12. Sa se afiseze titlul, autorul si ISBN a tuturor cartilor din baza de date
care sunt scrise de Emily Bronte.
SELECT TITLU, AUTOR, ISBN
FROM CARTE
WHERE ISBN=
(SELECT ISBN
FROM CARTE
WHERE AUTOR = 'Emily Bronte');

13. Afisati numele, numarul de telefon si adresa de email a clientilor din


tabela cititor doar pentru cei care sunt studenti. Cititorii sa fie
aranjati dupa data nasterii, descrescator.
11

SELECT NUME, TELEFON, EMAIL


FROM CITITOR
WHERE TIP = student
ORDER BY DATA_NASTERII DESC;

14. Afisati cu majuscule titlul si autorul cartii


SELECT UPPER (TITLU), UPPER (AUTOR)
FROM CARTE;

15. Calculati numarul de carti care fac parte din categoria Beletristica si
Fictiune
SELECT D.GEN, COUNT (C.ISBN)
FROM DOMENIU D, CARTE C
WHERE D.ISBN=C.ISBN
AND D.GEN IN (Beletristica,Fictiune)
GROUP BY GEN

12

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