Documente Academic
Documente Profesional
Documente Cultură
Proiectul descrie un sistem de evidenta al unei biblioteci. Pentru acestea sunt necesare
informatii despre persoanele care imprumuta carti din biblioteca, dar si despre cartile aflat in
biblioteca,cat si editurile lor.
Baza de date contine urmatoarele tabelele: CARTE, CITITOR, FISA LECTURA, EDITURA.
O carte poate fi imprumutata mai multor cititori si acestia la randul lor pot impumuta mai multe
carti, de aceea se necesita crearea unei noi tabele, fisa lectura, care stabileste o legatura de
mai multi la unu si cu tabela cititor, si cu tabela carte.
De asemenea unei edituri ii corespund una sau mai multe carti, iar o carte poate fi publicata
la o singura editura, ceea ce dovedeste relatia de unu la multi dintre aceste doua tabele.
Tabela CARTE contine datele despre cartile existente in stocul bibliotecii si anume codul
fiecarei carti ,un cod unic (cod_carte caracter 20,cheia primara a tabelei), denumirea cartii
(denumire caracter 50), autorul cartii (autor caracater 30), numarul de exemplare din biblioteca
( numar 5), pretul cu care o carte a fost cumparata(pret number 5), codul editurii care este
campul prin care se face legatura cu tabela Editura (cod_editura), anul aparitiei publicatiei la
respective editura (an_aparitie numar 4), anul apartitiei trebuie sa fie intre 1700 si 2010.
Tabela CITITOR care contine cnp-ul cititorilor (cnp numar 13) cheia primara , numele
cititorilor (nume character 50), prenumele cititorilor (prenume character 50), orasul din care
provine fiecare cititor ( oras caracter 35), email-ul cititorului (email caracter 25),emailul are
restrictie trebuie sa se scrie simbolul @, adresa cititorului (adresa caracter 50), si numarul de
telefon (telefon character 10).
Tabela FISA_LECTURA contine datele despre codul fisei de lectura (cod_fisa caracter 25)
cheia primara, codul cartii imprumutate care face legatura cu tabela carte ( cod_carte caracter
20), cnp-ul persoanei care a imprumutat carti, camp care face legatura cu tabela cititori (numar
13), data imprumutarii cartilor (data_imprumut data ).
Tabela EDITURA contine date despre codul editurii care este unic (cheia primara
:cod_editura caracter 20), numele editurii (nume_edit caracter 15), adresa editurii (adresa
character 40) si un numar de telefon (tel caracater 10).
Schema conceptuala
CARTE
Cod_carte
Denumire
Autor
Nr_exemplare
Pret
Cod_editura
An_aparitie
EDITURA
Cod_editura
Nume_editura
Adresa
Tel
CITITOR
FISA_LECTURA
Cod_fisa
Cod_carte
Cnp
Data_imprumut
Cnp
Nume
Prenume
Oras
Email
Adresa
Telefon
Crearea tabelelor
Instructiunea ALTER
Instructiunea UPDATE
1) Sa se adauge cate un exemplar in plus acelor carti care au
anul aparitiei egal cu 1999.
update carte set nr_exemplare=nr_exemplare+1 where an_aparitie=1999;
Interogari
8) Sa se afiseze toate cartile al caror pret este mai mare decat 100 si
mai mic decat 40.
select denumire,autor from carte where pret>100
union
select denumire,autor from carte where pret<40;
select concat(nume_editura,'.editura@yahoo.com')
from editura;
10)
Sa se realizeze o diferentiere intre autorii cartilor, astfel incat la
Mihai Eminescu sa se specifice ca este cel mai mare poet roman, la
Ion Luca Caragiale ca este cel mai mare dramaturg roman, la Mihail
Sadoveanu ca este Ceahlaul literaturii romane, iar in rest sa ramana
cu titulatura de personalitati importante.
end
from carte;
11)
Sa se calculeze numarul de zile de cand au fost imprumutate
cartile si pana in prezent.
select data_imprumut,round(sysdate-data_imprumut)
from fisa_lectura;
12)
Sa se afiseze valoare medie a pretlui tuturor cartilor care au
aparut dupa 1950
13)
Sa se afiseze editurile care au publicat carti pentru biblioteca,
precum si numele si autorii cartilor respective. De asemenea anul
aparitiei trebuie sa fie mai mic de 1950.
select denumire,autor,nume_editura
from carte,editura
where editura.cod_editura=carte.cod_editura and carte.an_aparitie<1950;
14)
Sa se afiseze cate carti au fost imprumutate de persoane de sex
feminin.
select count(a.cod_carte)
from cititor c, fisa_lectura a
where c.cnp=a.cnp and substr(c.cnp,1,1)='2';
15)
Sa se afiseze toate cartile care sunt intr-un numar de exemplare
mai mare decat 6, dar au aparut dupa 1980.
select *
from carte
where nr_exemplare>6 and an_aparitie>1980;
Tabele Virtuale
2)
Indecsi
Secvente
start with 50
increment by 5
maxvalue 100
nocycle;
nocycle;
Sinonime
1) Sa se creeze sinonimul tabela_1 pentru tabela cititor.
Schema conceptuala:
3)