Documente Academic
Documente Profesional
Documente Cultură
Baze de Date
Baze de Date
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
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.
CONTRACT
nrcontract Număr unic al contractului de abonament
Î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”.
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.
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
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).
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.
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:
După Clik apare, ca mai sus, lista tabelelor, din care alegeţi ABONAT:
Facem dublu Clik pe IDABONAT şi Clik peAdd:
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.
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:
4.4.1 Exerciţiu
Adăugaţi tabelele IMPRUMUT şi CARTEAUTOR (legătura între CARTE şi
AUTOR).
4.5.1. Exerciţiu
Verificaţi legăturile tabelelor. Vizualizaţi frazele SQL de creare a unor tabele.
CAPITOLUL 5 Formulare
5.1 Crearea unei noi aplicaţii.
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:
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:
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:
Ş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:
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:
5.3.1 Exerciţiu.
Creaţi o listă de valori pentru alegerea editurii în formularul pentru carte.
Şi după Next:
Aici trebuie să alegeţi No la Show Only Related Tables, numele schemei
dumneavoastră, ţi tabela ABONAMENT.
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:
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.
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:
Click pe săgeată:
Click pe VALORI ÎN TIMP:
Şi Next:
6.4.1. Exerciţiu.
Creaţi un raport grafic în care să se vadă de câte ori a fost împrumutată fiecare
carte.
7.2. Exerciţiu.
Completaţi meniul aplicaţiei dumneavoastră.
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.
Se alege cu Click data . Dacă este vorba despre data curentă ea este pusă
în evidenţă cu culoare mai deschisă:
După Create:
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.
Dar acesta este un raport interactiv şi putem face o mulţime de lucruri cu el. Din
Click pe săgeata de la Actions:
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:
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