Documente Academic
Documente Profesional
Documente Cultură
PROIECT
Proiectul isi propune realizarea unei baze de date pentru administrarea unei biblioteci. Este realizat olosind !icroso t "#$ "er%er &''(. "e considera urmatorul dictionar al datelor) *D+ARTE *DAUTOR T*T$U NU!EAUTOR AN PRENU!EAUTOR $*!BA *DED*TURA *D+*T*TOR NU!EED*TURA NU!E+*T*TOR TE$EFONED*TURA PRENU!E+*T*TOR DATA*!PRU!UT +NP DATARE"T*TU*RE TE$EFON PENA$*ZARE "E+TOR ,A$OARE Re-uli de -estiune) - pot e.ista mai multi studenti cu acelasi nume - data restituirii trebuie sa coincida sau sa ie ulterioara datei imprumutului - codul numeric personal trebuie sa ie alcatuit din /0 ci re - un autor poate scrie mai multe carti - la o editura pot aparea mai multe carti - sectorul trebuie sa ie /1&101213 sau 4
!odelul lo-ic al datelor se prezinta dupa cum urmeaza) CARTE 5*D+ARTE1 T*T$U1 AN1 $*!BA1 *DED*TURA6 CITITOR 5*D+*T*TOR1 NU!E+*T*TOR1 PRENU!E+*T*TOR1 +NP1 TE$EFON1 "E+TOR6 AUTOR 5*DAUTOR1 NU!EAUTOR1 PRENU!EAUTOR6 EDITURA 5*DED*TURA1 NU!EED*TURA1 TE$EFONED*TURA6 CARTEAUTOR 5*D+ARTE1 *DAUTOR6 !ISA 5*D+*T*TOR1 *D+ARTE1 DATA*!PRU!UT1 DATARE"T*TU*RE1 PENA$*ZARE1 ,A$OARE6 TRIGGERS "e %a crea tabela Ar7i%a1 a%and c7eia primara *D si elemente e.plicatie si data operatie. *D-ul se %a completa automat. " Realizati #$ trigger care %a ada#ge i$ tabel toti cititorii ce &or 'i ada#gati i$ tabela Cititor(
CREATE TRIGGER [dbo].[ADAUGA_CITITOR] ON [dbo].[CITITOR] AFTER INSERT AS BEGIN INSERT INTO ARHIVA(EXPLICATIE,DATAOPERATIE) SELECT 'A FOST ADAUGAT CITITORUL' NU!ECITITOR '' GETDATE() FRO! INSERTED END
PRENU!ECITITOR ,
" Realizati #$ trigger care %a )ermita act#alizarea $#mel#i %t#de$tilor di$ tabela Cititor(
ALTER TRIGGER [dbo].[!ODIFICA_CITITOR] ON [dbo].[CITITOR] AFTER UPDATE AS BEGIN INSERT INTO ARHIVA(EXPLICATIE,DATAOPERATIE) SELECT 'S"A !ODIFICAT CITITORUL' DELETED.NU!ECITITOR DELETED.PRENU!ECITITOR 'CU' INSERTED.NU!ECITITOR '' INSERTED.PRENU!ECITITOR,GETDATE() FRO! DELETED,INSERTED END
''
BEGIN
ROLLBAC& TRANSACTION END ELSE BEGIN INSERT INTO ARHIVA(EXPLICATIE,DATAOPERATIE) SELECT 'S"A STERS CITITORUL' NU!ECITITOR,GETDATE() FRO! DELETED END END
+IE,S /."a se a iseze toate cartile al caror titlu incepe cu litera *. "E$E+T FRO! 89ERE T*T$U dbo.+ARTE 5T*T$U $*:E N;*<;6
&."a se a iseze toti cititorii de se. eminine din tabela +ititor. "E$E+T +NP1 NU!E+*T*TOR1 PRENU!E+*T*TOR FRO! dbo.+*T*TOR 89ERE 5$EFT5+NP1 /6 = ;&;6 0. "a se a iseze toti cititorii nascuti in anul />(4. "E$E+T NU!E+*T*TOR1 PRENU!E+*T*TOR1 +NP FRO! dbo.+*T*TOR 89ERE 5+NP $*:E N;?(4<;6 2."a se a iseze toate cartile aparute intre anii />&' si />>'. "E$E+T AN1 T*T$U FRO! dbo.+ARTE 89ERE 5AN @ N;/>&';6 AND 5AN A N;/>>';6 3."a se a iseze toate cartile scrise de $i%iu Rebreanu. "E$E+T dbo.AUTOR.NU!EAUTOR1 dbo.AUTOR.PRENU!EAUTOR1 dbo.+ARTE.T*T$U1 +OUNT5dbo.+ARTE.*D+ARTE6 A" E.pr/ FRO! dbo.+ARTEAUTOR *NNER BO*N dbo.AUTOR ON dbo.+ARTEAUTOR.*DAUTOR = dbo.AUTOR.*DAUTOR *NNER BO*N dbo.+ARTE ON dbo.+ARTEAUTOR.*D+ARTE = dbo.+ARTE.*D+ARTE CROUP BD dbo.AUTOR.NU!EAUTOR1 dbo.AUTOR.PRENU!EAUTOR1 dbo.+ARTE.T*T$U 9A,*NC 5dbo.AUTOR.NU!EAUTOR = N;REBREANU;6 4."a se a iseze toti cititorii nascuti prima%ara. "E$E+T NU!E+*T*TOR1 PRENU!E+*T*TOR1 +NP
FRO! 89ERE
G."a se a iseze cititorii din toate sectoarele in a ara de sectorul 4. "E$E+T *D+*T*TOR1 NU!E+*T*TOR1 PRENU!E+*T*TOR1 "E+TOR FRO! dbo.+*T*TOR 89ERE 5"E+TOR $*:E N;EH4F;6 (."a se a iseze cititorii care au restituit cartile a late in imprumut. "E$E+T dbo.+*T*TOR.NU!E+*T*TOR1 dbo.+*T*TOR.PRENU!E+*T*TOR1 dbo.F*"A.DATARE"T*TU*RE FRO! dbo.F*"A *NNER BO*N dbo.+*T*TOR ON dbo.F*"A.*D+*T*TOR = dbo.+*T*TOR.*D+*T*TOR 89ERE 5dbo.F*"A.DATARE"T*TU*RE A CETDATE566 PROCEDURI STOCATE /."a se creeze o procedura stocata pentru a a isa datele unui cititor al carui +NP este speci icat ca parametru. *n cazul in care parametrul nu este speci icat se %a a isa un mesaI de eroare.
CREATE PROCEDURE [dbo].[AFISEA'A_CITITOR] (CNP NCHAR()%)$NULL AS IF (CNP$NULL BEGIN PRINT 'NU ATI FURNI'AT UN CNP' RETURN END ELSE SELECT * FRO! CITITOR #HERE CNP$(CNP
E.ecute [dbo].[AFISEA'A_CITITOR] (+,-$./012)23)22)45. &. "a se creeze o procedura stocata pentru a a isa cititorii dintr-o anumita localitate speci icata ca parametru. *n cazul in care parametrul nu este speci icat se %a a isa un mesaI de eroare.
CREATE PROCEDURE [dbo].[AFISEA'A_SECTOR] (PSECTOR NVARCHAR(42) $ NULL AS IF (PSECTOR$NULL BEGIN PRINT 'NU ATI FURNI'AT SECTORUL' RETURN END ELSE SELECT * FRO! CITITOR #HERE (PSECTOR$SECTOR
CREATE PROCEDURE [dbo].[RESTITUIRE_I!PRU!UT] (PRESTITUIRE DATETI!E OUTPUT AS SELECT (PRESTITUIRE$!AX(DATARESTITUIRE) FRO! FISA
!UNCTII DE TIP TABELAR /."a se a iseze numarul cartilor scrise de iecare autor.
CREATE FUNCTION [dbo].[NRCARTI]((PIDAUTOR AS NVARCHAR(42)) RETURNS TABLE AS RETURN(SELECT COUNT(IDCARTE) AS NRCARTI, IDAUTOR FRO! CARTEAUTOR #HERE IDAUTOR$(PIDAUTOR GROUP BD IDAUTOR)
/.
CREATE FUNCTION [dbo].[NRCARTIEDITURA]((PIDEDITURA AS NVARCHAR(42)) RETURNS TABLE AS RETURN(SELECT COUNT(IDCARTE) AS NRCARTI, IDEDITURA FRO! CARTE #HERE IDEDITURA$(PIDEDITURA GROUP BD IDEDITURA) %.S6 78 69:78;8 7?b 9o<@6 ?,?: =6b8> 9:8+6<8 +6<=8,+:=:=o<?> +6<8 6 :@-<?@?=6="o 7: B6>o6<86 -8,6>:;6<:: +?@?>6=8.C:=:=o<?> 87=8 7-8+:9:+6= +6 -6<6@8=<?. CREATE FUNCTION [dbo].[TOTALPENALI'ARI] ((PIDCITITOR AS NVARCHAR(42)) RETURNS (TABELTOTALPENALI'ARI TABLE(IDCARTE NVARCHAR(42),IDCITITOR NVARCHAR(42), VALOARE !ONED) AS BEGIN INSERT (TABELTOTALPENALI'ARI SELECT dbo.FISA.IDCARTE, IDCITITOR, VALOARE FRO! FISA #HERE IDCITITOR$(PIDCITITOR GROUP BD FISA.IDCARTE, IDCITITOR, VALOARE RETURN END
"a se de ineasca un buton de comanda asupra unui ormular care sa permita adau-area de noi date in tabela +arte 1 cu restrictia la limba sa ie romana sau -ermana si data sa ie e.clusi% anul curent.