Sunteți pe pagina 1din 6

Academia de Studii Economice Contabilitate, Audit si Informatica de Gestiune

PROIECTARE BAZA DE DATE PENTRU BIBLIOTECA

Realizat de: Strilciuc Elena Grupa 660

Bucuresti

2012

Baza de date pentru o Biblioteca


Baza de date STRILCIUC ELENA conine urmatoarele tabele: ABONATI(COD_ABON, NUME, PRENUME, ADRESA, STATUT, DATA_EXPIR) AUTOR(COD_AUTOR, NUME_A, PRENUME_A) CARTI(ISBN, TITLU, EDITURA, DOMENIU, COLECTIE, LIMBA, APARITIE, STOC) COLECTII_AUTOR(COD_AUTOR, ISBN) IMPRUMUT(COD_ABON, ISBN, DATA1, DATA2, PRELUNGIRE, BUC) RESTRICTII(COD ABON, RESTRICTIE) ABON_EXPIRATE*(COD_ABON, NUME, PRENUME, ADRESA, STATUT, DATA_EXPIR) NUME CAMP COD_ABON NUME PRENUME ADRESA STATUT DATA_EXPIR COD_AUTOR NUME_A PRENUME_A TITLU EDITURA ISBN DOMENIU COLECTIE LIMBA APARITIE STOC DATA1 DATA2 PRELUNGIRE BUC NUME PRENUME ADRESA STATUT DATA_EXPIR RESTRICTIE TIP DATE bigint Nvarchar(50) Nvarchar(50) Nvarchar(50) Nvarchar(50) Date bigint Nvarchar(50) Nvarchar(50) Nvarchar(100) Nvarchar(50) Nvarchar(50) Nvarchar(100) Nvarchar(100) Nvarchar(50) bigint int date date date int Nvarchar(50) Nvarchar(50) Nvarchar(50) Nvarchar(50) Date nvarchar(50) CONSTRANGERE >0, lungime de 4 cifre, primele 2 cifre=99

Unic pentru fiecare abonat i Fixat (Student, Extern sau Elev) >01/11/2011 >0, lungime de 4 cifre, Primele 2 cifre=11

Sa inceapa cu Codul industriei (978) urmat de Codul Romaniei (973)

>0 >=0 <DATA2 CU 21 ZILE <PRELUNGIRE CU 21 ZILE >DATA2 CU 21 ZILE =1

Unic pentru fiecare abonat i Fixat (Student, Extern sau Elev) >01/11/2011 si <data curenta Forma fixata (Restrictionat sau Provizoriu interzis)

Restrictii de integritate 1. Data expirarii unui abonament nu poate fi mai mare decat data curenta, intrucat abonaamentul nu ar putea fi incadrat drept expirat. 2. Un cod de ISBN trebuie sa inceapa obligatoriu cu codul industriei (in cazul de fata, pentru domeniul cartilor se utilizeaza 978), urmat de codul Romanniei (973) si apoi de un numar de ordine al editurii. 3. Data predarii (DATA2) unei carti imprumutate la o data egala cu DATA1 nu poate fi mai mica decat aceasta data. 4. Data pana la care se prelungeste imprumutul (PRELUNGIRE) unei carti este obligatoriu mai mare decat prima data si cea de-a doua, la care s-au efectuat imprumutul initial si respectiv, prelungirea. 5. Fiecare abonat poate avea un statut si numai unul care este fixat pe student, elev sau extern. Spre exemplu, un student nu poate fi in acelasi timp si elev. 6. Un abonat poate imprumuta doar cate o carte din fiecare exemplar. Spre exemplu, abonatul 99xx poate imprumuta un singur exemplar din cartea cu ISBN=978973XXX. Probleme propuse spre rezolvare pe aceasta structura de tabele: Inserare:
INSERT INTO ABONATI VALUES (9966,'Vasilescu', 'Doru', 'Str. Drumul Taberei, Nr.33', 'Student', 0, GETDATE()+(90))

Modificare:
ALTER TABLE RESTRICTII ADD ZILE_SANC INT GO UPDATE RESTRICTII SET ZILE_SANC=DATEDIFF(DAY,DATA_RESTR, GETDATE()) GO UPDATE RESTRICTII SET DATA_RESTR=(SELECT DATA2 FROM IMPRUMUT WHERE RESTRICTII.COD_ABON=IMPRUMUT.COD_ABON) GO

VIEWS 1. View pentru afisarea cartilor care au fost imprumutate precum si a imprumuturi pe fiecare carte:
CREATE VIEW W_NR_CARTI_IMPR

numarului de

2. View pentru afisarea abonatilor care mai au de adus carti si se afla in prima tura de imprumut, precum si a datei returnarii si a isbn-ului aferent cartilor in cauza:
CREATE VIEW [dbo].[LA_ABONAT_D2]

3. View pentru afisarea abonatilor care mai au de adus carti si se afla in prelungire, precum si a datei returnarii si a isbn-ului aferent cartilor in cauza:
CREATE VIEW [dbo].[LA_ABONAT_PREL] 4. View care afiseaza persoanele ce au imprumutat carti in perioada 01/12/2011-31/12/2011, pentru a realiza o statistica la sfarsit de luna:

CREATE VIEW [dbo].[CARTI_DEC]

5. View pentru afisarea autorilor si a titlurilor cartilor scrise de acestia:


CREATE VIEW AUTORI_CARTI

6. View pentru afisarea numarului de scrieri aferent fiecarui autor:


CREATE VIEW W_AUTOR_SCRIERI

7. View pentru unirea a doua tabele din baza de date Library, care contin abonamente expirate si ulterior reinnoite:
CREATE VIEW REACTUALIZARE_EXPIRATE

8. View pentru afisarea stocului cartilor:


CREATE VIEW [dbo].[STOC_RAMAS]

9. View pentru afisarea detaliilor abonatilor (nume, prenume) care au restrictii la imprumut:
CREATE VIEW [dbo].[W_ABON_RESTR]

TRIGGERE 1. Trigger care restrictioneaza inserarea in tabelul IMPRUMUT a mai mult de 3 imprumuturi pentru acelasi abonat:
CREATE TRIGGER [dbo].[MAX_CARTI1]

2. Trigger pentru verificarea inserarii unui imprumut de carte pentru care nu mai exista stoc:
CREATE TRIGGER [dbo].[UPDATE_STOC]

PROCEDURI 1. Procedura pentru setarea in tabelul ABONATI a numarului de carti imprumutate de fiecare abonat conform tabelului IMPRUMUT, precum si alterarea tabelului RESTRICTII prin crearea unei noi coloane:
CREATE PROCEDURE ALTER_TABLE

2. Procedura pentru setarea datei inceperii restrictiei in tabelul RESTRICTII, in functie de DATA2:
CREATE PROCEDURE DATA_RESTR

3.Procedura pentru updatarea coloanei de BUC din tabelul restrictii pentru acei abonati care se regasesc in tabelul de imprumut si care au drept restrictie=RESTRICTIONAT (au carti imprumutate pentru acare a trecut data scadenta). In cazul in care ne aflam la prima creare de restrictii, se creaza coloana de bucati BUC.
CREATE PROCEDURE BUC_RESTR

4. Procedura pentru selectionarea cartilor imprumutate si a caror data de returnare corespunde unei date introdusa de la tastatura:
CREATE PROCEDURE [dbo].[PREDATE_DATA]

5. Procedura pentru calculul unei sanctiuni pentru abonatii care au drept restrictie RESTRICTIONAT insemnand ca inca nu au predat cartea imprumutata.
CREATE PROCEDURE ADAUG_RESTRICTII_FIN

6. Procedura pentru executarea unei functii de afisare a cartilor dupa domeniu:


CREATE PROCEDURE TEST Si o alta procedura care foloseste tot o functie personalizata: CREATE PROCEDURE TEST2

7. Procedura pentru crearea unui rang al abonatilor care au carti imprumutate, atasand 1 pentru nicio carte imprumutata, 2 pentru o carte, 3 pentru 2 carti, 4 pentru 3 carti:
CREATE PROCEDURE [dbo].[DISTRIB]

8 . Procedura pentru predarea abonatilor pentru care a trecut data limita a imprumutului:
CREATE PROCEDURE [dbo].[PREDARE_ABONATI]

9. Procedura pentru afisarea numarului persoanelor de un anumit statut, care se precizeaza printr-un parametru; procedura foloseste o functie definita de utilizator si returneaza un mesaj adecvat acestei cerinte.
CREATE PROCEDURE [dbo].[REZ_NR_ABON_TIP]

FUNCTII 1. Functie scalara care sa afiseze titlurile cartilor incluse intr-un domeniu dictat printr-un parametru:
CREATE FUNCTION [dbo].[SIR_CARTI](@PDOM AS NVARCHAR(200),@NUMECARTE AS NVARCHAR(200),@PDOMCERUT AS NVARCHAR(200))

2. Functie tabelara pentru returnarea autorilor care au scris un anumit numar de carti dicatat printr-u parametru:
CREATE FUNCTION [dbo].[AUTOR_A] (@PNR_COLECTII AS INT)

3. Functie care creaza un tabel cu titlurile de carti pe domenii, calculand cate carti se afla in total pe fiecare domeniu in parte, precum si cate titluri contine un domeniu:
CREATE FUNCTION NR_CARTI_DOM ()

4. Functie care numara cate persoane abonate de un anumit tip exista in interiorul bazei de date abonati:
CREATE FUNCTION [dbo].[NR_ABON_TIP] (@PTIP AS NVARCHAR(max))