Sunteți pe pagina 1din 13

PROIECT BAZE DE DATE

Sa se realizeze o baza de data pentru gestionarea unei biblioteci,fiecare


abonat detine un permis pentru care se cunosc:nr permis,nume
cititor,cnp,adresa,telefon.Abonatule poate imprumuta carti despre care se
cunosc urmatoarele:cota carte,titlu,cod editura,valoare inventar,nr
exemplare.Despre autorii cartilor se cunosc urmatoarele:nume autor,cod autor.
Fiecare carte are o editura despre care se cunosc:cod editura,nume
editura,adresa editura,telefon editura.Imprumuturile sunt urmarite cu ajutorul
unei foi de imprumut ce contine:nr foaie imprumut,data imprumut,nr permis.
Acest proiect isi propune sa trateze urmatoarele:
-evidena abonailor bibliotecii
-evidena crilor din cadrul bibliotecii
-detalierea carilor restituite
-evidena editurilor
-evidena mprumuturilor din cadrul bibliotecii
Reguli de gestiune:1.un abonat poate sa imprumute una sau mai mult carti
2.o carte poate sa fie imprumutata de unul sau mai multi cititori.
3.Fiecare carte are un singur autor.
4.Un autor poate scrie una sau mai multe carti
5.Fiecare carte este publicate de o singura editura.
6.O editura poate publica una sau mai multe carti.
Modelul relational:
Carte(cota_carte,titlu,cod_editura,valoare_inventar)

Autor(cod_autor,nume_autor)

AutorCarte(cota_carte,cod_autor)

CarteDeImprumut(cota_carte,nr_foaie_imprumut,data_restituirii)

Editura(cod_editura,nume_editura,adresa_editura,telefon_editura)

FoaieDeImprumut(nr_foaie_imprumut,data_imprumut,nr_permis)

Permis (nr_permis,nume_cititor,cnp,adresa,telefon)

Relationships:

Interogari, proiectul folosete urmatoarele interogri:


Cerinta1:sa se afiseze nr cartilor imprumutate de cititori in fiecare luna,numele
cititorilor se va afisa pe randuri,iar luna pe coloane.

TRANSFORM Count(FoaieDeImprumut.Nr_Permis) AS CountOfNr_Permis


SELECT Permis.Nume_Cititor
FROM Permis INNER JOIN (FoaieDeImprumut INNER JOIN (Carte INNER JOIN
CarteDeImprumut ON Carte.Cota_Carte = CarteDeImprumut.Cota_Carte) ON
FoaieDeImprumut.Nr_Foaie_Imprumut = CarteDeImprumut.Nr_Foaie_Imprumut)
ON Permis.Nr_Permis = FoaieDeImprumut.Nr_Permis
GROUP BY Permis.Nume_Cititor
PIVOT Month([Data_imprumut]);

Cerinta2:sa se mareasca valoare de inventar a cartilor cu 10%

UPDATE Carte SET Carte.Valoare_Inventar = [valoare_Inventar]


+0.05*[valoare_inventar];
Cerinta3:sa se afiseze nr zilelor de intarziere pentru fiecare cititor.

SELECT Permis.Nr_Permis, Permis.Nume_Cititor, DateDiff("d",[data_imprumut],


[data_restituirii]) AS [intarziere zile]
FROM Permis INNER JOIN (FoaieDeImprumut INNER JOIN CarteDeImprumut ON
FoaieDeImprumut.Nr_Foaie_Imprumut = CarteDeImprumut.Nr_Foaie_Imprumut)
ON Permis.Nr_Permis = FoaieDeImprumut.Nr_Permis;
Cerinta4:sa se stearga un cititor,numele se va introduce de la tastatura

DELETE Permis.Nume_Cititor
FROM Permis
WHERE (((Permis.Nume_Cititor)=[introduceti nume]));
Cerinta5:sa se afiseze nr maxim de exemplare pentru fiecare carte,se va ordona
crescator

SELECT Carte.Cota_Carte, Carte.Titlu, Max(Carte.Nr_Exemplare) AS


MaxOfNr_Exemplare
FROM Carte
GROUP BY Carte.Cota_Carte, Carte.Titlu

ORDER BY Max(Carte.Nr_Exemplare);
Cerinta6:sa se afiseze lista cititorilor care locuiesc in Bucuresti,se va ordona
alfabetic
SELECT Permis.CNP, Permis.Nume_Cititor
FROM Permis
WHERE (((Permis.Adresa) Like "*Bucuresti"))
ORDER BY Permis.Nume_Cititor;

Cerinta7:sa se afiseze toate cartile si toti autorii

SELECT Carte.Titlu, Autor.Nume_Autor


FROM Carte INNER JOIN (Autor INNER JOIN AutorCarte ON Autor.Cod_Autor =
AutorCarte.Cod_Autor) ON Carte.Cota_Carte = AutorCarte.Cota_Carte;
Cerinta8:sa se afiseze informatii despre o carte ce va fi introdusa de la tastatura

SELECT Carte.Titlu, Carte.Valoare_Inventar, Carte.Nr_Exemplare


FROM Carte WHERE (((Carte.Titlu)=[introduceti carte]));
Cerinta9: sa se afiseze cartile cu valoare de inventar mai mare de 10 lei

SELECT Carte.Titlu, Carte.Valoare_Inventar


FROM Carte
WHERE (((Carte.Valoare_Inventar)>10));
Cerinta10:sa se afiseze nr total de imprumuturi pentru fiecare carte

SELECT Carte.Cota_Carte, Carte.Titlu, Count(Carte.Cota_carte) AS Nrimprum


FROM FoaieDeImprumut INNER JOIN (Carte INNER JOIN CarteDeImprumut ON
Carte.Cota_Carte = CarteDeImprumut.Cota_Carte) ON
FoaieDeImprumut.Nr_Foaie_Imprumut = CarteDeImprumut.Nr_Foaie_Imprumut
GROUP BY Carte.Cota_Carte, Carte.Titlu;
Cerinta11:sa se afiseze cartile tiparite de o editura ce se va introduce de la
tastatura
SELECT Editura.Nume_Editura, Carte.Titlu, Autor.Nume_Autor
FROM Editura INNER JOIN (Carte INNER JOIN (Autor INNER JOIN AutorCarte ON
Autor.Cod_Autor = AutorCarte.Cod_Autor) ON Carte.Cota_Carte =
AutorCarte.Cota_Carte) ON Editura.Cod_Editura = Carte.Cod_Editura WHERE
(((Editura.Nume_Editura)=[introduceti editura]));

Cerinta12:sa se afiseze editurile din Iasi

SELECT Editura.Cod_Editura, Editura.Nume_Editura, Editura.Adresa_Editura,


Editura.Telefon_Editura
FROM Editura
WHERE (((Editura.Adresa_Editura) Like "*Iasi"));
Cerinta13:sa se afiseze cititorii de sex feminin,nascuti in 1991

SELECT Permis.CNP, Permis.Nume_Cititor, Permis.Adresa, Permis.Telefon


FROM Permis WHERE (((Permis.CNP) Like "2*" And (Permis.CNP) Like "?91*"));
Cerinta14:sa se afiseze cititorii care au imprumutat carti in perioada 1.1.20111.4.2011

SELECT Permis.Nume_Cititor, Permis.CNP, Permis.Adresa, Permis.Telefon


FROM Permis INNER JOIN FoaieDeImprumut ON Permis.Nr_Permis =
FoaieDeImprumut.Nr_Permis
WHERE (((FoaieDeImprumut.Data_Imprumut) Between #1/1/2011# And
#4/1/2011#));

Cerinta15:sa se realizeze o interogare ce va crea tabelul restantieri care va


contine nr permis,nume
cititor,adresa,cnp ,motiv.La motiv se va completa restantier daca nr zilelor de
intarziere >20 ,altfel se va completa fara restante

SELECT Permis.Nr_Permis, Permis.Nume_Cititor, Permis.CNP, Permis.Adresa,


IIf([zile_intarziere]>20,"restantier","fara restante") AS motiv INTO Restantieri
FROM Permis;
Formulare:

Cerinta16 realizati un formular columnal pentru evidenta editurilor ce va contine


o lista de cautare automata,se vor adauga butoane de navigare pentru
inregistrari,stergere,adaugare,inchidere formular

Cerinta17 realizati un formular tabular pe baza tabelului carte in care se va


calcula total valoare inventar

Rapoarte
Cerinta18 sa se realizeze un raport numite RaportCarte in care sa se afiseze
numarul de exemplare pentru fiecare carte.

Cerinta19 sa se realizeze un raport pe baza tabelului permis care sa prezinte


informatii despre fiecare cititor