Sunteți pe pagina 1din 25

Capitolul 1.

Noiuni fundamentale
1.1. Generaliti
n lumea modern bogia unei organizaii (instituie, firm, ONG, etc.)
este constituit - pe lng resursele materiale i umane - i din informaia
aflat la dispoziie. Pentru ca aceast resurs important s poat fi
exploatat cu rezultate profitabile trebuie ca ea s fie gestionat eficient.
Cea mai optim metod existent la ora actual este crearea, utilizarea i
ntreinerea unor Sistemele de gestiune a bazelor de date computerizate.
Prin Baz de date (BD) se nelege o colecie de informaii stocate pe
calculator astfel nct acestea s poat fi accesate, modificate sau terse.
Sistemul de gestiune a bazelor de date (SGBD) este un software care
realizeaz interfaa ntre sistemul de operare al calculatorului i beneficiarul
care solicit informaii din BD.
Cele mai importante funcii ale SGBD sunt:

stocarea, regsirea i actualizarea datelor din BD utilizatorul


poate crea consulta i manipula informaiile;

crearea i ntreinerea dicionarului de date (catalogul de


sistem);

facilitarea accesului simultan al mai multor utilizatori la BD;

pstrarea unor copii de siguran (back-up) i recuperarea


datelor n cazul cderii sistemului;

securizarea datelor prin parolarea accesului utilizatorilor i


gestiunea drepturilor de intervenie n BD.
Organizarea informaiilor sub forma unor BD i accesarea lor prin
intermediul SGBD aduce o serie de avantaje ntre care cele mai importante
sunt:

independena datelor schimbrile structurale n BD nu


afecteaz programele de aplicaie;

coerena datelor modificarea unei nregistrri este perceput


de toi utilizatorii sistemului;

integritatea datelor printr-un sistem de restricii SGBD oblig


utilizatorii s introduc date complete i n formatul cerut pentru
fiecare nou obiect introdus n BD;

reducerea redundanei se evit repetarea unor date n mai


multe locaii n BD. Prin urmare se economisete spaiul de
stocare (hard-disk);
1

controlul centralizat al datelor administratorul BD deine


dreptul gestionrii i controlului n BD;

creterea eficienei accesului la informaie selecia i


manipularea unor mari cantiti de date n timp real permite
analiza i extragerea unor concluzii;

creterea securitii posibilitatea protejrii prin parolare a


accesului la date;

limbaj de interogare SGBD permite accesarea datelor prin


intermediul unui limbaj de interogare. Un asemenea limbaj poate
fi un:
limbaj algebric n care interogrile asupra relaiilor sunt
exprimate prin intermediul unor operatori aplicai asupra
lor (ex. SQL)
limbaj bazat pe calcul relaional n care interogrile
asupra relaiilor sunt exprimate prin intermediul unor
condiii (predicate) pe care nregistrrile (tuplele) relaiilor
trebuie s le satisfac. Exist limbaje orientate pe
nregistrri (ex. QUEL, Ingress) i limbaje orientate pe
domenii (ex. QBE)
n ultimele trei decenii modelul relaional s-a impus net ca soluie
preferat n majoritatea implementrilor de SGBD-uri. Prin urmare marea
majoritate a mediilor software de gestionare a BD sunt concepute conform
acestui model.
Fiecare dat are dou caracteristici de fundamentale:
identificatorul,
tipul.
Identificatorul este numele atribuit datei prin care aceasta este
indicat i care permite ulterior accesarea ei. Tipul datei stabilete modul n
care data este memorat i modul n care operatorii i funciile o
prelucreaz. O dat poate fi text, numr, dat calendaristic, etc.
Datele pot fi elementare (simple, scalare) sau compuse (complexe).
Datele compuse sunt divizibile n mai multe date simple. Un exemplu de
dat simpl este Numrul de telefon (Tel) al unui angajat, iar o dat
compus este Adresa (Adr) care cuprinde jude, ora, strada, numr, etc.
Analiznd cele de mai sus n contextul caracteristicilor fundamentale,
se poate estima c data identificat de Tel trebuie s fie de tip numr, iar
cea numit Adr este de tip text. De exemplu n dialectul MySQL ele se
declar cu sintaxa:
Tel
int(9);
Adr
varchar(30);
adic un ntreg care are ntotdeauna 9 cifre (3 cifre prefixul localitii i 6
numrul propriu-zis), respectiv un ir cu lungime variabil ntre 0 i 30 de
caractere alfanumerice.
2

TEST
1.1.1. Printr-o baz de date se nelege:
a. un fiier cu date;
b. colecie de informaii stocate astfel nct s poat fi regsite,
modificate sau terse;
c. un tabel cu nregistrri.
1.1.2. Principalele funcii ale unui SGBD sunt:
a. stocarea, regsirea i actualizarea datelor;
b. faciliteaz accesul simultan al mai multor utilizatori;
c. securizarea datelor prin parolare.
1.1.3. Avantajele accesrii datelor printr-un SGBD sunt:
a. asigurarea integritii datelor;
b. reducerea redondanei;
c. creterea securitii.
1.1.4. Limbajele de interogare utilizate n gestiunea BD pot fi:
a. algebrice;
b. logice;
c. relaionale.
1.1.5. Datele stocate ntr-o baz de date sunt:
a. scalare;
b. vectoriale;
c. complexe1.
1.2. Colecii de date
O colecie de date reprezint un ansamblu de date omogene.
Omogenitatea nu trebuie privit n sensul restrns al uniformitii. n
acest context se consider omogene toate datele implicate ntr-o aceeai
aplicaie.
ntre coleciile de date se stabilesc relaii concretizate prin reguli,
algoritmi matematici sau metode de calcul prin care unei date i corespund:
nici una, una sau mai multe date. n consecin aa cum se arat n Figura
1.1. exist relaii de coresponden de tip:
una la una cnd unei date dintr-o colecie i corespunde o
singur dat din alt colecie;
1

Rspunsuri: 1.1.1. b; 1.1.2. a, b, c; 1.1.3. a, b, c; 1.1.4. a, c; 1.1.5. a, c

una la mai multe - cnd unei date dintr-o colecie i corespunde


mai multe date din alt colecie;
mai multe la una - cnd mai multor date dintr-o colecie le
corespund o aceeai dat din alt colecie;
mai multe la mai multe - cnd mai multor date dintr-o colecie le
corespund mai multe date din alt colecie.
Colecia 1

Colecia 1

Colecia 2

a.
Colecia 1

Colecia 2

b.

Colecia 2

Colecia 1

c.

Colecia 2

d.

Figura 1.1. Tipuri de relaii dintre datele a dou colecii


a. Coresponden unu la unu
b. Coresponden unu la mai muli
c. Coresponden mai muli la unu
d. Coresponden mai muli la mai muli

Colecia
primar

Colecia
secundar

a.
Colecia 1

Colecia 2

b.

Colecia 1

Colecia 2

c.

Figura 1.2. Tipuri de relaii


a. Relaie unidirecional
b. Relaie bidirecional
c. Echivalena unei relaii bidirecionale cu
dou relaii unidirecionale
De asemenea relaiile dintre datele din dou colecii pot fi
unidirecionale sau bidirecionale. O relaie este unidirecional atunci cnd
stabilirea corespondenei se face plecnd de la data din Colecia 1, iar data
4

sau datele din Colecia 2 sunt cele determinate. Colecia 1 este colecie
primar iar Colecia 2 este secundar. Dac relaia este bidirecional se
poate pleca de la oricare din cele dou colecii obinndu-se acelai efect.
n Figura 1.2. se schematizeaz aceste tipuri i se demonstreaz c
o coresponden bidirecional se poate reduce la dou relaii
unidirecionale. O colecie de date poate fi independent sau legat de una
ori mai multe alte colecii de date. n general, n Sistemele de gestiune a
bazelor de date relaionale, detectarea legturilor ntre colecii reprezint un
capitol important n efortul de proiectare conceptual.
TEST
1.2.1. O colecie de date reprezint:
a. un set de date scalare;
b. un ansamblu de date omogene,
c. un vector.
1.2.2. ntre dou colecii de date se poate stabili:
a. o coresponden;
b. o relaie de subsidiaritate;
c. o relaie de recuren.
1.2.3. Corespondena ntre dou colecii poate fi:
a. una la una;
b. una la mai multe;
c. mai multe la mai multe.
1.2.4. Relaia ntre dou colecii poate fi:
a. nondirecional;
b. unidirecional;
c. bidirecional.
1.2.5. O colecie de date poate fi legat printr-o relaie de:
a. doar de o singur alt colecie;
b. mai multe alte colecii;
c. nici una, una sau mai multe colecii2.
1.3. Structuri de date
O colecie de date creia i se ataeaz un mecanism de localizare
(identificare, selecie) a datelor componente devine o Structur de date.
2

Rspunsuri: 1.2.1. b; 1.2.2. a; 1.2.3. a, b, c; 1.2.4. b, c; 1.2.5. b, c.

Mecanismul de selecie este implementat de sistemul de operare, de


sistemul de gestiune sau de programele aplicative. n SGBD moderne,
acest mecanism este furnizat de sistemul de gestiune.
Structurile de date nu conin i procedurile propriu-zise de procesare
a datelor, dar definirea lor presupune i precizarea mecanismului de acces
la date. Exist dou tipuri fundamentale de mecanisme de acces:
secvenial accesarea unei date din colecie presupune
parcurgerea tuturor datelor de dinaintea acesteia,
direct accesarea se face direct (de exemplu prin evaluarea unei
expresii) fr a mai parcurge datele anterioare.
Pe baza acestora se pot elabora alte tipuri derivate de mecanisme de
acces mai complexe ntre care i mecanismul specific indecilor, foarte
utilizat n SGBD moderne.
Structurile simple de date sunt:
punctuale datele izolate fr relaii de coresponden;
liniare datele legate secvenial una dup alta;
circulare (inel) - caz particular de structur liniar;
stea o dat central aflat n legtur cu toate celelalte date;
arborescent structurare ierarhic a datelor;
reea fiecare dat este legat de una sau mai multe alte date
din colecie.
Atribute
Cmp 2 ...

Cmp 1

nregistrri

Tupla 1

Dat complex 1

Tupla 2

Dat complex 2

Cmp N

...

Dat complex M

Tupla M

Figura 1.3. Structura tabelar


n viaa real se utilizeaz structurile complexe rezultate din
combinaia celor de mai sus. ntre acestea structurile tabelare i cele
relaionale constituie modurile standard de organizare a datelor n SGBD
relaionale (MySQL, Oracle, Ms Access, etc.).
Structurile tabelare sunt schematizate n Figura 1.3. i cuprind
coloane numite atribute (cmpuri) i rnduri ce conin nregistrri (tuple)
ale unor date complexe. Se poate observa c structura tabelar este n fapt
6

o structur liniar de date complexe omogene (datele simple componente


sunt identice ca tip i aranjare).
Structura relaional este o structur arborescent de tabele aa cum
se exemplific n Figura 1.4. Legturile dintre tabele reprezint relaiile
unilaterale sau bilaterale ntre atributele acestora.

Figura 1.4. Structura relaional


Pentru fiecare problem de gestionare a unei baze de date exist mai
multe soluii i n consecin mai multe scheme logice de reprezentare a
datelor. O asemenea schem specific tabelele componente, cmpurile
componente i mulimea relaiilor ce le leag. O bun proiectare a
sistemului de gestiune bazei de date conduce la o schem logic articulat
coerent i un spaiu de stocare minimizat prin reducerea redundanei
datelor.
Spre exemplu, propunem spre analiz situaia unui depozit de
materiale de construcii. n situaia n care ncercam memorarea tuturor
informaiilor ntr-un singur tabel rezult un fiier coninnd repetiii.
Tabelul 1.1. este simplu i relativ uor de utilizat dac numrul
nregistrrilor nu crete foarte mult. Spaiul necesar memorrii datelor este
ns prost gestionat fiindc exist informaii care se repet. De exemplu
unitatea de msur pentru un material care provine de la mai muli furnizori
este rescris pentru fiecare apariie a materialului respectiv. De asemenea
codul fiscal al unui furnizor apare n dreptul fiecrui articol cumprat de la
acesta. Dac pe lng intrri se iau n considerare i ieirile atunci
coloanele corespunztoare beneficiarilor vor aduce probleme similare.
n plus, o firm care investete n punerea la punct a unui SGBD are
pretenia rezonabil ca acest sistem s rezolve gestionarea unui set mai
larg de informaii legate nu doar de materialele de construcii tranzacionate
ci i eventual datele de personal, salarizare, relaii contractuale,
contabilitate etc. Prin urmare soluia relaional prezentat n setul de
tabele 1.2. prezint nu doar avantajul reducerii redundanei ci i pe acela
de a permite dezvoltarea SGBD pentru rezolvarea tuturor fluxurilor
informaionale ale organizaiei.

Tabel unic
Nume
material
...
Ciment
Gresie
Crmizi
...
...
Bolari
Gresie
...

UM
...
t
m2
buc.
...
buc.
m2
...

Calitate
...
1
1
2
...
1
1
2
...

Denumire
furnizor
...
Dino Grup
ItalConstruct
MatCons
...
MatCons
Mondial
...

Cod fiscal
furnizor
...
6546781
4235112
3287923
...

Cantitate
...
256
13200
546000
...

3287923
1879224
...

126000
8340
...

Cantitate

Pre
unitar
...
120
15
8
0.1
0.3
...

P.U.

...

(euro)

...
280
20
0.1
...
0.3
15
...

...
...
...
...
...
...
...
...
...

Tabelul 1.1. Soluia Tabel unic


Cod
material
...
cim.
grs.
grs
crm.
blt.
...
Cod
mat.
...
cim

...
1
1
2
2
1
...

...
256
13200
8340
546000
12600
...

Materiale
Denumire

UM

...

...
ciment

...
t

...
...

Cod
furniz.
...
dn_grp

m2
buc
.
buc
.
...

...
...

ital
matc

grs
crm

gresie
caramizi

blt

bolari
...

Stocuri
Cod
furnizor
...
dn_grp
ital
iups
matc
matc
...

Calitate

...

iups
...

...

...
...
...
...
...
...
...

Furnizori
Nume
Cod
furnizor
fiscal
...
...
DinoGrup 654678
1
ItalCeram 4235112
MatCons
328792
3
IUPS
187922
4
...
...

...
...
...
...

...

Tabelul 1.2. Soluia relaional


n concluzie o Baz de date relaional este compus din unul sau
mai multe tabele ntre care sunt stabilite relaii (legturi). Construirea unei
baze de date relaionale presupune deci dou etape:
construcia tabelelor - operaie static, structura tabelelor este
stabilit nc nainte de ncrcarea datelor,
stabilirea relaiilor operaie dinamic aflat n legtur cu
programele de prelucrare.
8

Tabela 1

Tabela 2

Tabela 3

Tabela 4

nregistrarea k1
nregistrarea k4

nregistrarea k2
nregistrarea k3

Figura 1.6. Selectarea automat a nregistrrilor corespunztoare


ntr-un lan de tabele
Prin structura lor tabelele au ca unitate de lucru nregistrarea (rndul
de tabel). Introducerea unei date complexe noi trebuie deci s satisfac o
condiie de rigoare s fie completate cu informaie toate cmpurile
rndului. n mod identic eliminarea unei date din baz trebuie s fie fcut
prin tergerea tuturor atributelor adic a ntregului rnd.
Odat stabilite relaiile unidirecionale ntre tabele accesul la informaii
se face printr-un mecanism specific, adic selectarea unei nregistrri n
tabela principal (conductoare) produce selecia automat a nregistrrilor
corespunztoare n tabelele secundare (conduse). Acest mecanism
funcioneaz n mod similar i n situaia unui lan de tabele legate prin
relaii unidirecionale aa cum se arat n figura 1.6.
De obicei ntr-o baz de date relaional exist un singur tabel
conductor (rdcina grafului arborescent) restul tabelelor fiind direct sau
indirect legate de acesta ntr-o structur de forma celei prezentate n figura
1.5. n practic exist i excepii de la aceast regul care se pot
schematiza ca structuri arborescente cu dou sau mai multe rdcini.
Modelul relaional a fost formulat i publicat la nceputul anilor 70 de
matematicianul Edgar F. Codd cercettor la laboratoarele IBM. Ulterior
Codd a stabilit i un set de 13 reguli de fidelitate. Acestea sunt:
Regula 0. Pentru a fi relaional un SGBD trebuie s fie capabil s
gestioneze o baz de date exclusiv prin intermediul caracteristicilor sale
relaionale. (Regula de baz)
Regula 1. ntr-o baz de date relaional informaia este reprezentat
la nivel logic ntr-un singur fel i anume sub form tabelar. (Regula
reprezentrii informaiei)
Regula 2. Fiecare dat dintr-o baz de date relaional trebuie s fie
adresat n mod logic printr-o combinaie format din numele tabelului,
valoarea cheii primare i numele cmpului. (Regula accesului garantat la
date)
9

Regula 3. Un SGBD n totalitate relaional trebuie s permit


utilizatorului definirea unui tip de date denumit NULL pentru reprezentarea
unei informaii necunoscute la momentul respectiv i aceasta ntr-un mod
sistematic pentru orice tip de date. (Regula reprezentrii informaiei
necunoscute)
Regula 4. Asupra descrierii bazelor de date trebuie s se poat aplica
aceleai operaii ca cele asupra datelor din baza de date. (Regula
dicionarelor de date)
Regula 5. Un SGBD relaional trebuie s poat permite utilizarea a
cel puin un limbaj care s aib urmtoarele caracteristici: s permit
definirea datelor, definirea vizualizrilor, manipularea datelor (interactiv i
prin program), restricii de integritate, restricii de autorizare i realizarea
tranzaciilor. (Regula limbajului de interogare)
Regula 6. Un SGBD relaional trebuie s poat determina dac o
vizualizare poate fi actualizat i s stocheze rezultatul interogrii ntr-un
catalog de sistem. (Regula de actualizare a vizualizrii)
Regula 7. Regulile de manipulare asupra unei relaii luat ca ntreg
sunt valabile att pentru operaiile de regsire a datelor, ct i pentru
operaiile de inserare, actualizare i tergere a datelor. (Regula limbajului
de nivel nalt)
Regula 8. ntr-un SGBD relaional trebuie s se separe aspectul fizic
al datelor ( metodele de stocare i acces) de aspectul logic, i anume
programele de aplicaie. (Regula independenei fizice a datelor)
Regula 9. Programele de aplicaie trebuie s fie transparente la
modificrile de orice fel efectuate asupra datelor. (Regula independenei
logice a datelor)
Regula 10. Un SGBD relaional trebuie s permit att definirea unor
restricii de integritate asupra bazelor de date prin intermediul limbajului ct
i stocarea lor n dicionare de tipul cataloagelor de sistem. (Regula
independenei datelor din punct de vedere al integritii)
Regula 11. Distribuirea datelor pe mai multe calculatoare dintr-o reea
nu trebuie s afecteze programele de aplicaii. (Regula independenei
datelor din punct de vedere al distribuirii)
Regula 12. Orice component procedural a unui SGBD trebuie s
respecte aceleai restricii de integritate ca i componenta relaional.
(Regula versiunii procedurale a SGBD)
Nici un SGBD nu respect ad literam toate aceste reguli i prin
urmare nu exist actualmente nici un SGBD relaional pur. Ceea ce se
apreciaz prin analiza numrului de reguli respectate i al gradului de
respectare a lor, este ns msura n care un SGBD se apropie de modelul
ideal.
TEST
10

1.3.1. O structur de date reprezint:


a. o colecie de date complexe;
b. o colecie de date scalare,
c. o colecie de date cu un mecanism de localizare.
1.3.2. Mecanismul de accesare al datelor poate fi:
a. relaional;
b. secvenial;
c. direct.
1.3.3. O structur tabelar este divizibil n:
a. nregistrri;
b. cmpuri;
c. predicate.
1.3.4. O baz de date relaional conine:
a. un tabel conductor (rdcin);
b. o structur arborescent de tabele;
c. un set de reguli de fidelitate.
1.3.5. E.F. Codd a definit treisprezece reguli de fidelitate pentru:
a. clienii bazei de date;
b. administratorul bazei de date;
c. bazele de date relaionale 3.
1.4. Elemente de Algebr relaional
Manipularea datelor ntr-o baz de date relaional trebuie s
cuprind:
introducerea datelor,
regsirea datelor,
modificarea datelor,
eliminarea datelor.
Baza teoretic fundamental pentru orice limbaj de interogare
relaional este algebra relaional care const dintr-o mulime de operatori
pentru manipularea relaiilor. Aceti operatori sunt primitivele pe baza
crora sunt construite limbajele actuale de interogare. Cunoaterea
algebrei relaionale este deci un instrument util pentru nelegerea n
profunzime a unor aspecte legate de proiectarea bazelor de date,
optimizarea interogrilor, distribuirea bazelor de date relaionale, etc.
3

Rspunsuri: 1.3.1. c; 1.3.2. b, c; 1.3.3. a, b; 1.3.4. a, b; 1.3.5. c.

11

Exist opt operatori ce acioneaz asupra tabelelor de intrare i


genereaz un tabel de ieire. Ei pot fi clasificai n: operatori unari dac
opereaz cu un singur tabel de intrare sau binari dac opereaz asupra a
dou tabele.
De asemenea operatorii algebrei relaionale pot fi clasificai n:
operatori de baz (SELECT, PROJECT, UNION, DIFFERENCE,
PRODUCT) i operatori derivai (INTERSECT, DIVIDE, JOIN).
Operatorul SELECT este un operator unar care extrage nregistrrile
ce satisfac o anumit condiie. Sintaxa sa este:
SELECT T WHERE C
unde T este tabelul unde se face selecia iar C este condiia de analizat.
De exemplu dac se cere s se selecteze toate nregistrrile din A
(tabelul 1.3.a) care satisfac condiia s aib cmpul Fax adevrat (are faxul pe acelai numr cu telefonul) se execut comanda:
SELECT A WHERE Fax
Cod_client
...
263
264
265
...

Nume_client
...
Pop Ionel
erban Vasile
Roth Alfred
...

Telefon
...
143566
264538
311698
...

Fax
...
Yes
Yes
No
...

Mod_plata
...
card
card
cash
...

Tabelul 1.3.a.
Rezultatul aplicrii seleciei este:
Cod_client
...
263
264
...
Tabelul 1.3.b.

Nume_client
...
Pop Ionel
erban Vasile
...

Telefon
...
143566
264538
...

Fax
...
Yes
Yes
...

Mod_plata
...
card
card
...

Deci operatorul a ales din tabelul 1.3.a. acele nregistrri care au


atributul Fax = true (Yes). Dup WHERE se pun ntotdeauna condiii al
cror rspuns este de tipul true/false. n general este vorba de expresii ce
cuprind comparaii ntre numele atributelor i constante, comparaii
efectuate cu operatorii aritmetici: <,=,>,>=,<=,!=. O expresie poate cuprinde
mai multe comparaii legate ntre ele prin operatorii logici: AND, OR, NOT.
Cod_client
Nume_client
...
...

Telefon
...
12

Fax Mod_plata
...
...

263
Pop Ionel
...
...
Tabelul 1.3.c.

143566
...

Yes
...

card
...

Prin urmare comanda:


SELECT A WHERE Fax AND Cod_client<264
are drept rezultat tabelul 1.3.c.
Operatorul SELECT este util pentru filtrarea datelor dintr-o baz de
date funcie de un criteriu referitor la unul sau mai multe din cmpurile
tabelului. Deci acest operator este folosit pentru filtre, interogri i rapoarte.
Operatorul PROJECT este un operator unar care are rolul de a
returna domeniul unui cmp al tabelului analizat. Sintaxa sa este:
PROJECT T ON F
unde T este tabelul iar F este cmpul al crui domeniu este returnat. De
exemplu, dac asupra tabelului A (tabel 1.3.a) se execut linia de cod:
PROJECT A ON Mod_plata
Mod_plata
...
card
cash
...
Tabel 1.3.d.
se observ c rezultatul este reluarea coloanei corespunznd atributului cu
eliminarea repetiiilor. PROJECT se poate aplica simultan i mai multor
cmpuri, de exemplu:
PROJECT A ON Mod_plata, Fax
Fax Mod_plata
...
...
Yes card
No cash
...
...
Tabel 1.3.d.
i rezult o list a tuturor combinaiilor de date din cele dou cmpuri. n
cazul de fa este posibil ca pe alte rnduri s existe i (Yes, cash) sau (No,
card), dar n cele trei prezentate sunt doar perechile de valori (Yes, card) i
(No, cash).

13

Operatorul UNION este un operator binar, deci are dou tabele de


intrare i se genereaz un tablou ce conine toate nregistrrile distincte
cuprinse n cele dou intrri. Operatorul combin doar tablourile cu un
numr similar de atribute definite respectiv pe aceleai domenii. Sintaxa
acestui operator este:
T1 UNION T2
unde T1 i T2 sunt dou tablouri cu acelai numr de cmpuri, fiecare
cmp avnd respectiv aceleai domenii. De exemplu dac se aplic
UNION pentru tabelele A i B din setul de tabele 1.4.a:
A UNION B
A

Cod
Nume
produs
produs
245
Faian
167
Crmizi
216
Mozaic
Tabelele 1.4.a.

Cod
produs
144
213
134

Nume
produs
Beton
Gresie
Bolari

rezult tabloul C care este reuniunea mulimilor de nregistrri ale celor


dou tablouri iniiale:
C
Cod
Nume
produs
produs
245
Faian
167
Crmizi
216
Mozaic
144
Beton
213
Gresie
134
Bolari
Tabelul 1.4.b.
A*
Cod
Nume
produs
produs
245
Faian
167
Crmizi
216
Mozaic
189
Adeziv
Tabelul 1.4.c.
UNION se poate utiliza i pentru adugarea unei nregistrri noi ntrun tabel. n consecin acest operator asigur posibilitatea de a completa o
baz de date cu nregistrri noi. De exemplu:
14

A UNION < 189, adeziv>


produce completarea tabelului cu noua nregistrare aa cum se vede n
tabelul 1.4.c. (A*).
Operatorul MINUS (DIFFERENCE) este un operator binar n care din
cele dou tablouri de intrare se selecteaz nregistrrile care nu sunt
comune. Operatorul combin de asemenea tablourile cu un numr similar
de atribute definite respectiv pe aceleai domenii. Sintaxa acestui operator
este:
T1 MINUS T2
unde T1 i T2 sunt dou tablouri cu acelai numr de cmpuri, fiecare
cmp avnd respectiv aceleai domenii. De exemplu dac se aplic
MINUS pentru tabelele A i B din setul de tabele 1.5.a:
A MINUS B
A
Cod
Nume
produs
produs
245
Faian
213
Gresie
216
Mozaic
Tabelele 1.5.a.

B
Cod
produs
216
213
134

Nume
produs
Mozaic
Gresie
Bolari

rezult tabloul C care este disjuncia celor dou mulimii de nregistrri din
tablourile iniiale:
C
Cod
Nume
produs
produs
245
Faian
134
Bolari
Tabelul 1.5.b.
MINUS se poate utiliza i pentru tergerea unei nregistrri dintr-un
tabel. n consecin acest operator asigur posibilitatea de a elimina o tupl
din baz de date. De exemplu:
A MINUS < 245, Faian>
produce eliminarea din tabel a nregistrrii aa cum se vede n tabelul
1.5.c. (A**):
A**
Cod
produs

Nume
produs
15

213
Gresie
216
Mozaic
Tabelele 1.5.c.
Operatorul PRODUCT este un operator binar n care din cele dou
tablouri de intrare se combin ntr-un produs cartezian. Sintaxa operatorului
este:
T1 PRODUCT T2
unde T1 i T2 sunt cele dou tablouri de intrare. De exemplu dac se aplic
PRODUCT pentru tabelele A i B din setul de tabele 1.6.a:
A PRODUCT B
A
Nume
produs
Faian
Gresie
Tabelele 1.6.a.

B
Depozit
Arad
Timioara

rezult tabloul C care cuprinde toate combinaiile ce se pot face cu


nregistrrile din tablourile iniiale:
C
Nume
Depozit
produs
Faian
Arad
Gresie
Arad
Faian
Timioara
Gresie
Timioara
Tabelul 1.6.b.
Operatorul DIVIDE este un operator binar n care primul din cele
dou tablouri de intrare este supus unei selecii dup un criteriu dat de un
atribut al celui de al doilea tablou.
Sintaxa operatorului este:
DIVIDE T1 BY T2
unde T1 i T2 sunt cele dou tablouri de intrare. De exemplu dac se aplic
DIVIDE pentru tabelele A i B din setul de tabele 1.7.a:
DIVIDE A BY B
rezult tabloul D1 care cuprinde toate produsele care satisfac condiia de a
avea instruciuni de utilizare n romn. Pentru operaiunea
DIVIDE A BY C

16

rezult tabloul D2 care cuprinde toate produsele care satisfac condiia de a


avea instruciuni de utilizare n englez i francez.
A
Nume prod.
Aspirator
Aspirator
Aspirator
Mixer
Mixer
Videorecorder
Videorecorder
TV
TV

Instruciuni
Romn
Englez
Francez
Romn
Francez
Romn
Englez
Francez
Englez

Tabelele 1.7.a.
D1
Nume
produs
Aspirator
Mixer
Videorecorder
Tabelul 1.7.b.

B
Limba instruciuni
Romn
Englez
Francez
C
Limba instruciuni
Francez
Englez
D2
Nume
produs
Aspirator
TV
Tabelul 1.7.c.

Prin urmare cu ajutorul operatorului DIVIDE se pot executa interogri


asupra unei baze de date rezultnd setul de nregistrri care satisfac o
anumit condiie n mod similar cu expresiile utiliznd operatorul SELECT.
n cazul utilizrii operatorului DIVIDE ns se face selecia unor nregistrri
dintr-un tabel dup un criteriu privind un cmp al altui tabel.
Operatorul INTERSECT este un operator binar. El are dou tabele
de intrare i prin aplicarea lui se selecteaz toate nregistrrile cuprinse n
ambele. Operatorul combin doar tablourile cu un numr similar de atribute
definite respectiv pe aceleai domenii. Sintaxa acestui operator este:
T1 INTERSECT T2
unde T1 i T2 sunt dou tablouri cu acelai numr de cmpuri, fiecare
cmp avnd respectiv aceleai domenii. De exemplu dac se aplic
UNION pentru tabelele A i B din setul de tabele 1.8.a:
A INTERSECT B
A
Cod
produs

B
Nume
produs

Cod
produs
17

Nume
produs

245
Faian
213
Gresie
216
Mozaic
Tabelele 1.8.a.

144
213
134

Beton
Gresie
Bolari

rezult tabloul C care este intersecia mulimilor de nregistrri ale celor


dou tablouri iniiale:
C
Cod
Nume
produs
produs
213
Gresie
Tabelul 1.8.b.
Operatorul JOIN este un operator binar care permite regsirea
informaiei din mai multe tabele corelate. Cele dou tablouri de intrare sunt
combinate ntr-un nou tabel n care fiecare nregistrare este o combinaie a
tuplelor iniiale. Combinaia nregistrrilor se poate face doar dac tuplele
ce se combin sunt similare. Exist cinci tipuri operatori derivai JOIN:
a. NATURAL JOIN
b. EQUI-JOIN (STRAIGHT-JOIN)
c. THETA-JOIN
d. SEMI-JOIN
e. OUTER-JOIN (LEFT-JOIN)
a. Operatorul NATURAL JOIN
NATURAL JOIN combin nregistrrile ce au atribute comune din cele
dou tabele. nregistrrile dintr-un tabel fr corespondent n cellalt nu
apar n rezultatul final. Sintaxa operatorului este:
JOIN T1 AND T2
De exemplu: JOIN A AND B
A
Cod
Nume
produs
produs
216
Mozaic
213
Gresie
167
Crmizi
Tabelele 1.9.a.
C=JOIN A AND B
Cod
Nume
Pre
produs
produs

B
Nume
produs
Bolari
Gresie
Crmizi

18

Pre
0.3
8
0.1

213

Gresie
Crmiz
167
i
Tabelul 1.9.b.

8
0.1

b. Operatorul EQUI-JOIN
EQUI-JOIN este similar cu NATURAL-JOIN, dar cuprinde o condiie
ce specific atributul prin care se realizeaz corelaia ntre cele dou
tablouri. Sintaxa operatorului este:
JOIN T1 AND T2 WHERE T1.k=T2.l
Ex.1 JOIN A AND B WHERE A.Nume_produs=B. Nume_produs
A
Cod
Nume
produs
produs
216
Mozaic
213
Gresie
167
Caramizi
Tabelele 1.10.a.

B
Nume
produs
Bolari
Gresie
Caramizi

Pre
0.3
8
0.1

C=JOIN A AND B WHERE ...


Cod
Nume
Nume
Pre
produs
produs
produs
213
Gresie
Gresie
8
Caramiz Caramiz
167
0.1
i
i
Tabelul 1.10.b.
Se poate observa c n tabloul de ieire apar toate coloanele din cele
dou tabele aa nct Nume_produs este afiat de dou ori. Un asemenea
operator este prin urmare util n situaiile cnd relaia dintre cele dou
tabele se stabilete prin intermediul unor coloane neidentice.
A(Produse alimentare)
Cod_a Produs Pret
A001
Carne
5
A002
Unt
3
Pateu
3
A003
ficat
A004
Frisca
2
Tabelele 1.11.a.

B(Suplinitori pentru post)


Cod_s Inlocuitor Pret_s
S001
Soia
2
S002
Margarin
1
Pate
2
S003
ciuperci
S004
Hulala
1

19

JOIN A AND B WHERE F(A.Cod_a,B. Cod_s)=1


F(A.Cod_a,B. Cod_s) este o funcie care elimin prefixele A i S din
cele dou coduri i apoi cerceteaz identitatea irurilor rezultate. F
returneaz 1 n caz de egalitate i 0 n caz contrar.
Cod_a
A001
A002

Produs
Carne
Unt
Pateu
A003
ficat
A004
Frisca
Tabelul 1.11.b.

Pret
5
3
3
2

C
Cod_s
S001
S002

Inlocuitor
Soia
Margarin

S003

Pate ciuperci

S004

Hulala

Pret_s
2
1
2
1

c. Operatorul THETA-JOIN
THETA-JOIN este varianta generalizat a operatorului EQUI-JOIN
deoarece relaia de corelare nu este o egalitate ci devine o comparaie.
Sintaxa operatorului este:
JOIN T1 AND T2 WHERE T1.k T2.l
n locul se pot folosi oricare din operatorii de comparaie (< <=, >,
=>, !=, =).
A(Manopera_frizerie)
Cod
Serviciu
Pret_s
S001
Tuns
3
S002
Frezat
1
S003
Masaj
1
S004
Barbierit
2
Tabelele 1.12.a.

B(Materiale consumabile)
Cod
Mat.
Pret_m
S001 Deodorant
2
S002 Fixativ
2
S003 Parfum
4
S004 Spuma ras
1

JOIN A AND B WHERE A.Pret_m>B. Pret_s AND A.Cod=B.Cod


C=JOIN A AND B WHERE ...
Cod
Serviciu
Pret_s
Mat.
S001
Tuns
3
Deodorant
S004
Barbierit
2
Spuma ras
Tabelul 1.12.b.

Pret_m
2
1

Urmare a operaiei THETA-JOIN n tabloul de ieire apar doar acele


nregistrri care satisfac preul manoperei unui anumit serviciu s fie mai
mare dect preul materialelor folosite.
20

d. Operatorul SEMI-JOIN
Operatorul SEMI-JOIN genereaz un tabel de ieire ce cuprinde toate
tuplele din primul tabel T1 corelate cu oricare din tuplele tabloului T2 astfel
nct condiia specificat n clauza WHERE s fie ndeplinit. Sintaxa
operatorului este:
S JOIN T1 AND T2 WHERE T1.k=T2.l
Ex.1 S JOIN A AND B WHERE A.Nume_produs=B.Nume_produs
A
Cod
Nume
produs
produs
216
Mozaic
213
Gresie
167
Crmizi
Tabelele 1.13.a.

B
Nume
produs
Bolari
Gresie
Crmizi

Pre
0.3
8
0.1

C=S JOIN A AND B


...
Cod
Nume
produs
produs
213
Gresie
167
Crmizi
Tabelul 1.13.b.
Se poate observa c n tabloul de ieire apar doar coloanele din A i
nregistrrile care satisfac condiia din clauza WHERE.
e. Operatorul OUTER-JOIN
Operatorul OUTER-JOIN spre deosebire de celelalte variante
genereaz un tabel de ieire ce cuprinde toate tuplele din primul tabel T1
adic inclusiv acelea care nu au corespondent n tabelul T2.
O JOIN T1 AND T2 WHERE T1.k=T2.l
Exemplul 1: O JOIN A AND B WHERE A.Nume_produs=B. Nume_produs
Tabelelul A conine codul i numele unor materiale de construcii, iar
tabelul B conine numele i preul lor. Prin urmare tabloul C va reuni
nregistrrile corespunztoare fiecrui sortiment.
A
Cod
produs

B
Nume
produs

Nume
produs
21

Pret

216
Mozaic
213
Gresie
167
Caramizi
Tabelele 1.13.a.

Bolari
Gresie
Caramizi

0.3
8
0.1

Se poate observa c n tabloul C apare i Materialul 216, Mozaic din


A. Pentru aceast nregistrare nu exist pre n B aa nct n coloana
respectiv se afieaz NULL. n practic aceast operaie denumit LEFT
JOIN este folosit tocmai pentru a obine tuplele fr corespondent.
Extragerea lor din totalul tuplelor se poate face cu o propoziie SELECT
avnd o clauz WHERE C.Pret IS NULL
C=OJOIN A AND B ...
Cod
Nume
Pret
produs
produs
216
Mozaic
NULL
213
Gresie
8
Caramiz
167
0.1
i
Tabelul 1.13.b.
TEST
1.4.1. Operatorii algebrei relaionale pot fi:
a. unari;
b. binari,
c. ternari.
1.4.2. Operatorul SELECT are sintaxa:

a.
b.
c.

SELECT T;
SELECT T WHERE condiie;
SELECT T(a) WHERE condiie.

1.4.3. Operatorul UNION:


a. este binar;
b. combin doar tablourile cu un numr similar de atribute definite
respectiv pe aceleai domenii;
c. genereaz un tablou ce conine toate nregistrrile distincte
cuprinse n cele dou intrri.
1.4.4. Operatorul EQUI JOIN are forma:
a. JOIN T1 AND T2 WHERE T1.k<T2.l;
b. JOIN T1 AND T2 WHERE T1.k=T2.l;
22

c.

JOIN T1 AND T2 WHERE T1.k>T2.l .

1.4.5. Operatorul THETA JOIN are forma:


a. JOIN T1 AND T2 WHERE T1.k<T2.l;
b. JOIN T1 AND T2 WHERE T1.k=T2.l;
c. JOIN T1 AND T2 WHERE T1.k>T2.l4.
1.5. Limbajul SQL
Limbajul Structured Query Language (pronunat es-q-el sau sii-qel) reprezint la ora actual limbajul standard pentru SGBD relaionale.
Limbajul SQL a fost creat pentru a permite utilizatorilor: s creeze structura
unei baze de date, s efectueze operaii de gestionare a datelor (inserarea,
editarea, tergerea) i s efectueze interogri pentru a procesa datele brute
n vederea obinerii informaiilor utile.
Limbajul cuprinde dou componente principale (sub-seturi de
instruciuni):
sub-limbajul de definire a datelor (Data Definition Language
DDL) utilizat pentru definirea structurii bazei de date,
sub-limbajul de manipulare a datelor (Data Manipulation
Language DML) folosit pentru regsirea i reactualizarea
datelor.
Schema unei BD descrie tabelele, cmpurile tabelelor, domeniile de
variaie ale acestora, restriciile de integritate, drepturile utilizatorilor,
vizualizri i detalii privind implementarea fizic. O baz de date cuprinde
n structura sa: tabele, vizualizri, sinonime, indeci i cataloage.
Caracteristicile principale ale limbajului SQL sunt:
este orientat cu precdere pe specificarea datelor cerute i nu a
procedurilor (limbaj neprocedural orientat spre transformri),
structura instruciunilor const n cuvinte standard n limba
englez,
este utilizabil de ctre o gam larg de utilizatori (administratori,
programatori de aplicaii, clieni, etc.),
are format liber adic nu oblig la structuri spaiale rigide i nu
este sensibil la tipul de litere majuscule sau litere mici. Singura
excepie o reprezint datele de tip caracter. De exemplu
POPESCU Popescu
Limbajul SQL nu este un standard unic cci dezvoltarea sa n timp a
condus ca n diferite etape setul de tipuri de date utilizat i instruciunile
sale s fie modificate i dezvoltate. n general standardul ISO 92 este
astzi acceptat formal i de facto n majoritatea aplicaiilor comerciale.
4

Rspunsuri: 1.4.1. a, b; 1.4.2. b; 1.4.3. a, b, c; 1.4.4. b; 1.4.5. a, c.

23

Totui exist dialecte ale limbajului proprii fiecruia dintre productorii de


software de gestiune a BD. Prin urmare n cadrul diferitelor medii care
utilizeaz SQL pentru crearea, manipularea i gestionarea bazelor de date
relaionale sunt utilizate diverse variante corespunznd unor stadii mai noi
sau mai vechi de evoluie a limbajului i preferinelor particulare ale firmei
care a creat mediul. Exist deci cte un dialect SQL relativ diferit pentru
DB2 (IBM), ORACLE, Visual FoxPro, MySQL, etc. In cele ce urmeaz se
va prezenta dialectul MySQL deoarece acest mediu de dezvoltare al
sistemelor de gestiune a BD este considerat de autori simplu i eficient.
TEST
1.5.1. Limbajul SQL este un limbaj ce permite:
a. crearea unei baze de date;
b. gestionarea datelor,
c. interogarea bazelor de date.
1.5.2. Limbajul SQL conine urmtoarele subseturi:

a. Limbaj de definire a datelor;


b. Limbaj de manipulare a datelor;
c. Limbaj de gestionare a datelor.
1.5.3. Schema unei baze de date cuprinde:
a. tabelele, atributele i domeniile acestora;
b. restriciile de integritate;
c. drepturile utilizatorilor.
1.5.4. Limbajul SQL este :
a. un standard unic;
b. un limbaj cu dialecte relativ diferite ntre ele;
c. o familie de limbaje independente fr elemente comune .
1.5.5. MySQL este:
a. un mediu de dezvoltare a SGBD relaionale;
b. un limbaj de definire a datelor;
c. un dialect al SQL5.
1.6. Tem de cas
S se implementeze n Microsoft Acces Bazele de date utilizate ca
exemplu pe parcursul acestui capitol. S se experimenteze posibilitatea
5

Rspunsuri: 1.5.1. a, b, c; 1.5.2. a, b; 1.5.3. a, b, c; 1.5.4. b; 1.5.5. a, c.

24

executrii unor interogri ce au efect similar cu operaiunile JOIN din


paragraful anterior.
1.7. Rezumat
Prin Baz de date se nelege o colecie de informaii stocate pe
calculator astfel nct acestea s poat fi accesate, modificate sau terse.
Sistemul de gestiune a bazelor de date este un software care realizeaz
interfaa ntre sistemul de operare al calculatorului i beneficiarul care
solicit informaii din baza de date.
O colecie de date creia i se ataeaz un mecanism de localizare a
datelor componente devine o Structur de date. Mecanismul de selecie
este implementat de sistemul de operare, de sistemul de gestiune sau de
programele aplicative. n SGBD moderne, acest mecanism este furnizat de
sistemul de gestiune. Exist dou tipuri fundamentale de mecanisme de
acces: secvenial i direct.
Manipularea datelor ntr-o baz de date relaional trebuie s
cuprind: introducerea datelor, regsirea datelor, modificarea datelor,
eliminarea datelor. Baza teoretic fundamental pentru orice limbaj de
interogare relaional este algebra relaional care const dintr-o mulime de
operatori pentru manipularea relaiilor. Aceti operatori sunt primitivele pe
baza crora sunt construite limbajele actuale de interogare. Exist opt
operatori ce acioneaz asupra tabelelor de intrare i genereaz un tabel
de ieire. Ei sunt: SELECT, PROJECT, UNION, DIFFERENCE, PRODUCT,
INTERSECT, DIVIDE i JOIN.
Limbajul Structured Query Language este limbajul standard pentru
SGBD relaionale. Limbajul SQL a fost creat pentru a permite utilizatorilor:
s creeze structura unei baze de date, s efectueze operaii de gestionare
a datelor i s efectueze interogri pentru procesarea datelor. Limbajul
cuprinde dou seturi de instruciuni: sub-limbajul de definire a datelor i
sub-limbajul de manipulare a datelor.

25

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