Biblioteca

9
Configuraţia meniului principal (albastru), a opţiunilor şi a subopţiunilor Tabele principale CĂRŢI Provenienţa : A – achiziţie D – donaţie C – casare P - pierdere CITITORI Nr_inv Titlu Auto r Domeniu Editu 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/P Cheie primară - - - - - - - Obligatoriu da da da da da da da Fă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 ToateEditu ră dată după AN Crescător/ descrescătorInte rval de preţuriTotal valoric An datInterva l ani Noi cititori Împrumutur i ÎMPRUMUT RESTITUIRE RESTANŢE Casări şi pierder i Lista Casări Lista Pierderi CASARE PIERDERE Achiziţi i Lista Achizi ţii Lista Surse Donaţii Lista Donaţii Lista Surse Listare cititori după CLASĂ după SPECIALITATE după NUME după Pierderi

description

Biblioteca

Transcript of Biblioteca

Page 1: 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

Page 2: Biblioteca

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,

Page 3: Biblioteca

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

Page 4: Biblioteca

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”

Page 5: Biblioteca

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;

Page 6: Biblioteca

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’;

Page 7: Biblioteca