Sunteți pe pagina 1din 13

Baze de Date

CURSUL
8

Curs 8 Modelul relaional


operatori, algebra relaional
CUPRINS
INTRODUCERE 2
Obiective 2
Organizarea sarcinilor de lucru 2

SPECIFICAREA FORMAL A OPERATORILOR 3

SPECIFICAREA FORMAL A INTEROGRILOR 5


5
SPECIFICAREA FORMAL A TRANZACIILOR 7

TEST DE AUTOEVALUARE 9

REZUMAT 10
Termeni eseniali 11
Bibliografie 12
TEST DE EVALUARE 13

Pagina 1
C8.BD
Baze de Date

INTRODUCERE

Obiective
Obiectivele acestui curs sunt:
Specificarea formal a operatorilor n modelul relaional
Specificarea formal a interogrilor unei baze de date
Specificarea formal a tranzaciilor

Organizarea sarcinilor de lucru


Parcurgei cursul
Fixai principalele idei ale cursului, prezentate n rezumat.
Completai testul de autoevaluare.
Timpul de lucru pentru parcurgerea testului de autoevaluare este de 15 minute.

Pagina 2
C8.BD
Baze de Date

SPECIFICAREA FORMAL A OPERATORILOR


Aa cum vom vedea, pentru a putea defini anumite constrngeri de integritate
i/sau tranzacii asupra bazei de date, vom avea nevoie de anumii operatori pe tabele.
Acetia pot fi mprii n dou categorii: operatori clasici pe mulimi, ca reuniunea,
intersecia i diferena (orice tabel fiind o mulime de tupluri), respectiv operatori
specifici tabelelor, ca proiecia, restricia i cuplarea.
Reuniunea, intersecia i diferena tabelelor
Ca i n cazul funciilor, reuniunea nu este nchis pe tabele dect cu o anumit
condiie, i anume aceea ca operanzii s aib acelai heading. Altfel, rezultatul
reuniunii este o mulime de tupluri, dar nu este un tabel (conform definiiei tabelului).
Intersecia i diferena i pstreaz proprietatea de nchidere i pentru tabele,
fr restricii suplimentare.
Proiecia ()
Definiie: Fie T o mulime de funcii i A o mulime. Proiecia lui T pe
mulimea A, notat TA, se definete astfel:
TA := { tA | tT }.
Observm c definiia este general, fiind valabil pe orice mulime de funcii.
Ea rmne desigur valabil i pentru cazul cnd funciile respective au acelai
domeniu, iar mulimea A este o submulime al acestui domeniu.
n limbaj uzual, proiecia elimin coloanele tabelului ale crui atribute nu
aparin mulimii A.
Restricia
Uneori avem nevoie s vizualizm doar anumite tupluri ale unui tabel T. Pentru
a realiza o asemenea filtrare a tuplurilor, nu este nevoie s introducem un nou
simbol matematic, ci doar s folosim metoda predicativ de specificare a mulimilor:
{ t | tT P(t) }.
De exemplu, dac dorim s restrngem tabelul T1 cu angajaii unei organizaii
la tuplurile ce reprezint persoane nscute dup 1989, restricia respectiv (n urma
creia rezult un nou tabel T2) se specific astfel:
T2 := { t | tT1 t(data_naterii) > 31-12-1989}.
Cuplarea ()
Definiie: Fie T1 i T2 dou tabele (nu neaprat distincte). Cuplarea lui T1 cu
T2, notat T1T2, se definete astfel:
T1T2 := { t1t2 | t1T1 t2T2 t1 i t2 sunt funcii compatibile}.

Pagina 3
C8.BD
Baze de Date

Conform definiiei compatibilitaii a dou funcii, dou tupluri sunt compatibile


dac pentru toate atributele comune, valorile ataate acestora prin intermediul
tuplurilor coincid. Dac ns nu exist atribute comune ntre cele dou tupluri, ele
rmn compatibile indiferent de valorile atributelor. Deci prin cuplarea a dou tabele
ce nu au atribute comune, vom obine practic un nou tabel care reprezint produsul
cartezian al primelor dou (n care fiecare tuplu din primul tabel este cuplat cu fiecare
tuplu din al doilea). Aceast categorie special de cuplare ntre tabele se numete de
aceea cuplare Cartezian (Cartezian join).
Dac prin definirea formal a universului bazei de date crem posibilitatea ca
un sistem automat s poat accepta o stare a bazei de date, considerat consistent (sau
respinge o stare, considerat inconsistent), exist situaii n care este nevoie s
limitm posibilitile de tranziie ntre dou stri ale bazei de date, chiar dac ambele
sunt stri consistente (aparin universului bazei de date).
Pentru a specifica formal tranziiile de stare posibile ale unei baze de date, vom
defini universul tranziiilor de stare:
ST_DB_U := { TX | TXDB_UxDB_U ( (TX), (TX))
( (TX), (TX)) ( (TX), (TX)) }, unde
P1 (1 (TX), 2 (TX)) se numesc predicatele de tranziii de stare, sau
constrngeri de tranziii de stare.
Universul tranziiilor de stare este deci o mulime ale crei elemente sunt
perechi ordonate ce reprezint tranziii (tranzacii) admisibile ntre dou stri
consistente ale bazei de date. Mai mult, universul tranziiilor de stare conine toate
tranzaciile admisibile. Fiindc limiteaz posibilitile de modificare a bazei de date,
constrngerile de tranziii de stare se numesc i constrngeri dinamice, n timp ce
toate celelalte categorii de constrngeri definite anterior sunt considerate constrngeri
statice.
Pentru exemplificare, s considerm c n contextul unei baze de date ce
conine tabelulele ANG i ANG_PERM definite anterior, dorim ca sistemul
informaional s respecte urmtoarele reguli de afaceri:

a) salariile angajailor cu contract permanent de munc nu pot s scad;


b) un muncitor nu poate deveni director (mai nti trebuie s fie angajat ca
maistru).
Dat fiind c reprezint limitri asupra transformrilor posibile ale sistemului,
cele dou reguli de afaceri vor fi exprimate formal prin intermediul unor predicate de
tranziii de stare:
P1 (ANG_I, ANG_PERM_I, ANG_F) :=
( tANG_I, qANG_F:
( t(id_angajat) = q(id_angajat) t(id_angajat){ p(id_angajat) |
pANG_PERM } )
Pagina 4
C8.BD
Baze de Date

t(salariu) q(salariu) )
P2 (ANG_I, ANG_F) :=
( tANG_I, qANG_F:
( t(id_angajat) = q(id_angajat) t(funcie) = muncitor ) q(funcie)
director )
Deci, pentru a cuprinde specificarea formal a regulilor de afaceri enunate,
universul tranziiilor de stare se va defini astfel:
ST_DB_U := { (dbs_i;dbs_f) | dbs_iDB_U dbs_fDB_U
P1 ( dbs_i(ANG), dbs_i(ANG_PERM), dbs_f(ANG) )
P2 ( dbs_i(ANG), dbs_f(ANG) ) }.

SPECIFICAREA FORMAL A INTEROGRILOR

O interogare a bazei de date se va defini n modelul formal prezentat ca o


funcie ce are ca domeniu universul bazei de date, DB_U (deci primete o stare a
bazei de date ca argument).
Valoarea returnat de o astfel de funcie poate fi de orice tip, ca de exemplu:

o valoare scalar, ce aparine unui domeniu de valori Di inclus n D;


o mulime de valori scalare;
un tuplu;
un tabel (o mulime de tupluri);
mulimea vid.
Considernd o baz de date ce conine tabelele definite anterior: ANG,
ANG_PERM, respectiv DEPT, putem considera urmtoarele exemple de interogri:

a) S se gseasc numele i funcia tuturor angajailor din baza de date, cu


data naterii anterioar datei de 1 ianuarie 1980.
Q1(dbs) := { t{nume_persoan,funcie} | tdbs(ANG)
t(data_naterii) < (01.01.1980) }
Observm c interogarea Q1 returneaz o mulime de tupluri, adic un
tabel, cu atributele nume_persoan i funcie.
Folosind sintax SQL, interogarea Q1 se poate scrie:
select nume_persoan, funcie
from ANG
where data_naterii < (01.01.1980)

Pagina 5
C8.BD
Baze de Date

b) S se gseasc toi angajaii permaneni ai departamentului cu numele


atelier_nr_1. Pentru fiecare angajat se va returna doar numele i data
angajrii.
Q2(dbs) := { t{nume_persoan, data_angajrii} |
tdbs(ANG)dbs(DEPT)
t(nume_departament)= atelier_nr_1
( pdbs(ANG_PERM): p(id_persoan) = t(id_persoan) ) }
Folosind sintax SQL, interogarea Q2 se poate scrie:
select nume_persoan, data_angajrii
from ANG, ANG_PERM, DEPT
where ANG.id_persoan = ANG_PERM.id_persoan AND
ANG.id_departament = DEPT.id_departament AND
DEPT.nume_departament = atelier_nr_1
n plus fa de formalismul definit de Lex de Haan i Toon Koppelaars,
consider util posibilitatea de a extinde domeniul de valori al unei interogri de la
universul bazei de date (DB_U) la produsul cartezian ntre universul bazei de date i
oricte domenii scalare , incluse n D: DB_U x x x x .
n acest fel, pot fi definite formal interogri cu caracter mai general, ce implic
parametri suplimentari, a cror valoare nu este cunoscut n momentul formulrii
interogrii. Astfel, exemplele de mai sus pot fi transformate n interogri cu caracter
mai general dup cum urmeaz:

a) S se gseasc numele i funcia tuturor angajailor din baza de date, cu


data naterii anterioar datei x i salariul mai mic dect y.
Q1(dbs,x,y) := { t{nume_persoan,funcie} | tdbs(ANG)
t(data_naterii) < x t(salariu) < y }
b) S se gseasc toi angajaii permaneni ai departamentului cu numele z.
Pentru fiecare angajat se va returna doar numele i data angajrii.
Q2(dbs,z) := { t{nume_persoan, data_angajrii} |
tdbs(ANG)dbs(DEPT)
t(nume_departament) = z
( pdbs(ANG_PERM): p(id_persoan) = t(id_persoan) ) }
c) S se gseasc numrul de angajai permaneni ai departamentului cu
numele z.
Q3(dbs,z) := { t | tdbs(ANG)dbs(DEPT) t(nume_departament) = z

( pdbs(ANG_PERM): p(id_persoan) = t(id_persoan) ) }
Observm c interogarea Q3 nu returneaz un tabel, ci o valoare
numeric ce reprezint cardinalitatea unei mulimi de tuple,

Pagina 6
C8.BD
Baze de Date

corespunztoare tuturor angajailor departamentului z ce apar n tabelul


ANG_PERM (fiind deci angajai permaneni).
Aa cum vom arta n urmtorul capitol al lucrrii, astfel de interogri sunt
necesare pentru a putea specifica formal ntregul sistem informaional, inclusiv
vederile utilizator.

SPECIFICAREA FORMAL A TRANZACIILOR

Vom defini formal o tranzacie, respectiv o modificare a bazei de date, ca fiind


o funcie al crei domeniu este universul bazei de date DB_U i care returneaz o
stare a bazei de date ce aparine tot mulimii DB_U:
Considernd c Tra (dbs) = dbsnew - reprezint modificarea dorit a bazei de
date din starea dbs n starea dbsnew ,
fie funcia Trb : DB_U DB_U, unde
Trb (dbs) := Tra (dbs), dac Tra (dbs)DB_U
:= dbs, altfel.
Definim atunci tranzacia Tr ca pe o funcie:
Tr : DB_U DB_U, unde
Tr (dbs) := (dbs), dac (dbs; (dbs)) ST_DB_U
:= dbs, altfel.
Aadar, tranzacia ce presupune modificarea strii dbs a bazei de date n starea
este o funcie ce primete ca argument starea iniial, dbs, i returneaz starea
final, , doar dac aceasta din urm aparine universului bazei de date (satisface
toate constrngerile de integritate statice specificate n definiia DB_U) i, n plus,
tranziia ntre cele dou stri este una permis conform definiiei universului
tranziiilor de stare (sunt satisfcute toate constrngerile de integritate dinamice
specificate n definiia lui ST_DB_U). Dac exist cel puin o constrngere de
integritate, definit n DB_U sau ST_DB_U, care nu este satisfcut la tranziia bazei
de date de la dbs la , aceasta va rmne n starea iniial, dbs.
Ca i n cazul definirii formale a interogrilor, considerm util extinderea
domeniului de valori al unei tranzacii de la universul bazei de date (DB_U) la
produsul cartezian ntre universul bazei de date i oricte domenii scalare , incluse
n D:
Tr : DB_U x x x x DB_U.
De asemenea, n practic ar putea fi util ca o tranzacie a bazei de date s
accepte ca argument un tabel, ceea ce presupune extinderea domeniului de valori a
funciei Tr astfel:
Tr: DB_U x x x x x x x x DB_U.
Pagina 7
C8.BD
Baze de Date

Odat cu specificarea formal a tranzaciilor, sunt definite toate cele trei


elemente fundamentale ale modelului de date relaional: tabelul (relaia) ca i
constructor de structur de date, constrngerile de integritate, respectiv posibilitile de
manipulare a datelor.
Trebuie remarcat c sistemele actuale de gestiune a bazelor de date relaionale
(SGBDR) nu reuesc dect o implementare parial a modelului (1) (2), cu consecine
negative mai ales n ce privete posibilitatea specificrii declarative a constrngerilor
de integritate. Cu toate acestea, formalismul prezentat poate servi cu succes ca suport
teoretic pentru dezvoltarea unor noi tehnologii (e.g., RuleGen (3)) care s elimine
necesitatea specificrii procedurale, la nivel fizic, a anumitor constrngeri de
integritate, a cror specificare declarativ nu este n prezent posibil.

Pagina 8
C8.BD
Baze de Date

TEST DE AUTOEVALUARE

ncercuii rspunsurile corecte la


ntrebrile urmtoare.

ATENIE: pot exista unul,


niciunul sau mai multe rspunsuri corecte la
aceeai ntrebare.
Timp de lucru: 10 minute

1) Operatorii clasici pe mulimi sunt:


a) proiecia
b) reuniunea
c) intersecia
d) cuplarea
e) diferena
f) restricia
g) niciuna dintre acestea
2) Operatorii relaionali sunt:
a) proiecia
b) reuniunea
c) intersecia
d) cuplarea
e) diferena
f) restricia
g) niciuna dintre acestea
3) n limbaj uzual, proiecia elimin coloanele tabelului ale crui atribute nu
aparin unei anumite mulimi. Da / Nu
4) O interogare a bazei de date poate returna:
a) o valoare scalar
b) un tabel
c) un tuplu
5) Universul tranziiilor de stare este o mulime ale crei elemente sunt perechi
ordonate ce reprezint tranziii (tranzacii) admisibile ntre dou stri
consistente ale bazei de date. Da / Nu

Grila de evaluare: 1-b,c,e; 2-a,d,f; 3-Da; 4-a,b,c; 5-Da.

Pagina 9
C8.BD
Baze de Date

REZUMAT

Pentru a putea defini constrngeri de integritate i/sau tranzacii asupra bazei de


date, este nevoie de anumii operatori pe tabele. Acetia se mpart n dou categorii:
operatori clasici pe mulimi, ca reuniunea, intersecia i diferena (orice tabel fiind o
mulime de tupluri), respectiv operatori specifici tabelelor, ca proiecia, restricia i
cuplarea.
Universul tranziiilor de stare este o mulime ale crei elemente sunt perechi
ordonate ce reprezint tranziii (tranzacii) admisibile ntre dou stri consistente ale
bazei de date. Mai mult, universul tranziiilor de stare conine toate tranzaciile
admisibile. Fiindc limiteaz posibilitile de modificare a bazei de date,
constrngerile de tranziii de stare se numesc i constrngeri dinamice. Toate celelalte
categorii de constrngeri definite anterior sunt considerate constrngeri statice.
O interogare a bazei de date se definete formal ca o funcie ce are ca domeniu
universul bazei de date (mulimea de stri posibile ale bazei de date). Valoarea
returnat de o astfel de funcie poate fi de orice tip: o valoare scalar, ce aparine unui
domeniu de valori Di inclus n D; o mulime de valori scalare; un tuplu; un tabel (o
mulime de tupluri); mulimea vid.
O tranzacie a bazei de date se definete printr-o funcie al crei domeniu este
universul bazei de date DB_U i care returneaz o stare a bazei de date ce aparine tot
mulimii DB_U:
Tranzacia ce presupune modificarea strii dbs a bazei de date n starea dbsnew
este o funcie ce primete ca argument starea iniial, dbs, i returneaz starea final,
dbsnew , doar dac aceasta din urm aparine universului bazei de date (satisface toate
constrngerile de integritate statice specificate n definiia DB_U) i, n plus, tranziia
ntre cele dou stri este una permis conform definiiei universului tranziiilor de stare
(sunt satisfcute toate constrngerile de integritate dinamice specificate n definiia lui
ST_DB_U). Dac exist cel puin o constrngere de integritate, definit n DB_U sau
ST_DB_U, care nu este satisfcut la tranziia bazei de date de la dbs la dbsnew ,
aceasta va rmne n starea iniial, dbs.

Pagina 10
C8.BD
Baze de Date

TERMENI Operatori clasici pe mulimi sunt: reuniunea, intersecie,


diferena, produsul cartezian
Operatori specifici tabelelor: proiecie, restricia, cuplarea
Constrngerile de tranziii de stare se numesc
ESENIALI constrngeri dinamice; toate celelalte categorii de
constrngeri sunt considerate constrngeri statice.

Pagina 11
C8.BD
Baze de Date

BIBLIOGRAFIE
1. Date, C. J. An Introduction to Database Systems (8th edition). s.l. : Addison-Wesley, 2003.

2. Haan, Lex de and Koppelaars, Toon. Applied Mathemathics for Database Professionals.
s.l. : Apress, 2007. ISBN: 978-1-59059-745-3.

3. RuleGen BV. RULE GEN. [Online] October 2011. http://www.rulegen.com.

4. Date, C. J. What Not How: The Business Rules Approach to Application Development. s.l. :
Addison-Wesley, 2000.

5. Lelutiu, Alexandru. Perenitatea conceptelor promovate de bazele de date. Cluj-Napoca :


Casa Cartii de stiinta, 2002.

6. Date, C. J. Logic and Databases: The Roots of Relational Theory. s.l. : Trafford Publishing,
2007.

7. Date, C. J. and Darwen, Hugh. Foundation for Future Database Systems: The Third
Manifesto (2nd Edition). s.l. : Addison-Wesley, 2000.

8. Building domain-specific embedded languages. Hudak, Paul. 4, December 1996, ACM


Computing Surveys (CSUR), Vol. 28.

9. Date, C. J. Date on Database: Writings 2000-2006. s.l. : Apress, 2006. 978-1-59059-746-0.

10. Hay, David C. Different Kinds of Data Models: History and a Suggestion. The Data
Administration Newsletter - TDAN.com. October 1, 2010.

11. Date, C. J. Edgar F. Codd: a tribute and personal memoir. ACM SIGMOD Record.
December 2003, Vol. 32, 4, pp. 4-13.

Pagina 12
C8.BD
Baze de Date

TEST DE EVALUARE

ncercuii rspunsurile corecte la


ntrebrile urmtoare.

ATENIE: pot exista unul,


niciunul sau mai multe rspunsuri corecte la
aceeai ntrebare.
Timp de lucru: 10 minute

1) Operatorii clasici pe mulimi sunt:


a) proiecia, reuniunea, diferena
b) reuniunea, intersecia, diferena
c) intersecia, proiecia, cuplarea
d) cuplarea, proiecia, restricia
e) niciuna dintre acestea
2) Operatorii relaionali sunt:
a) proiecia, reuniunea, intersecia
b) reuniunea, proiecia, cuplarea
c) intersecia, diferena, restricia
d) cuplarea, restricia, proiecia
e) niciuna dintre acestea
3) Dac exist cel puin o constrngere de integritate, definit n DB_U sau
ST_DB_U, care nu este satisfcut la tranziia bazei de date de la dbs la
, aceasta va rmne n starea iniial, dbs. Da / Nu
4) O interogare a bazei de date poate returna:
a) o valoare scalara
b) un tabel
c) un tuplu
5) Universul tranziiilor de stare este o mulime ale crei elemente sunt perechi
ordonate ce reprezint tranziii (tranzacii) admisibile ntre dou stri
consistente ale bazei de date. Da / Nu

Grila de evaluare: 1-b; 2-d; 3-Da; 4-a,b,c; 5-Da.

Pagina 13
C8.BD

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