Sunteți pe pagina 1din 21

Biletul 1.

A.
Se doreşte informatizarea activităţii unei unei farmacii.
Se consideră următorul dicţionar al datelor:
Cod Medicament, Denumire medicament, Pret, Nr Bon casa, Data bon casa, Cantitate
vanduta, Cod farmacist, Nume farmacist, Functie farmacist

 Un bon de casa face referire la mai multe medicamente, un medicament poate fi


obiectul mai multor bonuri de casa.
 Un farmacist emite mai multe bonuri de casa, un bon de casa poate fi emis de un
singur farmacist.

Să se elaboreze modelul relaţional al datelor

B. Fie următorul model :

1. Să se scrie comanda SQL pentru crearea tabelei tMediere (cu constrângeri


referitoare la cheia primară şi cheia străină)
2. Să se scrie comanda SQL pentru adaugarea unei inregistrari în tabela tHoteluri
3. Să se scrie comanda SQL pentru diminuarea cu 10% a preţului pentru
hotelurile din localitatea Costineşti
4. Să se scrie comanda SQL pentru afişarea numărului de hoteluri din fiecare
localitate, în ordinea alfabetică a localităţilor
5. Să se scrie comanda SQL pentru afişarea urmatoarelor informaţii: CodAgentie,
Localitate agenţie, CodHotel, Denumire, Pret, Data, Durata,
NrLocuriRezervate, ValoareLocuriRezervate,
unde ValoareLocuriRezervate= NrLocuriRezervate* Durata*Pret
6. Să se scrie comanda SQL pentru afişarea localităţilor în care există agenţii ce
au rezervate locuri pentru hotelul cu codul “Belvedere”
7. Să se scrie comanda SQL pentru afişarea urmatoarelor informatii:
CodHotel, Denumire, Numar total de locuri rezervate
8. Să se scrie comanda SQL pentru afişarea hotelurilor cu pret mai mare decât
pretul mediu al hotelurilor din localitatea Mamaia
9. Să se scrie comanda SQL pentru afişarea hotelurilor care nu au locuri rezervate
prin agenţii
10. Să se scrie comanda SQL pentru afişarea hotelurilor care sunt din aceeaşi
localitate cu hotelul cu denumirea “Regent”
11. Să se scrie o funcţie pentru determinarea valorii locurilor rezervate de o
agentie identificata prin CodAgentie la un hotel identificat prin CodHotel,
utilizand formula
ValoareLocuriRezervate=∑ NrLocuriRezervate* Durata*Pret
Biletul 2.
A. Se doreşte realizarea unui sistem informatic pentru gestiunea activităţii unei edituri.
Se consideră următorul dicţionar al datelor:
ISBN, Titlu carte, An apariţie, Cod autor, Nume autor, Cod librărie, Denumire
librărie, Adresa librărie, Număr contract, Data contract, Nr. exemplare contractate.
Reguli de gestiune:
 Un autor poate avea scrise mai multe cărţi, o carte este scrisă de mai mulţi autori;
 Un contract este semnat cu o singură librărie, cu o librărie pot fi semnate mai multe
contracte;
 Un contract face referire la mai multe cărţi, o carte poate face obiectul mai multor
contracte.
Să se elaboreze modelul relaţional al datelor

B. Fie următorul model:

1. Să se scrie comanda SQL pentru afişarea cantităţii totale contractată din fiecare
produs
2. Să se scrie comanda SQL pentru afişarea clienţilor care au contractat produsul cu
codul “C1”
3. Să se scrie comanda SQL pentru afişarea numărului de produse contractate de
fiecare client, în ordinea alfabetică a clienţilor
4. Să se scrie comanda SQL pentru afişarea produselor care nu au fost contractate
5. Să se scrie comanda SQL pentru afişarea urmatoarelor informaţii: DenClient,
nrContract, DenProdus, Cant (cantitate), Pret, Valoare
6. Să se scrie comanda SQL pentru afişarea urmatoarelor informaţii: DenClient, Total
valoaric al produselor contractate
7. Să se scrie comanda SQL pentru afişarea clientilor care au incheiat contract în
aceeaşi dată cu a contractului cu nrContract = 1000
8. Să se scrie comanda SQL pentru crearea tabelei tContracte (cu constrângeri
referitoare la cheia primară şi cheia străină)
9. Să se scrie comanda SQL pentru adaugarea unei înregistrări în tabela tProduse
10. Să se scrie comanda SQL pentru diminuarea cu 10% a preţului pentru produsele
care încep cu litera ”P”
11. Să se elaboreze o procedură stocată pentru ştergerea contractului identificat prin
parametrul de intrare NrContract
Biletul 3.
A. Se doreşte realizarea unui sistem informatic pentru încasări şi plăţi.
Se consideră următorul dicţionar al datelor
Cod client, Nume, Adresa, Nr. contract, Data contract, Data scadentă, Valoare
contract, Nr. document plată, Data document plată, Suma plătită.
Reguli de gestiune:
 Un contract este semnat cu un singur client, un client poate avea mai multe contracte;
 Un contract se poate achita cu mai multe documente de plata, cu un document de plata
se pot achita mai multe contracte ale aceluiaşi client.
Să se elaboreze modelul relaţional al datelor

B. Fie următorul model:

1. Să se scrie comanda SQL pentru afişarea tarifului maxim


2. Să se scrie comanda SQL pentru afişarea clienţilor angajatului cu marca 1001
3. Să se scrie comanda SQL pentru afişarea sumelor totale achitate de fiecare client
4. Să se scrie comanda SQL pentru afişarea numărului de bonuri emise la nivelul
fiecarei zile
5. Să se scrie comanda SQL pentru afişarea serviciilor care nu au fost solicitate
6. Să se scrie comanda SQL pentru afişarea informaţiilor CodServiciu, DenServiciu,
Tarif, Durata, pentru toate seviciile cu Tarif mai mic decat tariful serviciului cu
codServiciu = “S10”
7. Să se scrie comanda SQL pentru crearea tabelei tBonuri (cu constrângeri
referitoare la cheia primară şi cheia străină)
8. Să se scrie comanda SQL pentru adaugarea unei înregistrări în tabela tBonuri
9. Să se scrie comanda SQL pentru diminuarea cu 5% a Tarifului pentru serviciile
care încep cu litera ”M”
10. Să se scrie comanda SQL pentru afişarea angajaţilor cu funcţia specificată printr-
un parametru(variabilă).
11. Să se elaboreze o funcţie pentru determinarea sumei tarifelor serviciilor efectuate
de un angajat identificat prin Marca într-o zi specificată prin Data
Biletul 4.

Se doreşte realizarea unui sistem informatic pentru o bibliotecă.


Se consideră următorul dicţionar al datelor
Nr. permis, Nume cititor, Prenume cititor, Adresa cititor, Telefon cititor, Cotă
carte, Titlu carte, Cod Autor, Nume autor, ISBN carte, Data împrumut, Data
restituire, Numărul de exemplare împrumutate.
Reguli de gestiune:
 Un permis este realizat pentru un singur cititor.
 Un cititor poate împrumuta mai multe cărţi, o carte poate să fie împrumutată de mai
multe ori.
 Un autor poate scrie mai multe cărţi, o carte este scrisă de mai mulţi autori;
 Fiecare carte împrumutată se restituie la o anumită dată ce va fi stocată în baza de
date.
Să se elaboreze modelul relaţional al datelor

B. Fie următorul model:

1. Să se scrie comanda SQL pentru afişarea clienţilor care au contractat produsul cu


tipAsigurare = “T1”
2. Să se scrie comanda SQL pentru afişarea numărului de produse contractate de
fiecare client, în ordinea alfabetică a clienţilor
3. Să se scrie comanda SQL pentru afişarea agenţilor care nu au încheiat contractate
de asigurare
4. Să se scrie comanda SQL pentru afişarea urmatoarelor informaţii: numeAgent,
NumeClient, nrContract, valoareAsigurata
5. Să se scrie comanda SQL pentru afişarea urmatoarelor informaţii: numeAgent,
total primaLunara al contractelor încheiate
6. Să se scrie comanda SQL pentru afişarea urmatoarelor informaţii: numeAgent,
total primaLunara al contractelor încheiate, pentru agenţii care au acest total mai
mare de 5000 lei
7. Să se scrie comanda SQL pentru afişarea clienţilor de acelaşi tipClient cu al
clientului cu codClient = “1001”
8. Să se scrie comanda SQL pentru crearea tabelei tContracte (cu constrângeri
referitoare la cheia primară şi cheia străină)
9. Să se scrie comanda SQL pentru adaugarea unei inregistrari în tabela tAgenti
10. Să se scrie comanda SQL pentru suplimentarea cu 10% a valorii asigurate pentru
contractele cu tipAsigurare = ”T1”
11. Să se elaboreze o procedură stocată pentru ştergerea clientului identificat prin
parametrul de intrare CodClient.
Biletul 5.
Se doreşte informatizarea ieşirilor de produse dintr-o gestiune a unei firme.
Se consideră următorul dicţionar al datelor:
Cod gestiune, Denumire gestiune, Nume gestionar, Nr. bon consum, Data bon
consum, Cod consumator, Denumire consumator, Cod produs, Denumire produs,
Unitate masură, Preţ produs, Cantitate ieşită.
Reguli de gestiune:
 Un bon de consum aparţine unui singur consumator, pentru un consumator se pot edita
mai multe bonuri de consum
 Un bon de consum face referire la mai multe produse, un produs poate fi obiectul mai
multor bonuri de consum.
 Produsele unui bon de consum sunt livrate de o singura gestiune, o gestiune pote livra
produse de pe mai multe bonuri de consum

Să se elaboreze modelul relaţional al datelor

B. Fie următorul model:

1. Să se scrie comanda SQL pentru crearea tabelei tProduse (cu constrângeri


referitoare la cheia primară şi cheia străină)
2. Să se scrie comanda SQL pentru adăugarea unei înregistrări în tabela tMarci
3. Să se scrie comanda SQL pentru diminuarea cu 10% a preţului pentru
produsul cu codProdus „P1”
4. Să se scrie comanda SQL pentru afişarea numărului total de salariaţi pentru
fiecare ţară în parte
5. Să se scrie comanda SQL pentru afişarea numărului de tipuri de maşini
(„CodProdus”) pentru fiecare producător în parte, în ordinea alfabetică a
producătorilor
6. Să se scrie comanda SQL pentru afişarea următoarelor informaţii: Denumire
marcă, Denumire producător, Model, Pret, Consum
7. Să se scrie comanda SQL pentru afişarea ţărilor unde se fabrică maşina cu
codMarca specificat printr-un parametru (variabilă)
8. Să se scrie comanda SQL pentru afişarea modelului cu pretul maxim
9. Să se scrie comanda SQL pentru afişarea modelelor cu pret mai mare decât
pretul mediu al modelelor producătorului cu CodProducator = „P1”
10. Să se scrie comanda SQL pentru ştergerea din tMarci a înregistrării pentru
care CodMarca = „M10”
11. Să se elaboreze o procedură stocată pentru ştergerea producătorului identificat
prin parametrul de intrare CodProducător.
Biletul 6
A. Se doreşte informatizarea activităţii de desfacere a produselor unei firme.
Se consideră următorul dicţionar al datelor:
Cod client, Denumire client, Localitate client, Nr. comandă, Dată comandă, Dată
livrare, Cod produs, Denumire produs, Unitate de masură, Pret unitar produs,
Cantitate livrată.
Reguli de gestiune:

 Un client poate solicita mai multe comenzi, o comanda, identificată prin Nr. comandă,
aparţine unui singur client
 O comandă a unui client face referire la mai multe produse comandate, un produs poate
fi obiectul mai multor comenzi.
Să se elaboreze modelul relaţional al datelor

B. Fie următorul model:

1. Să se scrie comanda SQL pentru crearea tabelei tFactura (cu constrângeri


referitoare la cheia primară şi cheia străină)
2. Să se scrie comanda SQL pentru adaugarea unei înregistrări în tabela tFurnizor
3. Să se scrie comanda SQL pentru diminuarea cu 10% a câmpului ValIntrare pentru
mijloacele fixe cu CodCategorie = “C1”
4. Să se scrie comanda SQL pentru afişarea mijloacelor fixe dintr-o categorie al
cărui CodCategorie este specificat printr-un parametru (variabilă).
5. Să se scrie comanda SQL pentru afişarea totalului ValIntrare la nivel de
DenumireCategorie
6. Să se scrie comanda SQL pentru afişarea categoriilor pentru care nu sunt mijloace
fixe
7. Să se scrie comanda SQL pentru afişarea numărului de mijloace fixe pe fiecare
categorie în parte în ordinea alfabetică a categoriilor
8. Să se scrie comanda SQL pentru afişarea mijloacelor fixe din aceeaşi categorie cu
a mijlocului fix cu NrInventar =1000
9. Să se scrie comanda SQL pentru afişarea urmatoarelor informaţii: DenumireFz,
DenumireCategorie, DenumireMF, Data, DurataUtilizare
10. Să se scrie comanda SQL pentru stergerea categoriei cu codCategorie= ”C7”
11. Să se elaboreze o procedură stocată pentru ştergerea mijlocului fix identificat prin
parametrul de intrare NrInventar.
I. Rezolvare Bilet 1:

A. Modelul relational este:

Iar codul este (asta ca idee ca nu tre in rezolvare):


create database dbFarmacie
use dbFarmacie
go
create table tFarmacisti
(
CodFarmacist char(10) primary key,
NumeFarmacist varchar(20) not null,
Functie char(10) not null
)
create table tMedicamente
(
CodMedicament char(10) primary key,
DenumireMedicament varchar(20) not null,
Pret numeric(8,2) default 0
)
create table tBonuri
(
NrBon int identity(1,1) primary key,
Data smalldatetime default getdate(),
CodFarmacist char(10) foreign key references
tFarmacisti(CodFarmacist)
)
create table tDetaliiBon
(
NrDetaliuBon int identity(1,1) primary key,
NrBon int foreign key references tBonuri(NrBon),
CodMedicament char(10) foreign key references
tMedicamente(CodMedicament),
Cantitate numeric(8,2) default 1,
)

B. Rezolvare interogari:

--1. Sã se scrie comanda SQL pentru crearea tabelei tMediere (cu


constrângeri referitoare la cheia primarã si cheia strãinã)
create database dbAgentieHoteliera
use dbAgentieHoteliera
go

create table tAgentii


(
CodAgentie char(10) primary key,
AnInfiintare smalldatetime,
CifraAfaceri numeric(12,2),
Localitate varchar(20),
Cotatie char(10)
)
create table tHoteluri
(
CodHotel char(10) primary key,
Denumire varchar(20) not null,
Localitate varchar(20),
NrStele int check (NrStele between 1 and 7),
Pret numeric (7,2)
)
create table tMediere
(
IdMediere char(10) primary key,
CodAgentie char(10) foreign key references tAgentii(CodAgentie),
CodHotel char(10) foreign key references tHoteluri(CodHotel),
Data smalldatetime default getdate(),
Durata numeric(2),
NrLocuriRezervate numeric(2)
)

--2. Sã se scrie comanda SQL pentru adaugarea unei inregistrari în tabela


tHoteluri
insert into tHoteluri values('h4','Crown Platza','Bucuresti',5,1200)

--3. Sã se scrie comanda SQL pentru diminuarea cu 10% a preþului pentru


hotelurile din localitatea Costineºti
update tHoteluri
set Pret=Pret*0.9
where Localitate='Costinesti'

--4. Sã se scrie comanda SQL pentru afiºarea numãrului de hoteluri din


fiecare localitate, în ordinea alfabeticã a localitãþilor
select Localitate, COUNT(CodHotel) as [Numar Hoteluri]
from tHoteluri
group by Localitate
order by Localitate asc

--5. Sã se scrie comanda SQL pentru afiºarea urmatoarelor informaþii:


CodAgentie, Localitate agenþie, CodHotel, Denumire, Pret, Data, Durata,
NrLocuriRezervate, ValoareLocuriRezervate,
-- unde ValoareLocuriRezervate= NrLocuriRezervate* Durata*Pret
select A.CodAgentie, A.Localitate, C.CodHotel, Denumire, Pret, Data,
Durata, NrLocuriRezervate, NrLocuriRezervate*Durata*Pret as
ValoareLocuriRezervate
from tAgentii as A inner join tMediere as B on
A.CodAgentie=B.CodAgentie
inner join tHoteluri as C on B.CodHotel=C.CodHotel

--6. Sã se scrie comanda SQL pentru afiºarea localitãþilor în care existã


agenþii ce au rezervate locuri pentru hotelul cu codul “Belvedere”
select Localitate
from tAgentii as A inner join tMediere as B
on A.CodAgentie=B.CodAgentie
where CodHotel='Belvedere'

--7. Sã se scrie comanda SQL pentru afiºarea urmatoarelor informatii:


--CodHotel, Denumire, Numar total de locuri rezervate
select A.CodHotel, Denumire,SUM(NrLocuriRezervate) as [Numar total de
locuri rezervate]
from tHoteluri as A inner join tMediere as B
on A.CodHotel=B.CodHotel
group by A.CodHotel, Denumire

--8. Sã se scrie comanda SQL pentru afiºarea hotelurilor cu pret mai mare
decât pretul mediu al hotelurilor din localitatea Mamaia
select CodHotel, Denumire from tHoteluri
where Pret>(select AVG(Pret) from tHoteluri
where Localitate='Mamaia')

--9. Sã se scrie comanda SQL pentru afiºarea hotelurilor care nu au locuri


rezervate prin agenþii
select * from tHoteluri as A
where not exists (select * from tMediere
where A.CodHotel=CodHotel)

--10. Sã se scrie comanda SQL pentru afiºarea hotelurilor care sunt din
aceeaºi localitate cu hotelul cu denumirea “Regent”
select * from tHoteluri as A
where Localitate=(select Localitate from tHoteluri
where Denumire='Regent')
and Denumire!='Regent'

--11. Sã se scrie o funcþie pentru determinarea valorii locurilor rezervate


de o agentie identificata prin CodAgentie la un hotel identificat prin
CodHotel, utilizand formula
-- ValoareLocuriRezervate=∑ NrLocuriRezervate* Durata*Pret
create function ValoareLocuriRezervate(@CodAgentie char(10),@CodHotel
char(10) )
returns int
as
begin
declare @Valoare int
select @Valoare=sum(Pret*Durata*NrLocuriRezervate)
from tHoteluri as A inner join tMediere as B
on A.CodHotel=B.CodHotel
where B.CodAgentie=@CodAgentie
and B.CodHotel=@CodHotel
return @Valoare
end
print dbo.ValoareLocuriRezervate('a1','Belvedere')
II. Rezolvare Bilet 2:

A. Modelul relational este:

Iar codul este:

create database dbEditura


use dbEditura
go

create table tAutori


(
codAutor char(10) primary key,
numeAutor varchar(20) not null,
)
create table tCarti
(
ISBN char(10) primary key,
titluCarte varchar(20) not null,
anAparitie smalldatetime default getdate()
)
create table tLibrarii
(
codLibrarie char(10) primary key,
denumire varchar(20),
adresa varchar(50),
)
create table tAutoriCarti
(
codAutorCarte char(10) primary key,
codAutor char(10) foreign key references tAutori(codAutor),
ISBN char(10) foreign key references tCarti(ISBN)
)
create table tContracte
(
nrContract int identity(1,1) primary key,
codLibrarie char(10) foreign key references tLibrarii(codLibrarie),
dataContract smalldatetime default getdate()
)
create table tDetaliiContracte
(
nrDetaliuContract int identity(1,1) primary key,
nrContract int foreign key references tContracte(nrContract),
ISBN char(10) foreign key references tCarti(ISBN),
nrExemplare int
)

B. Rezolvare interogari:

--1. Sã se scrie comanda SQL pentru afiºarea cantitãþii totale


contractatã din fiecare produs
select denProdus, SUM(cant) as cantTotalaContractata from tProduse as B
inner join tDetaliiContracte as A
on A.codProdus=B.codProdus
group by denProdus

--2. Sã se scrie comanda SQL pentru afiºarea clienþilor care au


contractat produsul cu codul “C1”
select denClient from tClienti as A
inner join tContracte as B on A.codClient=B.codClient
inner join tDetaliiContracte as C
on B.nrContract=C.nrContract
where codProdus='p1'

--3. Sã se scrie comanda SQL pentru afiºarea numãrului de produse


contractate de fiecare client, în ordinea alfabeticã a clienþilor
select A.denClient, SUM(cant) from tClienti as A
inner join tContracte as B on A.codClient=B.codClient
inner join tDetaliiContracte as C
on B.nrContract=C.nrContract
group by A.denClient

--4. Sã se scrie comanda SQL pentru afiºarea produselor care nu au fost


contractate
select * from tProduse as A
where not exists (select * from tDetaliiContracte
where codProdus=A.codProdus)

--5. Sã se scrie comanda SQL pentru afiºarea urmatoarelor informaþii:


DenClient, nrContract, DenProdus, Cant (cantitate), Pret, Valoare
select A.denClient, B.nrContract, denProdus, cant, pret, cant*pret as
Valoare
from tClienti as A inner join tContracte as B on
A.codClient=B.codClient
inner join tDetaliiContracte as C on B.nrContract=C.nrContract
inner join tProduse as D on C.codProdus=D.codProdus
--6. Sã se scrie comanda SQL pentru afiºarea urmatoarelor informaþii:
DenClient, Total valoaric al produselor contractate
select A.denClient, SUM(cant*pret) as totalValoare
from tClienti as A inner join tContracte as B on
A.codClient=B.codClient
inner join tDetaliiContracte as C on B.nrContract=C.nrContract
inner join tProduse as D on C.codProdus=D.codProdus
group by A.denClient

--7. Sã se scrie comanda SQL pentru afiºarea clientilor care au incheiat


contract în aceeaºi datã cu a contractului cu nrContract = 1000
select distinct A.codClient, denClient
from tClienti as A inner join tContracte as B on
A.codClient=B.codClient
where B.data=(select data from tContracte
where nrContract=3)
and B.nrContract!=3

--8. Sã se scrie comanda SQL pentru crearea tabelei tContracte (cu


constrângeri referitoare la cheia primarã ºi cheia strãinã)
create table tClienti
(
codClient char(10) primary key,
denClient varchar(30) not null
)
create table tProduse
(
codProdus char(10) primary key,
denProdus varchar(30) not null,
pret numeric(8,2) default 0
)
create table tContracte
(
nrContract int identity(1,1) primary key,
data smalldatetime default getdate(),
codClient char(10) foreign key references tClienti(codClient),
)
create table tDetaliiContracte
(
nrContract int foreign key references tContracte(nrContract),
codProdus char(10) foreign key references tProduse(codProdus),
cant numeric(8,2) default 1,
dataLiv smalldatetime default getdate()
)

--9. Sã se scrie comanda SQL pentru adaugarea unei înregistrãri în tabela


tProduse
insert into tProduse values('p8','visine','6')

--10. Sã se scrie comanda SQL pentru diminuarea cu 10% a preþului pentru


produsele care încep cu litera ”P”
update tProduse
set pret=pret*0.9
where LOWER(denProdus) like ('p%' )

--11. Sã se elaboreze o procedurã stocatã pentru ºtergerea contractului


identificat prin parametrul de intrare NrContract
create procedure stergeContract(@nrContract int)
as
begin
delete from tDetaliiContracte
where nrContract=@nrContract
delete from tContracte
where nrContract=@nrContract
end

dbo.stergeContract 6

S-ar putea să vă placă și