Biblioteca
-
Upload
mihai-ionut-mihaita -
Category
Documents
-
view
15 -
download
0
description
Transcript of Biblioteca
Configuraţia meniului principal (albastru), a opţiunilor şi a subopţiunilor
Tabele principaleCĂRŢI
Provenienţa :A – achiziţieD – donaţieC – casareP - pierdere
CITITORIId Nume_prenume Specialitate Clasă Adresă Telefon
Nr_inv Titlu Autor Domeniu Editură Preţ An_apariţie Provenienţă5-6 cifre, nr. natural 100 ch. 50 ch 20 ch. 30 ch 4.2 4 cifre A/D/C/PCheie primară - - - - - - -Obligatoriu da da da da da da daFără duplicare nu nu nu nu nu nu nu
Listare cărţi
după TITLU
după AUTOR
după DOMENIU
după EDITURĂ
după PREŢ
ToateUn titlu datGrupă de litere
ToţiUn autor datGrupă de litere
Domeniu datToate, alfabetic
ToateEditură dată
după AN
Crescător/descrescătorInterval de preţuriTotal valoric
An datInterval ani
Noi cititoriÎmprumuturi
ÎMPRUMUT
RESTITUIRE
RESTANŢE
Casări şi pierderi
Lista Casări
Lista Pierderi
CASARE
PIERDERE
Achiziţii
Lista Achiziţii
Lista Surse
Donaţii
Lista Donaţii
Lista Surse
Listare cititori
după CLASĂ
după SPECIALITATE
după NUME
după Pierderi
3 cifre, nr. natural/ CNP =13 ch
40 ch. 20 ch 3 ch memo 10 ch
Cheie primară - - - - -Obligatoriu da da nu da daFără duplicare nu nu nu nu nu
Id poate fi un cod numeric intern, de 3 cifre, sau se poate utiliza CNP-ul şi atunci este un câmp de 13 caractere (pentru că în calculator nu se pot stoca numere naturale de 13 cifre)ÎMPRUMUTURI
Dată_împrumut Dată_restituire Nr_inv_carte Id_cititorDată calendaristică Dată calendaristică 5-6 cifre, nr. natural 3 cifre, nr. natural/ CNP =13
chObligatoriu Optional Obligatoriu ObligatoriuCu duplicare Cu duplicare Cu duplicare Cu duplicare
Condiţie structurală: triada Dată_împrumut + Nr_inv_carte + Id_cititor compune o informaţie de tip Cheie Unică
Condiţie procedurală : Dată_împrumut Dată_restituirePROIECTAREA COMENZILOR (in SQL ORACLE)1. Tabela CARTI
CREATE TABLE carti(Nr_inv NUMBER(6) PRIMARY KEY, Titlu VARVHAR2(100) NOT NULL, Autor VARCHAR2(50) NOT NULL, Domeniu VARCHAR2(20) NOT NULL, Editura VARCHAR2(30) NOT NULL, Pret NUMBER(6,2) NOT NULL,
An_aparitie NUMBER(4) NOT NULL, Provenienta CHAR(1) NOT NULL CHECK (’A’,’D’,’C’,’P’) );
2. Tabela CITITORI CREATE TABLE cititori(Id NUMBER(3) PRIMARY KEY, Nume_prenume VARCHAR2(40) NOT NULL, Specialitate VARCHAR2(20) NOT NULL, Clasa VARCHAR2(3), Adresa VARCHAR(100) NOT NULL, Telefon CHAR(10) NOT NULL );
3. Tabela IMPRUMUTURICREATE TABLE imprumuturi(Data_imprumut DATE NOT NULL, Data_restituire DATE, Nr_inv_carte NUMBER(6) NOT NULL REFERENCES carti(Nr_inv), Id_cititor NUMBER(3) NOT NULL REFERENCES cititori(Id),UNIQUE (Data_imprumut, Nr_inv_carte, Id_cititor) );
4. Interogări din CARTI
a. Lista tuturor cărţilor după titluSELECT titlu, autor, domeniu, editura, pret, an_aparitie AS ”An aparitie” FROM carti ORDER BY titlu;
b. Lista cărţilor după un titlu dat
SELECT titlu, autor, domeniu, editura, pret, an_aparitie AS ”An aparitie” FROM carti WHERE titlu=&titlu_dat;
c. Lista cărţilor după un titlu dat într-o grupă de iniţialeSELECT titlu, autor, domeniu, editura, pret, an_aparitie AS ”An aparitie” FROM carti WHERE SUBSTR(titlu,1,1) BETWEEN &L1 AND &L2;
d. Lista tuturor cărţilor după autoriSELECT autor, titlu, domeniu, editura, pret, an_aparitie AS ”An aparitie” FROM carti ORDER BY autor;
e. Lista cărţilor după un autor datSELECT autor, titlu, domeniu, editura, pret, an_aparitie AS ”An aparitie”
FROM carti WHERE autor=&autor_dat;f. Lista cărţilor după un autor dat într-o grupă de iniţiale
SELECT autor, titlu, domeniu, editura, pret, an_aparitie AS ”An aparitie” FROM carti WHERE SUBSTR(autor,1,1) BETWEEN &L1 AND &L2;
g. Lista tuturor cărţilor pe domeniiSELECT domeniu, titlu, autor , editura, pret, an_aparitie AS ”An aparitie” FROM carti ORDER BY domeniu;
h. Lista tuturor cărţilor dintr-un domeniu datSELECT domeniu, titlu, autor , editura, pret, an_aparitie AS ”An aparitie”
FROM carti WHERE domeniu=&domeniu_datORDER BY autor,titlu;
i. Lista tuturor cărţilor pe edituriSELECT editura,domeniu, titlu, autor , pret, an_aparitie AS ”An aparitie” FROM carti ORDER BY editura;
j. Lista tuturor cărţilor pentru o editură datăSELECT editura, domeniu, titlu, autor, pret, an_aparitie AS ”An aparitie”
FROM carti WHERE editura=&ed;k. Lista tuturor cărţilor după preţuri, crescător
SELECT titlu, autor , domeniu,editura,pret, an_aparitie AS ”An aparitie” FROM carti ORDER BY pret;l. Lista tuturor cărţilor după preţuri, descrescător
SELECT titlu, autor , domeniu,editura,pret, an_aparitie AS ”An aparitie” FROM carti ORDER BY pret (desc);m. Lista tuturor cărţilor după interval de preţuri
SELECT titlu, autor , domeniu,editura,pret, an_aparitie AS ”An aparitie” FROM carti WHERE pret BETWEEN &p1 AND &p2;n. Total valoric
SELECT SUM(pret) AS ”TOTAL VALORIC” FROM carti;
o. Se mai pot dezvolta interogări tip total valoric pe domenii, pe edituri, pe achiziţii, donaţii sau casăriEx. Total valoric pe casări:SELECT SUM(pret) AS ”Total valoric CASĂRI” FROM carti WHERE provenienta=’C’ ;5. Interogări din CITITORIa. Listare după nume
SELECT Nume_prenume AS “Nume şi prenume” FROM cititori
ORDER BY Nume_prenume;b. Listare după specialitate
SELECT Nume_prenume AS “Nume şi prenume”, specialitate FROM cititori
ORDER BY specialitate;
c. Listare după clasăSELECT Nume_prenume AS “Nume şi prenume”, clasa FROM cititori GROUP BY clasa ORDER BY Nume_prenume;
d. Listare cititori care au pierdut carteaSELECT cititori.Nume_prenume AS “Nume şi prenume”, cititori.clasa,
carti.titlu, carti.autor FROM carti, cititori, imprumuturi WHERE imprumuturi.id_cititor=cititori.id AND imprumuturi.Nr_inv_carte=carti.Nr_inv
AND imprumuturi.data_restituire IS NULL AND carti.provenienta=’P’;
6. Operaţii în tabela IMPRUMUTURIa. Imprumutare carte
RUN FORM imprumut_nouSau
INSERT INTO imprumuturi (data_imprumut,data_restituire,Nr_inv_carte,Id_cititor)VALUES (SYSDATE, Null, &inventar,&Id_cit);
b. Restituire carteUPDATE imprumuturi SET data_restituire=SYSDATEWHERE Nr_inv_carte=&inventar AND Id_cititor=&Id AND data_restituire IS NULL;
c. Lista restanţeSELECT cititori.Nume_prenume AS “Nume şi prenume”, cititori.clasa,
carti.titlu, carti.autor FROM carti, cititori, imprumuturi WHERE imprumuturi.id_cititor=cititori.id AND imprumuturi.Nr_inv_carte=carti.Nr_inv
AND imprumuturi.data_restituire IS NULL AND carti.provenienta != ’P’;