Sunteți pe pagina 1din 6

FIȘE DE LUCRU – S.G.B.

D ORACLE
Obiective
 însuşirea de către elevi a unor noţiuni fundamentale despre:
 sistemul Oracle și utilizarea unor componente ale sale;
 modul de lucru cu limbajul SQL
 utilizarea limbajul SQL avansat, interfeţele Forms şi Reports din
Oracle;
 realizarea unor rapoarte interactive și a unor grafice / diagrame folo-
sind informațiile din baza de date;
 familiarizarea elevilor cu posibilităţile de utilizare ale unui SGBD indiferent
de tipul lui;
 dobândirea abilităţii de a dezvolta aplicaţii cu baze de date relaţionale.
FIȘE DE LUCRU – S.G.B.D ORACLE

Cuprins
FIȘA NR. 1 ...........................................................................................................................................................3
FIȘA NR. 2 ...........................................................................................................................................................3
FIȘA NR. 3 ...........................................................................................................................................................3
FIȘA NR. 4 – Aplicație rezolvată ..........................................................................................................................4
SOLUȚIE ..............................................................................................................................................................4
FIȘA NR. 5 ...........................................................................................................................................................6
FIȘE DE LUCRU – S.G.B.D ORACLE

FIȘA NR. 1
O persoană îşi organizează agenda personală cu următoarele informaţii: nume, data naşterii, localitate
de domiciliu, telefon fix, telefon mobil.

Folosind Oracle Application Express, implementaţi în schema proprie următoarele cerinţe:

a) construiţi tabela şi introduceţi date în tabelă.


b) aflaţi câte persoane îşi sărbătoresc data naşterii azi.
c) afişaţi numerele de telefon ale persoanelor dintr-o localitate dată şi al căror nume începe cu litera
’L’.
d) afișați următoarea propoziție: NUME are numărul de telefon fix TELEFON și este din localitatea LO-
CALITATE.
e) pentru persoanele din Tecuci afișați numele, telefonul fix, telefonul mobil și data nașterii în forma-
tul Ianuarie, 25th 1999 .

FIȘA NR. 2
Serviciul de înmatriculări, are un nou administrator al bazei de date proprii, Bellman Aristotel. Acesta
organizează datele din baza proprie în două tabele: Persoane (id_pers (number), nume (varchar2), Pre-
nume (varchar2), localitate (varchar2)), respectiv Maşini (id_maşina (number), marca (varchar2),
id_pers(number) )

Folosind Oracle Application Express, implementaţi în schema proprie următoarele cerinţe:

a) adăugaţi câte 3 înregistrări în cele două tabele.


b) să se afişeze toate persoanele care nu au nici o maşină.
c) să se afişeze toate maşinile care aparţin unei persoane citite de la tastatură.

FIȘA NR. 3

Biblioteca Judeţeană doreşte să migreze spre platforma Oracle cu baza ei de date. Pentru evidenţa per-
soanelor înscrise, avem la dispoziţie informaţiile: (CNP, numele, cod_acces) ultimul fiind necesar pentru
acces la sala de lectură.

Folosind Oracle Application Express, implementaţi în schema proprie următoarele cerinţe:

a) crearea tabelei şi adăugarea de minim 5 înregistrări.


b) calculaţi câte persoane sub 14 ani sunt înscrise la bibliotecă.
c) afişaţi numele şi codul de acces al persoanelor născute într-un anumit an citit de la tastatură.
FIȘE DE LUCRU – S.G.B.D ORACLE

FIȘA NR. 4 – Aplicație rezolvată

Ești medic de familie și pentru a ține evidenţa persoanelor arondate organizezi informațiile într-o
bază de date formată din două tabele. Primul tabel îl folosești pentru a reține informaţii despre pacienţi:
cod_p, nume, adresă, profesia, starea civilă (casătorit, necăsătorit) iar cel de-al doilea tabel îl folosești pen-
tru a reține informaţii despre consultaţiile pe care le-ai efectuat: cod_c - codul consultaţiei, data - data
consultaţiei, diagnostic, cod_p – codul pacientului, pret – prețul consultației.

Folosind Oracle Application Express, implementaţi în schema proprie următoarele cerinţe:

a) Cu fereastra SQL Commands


 construiţi tabelele (cu constrângerile corespunzătoare) şi introduceţi date în tabele (min. 5
înregistrări);
 afişaţi toate informaţiile despre consultaţiile pacientului cu numele ’Mirabela Dragu’;
 afișați numele pacienților consultați astăzi;
 afișați numărul de pacienți consultați acum două zile;
 afișați toate informațiile despre pacienții care au fost consultați în aceeași zi cu ‘Dumitru And-
rei’;
 afișați numele și vârsta fiecărui pacient;
 afişaţi un raport ce arată numărul de pacienţi grupaţi pe diagnostice şi profesie (cu subtotaluri),
studiu ce va folosi în descoperirea locurilor de muncă cu condiţii nocive.
b) Cu fereastra Application Builder
 construiți o aplicație ce conține, pentru fiecare tabel, un formular și un raport interactiv; cu aju-
torul formularului mai introduceți încă 3 înregistrări în fiecare tabel;
Observație:după construirea aplicației formularul se personalizează - se modifică dimensiunea
câmpurilor text, se introduc butoane radio, casete de selecție dacă este cazul, etc.;
 pe baza raportului interactiv obținut cu informațiile memorate în tabelul CONSULTAȚII generați
un grafic ce permite analiza consultațiilor efectuate pe zile (numărul de consultații pe zile).
 pe baza raportului interactiv obținut cu informațiile memorate în tabelul PACIENȚI obțineți într-
o nouă coloană vârsta pacienților;
 afișați toate informațiile despre pacienții care au aceeași profesie folosind raportul interactiv
PACIENTI(Control Break);
 afișați valoarea totală a consultațiilor pe zile folosind raportul interactiv CONSULTAȚII.

SOLUȚIE
a)
CREATE TABLE pacienti CREATE TABLE consultatii
(
( cod_c number primary key,
cod_p number primary key, data date,
nume varchar2(40), diagnostic varchar2(50),
adresa varchar2(100), cod_p number references pacienti(cod_p),
profesia varchar2(40), pret number(5,2)
starea_civila varchar2(15) )
)
FIȘE DE LUCRU – S.G.B.D ORACLE
INSERT INTO pacienti VALUES (1,'Mirabela Dragu',’str.1
Decembrie, bl.F4, Tecuci, Galati', 'minerit', 'necasatorita')
INSERT INTO consultatii VALUES (1, ’11.21.2012’, ’insufi-
cienta respiratorie’, 1, 25)

SELECT p.nume,c.* FROM pacienti p,consultatii c WHERE p.cod_p=c.cod_p AND p.nume='Mirabela Dragu'

SELECT p.nume FROM pacienti p, consultatii c WHERE p.cod_p=c.cod_p AND to_char(c.data) = to_char
(sysdate)

SELECT count(cod_c) FROM consultatii WHERE to_char(data)=to_char(sysdate-2)

SELECT p.nume FROM pacienti p, consultatii c WHERE p.cod_p=c.cod_p AND p.nume<>'Dumitru Andrei'
AND c.data IN (SELECT data FROM consultatii WHERE cod_p=(SELECT cod_p FROM pacienti WHERE nu-
me='Dumitru Andrei'))

SELECT nume, trunc((sysdate-data_n)/365) varsta FROM pacienti

SELECT CASE

WHEN GROUPING(p.profesia)=1 THEN 'Nr. total de consultatii'

WHEN GROUPING(c.diagnostic)=1 THEN 'Nr de pacienti consultati cu acelasi diagnostic'

ELSE

p.profesia END profesia, diagnostic, count(p.cod_p) FROM pacienti p, consultatii c WHERE


p.cod_p=c.cod_p GROUP BY ROLLUP (p.profesia, c.diagnostic)

b)Click aici pentru a vizualiza aplicația sau click pe imaginea de mai jos.
FIȘE DE LUCRU – S.G.B.D ORACLE
FIȘA NR. 5

Ești managerul unei firme și pentru a ține evidenţa persoanelor din departamente organizezi in-
formațiile într-o bază de date formată din două tabele. Primul tabel îl folosești pentru a reține informaţii
despre angajați: id, nume, salariu, data_ang, codd iar cel de-al doilea tabel îl folosești pentru a reține infor-
maţii despre departamenele din firmă: codd, nume_depart, etaj.
Folosind Oracle Application Express, implementaţi în schema proprie următoarele cerinţe:

a) Cu fereastra SQL Commands


 construiţi tabelele (cu constrângerile corespunzătoare) şi introduceţi date în tabele (min. 5 înregistrări);
 afişaţi toţi angajaţii care au un salariu mai mic decât o valoare citită de la tastatură;
 afișați numele angajaților din departamentul 5 al căror prenume începe cu litera G;
 afişaţi numărul de angajaţi care lucrează la etajul 4;
 afisați numele și prenumele celui mai tânăr angajat;
 afisați numele departamentului cu număr maxim de angajați;
 afişaţi următoarea propoziţie:”Angajatul NUME din departamentul NUME_DEPART are un
salariu de SALARIU şi o vechime în muncă de VECHIME ani. Folosiţi aliasul PROPOZIŢIE.
b) Cu fereastra Application Builder
 construiți o aplicație ce conține, pentru fiecare tabel, un formular și un raport interactiv; cu aju-
torul formularului mai introduceți încă 3 înregistrări în fiecare tabel;
Observație:după construirea aplicației formularul se personalizează - se modifică dimensiunea
câmpurilor text, se introduc butoane radio, casete de selecție dacă este cazul, etc.;

 pe baza raportului interactiv obținut cu informațiile memorate în tabelul ANGAJATI obțineți într-
o nouă coloană vechimea angjaților;
 pe baza raportului interactiv obținut cu informațiile memorate în tabelul ANGAJAȚI generați un
grafic ce permite analiza salariilor plătite pe fiecare departament;
 pentru fiecare departament afișați numărul de angajați;
considerând că un angajat se poate pensiona după 40 de ani de muncă, să se afișeze în raportul interactiv
ANGAJAȚI, într-o nouă coloană, mesajul DA pentru persoanele care au depășit vechimea de 40 de ani și
mesajul NU pentru persoanele care nu au depășit vechimea de 40 de ani.