Sunteți pe pagina 1din 152

ÎNDRUMAR DE LABORATOR DE BAZE DE DATE ÎN

ORACLE
ÎNDRUMAR DE LABORATOR DE BAZE DE DATE ÎN ORACLE...............................1
MIRELA IACOB.................................................................................................................1
CAPITOLUL 1 Critica unui mod incorect de lucru............................................................5
1.1 Exemplu.....................................................................................................................5
1.2 Exerciţiu.....................................................................................................................6
CAPITOLUL 2 IDEI DE PROIECTARE A BAZEI DE DATE................................................6
2.1. Entităţi, atribute, chei................................................................................................6
2.1.1.Exerciţiu..............................................................................................................9
2.2. Relaţii între entităţi...................................................................................................9
2.2.1. Exerciţiu...........................................................................................................12
CAPITOLUL 3 Crearea unui spaţiu de lucru ( Work space) în cloud.......................................12
3.1 Ghid pentru crearea unui spaţiu de lucru.................................................................12
3.2 Exerciţiu...................................................................................................................16
CAPITOLUL 4. Crearea bazei de date..............................................................................16
4.1 Crearea tabelelor......................................................................................................16
4.1.1. Exerciţiu...........................................................................................................21
4.2. Tabele intermediare (cu chei străine)......................................................................21
4.2.1. Exerciţiu...........................................................................................................26
4.3. Chei compuse..........................................................................................................26
4.3.1. Exerciţiu...........................................................................................................31
4.4 Modelul. Verificarea legăturilor...............................................................................31
4.4.1 Exerciţiu............................................................................................................31
4.5 Verificarea legăturilor şi SQL..................................................................................31
4.5.1. Exerciţiu...........................................................................................................32
4.6. Popularea tabelelor.................................................................................................32
4.6.1 Exerciţiui...........................................................................................................36
4.7. Modificarea structurii tabelelor..............................................................................37
4.7.1. Exerciţiu...........................................................................................................38
CAPITOLUL 5 Formulare.................................................................................................38
5.1 Crearea unei noi aplicaţii........................................................................................38
5.1.1. Exerciţiu...........................................................................................................44
5.2 Formulare care permit toate operaţiile asupra datelor.............................................45
5.2.1. Exerciţiu...........................................................................................................67
5.3 Crearea unei liste de alegere (List of Values)..........................................................67
5.3.1 Exerciţiu............................................................................................................69
5.4 Formular cu subformular. (Master Detail)...............................................................69
5.4.1. Pagină formular cu subformular......................................................................70
5.4.2. Creare unui View.............................................................................................81
5.4.3. Crearea unui buton...........................................................................................93
5.4.4. Exerciţiu...........................................................................................................99
Capitolul 6 Rapoarte........................................................................................................100
6.1. Raport clasic.........................................................................................................100
6.1.1. Exerciţiu.........................................................................................................108
6.2. Raport interactiv....................................................................................................108
6.2.1. Exerciţiu.........................................................................................................117
6.3. Crearea unei vederi (view)....................................................................................117
6.3.1. Exerciţiu.........................................................................................................123
6.4. Raport grafic.........................................................................................................123
6.4.1. Exerciţiu.........................................................................................................136
Capitolul 7. Organizarea meniului...................................................................................136
7.1 Meniul vertical. Completarea pagina de start........................................................136
7.2. Exerciţiu................................................................................................................140
Capitolul 8. Manual de utilizare......................................................................................140
8.1. Introducerea datelor..............................................................................................140
8.1.1. Introducerea în tabela ABONAT....................................................................141
8.1.2. Introducerea în tabela REVISTA...................................................................142
8.1.3. Introducerea în tabela CONTRACT..............................................................142
8.1.4. Introducerea în tabela ABONAMENT..........................................................144
8.2.Rapoarte.................................................................................................................146
8.2.1. Raport clasic cu abonaţi.................................................................................146
8.2.2. Raport interactiv cu reviste............................................................................146
8.2.3. Exerciţiu.........................................................................................................149
8.2.4. Raport grafic cu numărul de luni abonament pe revistă................................150
8.2.4. Exerciţiu.........................................................................................................150
BIBLIOGRAFIE..............................................................................................................151
CAPITOLUL 1 Critica unui mod incorect de lucru.
1.1 Exemplu
Să luăm exemplul din [6] puţin modificat:
“Pentru a se abona la diverse reviste, persoanele doritoare trebuie să furnizeze numele,
adresa şi un număr de telefon. Fiecare revistă este identificată prin id_revista, denumire,
editor, preţ. Abonaţii semnează pentru abonare un contract pe o anumită perioadă de timp
specificată prin data de început a abonamentului şi data finală. Bineînţeles că o persoană
se poate abona la mai multe reviste în acelaşi timp.”
Să considerăm, după modelul din [2], următorul formular după care să preluăm un
contract:
Activitatea se desfăşoară astfel:
Pe baza unui catalog clientul se abonează la una sau mai multe reviste. În fiecare
lună revista este trimisă la toţi cei care s-au abonat la această revistă. La prima vedere
totul este simplu şi treaba chiar ar putea să meargă un timp. Să observăm însă care sunt
problemele pe care le creează acest mod de a vedea lucrurile.
În primul rând să presupunem că firma vrea să tipărească catalogul revistelor.
Evident, acel catalog nu ar conţine decât revistele la care s-a abonat cineva.
Colecţia de date conţine date duplicate:
- numele, adresa, …., unui abonat vor apare de câte ori acesta se abonează din nou
iar numele revistei apare de câte ori se face un abonament la acea revistă.
De ce este important să nu avem date duplicate
- astfel de date ocupă mai mult loc pe mediul de stocare
- scrierea de mai multe ori a aceluiaşi lucru face ca această scriere să fie diferită *
de exemplu „Revista liceului Mesota’ şi „Revista liceului Meşotă” vor fi
considerate diferite şi asta poate crea probleme.
Mai apar şi probleme legate de ştergerea datelor. Să presupunem că un abonat are
abonată o singură revistă şi că acesta nu se mai editează. Dacă ştergem informaţia
despre acea revistă o să pierdem adresele tuturor clienţilor care s-au abonat la acea
revistă şi nu vom putea trimite catalogul la o mulţime de clienţi posibili.
Vom da, în continuare, câteva idei despre cum se proiectează corect o bază de date
astfel încât să evităm apariţia acestor probleme. Proiectul nu este suficient pentru a
rezolva problema. Datele sunt depuse în calculator împreună cu relaţiile dintre ele
într-un mod fizic care nu ne interesează în acest moment. Noi vrem să exprimăm
cerinţe asupra bazei de date în limbajul proiectului. Traducerea din acest limbaj,
căutarea şi editarea rezultatelor este treaba Sistemului de Gestiune al Bazei de Date,
prescurtat SGBD.

1.2 Exerciţiu
La bibliotecă se foloseşte o ”Fişa cărţii” de forma:

FIŞA CĂRŢII
Cod ISBN Titlu Autor Domeniu

IMPRUMUT
CNP Nume Prenume Adresa Data imprumut Data restituire

De ce nu se poate face din aceasta o bază de date?

CAPITOLUL 2 IDEI DE PROIECTARE A BAZEI DE DATE


2.1. Entităţi, atribute, chei

În introducere am văzut că actualizarea datelor despre abonaţi sau a datelor despre


reviste este dificilă în concepţia iniţială. Această deficienţă a apărut pentru că au fost puse
împreună date despre lucruri distincte:abonaţi, reviste, contracte. Astfel de “lucruri” vor fi
numite de acum înainte entităţi.
Entitatea este ceva despre care se memorează date. Entitatea va fi reprezentată în
baza noastră de date sub forma unui tabel în care liniile sunt concretizările acestei entităţi,
adică reprezentanţii sau instanţele entităţii.
Pe fiecare linie nu vom avea chiar reprezentanţii entităţii ci numai date care
caracterizează reprezentanţii entităţii; aceste date se numesc atribute. Deci o entitate din
viaţa reală generează într-o bază de date relaţională un tabel ale cărui coloane au ca nume
atributele entităţii, iar pe linii succesive se găsesc valorile atributelor pentru fiecare
reprezentant al entităţii în parte.
De exemplu: entitatea REVISTA are atributele: id_revista, denumire, editor, preţ,
în exemplul dat sunt trei reprezentanţi ai acestei entităţi, iar fiecare celulă a acestui tabel
reprezintă o valoare a atributului corespunzător coloanei pentru reprezentantul
corespunzător liniei.

id_revista denumire Editor preţ


101 Gazeta matematică B Societatea de ştiinţe 120
matematice
102 Gazeta de informatică Agora media 150
103 Licăriri Colegiul naţional 1
Ioan Meşotă Braşov

Pentru a detecta entităţile şi atributele, în enunţul temei vom descoperi substantivele.


Să subliniem:
“Pentru a se abona la diverse reviste, persoanele doritoare trebuie să furnizeze numele,
adresa şi un număr de telefon. Fiecare revistă este identificată prin id_revista, denumire,
editor, preţ. Abonaţii semnează pentru abonare un contract pe o anumită perioadă de timp
specificată prin data de început a abonamentului şi data finală. Bineînţeles că o persoană
se poate abona la mai multe reviste în acelaşi timp.”
Avem sinonime aici: persoana şi abonat pentru că ne interesează persoanele numai
în măsura în care sunt abonate.
Ce trebuie calificat prin proprietăţi (entităţi)sunt:
 Abonat
 revistă
 contract

Un atribut, simplu sau obţinut prin concatenare care identifică unic o instanţă
(apariţie) a unei entităţi se va numi cheie. Aşa cum recomandă practica şi autorii
Harrington [2] se creează chei printr-un număr generat succesiv şi unic în special pentru
persoane, locuri, lucruri etc. Există şi situaţii în care este nevoie de chei concatenate,
adică chei formate din mai multe atribute. Existenţa unei atribut (cheie) care să identifice
unic reprezentanţii unei entităţi este o regulă esenţială de integritate a datelor (integritatea
de entitate).
Atributele sunt listate în tabel punând în evidenţă cheia prin subliniere.

Tip de entitate Atribute Descriere atribute


ABONAT idabonat Identifică unic abonaţii
nume numele abonatului
adresa Adresa abonatului
tip_ai tipul actului de identitate
serie_ai seria actului de identitate
numar_ai numărul actului de identitate
telefon Numărul de telefon al abonatului

REVISTA idrevista Identificaror unic al revistei


editor Editorul revistei

pret Preţul abonamentului pe lună

CONTRACT
nrcontract Număr unic al contractului de abonament

data Data încheierii contracului

idabonat Codul abonatului cu care s_a încheiat contractul

Într-un model relaţional este esenţial ca atributele să aibă valori unice, adică fiind
dată o instanţă a unei entităţi, un anumit atribut trebuie să aibă o singură valoare. De
exemplu un abonat poate avea un singur număr de telefon. Dacă lăsăm mai multe locuri,
mărim inutil şi neproporţional baza de date deci în cazul acestei necesităţi trebuie creată o
nouă entitate “număr de telefon” cu mai multe instanţe.
Odată stabilite entităţile şi atributele ele trebuie să rămână pe un document; de
fapt toată activitatea de proiectare trebuie documentată. Pe lângă tabele (exemple putem
găsi în Iacob [3]), avem nevoie de un instrument grafic care să permită o vedere sintetică
asupra bazei de date. Chen [1] a “inventat” diagrama E-R (entity-relationship adică
entitate-relaţie).
Entitatea se reprezintă sub forma unui dreptunghi în care sunt listate atributele şi
în care este pusă în evidenţă cheia. Apoi vom vedea cum se reprezintă şi relaţiile între
entităţi.
Iată cum arată, în primă instanţă, entităţile reproiectate pentru societatea
“abonamente”.

ABONAT REVISTA CONTRACT


idabonat idrevista nrcontract
nume editor data
adresa pret idabonat
tip_ai
serie_ai
numar_ai
telefon
O metodologie completă puteţi găsi în [7].

2.1.1.Exerciţiu
Se dă tema:
La o bibliotecă şcolară există mai mulţi abonaţi. Ei pot împrumuta cărţi la o
anumită dată pentru maxim 15 zile. Cărţile pot fi căutate după titlu, sau după autor sau
după domeniu, sau după editură. Un abonat poate împrumuta o carte dacă există (nu este
împrumutată) şi dacă nu are cărţi nerestituite, dar maximum 3 cărţi.
Detectaţi entităţile, şi atributele fiecărei entităţi.
Atenţie! Acest exemplu va fi reluat pe parcursul întregii cărţi.

2.2. Relaţii între entităţi


Între entităţi există legături, în lumea reală, pe care le vom numi relaţii.
Se pot stabili diverse restricţii la care conţinutul unei baze de date trebuie să se
conformeze. Există restricţii care se pot impune entităţilor participante într-o relaţie.
Aceste restricţii trebuie să reflecte caracteristicile relaţiilor aşa cum se percep în lumea
reală. Există două tipuri importante de restricţii: restricţii de cardinalitate şi restricţii de
participare.
Cardinalitatea (polaritatea) reprezintă numărul relaţiilor posibile pentru o entitate
participantă. Altfel spus, cardinalitatea exprimă numărul entităţilor la care o altă entitate
poate fi asociată prin intermediul unei relaţii.
Majoritatea relaţiilor au gradul doi. Cardinalitatea în acest caz poate fi de tipurile:
unu-la-unu (1:1), unu-la-mai-multe (1:M), sau mai-multe-la-mai-multe (M:N).
Relaţiile unu-la-unu:
În relaţiile unu-la-unu, o entitate, aparţinând unui tip de entitate, este legată de cel
mult o entitate din celălalt tip de entitate implicat în relaţia respectiva. Implicarea fiecărei
entităţi într-o relaţie dată este numită "participarea entităţii".
În diagrama E-R se etichetează arcul dintre relaţie şi fiecare tip de entitate cu
cardinalul relaţiei; în cazul relaţiilor unu-la-unu fiecare din cele două arce se etichetează
cu 1.
Relaţiile unu-la-mai-multe:
În relaţia de tip unu-la-mai-multe orice entitate, aparţinând primului tip de
entitate, este legată de 0, 1, sau mai multe entităţi aparţinând celui de-al doilea tip de
entitate participant la relaţie.
Relaţiile mai-multe-la-mai-multe:
Acest tip de relaţie se deosebeşte de relaţia unu-la-mai-multe prin faptul că relaţia
inversă nu este de unu-la-unu, ci de unu-la-mai-multe. Deci, dacă şi relaţia directă şi
relaţia inversă sunt de tipul unu-la-mai-multe, atunci relaţia directă este de tipul mai-
multe-la-mai-multe şi se notează cu (N:M).
Restricţii de participare
Numim restricţii de participare acele restricţii prin care se determină dacă
existenţa unui tip de entitate depinde de faptul că este legat sau nu de un alt tip de entitate
prin intermediul relaţiei în discuţie.
Participarea unei entităţi poate fi totală sau parţială.
Participarea este totală dacă existenţa entităţii respective necesită existenţa unei
entităţi asociate în relaţia dată. În caz contrar participarea se numeşte parţială.

Relaţiile, în cazul nostru, sunt în următorul tabel:

Tip de entitate Tip de relaţie Tip de entitate Cardinalitate


ABONAT CONTRACT 1 la N
CONTRACT REVISTA N la M

Relaţiile vor fi descrise în diagramele E-R cu linii între entităţi care vor fi
întretăiate de simboluri ale tipurilor. Aceste simboluri sunt descrise mai jos.
| | pentru una şi numai una (instanţă)
0| pentru zero sau una
>| pentru una sau mai multe
>0 pentru zero, una sau mai multe
Exemplu: relaţia între contract şi reviste care este n la m

REVISTA
CONTRACT idrevista
* nrcontract editor
0 | pret
data
idabonat

Un contract are cel puţin orevistă, dar o revistă poate să nu fie contractată de
nimeni, totuşi este o relaţie de tip n la m. ea poate fi transformată prin introducerea
entităţii “ABONAMENT” în: REVISTA
CONTRACT idrevista
nrcontract ABONAMENT editor
data nrcontract pret
idabonat | | | idrevista 0 | |
delaluna
cateluni
Deci diagrama finală într-o proiectare corectă ar fi:

ABONAT
idabonat
nume
adresa
tip_ai
serie_ai
numar_ai
telefon

=
0
ABONAMENT REVISTA
CONTRACT nrcontract idrevista
nrcontract idrevista editor
data delaluna pret
idabonat 0 ||
|| | cateluni

delaluna
laluna

2.2.1. Exerciţiu
Pentru tema de la 2.1.1. determinaţi relaţiile între entităţi şi desenaţi diagrama
entitate-relaţie.
Ce fel de relaţie este între carte şi editură?
Dar între carte şi cititor? Este nevoie de o tabelă între ele împrumut.
Dar între carte şi autor?
CAPITOLUL 3 Crearea unui spaţiu de lucru ( Work space) în
cloud

3.1 Ghid pentru crearea unui spaţiu de lucru


Vom lucra în cloud. Asta înseamnă că atât baza de date cât şi sistemul de gestiune
al bazei date vor fi într-un loc pe care nu-l cunoaştem, spaţiu pus la dispoziţie de
ORACLE.
Pentru a crea o bază de date în Oracle (pe internet),se accesează site-ul
http://APEX.oracle.com. Se obţine:

După Clik pe Get started:


cu CLICK pe Free Workspace se obţine:

Se urmează paşii indicaţi după accesarea link-ului de mai sus pentru a crea un nou
workspace.
După definirea workspace-ului se primeşte de la Oracle un email cu un link, dând
CLICK pe acel link, workspace-ul va fi creat în APPEX şi se primeşte încă un email cu
datele de login(Workspace, Email şi parola).

Se introduc datele de intrare pentru a putea accesa Application Express. (Numele


Workspace-ului, Emailul, Parola)
Aţi intrat!

3.2 Exerciţiu
Creaţi-vă un spaţiu de lucru personal.
CAPITOLUL 4. Crearea bazei de date
4.1 Crearea tabelelor
Pentru a putea crea tabele CLICK pe SQL Workshop şi din meniul de mai
jos CLICK pe Object Browser.

În partea dreapta a ecranului există un buton CLICK pe + putem


adăuga tabele.
Deci Clik pe Table.
Vom crea primul tabel. Trebuie să aveţi grijă să creaţi tabelele de la capetele
diagramei. Deci mai întâi tabela ABONAT:

După NEXT stabilim cheia primară ca o secvenţă, adică un număr creat de sistem în
ordine crescătoare.
De aici Next:
Nu avem aici chei străine deci Next:

Adăugarea de restricţii este lăsată pe seama altei cărţi, deci Next:


Am ajuns la sfârşit deci Create Table:

Aici se vede ce am creat.


Creăm, în continuare, tabela REVISTA în mod analog:
4.1.1. Exerciţiu
Creaţi tabele cititor, editura şi autor pentru biblioteca.

4.2. Tabele intermediare (cu chei străine)


Creăm mai întâi tabela CONTRACT:
Până aici ştiaţi deja să mergeţi. După Next:
Aici selectaţi cheia care se va lega de tabela abonat adică NRABONAT şi faceţi
dublu Clik pe el ca să duceţi cheia străină în dreapta. Apoi trebuie stabilită tabela de care
vă legaţi adică ABONAT. Cu clik p săgeata indicată:

După Clik apare, ca mai sus, lista tabelelor, din care alegeţi ABONAT:
Facem dublu Clik pe IDABONAT şi Clik peAdd:

Clik pe Next pentru că nu avem şi altă cheie străină:


Nu avem restricţii deci Next:
Şi de aici Create Table:

Dacă vrem să vedem cum s-au legat tabelele Clik pe Model şi:

Putem vedea fraza SQL cu care se creează acest tabel cu CLIK pe SQL:
4.2.1. Exerciţiu
Creaţi tabela CARTE cu legătură la EDITURA.

4.3. Chei compuse


Creăm, în continuare, tabela ABONAMENT:

După Next:
Selectaţi Not populated ca să puteţi pune o cheie compusă. Pima parte a cheii o
puneţi la Primary Key, adică NRCONTRACT, apoi clik pe Select Composite Primary
Key şi:
Aici Clik pe IDREVISTA şi Next:
Introduceţi, ca mai înainte, cheia străină NRCONTRACT care leagă cu tabela
CONTRACT. Nu uitaţi Clik pe Add după fiecare acţiune. Apoi Add ca să mai
adăugăm încă o cheie străină:
Introducem , după procedura deja ştiută, şi cheia străină IDREVISTA care leagă cu
tabela REVISTA şi Clik peAdd şi apoi Next:
Şi iar Next:

De aici cu Clik pe Create Table terminăm de creat tabela:


4.3.1. Exerciţiu.
Creaţi cheie compusă pentru tabela CARTEAUTOR.

4.4 Modelul. Verificarea legăturilor.


Putem să verificăm că am făcut bine legăturile între tabele cu opţiunea Model din
bară. De exemplu pentru tabela ABONAMENT:
Cu modelul:

4.4.1 Exerciţiu
Adăugaţi tabelele IMPRUMUT şi CARTEAUTOR (legătura între CARTE şi
AUTOR).

4.5 Verificarea legăturilor şi SQL


Putem să verificăm că am făcut bine legăturile între tabele cu opţiunea Model din
bară. De exemplu pentru tabela ABONAMENT cu Clik pe Model obţinem:
Iar cu Clik pe SQL:

4.5.1. Exerciţiu
Verificaţi legăturile tabelelor. Vizualizaţi frazele SQL de creare a unor tabele.

4.6. Popularea tabelelor


Popularea tabelelor se face din ecranul iniţial, care conţine tabelele, cu clik pe talela
dorită şi Clik pe Data, apoi Clik pe Insert Row. De exemplu pentru tabela REVISTA:
După Clik pe Insert Row:

Deaici Clik pe Create and Create Another:


Şi după Create:
Pentru tabela ABONAT:
Pentru tabela CONTRACT,

cu grijă ca la idabonat să treceţi un număr existent:

Pentru ABONAMRNT, unde iar trebuie să avem grijă să introducem număr


existent de contract şi număr existent pentru idrevista.
4.6.1 Exerciţiui
Introduceţi date în ordinea CITITOR, EDITURA, AUTOR, CARTE, CARTEAUTOR,
ÎMPRUMUT.

4.7. Modificarea structurii tabelelor


Probabil aţi observat că nu aţi putut introduce numele complet Societatea de
Ştiinţe Matematice la una din edituri pentru că numele era prea lung. Să vedem cum se
poate modifica lungimea. Din tabela revista:

Cu Clik pe Modify Columnn:


Aici am operat modificările selectând editura şi punând la Length valoarea 50. După
Next:

Acum Finish şi am efectuat modificarea:


4.7.1. Exerciţiu
Faceţi modificări care să vă permită să introduceţi corect datele.

CAPITOLUL 5 Formulare
5.1 Crearea unei noi aplicaţii.

Se selectează Application Builder apoi Data Base Application şi Create:


Se obţine:

Aici Clik pe Create:


După Next:

După Next:
După Add Page:
Clik pe Report and Form şi pe săgeata de la Select Table pentru a selecta tabela
pentru care se face formularul:

Aici Clik pe ABONAT:


După Clik pe Add Page:

Şi de aici Create Application:


Încă o dată Create Application:

Se vede că aplicaţia este creată.

5.1.1. Exerciţiu.
Creaţi aplicaţia pentru bibliotecă.
5.2 Formulare care permit toate operaţiile asupra datelor.
Am mai specificat că datele se vor introduce în aplicaţie doar prin formulare. Vom
crea, în continuare, formulare pentru toate datele care trebuie introduse în aplicaţie.
Fiecare formular sau raport va fi o pagină. Din ecranul în care am ajuns, după
Create Page:

După Clik pe Form obţinem:


Putem crea şi formular simplu cu Clik pe Formo n a Table or View, dar acest tip
de fomular permite doar inserţii. Dec după Clik pe Form on a Table with Report:
Aici Next

Completăm aici numele tabelei REVISTA folosind săgeata şi Next:


Alegem butonul care ne permite să adăugăm formularul în meniul Home şi Next:
Sunt deja selectate toate coloanele deci Next:

Încă o dată Next:


Încă o dată Next:
Încă o dată Next:
Cu săgeata dublă trecem în formular toate atributele tabelei:
Next:
Next:
După Create:

Aici putem adăuga proprietăţi acestui formular. La alte formulare vom face acest
licru.
Tot din Application Builder după Create Page şi Clik pe Form:

După Clik, pe Form:


Aici Clik pe Form on a Table with Report:
Completăm Page Name şi Next:
Spunem acum, selectând de la săgeată, că este vorba despre tabela CONTRACT
şi Next:
Activăm butonul arătat pe figură şi Next:
Suntem de acord să introducem toate atributele deci Next:

Şi iar Next:
Din nou Next:
Next:
Ducem din stânga în dreapta toate atributele şi Next: Iar Next:
Iar Next:
Confirmăm că se creează ce vrem deci next:

De aici putem face modificări în acest formular.


5.2.1. Exerciţiu
Creaţi aplicaţia pentru bibliotecă cu formulare pentru CITITOR, EDITURA şi
CARTE.

5.3 Crearea unei liste de alegere (List of Values)


Am creat acum formularul pentru CONTRACT. Aici apare necesitatea de a alege
persoana care urmează să încheie acest contract adică o instanţă a tabelei ABONAT. Din:

Clik pe Form on CONTRACT:

Selectăm Pxx_IDABONAT şi Clik pe săgeata, din dreapta, Type:


Aici putem edita proprietăţile acestei pagini. Noi vrem să creăm o listă din care să
alegem abonatul deci Clik pePopup LOV:

Vom căuta mai jos, pe acelaşi ecran, Type şi, de la săgeată, selectăm SQL Query:
Cu Clik pe SQL Query apare un mic ecran în care putem scrie fraza select:

Dacă nu puteţi citi vă spun eu ce este acolo:

select nume as display_value, idabonat as return_value from abonat


Aceeaşi frază poate fi scrisă şi prescurtat:

select nume as d, idabonat as r from abonat

După Clik pe săgeată dispare semnul roşu.

Cu Clik pe Save salvăm modificările.

5.3.1 Exerciţiu.
Creaţi o listă de valori pentru alegerea editurii în formularul pentru carte.

5.4 Formular cu subformular. (Master Detail).


Ca să preluăm abonamentul trebuie să luăm informaţii despre reviste. Creăm,
pentru aceasta un formular care are în antet,(master ), preluarea contractului şi în
subformular (detail) revistele din acel contract.
5.4.1. Pagină formular cu subformular.
Creăm o pagină nouă:

După Click pe Form:


Aici Clic pe Master Detail Form:
Se trec aici datele tabelei master care se alege din săgeată ca fiind
ABONAT şi Next
Aici cu Click pe Săgeată apare o listă din care alegem CONTRACT ,ca
fiind tabela detail şi după Click peNext:
Alegem Select Primary Key şi Next
Facem Clik pe Existing Sequence, apoi alegem cu săgeata ABONAT-SEQ
şi
Next:
Vrem să avem detaliul pe aceeaşi pagină cu masterul deci Next:
Şi aici totul este în regulă deci Next:
Selectăm să ne introducă pagina în meniul Home şi Next iar:
Vedem ce se va crea. După Create:

La fel procedăm ca să introducem abonamentele, dar avem nevoie de un


View.
5.4.2. Creare unui View.
O să vrem să facem un formular de tip Master Dtail pentru introducerea
abonamentului. În detail va apărea abonamentul, dar în master nu avem un tabel care să
conţină contractul cu numele abonatului. Pentru aceasta vom crea un tabel fictiv numit
vedere (view).
Din :

Cu Clik pe săgeată şi apoi pe View:


Aici completăm View Name şi Clik pe Query Builder:

În această fereastră putem construi vederea cu Clik pe denumirile tabelelor. După


Clik pe ABONAT:
Şi după Clik pe Contract:

Legăm între ele tabelele cu Clik, în căsuţa din dreapta, pe IDABONAT şi


din ABONAT şi din CONTRACT:
Trebuie să stabilim ce atribute vor figura în vedere cu Clik pe căsuţa din
stânga atributului respectiv:

Dacă vrem să vedem ce va conţine această vedere Clik pe Run:


După Clik pe Return:
Se vede fraza SQL care generează această vedere. Clik pe Next:

Şi Clik pe Create View:


Se vede cum s-a creat vederea.
Creăm acum formularul de tip Master Detail pentru preluarea abonamentului. Pe
calea cunoscută ajungem la:

Şi după Next:
Aici trebuie să alegeţi No la Show Only Related Tables, numele schemei
dumneavoastră, ţi tabela ABONAMENT.

Alegeţi cheia numai la master.


Legaţi între ele cele două tabele.
Aici Next.
Cum am mai făcut, ajungem să creăm formularul.
Trebuie să creaţi şi o lstă de valori pentru alegerea revistei. Aşa va arăta pagina:
5.4.3. Crearea unui buton.
Dacă aveţi de introdus un abonament şi nu este încă introdusă revista trebuie să
creaţi un buton, pe pagina de mai înainte.
Din pagina:

Clik dreapta pe Butons:

După Clik pe Create Button apare:


Toată atenţia va fi pe partea dreaptă a ecranului. Cu Clik pe zonele specificate se
vor completa:
Label (ce apare scris pe buton), la Button Position alegem pagina pe care să apară
butonul, şi cu Clik pe Horizontal Alignment:
Alegem să apară sub regiune şi pe partea stângă:

Cu Clik la Action pe Submit Page Alegem ca la Clik pe buton să se declanşeze o


anumită pagină.
Alegem să fie o pagină în această aplicaţie.

Cu Clik pe Target şi apoi pe No Link Defined:


Aici Clik pe Page:

După Clik pe Form on REVISTA:


Aic Clik pe OK:

Butonul s-a creat deci Clik pe Save.

5.4.4. Exerciţiu.
Dacă preluaţi cartea trebuie să îi preluaţi şi autorii. Pentru aceasta trebuie să faceţi
un formular master detail cu CARTE ca master şi CARTEAUTOR (tabela care
desfiinţează legătura n la n dintre CARTE şiAUTOR) ca detail.
Creaţi un popup de alegere pentru Idautor.
Creaţi un buton care să pornească formularul de autor.
Faceţi un formular Master Detail pentru introducerea împrumuturilor. Master va fi
ABONSAT, iar detail din ÎMPRUMUT.
Creaţi un popup de alegere pentru Idcarte.
Creaţi un buton care să pornească formularul de carte.

Capitolul 6 Rapoarte.
6.1. Raport clasic.
Pentru a crea un raport, din ecranul următor:

Cu CLIK pe Create Page obţinem:

Aici alegem Report şi după NEXT:


Alegem aici Classic Report şi next:
Dăm nume:
După Next:
Vrem să introducem această pagină în meniul HOME.
Stabilim tabela la Table/View Name prin Click pe săgeată.
Next din nou:
Next:
Vedem ce iese şi Create:

Aceasta este noua pagină.


6.1.1. Exerciţiu.
Faceţi rapoarte clasice pentru ABONAT, şi AUTOR:

6.2. Raport interactiv.


Procedând ca mai înainte, ajungem la ecranul:

Alegem Interactive Report:


Scriem numele Raport reviste la Page Name şi la Region Name şi Next, Next
până la:
Aici vom crea o cerere asupra bazei de date cu clik pe SQLQuery:
Cu Clik pe Ciocănel:
Avem aici ecranul binecunoscut pentru crearea unei vederi. Alegem REVISTA:
Bifăm coloanele pe care le vrem în cerere. Cu clik pe SQL se va vedea cererea în
SQL.
. Selectăm textul şi dăm clik cu dreapta. Se obţine:

Atenţie! Deşi scrie că putem face Copy cu Cctrl+C nu merge . Deci clik pe Copy
şi părăsiţi acest ecran cu Clik pe Return:
Dacă ştim SQL putem scrie direct această frază. După Clik pe Next:
Vedem ce se creează şi Create:

Cum merge acest raport şi ce mai putem face vom vedea în manualul de utilizare.
6.2.1. Exerciţiu.
Creaţi un raport interactiv pentru CARTE.

6.3. Crearea unei vederi (view).


Ca să vedem cum au fost abonate revistele facem o vedere cu ABONAMENT şi
REVISTA. Cum am făcut în paragraful 5.3., începem din SQL Workshop, Object

Browser:
Alegem View:
În acest ecran alegem denumirea Valori în timp şi clik pe Query Builder:
După procedeul pe care l-am mai folosit, am legat cele două tabele prin
IDREVISTA, şi am selectat coloanele TITLU şi CATE_LUNI. Cu Click pe SQL:

Vedem fraza SQL creată, o selectăm cu Click şi defilare, şi cu click stânga


obţinem ecranul din dreapta. Aici Click p Copy şi Return:
În ecranul care a apărut avem fraza SQL şi Next:

Acum creăm vederea cu Create:


Încă nu e bună, pentru că vrem să avem totaluri pe revistă. Pentru asta cu
Click pe code:

Completăm fraza SQL. Clik pe Save and Compile. Putem vedea ce


conţine această vedere cu Click pe Data:
6.3.1. Exerciţiu.
Creaţi un raport interactiv cu o vedere din CARTE, CARTEAUTOR şi AUTOR.

6.4. Raport grafic.


Din aplicaţie:

După Create Page:

După Clik pe Chart:


Click pe tipul de grafic Column şi Next:
Click pe 2D Column şi Next:
Aici completăm Page Name şi Region Name şi Next:
Creaţi intrare în meniu, cum am mai făcut, şi Next:
Aici completăm Chart Title, X Axis Title cu TITLU (coloană din view) şi
Y Axis Title cu TOTAL_ LUNI (a doua coloană din view), apoi Next:
Acum Click pe Build Query şi Next:
Din nou Next:

Click pe săgeată:
Click pe VALORI ÎN TIMP:
Şi Next:

Completăm la Label şi Value şi Next:


Next din nou:

Vedem fraza SQL creată, Finish:


Fraza a ajuns unde trebuia, Next:
Totul este în regulă deci Create:
Primim confirmarea că am creat graficul. O să vedem cum merge în manualul de
utilizare:

6.4.1. Exerciţiu.
Creaţi un raport grafic în care să se vadă de câte ori a fost împrumutată fiecare
carte.

Capitolul 7. Organizarea meniului.


7.1 Meniul vertical. Completarea pagina de start
Până acum am avut în pagina de start a aplicaţiei (cea declanşată cu Run
Applicationn) doar formularul Abonat. Din pagina:
Selectăm Home:

Aici selectăm şi dublu Clik pe Navigation Menu:

Click pe Create List Entry:


Aici dublu Clik pe Desktop Navigation Meniu şi vă uitaţi în dreapta sus:

Cu Clik pe Edit Components apare:

Acum Clik pe Create list Entry:


Dăm aici numele care va apare în meniu şi Clik pe săgeata de la Page:
:

Cu Click pe Form on REVISTA:


Se vede că a apărut numărul paginii apoi Clik pe Create and Create Another:

La fel introducem toate celelalte poziţii pe care le dorim în meniu (Formulare şi


rapoarte):

Cu Clik pe List Details meniul va conţine:

7.2. Exerciţiu.
Completaţi meniul aplicaţiei dumneavoastră.

Capitolul 8. Manual de utilizare.


8.1. Introducerea datelor.
Deocamdată am introdus date direct în tabele. Nu aceasta este calea pe care
trebuie să meargă o aplicaţie. Datele se vor introduce prin formulare.
8.1.1. Introducerea în tabela ABONAT.
Prin formularul Abonat se introduc datele despre abonaţi. Din meniu cu Click pe
Abonat:

Se obţine:

De aici putem modifica datele unui abonat după care trebuie Clik pe Apply
Changes, putem şterge un abonat cu Clik pe Delete, sau putem să vedem toţi abonaţii cu
Clik pe Cancel. După Clik pe Cancel:

Dacă vrem să modificăm datele unui abonat Clik pe Creion. Iar dacă vrem să
introducem un nou abonat Clik pe Create:
Aici se completează datele noului abonat şi Clik pe create. Cu Clik pe Cancel se
revine la raportul interactiv unde se pot face o serie de acţiuni pe care le vom vedea mai
departe.

8.1.2. Introducerea în tabela REVISTA.


Pentru a introduce o nouă revistă, din meniu cu Click pe Revista:

Acum se completează datele :

Cu Click pe Create se termină înregistrarea:

8.1.3. Introducerea în tabela CONTRACT.


Pentru introducerea unui contract se porneşte din Meniu:
Cu Click pe Contract:

Aici se completează datele. cu

Cu Click pe săgeata de la Idabonat se obţine:

Alegem un abonat şi Click pe acel nume:


Pentru Data Click pe iconiţă:

Se alege cu Click data . Dacă este vorba despre data curentă ea este pusă
în evidenţă cu culoare mai deschisă:

După Create:

8.1.4. Introducerea în tabela ABONAMENT.


Din meniu:
Click pe Form abonamente:

Dacă revista, pentru care se face abonamentul, nu există se face Click pe Revista
Nouă pentru a ajunge în ecranul cunoscut. După Click pe revista căutată:

Se pot introduce noi abonamente pe acel contract, după Add Row, se poate şterge
o revistă selectând-o pe căsuţa din stânga şi Clik pe Delete Checked (de jos), se poate
naviga la alt contract cu Clik pe săgeţi stânga, dreapta, cu Delete (de sus ) se poate şterge
un contract, iar după Cancel:
Aici se poate introduce un nou contract, după Clik pe Crate, sau putem reveni în
ecranul anterior prin Clik pe creionul corespunzător unui contract ales.

Dacă mai introducem alt abonament, Add Row, dacă nu Apply Changes.

8.2.Rapoarte.
Se pot obţine multe rapoarte sub multe forme. Aici sunt date numai trei exemple,
cele mai des folosite.

8.2.1. Raport clasic cu abonaţi.


Din Home, cu Clik pe Paport abonaţi:

Obţinem lista abonaţilor din meniu. Am văzut deja şi un raport interactiv cu


abonaţi la paragraful 8.1.1.

8.2.2. Raport interactiv cu reviste.


Din meniu:
Cu Click pe Raport reviste:

Dar acesta este un raport interactiv şi putem face o mulţime de lucruri cu el. Din
Click pe săgeata de la Actions:

Apoi Click pe săgeata de la Format şi Click pe Sort:

Aici selectăm coloana din săgeată:


Dacă selectăm Titlu cu Click şi apoi Click pe Apply:

Le avem sortate după titlu.

Tot din forma iniţială a raportului Cu Click pe Pret:

După Apply :
Am obţinut revistele sortate după preţ. Dacă le vrem grupate după preţ, Din:

Cu Clik pe preţ:

De aici dacă dăm Click pe iconiţă o să obţinem revistele grupate după preţ:

8.2.3. Exerciţiu.
Aflaţi, prin încercări, alte posibilităţi ale raportului interactiv
8.2.4. Raport grafic cu numărul de luni abonament pe revistă.
Unul din cele mai spectaculoase rapoarte este cel grafic. Avem aici un exemplu.
Din meniu:

Cu Clickpe Grafic cu abonamente:

8.2.4. Exerciţiu.
Construiţi manualul de utilizare pentru aplicaţia cu biblioteca.
BIBLIOGRAFIE
1. Chen, P.P., The Entity-Rlationship Model: Toward a inified View of Data, ACM
Transaction of Database Systems, Vol1., Nr. 1, pp.9-36, Jan. 1976.
2. Harrington, Jan L., Relational Database Design, AP., 1998.
3. Iacob, P. ACCESS la purtător Editura Lux Libris 2007
4. Oracle® Database 2 Day + Application Express Developer’s Guide Release 4.0
E15516-03

5. Oracle® Application Express Application Builder User’s Guide Release 4.0


E15517-02
6. C.Popescu, Manual de informatică pentru clasa XII-a, Editura L&SINFO-
MAT,2007
7. Connoly, T., Begg, C., Strachan, A., Database systems,Ed. Addison Wesley,
1997

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