Sunteți pe pagina 1din 24

Colegiul National Ion Minulescu

Lucrare de atestat

Prof.Coord.:Catanoiu Camelia Elev:Puiu Sorin

Administrarea unei biblioteci

Clasa: a-XII-a C

Administrarea unei biblioteci

CUPRINS

1 SCENARIU_________________________________________________________3 SCENARIU.........................................................................4 DEFINIREA BAZEI DE DATE....................................................5 ACTUALIZAREA DATELOR....................................................12 EXEMPLE DE INTEROGARI VARIATE......................................19 5CONCLUZII.......................................................................24

Administrarea unei biblioteci

SCENARIU

Orice institutie de invatamant are nevoie de o centralizare a informatiilor despre elevii sai si despre activitatea lor didactica. De aceea, evidenta unui catalog virtual este necesara. Se doreste crearea unei baze de date ce realizeaza gestiunea fondului de carti a unei biblioteci. Prin intermediul tabelelor descrise se va tine evidenta elevilor, cartilor, domeniilor, a imprumuturilor si a angajatilor care le acorda. Angajatii vor trebui sa identifice daca o carte este sau nu este disponibila si totodata ei sunt responsabili pentru cartile care le imprumuta. Doar elevii liceului au dreptul sa imprumute carti, pe care le vor returna dupa un termen limita. De asemenea, trebuie incluse tabele care cuprind informatii despre competitiile la care au participat elevii liceului.

Administrarea unei biblioteci

DEFINIREA BAZEI DE DATE


1.1 Descrierea bazei de date

Institutiile de invatamant au nevoie de o centralizare a informatiilor despre elevii inscrisi la fiecare scoala si despre activitatea lor didactica. De aceea, am construit o baza de date pentru o informatizarea activitatii intr-o biblioteca, tinand evidenta unui catalog virtual. Baza de date pe care am creat-o va fi folosita atat de angajatii bibliotecii, cat si de elevi pentru a verifica existenta unei carti si disponibilitatea acesteia la sala de imprumut sau de lectura. De asemenea, se includ informatii despre domeniul de aplicabilitate al fiecarei carti din biblioteca. Sunt foarte importante informatiile despre situatia cartilor, a imprumuturilor realizate, despre elevii care au facut imprumutul sa fie inregistrate. Aceste date vor ajuta angajatii sa identifice daca o carte este sau nu disponibila. Scopul bazei de date este sa fie sortate cartile, sa se gestioneze situatia imprumuturilor si sa se aiba o legatura a angajatilorilor care au predat o anumita carte si elevii care au cerut-o. In fiecare tabela din baza de date se tine evidenta acestor detalii, iar prin relatiile dintre ele se poate usor depista traseul dorit. Obiectivele lucrarii sunt :
Sa creeze o baza de date capabila sa inregistreze un flux mare de informatii si sa

gestioneze aceste informatii in timp util;


Sa tina o evident completa a unei biblioteci; Sa minimizeze timpul alocat cautarii unor informatii despre carti, despre domeniile din

care fac parte si despre autorii lor, respectiv editura;

Administrarea unei biblioteci

In plus, se urmareste crearea unei baze de date puternice pentru: Marirea eficientei de invatare; Simplificare misiunii bibliotecarului la cautarea unei carti; Stocarea informatiilor importante despre elevii si biblioteca unui liceu. Baza de date tine evidenta unei biblioteci. De aceea, trebuie inregistrate cartile din gestiune bibliotecii CARTI, elevii carora li s-au imprumutat, respectiv ELEVI , deoarece gestionarea situatiei lor este obiectivul bazei de date. De asemenea, sunt incluse tabele care cuprind informatii despre competitiile la care au participat elevii liceului - CONCURSURI. O alta tabela importanta din schema este tabela ANGAJATI, deoarece ei sunt reprezentantii bibliotecii, cei care le predau elevilor cartile si sunt responsabili de acestea. Baza de date mai contine o tabela referitoare la activitatea bibliotecii, si anume : IMPRUMUTURI, care contine detalii referitoare la data efectuarii imprumutului, la termenul limita de restituire si la disponibilitatea unei carti restituita, nereturnata, in curs de inregistrare. Reprezentand liceul prin rezultatele lor, tabela ELEVI ocupa un loc central in baza de date. Din acest motiv, s-au dezvoltat alte tabele in relatie de 1:n cu tabela CONCURSURI, si anume : LOCATII, TARI si REGIUNI, in relatii 1:n. Cele 3 tabele de mai sus ofera informatii suplimentare despre locul de desfasurare a unui concurs interscolar, respectiv unde s-a efectuat si unde s-a descoperit competitia. Aceasta baza de date realizeaza gestiunea fondului de carti a unei biblioteci. Astfel prin intermediul tabelelor descrise mai jos se tine evidenta elevilor, cartilor, domeniilor, a imprumuturilor si a angajatilor care le acorda. Tabela Carti contine informatii despre cartile aflate in inventarul bibliotecii: id carte, denumire, autor, editura, an (aparitie), domeniu, valoare. Tabela Elevi contine informatii despre elevii inregistrati care doresc sa imprumute carti: CNP, nume, prenume, clasa, an, adresa, numar de telefon.

Administrarea unei biblioteci

Tabela Imprumuturi contine detalii despre fiecare imprumut efectuat: id imprumut, id carte imprumutata, CNP-ul elevului care a imprumutat cartea, CNP-ul angajatului care a acordat imprumutul, data imprumutului, data restituirii limita, starea imprumutului(in curs=mai este timp pentru a fi returnata cartea, returnata, nereturnata=nu a fost returnata la timp). Tabela Angajati contine date despre cei care acorda fiecare imprumut: CNP, nume, prenume, adresa, numar de telefon. Tabela Domenii contine id-ul fiecarui domeniu si denumirea acestuia.

1.2 Schema Conceptuala

ELEVI CNP Nume Prenume Clasa An Adresa Nrtel

IMPRUMUTURI Idimprumut

Idcarte

Idelev

Idangajat

Dataimp

Datarest

Stare

CARTI Idcarte Denumire Autor Editura An Domeniu Valoare

DOMENII Iddomeniu Denumire

ANGAJATI CNP

Nume

Prenume

Adresa

Nrtel

Administrarea unei biblioteci

1.3 Descrierea Tabelelor


STUDENTI Nume coloana CNP Nume Prenume Clasa Check ( upper (clasa) in ( 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'K', 'I' ) Varchar2 10 An Adresa Nrtel

Tip restrictie

Primary key

Check (an between 1 and 4) Number 1 Varchar2 100 Varchar2 10

Tip data Lungime CARTI Nume coloana Tip restrictie Tip data Lungime

Number 13

Varchar2 20

Varchar2 20

Idcarte Primary key Number 5

Denumire

Autor

Editura

An

Domeniu

Valoare

Varchar2 50

Varchar2 50

Varchar2 20

Number 4

Number 5

Number 4

IMPRUMUTURI Nume Idimprumut coloana Tip restrictie Tip data Lungime ANGAJATI Nume coloana Tip restrictie Tip data Lungime Primary key Number 5

Idcarte Foreign Key References Carti (Idcarte) Number 5

Idelev Foreign Key References Elevi (CNP) Number 5

Idangajat Foreign Key References Angajati (CNP) Number 5

Dataimp

Datarest

Stare Check (stare in ( 'in curs', 'returnat', 'nereturnat) Varchar2 10

Date

Date

CNP Primary key Number 13

Nume

Prenume

Adresa

Nrtel Check (nrtel like '0%') Varchar2 10

Varchar2 20

Varchar2 20

Varchar2 100

DOMENII Nume coloana Tip restrictie Tip data Lungime

Iddomeniu Primary key Number 5 8

Denumire Not Null Varchar2 20

Administrarea unei biblioteci

1.4 Crearea Tabelelor


drop table elevi cascade constraints; drop table domenii cascade constraints; drop table carti cascade constraints; drop table angajati cascade constraints; drop table imprumuturi cascade constraints; create table elevi (cnp varchar2(13) constraint pk_elevi primary key, nume varchar2(20), prenume varchar2(20), clasa varchar2(10), an number(1), adresa varchar2(100), nrtel varchar2(10) ); create table domenii (iddomeniu number(5) constraint pk_domenii primary key, denumire varchar2(20) not null ); create table carti (idcarte number(5) constraint pk_carti primary key, denumire varchar2(50), autor varchar2(50), editura varchar2(20), an number(4), domeniu number(5) references domenii(iddomeniu), valoare number(4) );
9

Administrarea unei biblioteci

create table angajati (cnp varchar2(13) constraint pk_angajati primary key, nume varchar2(20), prenume varchar2(20), adresa varchar2(100), nrtel varchar2(10) constraint ck_nrtel check(nrtel like '0%') ); create table imprumuturi (idimprumut number(5) constraint pk_imprumuturi primary key, idcarte number(5) references carti(idcarte), idelev varchar2(13) references elevi(cnp), idangajat varchar2(13) references angajati(cnp), dataimp date default sysdate, datarest date, stare varchar2(10) );

1.5 Actualizarea Structurii Tabelelor


Sa se modifice numele tabelei ANGAJATI in PERSONAL si apoi din nou in ANGAJATI.

alter table angajati rename to personal; rename personal to angajati;

Sa se adauge o noua coloana la tabela ELEVI, si anume email de tipul VARCHAR2(30).

10

Administrarea unei biblioteci

alter table elevi add (email varchar2(30));

Sa

se

modifice

proprietatile

campului

imprumut

din

tabela

IMPRUMUTURI astfel incat lungimea acestuia sa fie de 10 caractere.

alter table imprumuturi modify(idimprumut number(10));

Sa se stearga coloana nou creata din tabela ELEVI.

alter table elevi drop column email;

Sa se adauge restrictia pentru tabela ELEVI, astfel incat sa nu se introduca elevi apartinand unor clase care de fapt nu exista (in liceu exista clase de la A la I).

alter

table

elevi

add

(constraint

ck_clasa

check(upper(clasa)

in

('A','B','C','D','E','F','G','K','I')));

Sa se adauge restrictia pentru tabela IMPRUMUTURI, astfel incat sa se introduca doar anumite tipuri de sate in campul stare.

11

Administrarea unei biblioteci

alter

table

imprumuturi

add(constraint

ck_stare

check(stare

in

('in

curs','returnat','nereturnat')));

Sa se stearga restrictia validarii numarului de telefon din tabela ANGAJATI.

alter table angajati drop constraint ck_nrtel;

Sa se adauge restrictia ca anul elevilor sa fie valid.

alter table elevi add(constraint ck_an check(an between 1 and 4));

ACTUALIZAREA DATELOR
1.6 Inserarea Datelor
Inserarea datelor in tabela ELEVI insert into elevi values('1880304839238','Popescu','Andrei','B',2,'Str Bucuresti','0789364830'); insert into elevi values('1870101123212','Marinescu','Alexandru','A',3,'Str Bucuresti','0762827392'); insert into elevi
12

Nufarului,

Nr

34,

Lacului,

Nr

354,

Administrarea unei biblioteci

values('1890307827323','Marcu','Alin','I',1,'Str Bucuresti','0745738298'); insert into elevi values('2890505837483','Jinga','Elena','B',1,'Aleea Buzau','0721734632'); insert into elevi

Cristian

Pascal,

Nr

23,

Lalelelor,

Nr

234,

values('2880709827382','Popovici','Alina','A',2,'Aleea Brasov','0723829380'); insert into elevi values('2870402829384','Valasan','Arina','B',3,'Str Oradea','0766562762'); insert into elevi values('2860808890293','Dorotea','Cristina','E',4,'Str Timisoara','0734673832'); insert into elevi values('1850802839283','Marin','Iulian','F',5,'Str Arad','0723782738');

Unirii,

Nr

98,

Focului,

Nr

45,

Marin

Ionescu,

Nr

78,

Marianelor,

Nr

74,

insert into elevi values('1880102829302','Dobre','Andrei','I',2,'Aleea Brasov','0766348324'); insert into elevi values('1890909829382','Iordache','Manuel','C',1,'Str Iasi','0765782673'); insert into elevi values('2870904873823','Ionescu','Maria','C',3,'Str Ciocarliilor, Nr 345, Iasi','0745783473'); Razboieni, Nr 1, Furnicilor, Nr 53,

Inserarea datelor in tabela DOMENII insert into domenii values(10001,'Stiinte');


13

Administrarea unei biblioteci

insert into domenii values(10002,'Analiza'); insert into domenii values(10003,'Algebra'); insert into domenii values(10004,'Economie'); insert into domenii values(10005,'Limba romana'); insert into domenii values(10006,'Informatica'); insert into domenii values(10007,'Engleza'); insert into domenii values(10008,'Geografie'); insert into domenii values(10009,'Fizica'); insert into domenii values(10010,'Istorie'); insert into domenii values(10011,'Filosofie'); insert into domenii values(10012,'Chimie'); insert into domenii values(10013,'Biologie'); insert into domenii values(10014,'Sociologie'); insert into domenii values(10015,'Limba germana');

Inserarea datelor in tabela CARTI insert into carti values(10001,'Astronomie','Dobre Raluca','ASE',1999,10012,34); insert into carti values(10002, 'Matematici aplicate', 'Ande Adela', 'ECONOMICA', 2001, 10004, 56); insert into carti values(10003,'Culegere de probleme', 'Dobre Ionela','RAO',2001,10006,100); insert into carti values (10004, ' Economie', 'Radu Constantinescu', 'Stiintifica', 2005, 10006,110); insert into carti values(10005,'Cel mai iubit dintre pamanteni','Marin Preda','Stiintifica',2003,10006,65); insert into carti
14

Administrarea unei biblioteci

values( 10006, 'Sisteme de calcul si operare', 'Sacalescu Ion', 'ECONOMICA', 2002, 10001, 75); insert into carti values(10007,'Business Communication','Marcu Ioana','Paralela45',2000,10004,90); insert into carti values(10008,'Atlasul lumii in imagini','Stan Andreea','RAO',2005,10005,93); insert into carti values(10009,'Mecanica si eletronica','Anghelache Daniel', 'ASE', 2002, 10011,35); insert into carti values(10010,'Istoria Romaniei','Anghel Adriana','ASE',2007,10009,76); insert into carti values(10011,'Kant','Chirita Ioana','ECONOMICA',2003,10009,53); insert into carti values(10012,'Tabelul Georgiana','RAO',2002,10004,234); insert into carti values(10013,'Evolutia plantelor','Sandulescu Alin','ASE',2001,10001,120); insert into carti values insert into carti values(10015,'Deutsch','Alexe Octavian','ECONOMICA',2007,10010,230); insert into carti values(10016,'Un veac de singuratate','Gabriel Garcia Marquez','ASE',2008,10010,500); Inserarea datelor in tabela ANGAJATI insert into angajati values ('1770303829382','Aden','Ion','Str Garofitei, Nr 34, Bucuresti', '0754562526'); insert into angajati values ('2780908273821', 'Esten','Daniela', 'Str Ion Lunca, Nr 124, Bucuresti', '0789232093');
15

periodic

al

elementelor','Apostol

(10014,

'Fundamentele

organizatiei',

'Inulescu

Adelin',

'Business',

2006,10010,240);

Administrarea unei biblioteci

insert into angajati values '0723723637'); insert into angajati values ('2710709762982','Doroftei','Elisabeta','Str Inginerilor, Nr 23, Bucuresti', '0765563728'); insert into angajati values ('1800101928392','Dorohoi','Alin','Str Constructorilor, Nr 23, Bucuresti', '0787632637'); insert into angajati values '0754238412'); insert into angajati values '0765736473'); insert into angajati values ('1740205873238','Vente','Dan','Str Lorzilor, Nr 98, Bucuresti', '0721837432'); ('1760908736273','Haralambie','Ionica','Str Luncii, Nr 54, Bucuresti', ('1780303938482','Dante','Gheorghe','Str Nuferilor, Nr 56, Bucuresti', ('2680301738293','Dudu','Elena','Str Calarasilor, Nr 221, Bucuresti',

insert into angajati values ('2780504839283','Pop','Marieta','Str Nucilor, Nr 67, Bucuresti', '0723984903'); insert into angajati values ('2790508837283', 'Popa', 'Alina', 'Str Nucilor, Nr 69, Bucuresti', '0734983743'); Inserarea datelor in tabela IMPRUMUTURI insert into imprumuturi values (1000000001, 10001,'1880304839238', '1770303829382', to_date ('11.12.2008','dd.mm.yyyy'), to_date('11.01.2009','dd.mm.yyyy'),'in curs'); insert into imprumuturi values(1000000002,10002,'1870101123212','2680301738293',to_date ('10.10.2008','dd.mm.yyyy'),to_date('15.10.2008','dd.mm.yyyy'),'returnat'); insert into imprumuturi
16

Administrarea unei biblioteci

values(1000000003,10005,'1890307827323','2790508837283',to_date ('21.11.2008','dd.mm.yyyy'),to_date('28.11.2008','dd.mm.yyyy'),'returnat'); insert into imprumuturi values(1000000004,10004,'2890505837483','1770303829382',to_date ('16.12.2008','dd.mm.yyyy'),to_date('20.12.2008','dd.mm.yyyy'),'nereturnat'); insert into imprumuturi values(1000000005,10007,'2890505837483','1780303938482',to_date ('12.10.2008','dd.mm.yyyy'),to_date('19.10.2008','dd.mm.yyyy'),'returnat'); insert into imprumuturi values(1000000006,10006,'2870402829384','1800101928392',to_date ('20.12.2008','dd.mm.yyyy'),to_date('20.01.2009','dd.mm.yyyy'),'in curs'); insert into imprumuturi values(1000000007,10005,'1850802839283','1770303829382',to_date ('19.12.2008','dd.mm.yyyy'),to_date('19.01.2009','dd.mm.yyyy'),'in curs'); insert into imprumuturi values(1000000008,10009,'1890909829382','1740205873238',to_date ('18.12.2008','dd.mm.yyyy'),to_date('18.01.2009','dd.mm.yyyy'),'in curs');

insert into imprumuturi values(1000000009,10003,'1850802839283','1780303938482',to_date ('12.12.2008','dd.mm.yyyy'),to_date('15.12.2008','dd.mm.yyyy'),'nereturnat'); insert into imprumuturi values(1000000010,10005,'2870904873823','1740205873238',to_date ('02.12.2008','dd.mm.yyyy'),to_date('09.12.2008','dd.mm.yyyy'),'returnat');

1.7 Actualizarea Datelor


Sa se modifice valoarea cartii cu id-ul 10015 cu 30%; update carti set valoare=1.3*valoare where idcarte=10015;
17

Administrarea unei biblioteci

INAINTE

DUPA

Angajatul Popa Alina (CNP 2790508837283) s-a mutat la adresa Str Nicolae Balcescu, Nr 52, Bucuresti. Operati modificarea. update angajati set adresa='Str Nicolae Balcescu, Nr 52, Bucuresti' where cnp='2790508837283'; Valoarea cartilor din inventarul bibliotecii s-a modificat in functie de editura, astfel: ASE +20%, ECONOMICA -30%, RAO +15%. Sa se efectueze modificarile. update carti set valoare=valoare*(case lower(editura) when 'ase' then 1.2 when 'economica' then 0.7 when 'rao' then 1.15 else 1 end);

Editura ASE a decis inlocuirea tuturor cartilor din biblioteca cu carti din anul 2008. Sa se efectueze modificarile corespunzatoare. update carti
18

Administrarea unei biblioteci

set an=2008 where upper(editura)='ASE'; Sa se treaca toate imprumuturile acordate de angajatul Aden Ion (CNP 1770303829382) pe numele angajatului Vente Dan (CNP 1740205873238). update imprumuturi set idangajat='1740205873238' where idangajat='1770303829382'; Au fost scoase din inventar cartile mai vechi de anul 2001. Sa se efectueze modificarile. delete from carti where an<2001;

EXEMPLE DE INTEROGARI VARIATE


Sa se afiseze numarul de imprumuturi care sunt in curs (pot fi inca returnate). select count(stare) nr_imprumuturi_de_returnat from imprumuturi where datarest>sysdate;
DUPA

19

Administrarea unei biblioteci

Sa se afiseze numele, prenumele si clasa elevilor care nu au returnat la timp imprumuturile efectuate. select e.nume,e.prenume,e.clasa from elevi e, imprumuturi i where i.idelev= e.cnp and i.stare in ('nereturnat'); Sa se afiseze editurile existente in biblioteca(o singura data). select distinct editura from carti; Sa se afiseze numarul de carti din biblioteca pentru fiecare editura. select editura,count(editura) nr_carti from carti group by editura;

20

Administrarea unei biblioteci

Sa se afiseze numele, prenumele si cartea din imprumuturile acordate de angajatul cu CNP-ul 1770303829382, in care au fost luate carti din domeniul Informatica. select e.nume,e.prenume,c.denumire from elevi e, carti c, imprumuturi i where i.idelev= e.cnp and i.idcarte=c.idcarte and i.idangajat='1770303829382' intersect select e.nume,e.prenume,c.denumire from elevi e, carti c, imprumuturi i where i.idelev=e.cnp and i.idcarte=c.idcarte and c.domeniu=(select d.iddomeniu from domenii d where upper(d.denumire)='INFORMATICA'); Sa se afiseze toate cartile din domeniul Informatica si toate cartile care apartin de editura ASE. select c.denumire,c.autor,c.editura,d.denumire from carti c, domenii d where c.domeniu=(select d.iddomeniu from domenii d where upper(d.denumire)='INFORMATICA') and d.iddomeniu=c.domeniu UNION select c.denumire,c.autor,c.editura,d.denumire from carti c, domenii d where upper(c.editura)='ASE' and d.iddomeniu=c.domeniu; Sa se selecteze toate cartile mai scumpe de 100 ron, dar care sa fi fost publicate inainte de anul 2003. select denumire,valoare,an from carti where valoare>100 minus select denumire,valoare,an
21

Administrarea unei biblioteci

from carti where an<2003; Elevul Popescu Andrei (CNP 1880304839238) s-a transferat la aceeasi clasa cu elevul Marcu Alin (CNP 1890307827323) . Sa se opereze modificarile necesare. update elevi set clasa=(select clasa from elevi where cnp='1890307827323') where cnp='1880304839238';

Sa se afiseze o modificare a valorii preturilor cu 50% pentru editura ASE, 100% pentru editura RAO, 150% pentru editura ECONOMICA si 0% pentru celelalte. select denumire,editura,valoare*decode(editura,'ASE',1.5,'RAO',2,'ECONOMICA',2.5,1) from carti; Sa se creeze o tabela cu cartile de la editura ASE. create table ASE as select denumire,autor,an,valoare from carti where editura='ASE'; Sa se afiseze toti angajatii care au aprobat minim 2 imprumuturi. select a.nume,a.prenume, count(i.idangajat) nr_impr_acordate from angajati a, imprumuturi i where a.cnp= i.idangajat group by a.nume, a.prenume having count(i.idangajat)>1; Afisati domeniul si numarul de carti existente(si domeniile care nu au carti).
22

Administrarea unei biblioteci

select d.denumire, count(c.domeniu) nr_carti from domenii d, carti c where c.domeniu(+)= d.iddomeniu group by d.denumire;
Sa se afiseze cea mai valoroasa carte din biblioteca. select denumire,editura,valoare from carti where valoare=(select max(valoare) from carti);

Sa se afiseze toate imprumuturile efectuate in luna decembrie. select i.idimprumut, e.nume, e.prenume, i.stare from imprumuturi i, elevi e where extract(MONTH from dataimp)=12 and i.idelev= e.cnp;

Sa se afiseze valoarea medie a cartilor in functie de editura. select editura, round(avg(valoare),2) from carti group by editura;

23

Administrarea unei biblioteci

5 CONCLUZII
Pornind de la o idee simpla, am dezvoltat o solutie complexa insa de succes pentru publicul tinta. Avand in vedere nevoile viitoare, baza de date creata este suficient de flexibila pentru: A descoperi evolutia cartilor; A monitoriza datele despre imprumuturi.

24