Documente Academic
Documente Profesional
Documente Cultură
1. OBSERVAII TEORETICE
Modelul de date cel mai vechi care a stat la baza realizrii unor SGBD-uri este
modelul ierarhic. Intensiunea sau modelul conceptual al bazei de date ierarhice este
reprezentat printr-o diagram numit arbore de definiie ierarhic. Modelului ierarhic ia urmat modelul reea a crui intensiune este o diagram ce reprezint un graf. Odat
cu dezvoltarea tehnicii de calcul a aprut un nou model de date numit model relaional
a crui baze au fost puse de cercettorul american E.F. Codd. Acest model st la baza
realizrii mai multor SGBD-uri performante.
1.1.
O baz de date (BD) este o colecie de date relaionate. Datele coninute ntr-o
baz de date pot fi vizualizate sub forma unor tabele. Deci, o baz de date este
construit din una sau mai multe tabele. Tabele sunt matrice bidimensionale, construite
din coloane (cmpuri) i linii (nregistrri sau tuple).
Baza de date
Tabelul 1
nregistrarea1
nregistrarea1
nregistrarea2
nregistrarea2
nregistrarea3
Modul de stocare a datelor definete tipul bazei de date. Oracle folosete modelul
relaional de baze de date.
O baz de date este relaional dac are: structur (tabele accesibile utilizatorilor),
operaii (aciuni de manipulare a datelor) i reguli (legi de acces la date i relaii ntre
tabele).
O baz de date relaional prezint urmtoarele avantaje:
- permite interogri utiliznd SQL ;
- suport accesul simultan la date a mai multor utilizatori ;
- structur logic independent de modul de stocare fizic al datelor.
Modelul de bazei de date Oracle nu permite vizualizarea tabelelor bazei de date n
mod direct, aa cum o face de exemplu FoxPro. Vizualizarea tabelelor se face prin
comenzi SQL de interogare i manipulare a bazei de date. Comenzile SQL se execut
cu ajutorul unor utilitare de linie de comand precum SQL*Plus i SQLWorksheet.
Rezultatul unei interogri SQL este prezentat sunt forma unui tabel.
O baz de date Oracle este o colecie de date fizice, structuri logice de memorie i
procese server. O instan a bazei de date Oracle este o parte a memoriei care este
alocat pentru rularea bazei de date i a proceselor din fundal. Sistemul de baze de
date Oracle este proiectat pe modelul de date relaional i utilizeaz limbajul de
interogare SQL pentru regsirea datelor.
Modul de stocare a unei baze de date Oracle folosete structuri logice de stocare
a bazei de date, diferite i independente de structurile fizice de stocare.
Poate cel mai important element al unei baze de date Oracle l constituie
Dicionarul de date al bazei de date. Dicionarul de date este creat automat la
instalarea bazei de date i ca parte integrant a bazei dedate este actualizat permanent.
Acesta cuprinde: obiectele bazei de date (tabele, vederi, indeci, proceduri i funcii
etc.), userii i privilegiile acestora, gradul de utilizare a bazei de date i alocarea logic
a spaiului de stocare a bazei de date Oracle. Dicionarul bazei de date Oracle (DDO)
este read-only i este proprietatea utilizatorului SYS. DDO este compus din:
- tabele de baz (informaii despre baza de date, accesate direct de mediul
Oracle, stocate n format intern, rareori accesate de utilizatori) ;
- vederi accesibile utilizatorilor (decodifica pentru utilizator informaiile din
tabelele de baz. Majoritatea utilizatorilor au acces la aceste vederi i nu la
tabelele de baz. Accesul se realizeaz cu comanda all_views).
Modelul relaional presupune legturi ntre tabelele bazei de date. Astfel,
legturile ntre tabelele unei baze de date pot fi One to Many (1- la mai multe) i Many
to Many (mai multe- la mai multe). Aceste legturi sunt date de cmpurile tabelelor ca
n exemplul de mai jos.
Transformarea unei asocieri sau legturi ntre dou relaii de tipul many to many
se despart n dou relaii de tipul one to many:
Many to Many: mai muli autori pot edita mai multe cri,
One to Many: acelai autor poate scrie mai multe cri, o carte poate include mai
muli autori.
n cadrul unor tabele exist noiunile de cheie primar (Primary key), cheie strin
(Foreign key) i cheie unic (Unique Key). Oracle le numete i constrngeri deoarece
impun o anumit manipulare a datelor coninute n tabele. Mai multe despre
constrngeri n cadrul discuiei despre SQL.
Carte_id
1
2
3
Tabela Autori
Relaii logice
stabilite prin
Foreign Key:
Cartea 3 are
ca autori 14 si
12, iar 4 are
autorul 3.
ntreg_1
ntreg_2
ntreg_3
1.2.
Nume_carte
Poezii
Poeme
Amintiri din
copilrie
Pre
($)
nrex
25
30
25
20
15
10
Carte_id
Nume_autor
Autor_id
3
3
4
Ion
Pop
George
14
12
3
Dei este proiectat pentru servere cu sistem de operare NT sau UNIX, Oracle
poate fi instalat i pe calculatoare personale cu o mare varietate de sisteme de operare.
Daca lucrai ntr-o reea atunci serverul Oracle va avea instalat Oracle Server i staiile
de lucru Oracle Client. Dac lucrai pe un calculator personal atunci trebuie s avei
instalat Oracle Personal Server pentru sistemul dvs. de operare. O copie a acestuia o
putei obine de la http://www.oracle.com/
Arhitectura simplificat: utilitare pentru dezvoltarea de aplicaii
CASE
Designer
Case
Aided
System
Engineering
SQL*Plus
SQL*Plus
este un
interpretor in
linie de
comanda,
produs de
Oracle, care
ofer o
fereastra de
interogare a
bazei de date
Oracle.
DEVELOPER
2000
Este folosit
pentru
aplicaii
bazate pe
formulare cu
acces la baze
de date.
Cuprinde:
Oracle
Forms,
DESIGNER 2000
Precompilatoare
Precompilatoarele
C, Cobol, Pascal
etc. permit
reutilizarea codului
din aceste aplicaii
si combinarea lui
cu cod de interfa
pentru serverul
Oracle.
Oracle
Reports,
Oracle
Graphics
Repository
Administrator
Sistemul ORACLE
Oracle folosete dou structuri de memorie principale:
1. SGA - System Global Area care conine datele i controleaz informaiile
pentru o instan Oracle.
2. PGA - Program Global Area care conine datele i controleaz informaiile
pentru un proces server.
Pornirea bazei de date Oracle:
1.
Pornirea unei instane (sinonim cu pornirea bazei de date, Oracle aloc o
poriune a memoriei partajate - SGA) ;
2.
Montarea bazei de date (proces de asociere a bazei de date cu o instan
pornit anterior) ;
3.
Deschiderea bazei de date (punerea bazei de date la dispoziia utilizatorilor
pentru operaiuni de baz de date).
Oprirea bazei de date Oracle:
1.
2.
3.
spaii tabel ;
segmente ;
extinderi ;
blocuri ;
fiiere de date.
Pentru a crea un nou spaiu tabel (privilegiul create tablespace) putei folosi
utilitarul SQL*DBA sau putei lansa comanda urmtoare n SQL*Plus:
create tablespace nume_sp_tabel
datafile "/nume_fis_date" size 10M
default storage(
initial 50k
next 40k
minextents 10
maxextents 50
pctincrease 0
)
offline;
Pentru a aduga un nou fiier de date (privilegiul alter tablespace):
alter tablespace nume_sp_tabel
add datafile ''/fis_date_nou' size 5M;
Oracle pune la dispoziie o serie de vederi pentru a afla informaii despre
structurile logice de stocare: dba_tablespaces, user_tablespaces, dba_data_files,
user_extends, user_segments, dba_extends.
Exemplu:
select tablespace_name, initial_extent, next_extent, max_extents, pct_increase
from sys.dba_tablespaces;
Segmente
Un segment este format din extinderi. Spaiul alocat segmentelor nu este eliberat
dect atunci cnd segmentul este abandonat sau trunchiat.
1.3.
modificri aduse. Evident, folosirea instrumentelor grafice de fiecare dat cnd este
necesar s executai acest proces poate deveni mare consumatoare de timp.
Algoritm pentru crearea unei baze de date:
1 Salvarea bazelor existente. Pentru fiecare baz existent trebuie salvate
fiierele de iniializare, fiierele de date, fiierele de control i de reluare.
2 Crearea unui nou fiier de iniializare. Pornirea unei instane se face utiliznd
un fiier de iniializare. Pentru a crea un nou fiier de iniializare se face o
copie la un fiier de iniializare deja existent, de exemplu init.ora.
3 Editarea noului fiier de iniializare. Copia fiierului trebuie adaptat la noile
cerine; pentru aceasta se fac urmtoarele modificri asupra parametrilor din
fiier:
DB_NAME- nume local al bazei de date ;
DB_DOMAIN - numele logic al domeniului n reea ;
CONTROL_FILES - numele i localizarea fiierelor de control ;
INIT_SQL_FILES - numele fiierelor SQL care vor fi executate n
momentul crerii bazei de date pentru construirea dicionarului de date i a
altor fiiere de iniializare
4
Editarea tuturor fiierelor de iniializare existente. Dac mai exist i alte baze
de date, trebuie ca fiierele lor de iniializare s fie reactualizate specificnd
parametrii CONTROL_FILES, DB_NAME, DB_DOMAIN.
6.
Crearea bazei de date. Sintaxa tipic pentru crearea bazei de date este
instruciunea CREATE DATABASE, care arat astfel:
CREATE DATABASE nume_baza_de_date;
iar modificarea ei se face prin comanda
alter database nume_baza_ de_date;
1.4.
10
- Pentru ca o nregistrare s fie unic, este necesar ca toate coloanele s fie unice.
(Aceasta nseamn c este ideal ca datele dintr-o coloan s nu se mai repete
nicieri n tabel.)
Referitor la a dou cerin, coloana care conine date unice n ntregul tabel este
cunoscut sub numele de cmpul cheii primare.
Un cmp al cheii externe este un cmp folosit pentru legarea unui tabel de cheia
primara sau externa a unui alt tabel.
1.5.
LDD este un subset al comenzilor SQL folosit pentru a crea, modifica sau muta
structurile bazei de date ORACLE, i de asemenea s nregistreze informaii n
Dicionarul de Date (acesta este discutat mai trziu).
1.5.1
Numele pe care-l alegei pentru o tabel trebuie s urmeze regulile standard pentru
numirea unui obiect al unei baze de date ORACLE.
Numele trebuie s nceap cu o liter, A-Z sau a-z. Poate conine litere, numerale
i caracterele speciale underscore (_). Caracterele $ i # sunt de asemenea legale, dar
folosirea lor este descurajat.
Numele este acelai indiferent dac sunt folosite litere mari sau mici, de exemplu,
ANG, ang, i aNg sunt toate aceeai tabel. Poate fi de maxim 30 caractere n lungime.
Numele nu trebuie s duplice numele altui obiect din contul dumneavoastr i de
asemeni, nu trebuie s fie un cuvnt rezervat SQL.
NUME
VALID ?
Carte85
85Carte
Gen_literar
Gen literar
UPDATE
da
nu;
da
nu;
nu;
// nu ncepe cu o liter
// conine un blank
// cuvnt rezervat SQL
Ar trebui s folosii nume de descriere pentru tabele i alte obiecte ale bazei de
date. Folosii acelai nume s descrie aceeai entitate n dou tabele diferite. De
exemplu, coloana cu codul crii este numit Carte_ID n ambele tabele, CARTI i
AUTORI_CARTI.
1.5.2
TIPURI DE DATE
Cnd creai o tabel trebuie s specificai fiecare tip de dat al coloanei. Tabelul
de mai jos arat cele mai importante tipuri de date.
Tipul de dat poate fi urmat de unul sau mai multe numere n paranteze care dau
informaii despre limea coloanei. Limea coloanei determin limea maxim pe
care valorile n coloan pot s-o aib. VARCHAR2 trebuie s aib o dimensiune, dar
sunt disponibile i cele implicite.
11
Descriere
VARCHAR2(w)
CHAR(w)
NUMBER
NUMBER(w)
NUMBER(w, s)
DATE
LONG
RAW i LONG RAW
ROWID
Not: Tipul de date VARCHAR2 din Oracle8i este sinonim cu versiunea a-6-a a
tipurilor de date 'VARCHAR' i 'CHAR'.
Dac o valoare scris ntr-o coloan depete scala coloanei, atunci va apare o
rotunjire.
Tabela de mai jos arat exemple de specificaii de coloane:
NUMBER(4)
Poate conine toate numerele pana la 4 cifre.
NUMBER(8, 3)
Poate conine pn la 8 cifre, dintre care 3 pot fi n
dreapta punctului zecimal.
VARCHAR2(1000)
Valorile pot conine pn la 1000 caractere.
CHAR(80)
iruri de caractere de lungime fix egal cu 80.
Valorile mai scurte sunt nlocuite cu blank-uri.
12
1.5.3
Creai o nou tabel folosind comanda CREATE TABLE. Una dintre cele mai
simple forme a acestei comenzi este cnd informaia de baz pentru fiecare coloan
este definit mpreun cu tipul ei de dat i dimensiunea.
Sintaxa:
CREATE TABLE nume tabela
(
nume coloana tip(dimensiune),
nume coloana tip(dimensiune),
...
);
1.5.4
TIPURI DE CONSTRNGERI
13
Constrngeri de integritate
Oracle permite constrngerilor de integritate s fie definite pentru tabele i
coloanelor s foreze reguli sigure, n interiorul unei tabele sau ntre tabele.
Constrngerile sunt folosite de serverul Oracle:
s foreze reguli la nivelul tabelei oricnd este inserat o linie, actualizat
sau tears din acea tabel. Constrngerea trebuie s fie satisfcut pentru
ca operaiile s reueasc ;
pentru a preveni tergerea unei tabele dac sunt posesiuni din alte tabele ;
prin unelte sigure Oracle, ca Oracle Forms, pentru a furniza reguli pentru
utilizarea ntr-o aplicaie.
Constrngerile sunt clasate dup cum urmeaz:
1. Constrngeri de tabel
Acestea pot referi una sau mai multe coloane i sunt definite SEPARAT de
definiiile coloanelor din tabel.
2. Constrngeri de coloan
Acestea refer o singur coloan i sunt definite N INTERIORUL specificaiei
pentru coloana posesoare.
Constrngerile pot fi adugate unei tabele dup crearea ei, i de asemenea
temporar dezactivate (vezi comanda ALTER TABLE n capitolul urmtor). Toate
detaliile despre constrngeri sunt stocate n Dicionarul de Date. Fiecrei constrngeri
i este repartizat un nume. i este mai uor s suplimentezi una tu singur, astfel c
poate fi mai uor referit mai trziu, dar dac nu, atunci un nume este generat automat
pe forma:
SYS_Cn,
unde n este un numr unic.
Cuvntul cheie CONSTRAINT i permite s numeti o nou constrngere. Putei
defini urmtoarele tipuri de constrngeri:
NULL/NOT NULL
UNIQUE
PRIMARY KEY
FOREIGN KEY (integritatea de referin)
CHECK.
14
Opiunea DEFAULT
Unei coloane i poate fi dat o valoare implicit prin opiunea DEFAULT. Aceasta
previne apariia de null-uri (sau erori, dac NOT NULL este specificat) dac o linie
este inserat fr o valoare din coloan. Valorile implicite pot fi literali, o expresie, dar
nu numele altei coloane. Funcii ca SYSDATE i USER sunt valide.
De exemplu:
Data_aparitie DATE DEFAULT SYSDATE,
Pret NUMBER (7, 2) DEFAULT 0
Constrngerea UNIQUE
Aceasta desemneaz o coloan sau o combinaie de coloane ca o cheie unic.
Dou linii n aceeai tabel nu pot avea aceeai valoare pentru aceast cheie. NULLurile sunt permise dac cheia unic este bazat pe o singura coloan.
Sintaxa constrngerii de tabel:
[CONSTRAINT nume constrangere] UNIQUE (Coloana, Coloana, ...)
Sintaxa constrngerii de coloan:
[CONSTRAINT nume constrangere] UNIQUE
O constrngere unic face ca n ORACLE s se creeze un singur index pentru a
mnui regula. Indecii sunt discutai mai trziu.
15
16
17
Dac toate coloanele n declaraia SELECT au nume bine definite (nu sunt expresii
.a.m.d.) specificaiile coloanei pot fi omise.
Dac sunt date specificaiile coloanei, atunci numrul de coloane trebuie s fie
egal cu numrul de articole din lista SELECT.
3. DESFURAREA LUCRRII
3.1.
number(3),
varchar2(30),
number(7,2),
number(3),
date;
AUTORI
Autori_ID
Nume_autori
Prenume_autori
number(3),
varchar2(20),
varchar2(20);
GEN_LITERAR
Gen_ID
Nume_gen
number(3),
varchar2(20);
CATEGORII_PUBLICATII
Categorie_ID
number(3),
Nume_categorie
varchar2(20);
EDITURI
18
Editura_ID
Nume_editura
Adresa
number(3),
varchar2(30),
varchar2(75);
IMPRUMUTA
Carte_id
Cititor_id
Dataim
Dataef
Datares
number(3),
number(3),
date,
date,
date;
CITITOR
Cod_id
Nume_cititor
Prenume_cititor
Varsta
Adresa
number(3),
varchar2(30),
varchar2(30),
number(3)
varchar2(30);
3.2.
CONSTRNGERI
19
20
3.3.
Pentru a crea o tabel EDITURI care ine codul editurilor, numele, adresa
editurilor, introducei:
CREATE TABLE EDITURI2
AS SELECT Editura_ID, Nume_editura,Adresa
FROM EDITURI
WHERE Editura_ID = 2;
Table created.
Pentru a vedea descrierea lui EDITURI2, introducei:
DESC EDITURI2 ;
Pentru a crea o tabel innd numele editurii, adresa i alte detalii, introducei:
21
4. NTREBRI I EXERCIII
I.
II.
Not: baza de date pe care o alegei poate fi una din opiunile enumerate:
- o baz de date despre componente de calculatoare (n care s
specificai numele de componente, compatibilitatea, sisteme de plat
etc.) ;
- o baz de date despre componente electronice (parametrii
componentei respective, link-ul de la care poate fi gsit documentaia
despre componenta respectiv etc.) ;
- o baz de date n care s inei evidenta angajailor dintr-o firm
(numele angajatului, departamentul n care lucreaz, mod de plat,
funcia, proiecte realizate etc.) ;
- o baz de date despre o magazie de CD (numele artitilor, piesele,
genul de muzic etc).