Upload
soso-sorin
View
1.650
Download
7
Embed Size (px)
Citation preview
Colegiul National Ion Minulescu
Lucrare de atestat
Prof.Coord.:Catanoiu Camelia Elev:Puiu Sorin
Administrarea unei biblioteci
Clasa: a-XII-a C
2
Administrarea unei biblioteci
CUPRINS
1 SCENARIU_________________________________________________________3 SCENARIU.........................................................................4 DEFINIREA BAZEI DE DATE....................................................5 ACTUALIZAREA DATELOR....................................................12 EXEMPLE DE INTEROGARI VARIATE......................................19 5CONCLUZII.......................................................................24
3
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.
4
Administrarea unei biblioteci
DEFINIREA BAZEI DE DATE1.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;
5
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.
6
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
7
Administrarea unei biblioteci
1.3 Descrierea TabelelorSTUDENTI 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 Tabelelordrop 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 TabelelorSa 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 DATELOR1.6 Inserarea DatelorInserarea 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 elevi12
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 carti14
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 imprumuturi16
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 DatelorSa 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 carti18
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 ansysdate;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,an21
Administrarea unei biblioteci
from carti where an1; 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 CONCLUZIIPornind 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