Sunteți pe pagina 1din 324

Capitolul 1.

Modelul relaional
Modelul relaional ca i orice alt model de date
utilizat n proiectarea logic a bazelor de date
elibereaz utilizatorul de cunoaterea detaliilor
despre structura fizic i metodele de acces la date.
El are dou avantaje suplimentare:
- e simplu, structurile de date snt omogene n
form de relaii tabelare.
- este riguros din punct de vedere matematic
graie faptului c se sprijin pe teoria matematic a
relaiilor i logic de ordinul unu.
- Modelul relaional a fost propus de E. Codd n
1970.

Orice model de date, trebuie s se bazeze pe trei
componente: structuri de date, restricii de integritate
i operatorii de manipulare a datelor.
Structurile de date. Structurile sunt definite de
un limbaj de definire a datelor (data definition
language). Datele n modelul relaional sunt
structurate n relaii bidimensionale. Elementele
principale ale structurii relaionale sunt relaiile,
tuplurile, atributele, domeniile.
Restriciile de integritate. Prin integritatea
datelor se subnelege c datele rmn stabile, n
siguran i corecte. Integritatea n modelul relaional
este meninut de restricii interne.



-Manipularea datelor. Relaiile pot fi manipulate
utiliznd un limbaj de manipulare a datelor (data
manipulation language). n modelul relaional, limbajul
folosete operatorii relaionali bazai pe conceptul
algebrei relaionale.

1.1. Structura relaional a datelor

Unul din avantajele modelului relaional rezid n
omogenitatea lui. Toate datele sunt structurate n
tabele, fiecare linie ale cror are acelai format. Linia
ntr-un tabel reprezint un obiect (sau o relaie dintre
obiecte) din lumea nconjurtoare.



1.1.1. Atribute i domenii

n modelul relaional fiecare coloan a unei linii dintr-un
tabel corespunde noiunii de cmp din fiiere. Cmpul
este cea mai mic unitate accesibil de date. Fiecare
cmp poate conine un anumit tip de date (integer, real,
character, string etc.), pentru care se specific numrul
necesar de octei de memorie.
Definiia 1.1. Fie U o mulime nevid de elemente
A1,A2,...,An, numite atribute. Mulimea U =
{A1,A2,...,An} se numete universul unei baze de date
relaionale sau mulime universal.


Definiia 1.2. Domeniul unui atribut Ai din U, 1s i s n,
notat cu dom(Ai), este o mulime finit de valori de acelai
tip care le poate primi atributul Ai.

Domeniul este simplu, dac elementele sale sunt atomice
(adic nu pot fi descompuse din punctul de vedere al
SGBD-ului). Atributul ce are un domeniu de valori simplu
se numete atribut atomic. Domeniul unei submulimi R a
universului U , se noteaz dom(R), este uniunea tuturor
domeniilor atributelor din R, adic dom(R) =
AieRdom(Ai), unde dom(C) =C, dac R=C.
n modelul relaional fiecare tabel reprezint o
relaie.
Atributele sunt nite identificatori pentru a
diferenia i marca coloanele tabelului.
Toate atributele ce apar ntr-un tabel trebuie s
fie distincte i s fie incluse n universul U.
Atributele au un caracter global n baza de date:
dac un nume denot dou coloane n tabele
distincte n aceeai baza de date, atunci el
reprezint acelai atribut.
Relaia tabelar cu i linii i j coloane are i*j elemente.
Fiecare element este o valoare dintr-un domeniu simplu.
Cu toate c atributele n universul U trebuie s fie distincte,
domeniile acestor atribute nu trebuie neaprat s fie
disjuncte.
De exemplu, managerul n acelai timp poate fi funcionar.
Deci domeniile atributelor MANAGER i
FUNCIONAR nu sunt disjuncte, adic MANAGER i
FUNCIONAR sunt definite pe acelai domeniu (cu toate
c atributele respective pot avea i valori distincte).
Convenie. Mai departe vom utiliza urmtoarele
notaii. Universul U={A1,A2,...,An} i orice
submulime a lui, R=(Ai1,.-.,Aik}, vor fi reprezentate
ca string-uri, adic
U=A1...An,
R = Ai1Aik.
Vom folosi Ai_U, n loc de {Ai_U} pentru "Ai este
o submulime a mulimii U".
Reuniunea YZ a dou mulimi Y i Z va fi
reprezentat de simbolul YZ, unde operaia binar
uniunea, "", este omis.
Mulimile Y i Z pot fi i mulimi vide, fiindc
Z=Z, Y=Y i =.
Cu litere majuscule de la nceputul alfabetului
latin vom nota atributele singulare, iar cu cele de
la sfritul alfabetului latin - mulimi de atribute.
1.1.2.Tupluri
n sistemele cu fiiere o mulime de cmpuri ce e
conceput ca o unitate de salvare i cutare se
numete nregistrare. nregistrarea are un format
specific i depinde de tipurile de date ale
cmpurilor. O linie dintr-o relaie tabelar
corespunde nregistrrii din fiiere i n teoria
relaional se numete tuplu.
Definiia 1.3. Fie R o submulime a universului
U, R_U, unde R= i fie dom(R) domeniul
mulimii R. Tuplu se numete o funcie,
t:Rdom(R), din R n dom(R), adic
t = {(Ai1,a1),...,(Aik,ak)},
Unde orice Aij, 1s, j s k, este un atribut n R i
un argument al lui t, iar orice aj, 1 < j < k, este o
valoare n dom(Aij).
Defniiia 1.4. Fie X=Bi...Bm o submulime
proprie a mulimii R, XcR, unde X=C.
X-valoare a tuplului t, notat cu t[X], este
t[X] = {(Bj, bj)|bj=t(Bj)=t(Aip),
1s j s m, pe{1,...,k}}.
Dac X=Aij, je{1,..,k}, atunci Aij-valoarea
tuplului t se mai numete Aij-component a
tuplului t.
Ultima definiie ne spune, c t(Aij)=t[Aij]=aj
pentru ajedom(Aj). Deci nu vom diferenia
simbolurile t(Aij) i t[Aij] pentru un atribut
singular Aij din U.
Pentru comoditate tuplul t i X-valoarea
tuplului t vor fi notate
t=<al...ak|Ai1...Aik>
i
t[X]=<bl...bm|B1...Bm>,
respectiv.
ns, dac coloanele tabelului ce corespund
mulimilor R i X sunt marcate cu atribute din
R i X, iar ordinea atributelor ce marcheaz
corespund ordinii atributelor n R i X, atunci
notaiile tuplului t i X-valorii tuplului t pot fi
simplificate respectiv
t = <a1...ak>
i t[X]=<b1...bm>.
Deci putem reprezenta printr-un string nu
numai o mulime de atribute, dar i o mulime
de valori. Dar permutarea atributelor ntr-un
tabel va trebui reflectat n tupluri,
permutndu-le componentele. Cu toate c
string-urile ce reprezint tuplurile iniial i
final vor fi diferite, vom considera c aceste
tupluri sunt identice.
n tuplul t=<a1...ak|Ai1...Aik> distingem dou
componente - string-ul de atribute Ai1...Aik,
care este invariant n timp i string-ul de valori
a
1
...a
k
, care este foarte dinamic. Partea
invariant a tuplului vom numi-o schema
tuplului (uneori se noteaz sch(t)). ndat ce
am definit schema tuplului, expresia "tuplul
asupra R" devine clar i este echivalent
expresiei "tuplul t cu schema R".
Pentru comoditate notaional, un tuplu cu
numele t i schema R se va nota uneori
t(R)=t(Ail)t(Ai2)...t(Aik).
Deci putem concepe tuplul t(R) ca un tuplu
variabil asupra R i fiecare component t(Aij),
l < j < k, ca un domeniu variabil. Dac tuplul
t(R) are o form constant, adic string-ul lui de
valori este <c
1
...c
k
> i aceste valori sunt n
dom(R), el se numete tuplu constant asupra
R.
1.1.3. Relaii i scheme
Definiia 1.5. Fie R o submulime a
universului U. Relaia r asupra R este o
mulime finit de tupluri cu schema R. Aritatea
relaiei r este egal cu cardinalitatea mulimii
R. Cardinalitatea relaiei r este numrul de
tupluri n ea.
Definiia 1.6. Fie R_U i relaia r asupra R.
Mulimea de atribute R se numete schema
relaiei r (notat cu sch(r)=R).

Definiia 1.7. Baza de date relaional este o
mulime finit de relaii,
db = {r1, ,rm},
unde r, este o relaie cu schema
Ri, 1 i m.
Definiia 1.8. Fie baza de date db = {r1,...,rm}.
Schema bazei de date este mulimea schemelor
relaiilor ce formeaz baza de date, Db =
{R1,...,Rm}, unde Ri = sch(ri)
Deci schema unei relaii este o expresie a
proprietilor comune i invariante ale
tuplurilor ce compun relaia. Schema unei
relaii mai este cunoscut sub denumirea de
intensia unei relaii. Relaia se mai numete
extensie.
Extensia reprezint mulimea tuplurilor care
compun la un moment dat relaia, mulime care
este variabil n timp.
Din definiiile de mai sus putem conchide
urmtoarele:
(1) ntr-o relaie nu exist coloane cu nume
duplicate, fiindc atributele Aij, 1 j k, sunt
elemente ale mulimii R.
(2) Relaia r, nu are tupluri identice, fiindc r,
este o mulime de tupluri.
(3) Ordinea tuplurilor n r, este
nesemnificativ, fiindc r, este o mulime.
(4) Ordinea coloanelor e nesemnificativ.
(5) Valorile atributelor n r, sunt atomice
fiindc domeniile sunt simple.
Relaiile care se stocheaz fizic i formeaz
baza de date se numesc relaii de baza.
Exist i relaii virtuale, cunoscute i sub
numele de relaii derivate sau viziuni.
Relaia este definit implicit prin mulimea
tuplurilor componente a altor relaii.
Relaiile de baza sunt proiectate de
administratorul bazei de date, n timp ce
viziunile sunt definite de utilizatorii bazei de
date.
Numele relaiei, de obicei, se scrie cu
minuscule, de exemplu, relaia r.
Exemplul 1.1. Baza de date "Universitatea"
const din patru relaii: studeni,
discipline,
corp_didactic ,
arj
(vezi fig. 1.1)

studeni NUME NOTA
_MED
FACULTATEA DECAN
Vasilache 7,8 CIM Popovici


discipline

FACULTATE

DISCIPLINA



corp didac DISCIPLINA PROFESOR


arja DISCIPLINA TIP ORE


Fig.l.l. Baza de date Universitatea
Datele n fiecare relaie sunt atomice i sunt luate din
domeniile (simple) atributelor corespunztoare.
Atributul FACULTATE n relaiile studeni i
discipline reprezint acelai atribut.
Atributul DISCIPLIN figureaz n trei relaii
discipline, corp_didac i arj
Cele opt atribute prezente n relaiile descrise
constituie universul U=NUME NOT_MED
FACULTATE DECAN DISCIPLINA PROFESOR
TIP ORE.
Aadar, atributele oricrei relaii formeaz o
submulime a mulimii universale U.
Domeniul atributului NUME const din
eventualele nume de familie, dar conine i
valori active, adic numele studenilor ce i
fac studiile la facultate.
Domeniul atributului NOT_MED conine
numere pozitive cu valoarea maxim 10.
Celelalte domenii se definesc similar.
Nu e exclus faptul c un decan s fie student la
o alt facultate n cazul acesta domeniile active
ale atributelor NUME i DECAN nu vor fi
disjuncte.
Tuplurile relaiei studeni sunt definite pe
mulimea de atribute R= NUME NOTA_MED
FACULTATE DECAN.
Ele sunt concepute ca tupluri constante-valori
ale tuplului variabil t(R)=t(NUME)
t(NOTA_MED) t(FACULTATE) t(DECAN).
De exemplu, tuplul constant <Vasilache 7.8.
Cibernetic Popovici> arat c Vasilache este
student La facultatea Cibernetic a crei decan
este Popovici i are nota medie 7.8.
Considerm X=NUME DECAN. Tuplul variabil v
fi t[X]=t(NUME) t(DECAN). Tuplul constant
definit pe schema X este derivat din tuplul
<Vasilache 7.8. Cibernetic Popovici
al relaiei studeni
i este
<Vasilache Popovoci>.
n baza de date "Universitatea", studeni este nume de
relaie. Schema relaiei studeni este
NUME NOT_MED FACULTATE DECAN.
Baza de date "Universitatea" const din patru relaii.
db={studeni, discipline, corp_didactic, arj}.
Schema bazei de date este mulimea schemelor celor
patru relaii Db= {NUME NOT_MED FACULTATE
DECAN, FACULTATE DISCIPLIN, DISCIPLIN
PROFESOR, DISCIPLIN TIP ORE}.
Relaiile studeni, discipline, corp_didactic, arj au
aritatea 4, 2, 2 i 3 respectiv. Ele formeaz relaiile de
baza.
Relaia definit pe atributele X= NUME DECAN e o
relaie virtual.
1.2. Restricii de integritate
1.2.1. Tipuri de restricii
Restriciile de integritate definesc cerinele pe care
trebuie s le satisfac datele din baza de date pentru a
putea fi considerate corecte, coerente n raport cu
lumea real pe care o reflect.
Restriciile sunt principalul mod de integrare a
semanticii datelor n cadrul modelului relaional.
Mecanismele de definire i verificare ale acestor
restricii reprezint instrumentele principale de
control al semanticii datelor, n modelul relaional.
Restriciile sunt studiate mai ales sub aspectul
puterii lor de modelare i al posibilitii de
verificare a respectrii lor.
Restriciile de integritate pot fi divizate n linii
mari n dou grupuri:
restricii de comportament
i dependene ntre date.
Restriciile de comportament specific
caracteristicile independente ale unui atribut
(sau domeniu). Ele exprim semantica
elementelor domeniilor.
De exemplu, toate valorile atributului
NOT_MED trebuie s fie mai mare dect
zero, dar nu poate depi zece.
Sau nici o persoan de vrsta 25 ani nu poate
avea o vechime n munc de 30 ani.
Deci, conform acestei restricii, valorile
atributului trebuie s se ncadreze ntre
anumite limite.
Al doilea tip de restricii specific legtura
dintre atribute (sau domenii). Aici putem
identifica aa-numita dependen de
submulime. Considerm, de exemplu, relaia
personal definit pe mulimea de atribute
{ANGAJAT SALARIU DEPARTAMENT
MANAGER}. n relaia personal, un manager
este n acelai timp un angajat, dar nu orice
angajat este manager.
Deci avem c dom(MANAGER) _
dom(ANGAJAT).
Dac presupunem c angajatul are un singur
salariu, se subordoneaz unui singur manager
direct, lucreaz ntr-un singur departament,
atunci ANGAJAT-valorile determin n mod
unic toate tuplurile n relaia personal.
Aceast restricie este numit dependen
funcional. Dependenele funcionale vor fi
studiate detaliat n capitolul 3. Alte tipuri de
dependene cum ar fi cele multivaloare i de
jonciune vor fi studiate n capitolul 4.
1.2.2. Chei
ntruct relaia reprezint o mulime de tupluri,
iar o mulime nu poate conine elementele
duplicate, relaia nu poate prezenta tupluri
identice.
Deci tuplurile sunt unice i trebuie s existe
posibilitatea identificrii lor n cadrul unei
relaii.
Identificarea unui tuplu fr a consulta toate
componentele tuplului a dus la apariia noiunii
de cheie.
Definiia 1.9.
Fie U mulimea universal de atribute, R_U i
RC.
Mulimea K de atribute, unde K_R, se
numete cheie pentru schema R (sau pentru
relaia r cu schema R), dac ea posed
urmtoarele proprieti:
(1) pentru orice dou tupluri t1 i t2 din r avem
t1[K]t2|K];
(2) nici o submulime K' proprie a lui K nu
posed proprietatea (1)
Definiia 1.10. Mulimea de atribute ce posed
proprietatea (l) se numete supercheie. Deci cheia
este o supercheie minimal.
Orice cheie e i supercheie.
Afirmaia invers nu e corect.
Este evident c o mulime vid nu poate servi drept
cheie a unei relaii ce conine mai mult de un tuplu
orice relaie are cel puin o cheie.
La limit cheia este constituit fie dintr-un singur
atribut, fie din totalitatea atributelor din schema
relaiei respective.

ntr-o relaie pot exista mai multe chei. Se
spune n acest caz c relaia posed mai multe
chei candidate.
n aceast situaie administratorul bazei de date
v stabili una din cheile candidate s serveasc
n mod efectiv la identificarea unic a
tuplurilor. Ea v primi numele de cheie
primar.
Primare se vor numi i domeniile atributelor ce
formeaz o cheie primar.
Definiia 1.11. Cheia primar a unei relaii se
numete cheie simpl, dac este constituit dintr-un
singur atribut, iar atunci cnd este format din mai
multe atribute este denumit cheie compus.
Remarc. Nu toate atributele unei chei compuse pot
fi definite pe domenii primare.
Definiia 1.12. O cheie extern reprezint un atribut
(grup de atribute) dintr-o schema Ri definit (definite)
pe acelai (aceleai) domeniu (domenii) ca i cheia
primar a altei scheme Rj.

Relaia ri se numete relaie care refer, iar rj
poart numele de relaie referent.
Unele atribute pot avea aa numitele valori
nedefinite sau necunoscute notate cu "null.
Ins sunt bine cunoscute restriciile formulate
prin urmtoarele reguli numite reguli de
actualizare (inserare, modificare i eliminare) a
relaiilor.

(1) Restricia entitii: cheia primar a unei
relaii de baza nu poate conine valori "null.
(2) Restricia referirii: dac atributul A al unei
chei a relaiei r, este definit pe un domeniu
primar, atunci trebuie s existe o relaie de
baza r, cu o cheie primar B nct orice A-
valoare din r, s apar n calitate de B-valoare
n r.
Exemplul 1.2. Considerm relaiile studeni,
discipline, corp_didac , arj
n relaia studeni singura cheie candidat este
NUME, deci NUME e i cheia primar, iar
dom(NUME) este domeniu primar pentru baza
de date "Universitatea".
Considerm relaiile discipline (FACULTATE
DISCIPLIN) i corp_dldac(DSCIPLIN
PROFESOR) Fiindc la orice facultate se pred
cel puin o disciplin i orice profesor pred cel
puin o disciplin, i similar, orice disciplin se
pred mcar la o facultate i se pred cel puin
de un profesor, cheile primare ale acestor relaii
sunt compuse i constau din toate atributele
corespunztoare fiecrei relaii.
n relaia arj(DISCIPLIN TIP ORE), orice
disciplin poate fi de trei tipuri (prelegeri,
practic, laborator) i poate avea diferite ore de
predare, unele discipline pot avea acelai tip i
acelai numr de ore. E puin probabil ca cheia
relaiei arj s fie simpl. Putem presupune c
cheia ei este compus.
n acest exemplu, domeniul dom(NUME) este
primar. Cheile compuse ale relaiilor
discipline, corp_didac, arj nu sunt definite
pe acest domeniu primar.
Conform regulii (1) atributele celor patru chei
nu pot avea valori "null" Dat fiind faptul c
nici o cheie din cele trei compuse nu sunt
definite pe domeniul primar dom(NUME),
exemplul dat nu ne demonstreaz regula (2).
Exemplul 1.3. Considerm relaiile studeni i
faculti din fig. 1.2.

studeni

NUME FACULTATE AN
n
1
f
1
a
1

n
2
f
1
a
2

n
3
f
2
a
3


faculti FACULTATE DECAN
f
1
d
1

f
2
d
2

flg.1.2.
Presupunem c la o facultate i fac studiile
mai muli studeni i un student poate studia la
mai multe faculti concomitent.
Cheia primar a relaiei studeni este compus
i const din atributele NUME FACULTATE
Relaia faculti posed dou chei candidate
FACULTATE i DECAN. Fie FACULTATE
cheia primar. Atunci atributul FACULTATE
al relaiei studeni este cheie extern.
Conform regulii (2) toate valorile atributului
FACULTATE al relaiei care refer trebuie s
se conin n relaia referent.
Extensiile relaiilor se schimb pe parcursul
timpului.
S-ar prea c pentru fiecare instan a relaiei
pot fi determinate cheile i supercheile. Dar
schemele relaiilor, adic intensiile, trebuie s
fie invariante.
Cheile trebuie s rmn chei pentru orice
eventuale extensii.
Prin urmare determinarea cheii unei relaii
necesit cunoaterea semanticii relaiei
respective, nu numai celei din momentul n
care se stabilete cheia.
Convenie. Dac relaia posed o singur
cheie sau dorim s evideniem numai cheia
primar mai departe vom sublinia atributele ce
formeaz aceast cheie. De exemplu, relaia r
cu schema ABCD i cheia AC se scrie r(A,B
C,D). n cazul c relaia posed mai multe
chei, atunci le vom scrie explicit: relaia
r(ABCD) are dou chei candidate k1=ac,
K2=B.
Instruciuni DDL (Data Definition Language - limbaj de
definire a datelor), definesc sau modific structura
obiectelor din schem. De exemplu, pentru crearea
unui tabel, vei folosi instruciuni DDL.
CREATE SCHEMA
DROP SHEMA
CREATE TABLE
ALTER TABLE
DROP TABLE
CREATE DOMAIN
ALTER DOMAIN
DROP DOMAIN
CREATE VIEW
DROP VIEW
Instruciuni DML (Data Manipulation Language -
limbaj de manipulare a datelor), interogheaz
sau manipuleaz obiecte existente n schem.
De exemplu, ele v permit s inserai noi linii
ntr-un tabel sau ntr-o vedere.
SELECT
INSERT
UPDATE
DELETE
COMMIT
ROLLBACK
Instruciuni pentru control
CREATE ASSERTION
DROP ASSERTION
GRANT
REVOKE
ALTER SESSION
Tipuri de date.
Toate datele, care sunt stocate n baza de date sunt
caracterizate prin tip i lungime. Aceast caracterizare este
definit ca tipul de date al obiectului.
Tabelele sunt dispozitive de stocare ntr-o baz de date
relaional. Coloanele tabelului definesc caracteristicile
datelor i n acelai timp atribuie un nume datelor din
coloana respectiv.
Coloanele, precum i variabilele, i constantele sunt
caracterizate din tipul i lungimea datelor. Aceste proprieti
fac ca serverul s trateze n mod difereniat tipurile de date
diferite.
Tipuri de date SQL
character [ varying ] (n) integer date
bit [ varying ] (n) smallint time
numeric (p,q) float (p) timestamp
decimal (p,q) interval

Tipurile interne de date ale programului Oracle sunt:
Char; varchar2; varchar;
number; date; raw;
long raw; rowid; long; mlslabel
RESTRICII DE INTEGRITATE
n baza de date relaional Oracle, exist
urmtoarele tipuri de restricii de integritate a
datelor:
Null; Unique; Primary key;
Referential; Check.
Restricia de integritate pentru un tabel este
stabilit atunci cnd tabelul este creat sau
modificat. Pentru a stabili o restricie de integritate,
putei include clauza constraint n comenzile
create table sau alter table. Exemplul urmtor
ilustreaz sintaxa general a clauzei constraint:
CONSTRAINT nume_restricie
tip_restricie
Restricia de integritate null
n mod prestabilit, toate coloanele unui tabel
accept valori nule adic, este permis absena unei
valori n coloan. Prin stabilirea restriciei not
nuil, impunei coloanei specificate s posede o
valoare pentru fiecare linie a tabelului.
Pentru a afia restriciile null dintr-un tabel, folosii
comanda describe dup care urmeaz numele
tabelului.
Restricia de integritate unique
Restricie de integritate unique impune ca toate valorile dintr-o
coloan s fie distincte, nu pot exista valori duplicate n coloana
respectiv. Oracle v permite s plasai aceast restricie pe mai multe
coloane, definind astfel o aa numit restricie de unicitate compus. O
restricie de unicitate compus cere ca o combinaie a coloanei cu cheie
unic s nu se repete. Instruciunea urmtoare creeaz o restricie de
unicitate asupra coloanei marca_ang a tabelului ANG:
create table ang
(marca ang number(7)
constraint s_ang_marca_ang_uk unique,
nume varchar2(20)
constraint s_ang_nume_nn not null,
prenume varchar2 (20),
nr_dept varchar2(5));
Restricia de integritate primary key
Restricia de integritate primary key desemneaz
o coloan sau o combinaie de coloane drept cheie
principal a tabelului. Cheia principal identific n mod
univoc fiecare linie a tabelului. De asemenea, aceast
restricie creeaz n mod implicit restriciile not null
i unique pe coloana respectiv. Dei Oracle nu
impune existena unei chei principale pentru fiecare
tabel, este bine s v obinuii s o creai. De asemenea,
este recomandabil s desemnai drept cheie principal o
coloana sau o combinaie de coloane ale cror valori nu
se modific niciodat.
Instruciunea urmtoare creeaz o restricie primary key
pentru cmpul marca_ang al tabelului ANG:
create table ang
(marca_ang number(7)
constraint s_ang_marca_ang_pk primary
key,
nume varchar2(20)
constraint s ang nume nn not null,
prenume varchar2 (2'0'),
nr_dept varchar2(5));
Pentru a crea restricii asupra tabelelor, putei folosi o a
doua sintax, cunoscut sub numele de sintaxa
restricie_tabel. Cu aceast sintax, restriciile sunt
plasate la baza instruciunii create table. Exemplul
urmtor creeaz acelai tabel ca n exemplul anterior,
folosind sintaxa restricie_tabel:
create table ang
(marca_ang number(7),
nume varchar2(20),
prenume varchar2(20),
nr_dept varchar2(5),
constraint s_ang_marca_ang_pk primary
key (marca_ang));
Sistemul Oracle impune existena a maxim o cheie
principal pentru fiecare tabel. Cheia principal nu poate fi
de tip long sau long raw. Nu putei desemna aceeai
coloan sau combinaie de coloane att drept cheie
principal ct i drept cheie unic sau att drept cheie
principal ct i drept cheie de grup. Dac ncercai s
facei acest lucru, programul Oracle genereaz o eroare.
Exemplul urmtor adaug o cheie principal compus pe
coloanele nume i prenume ale tabelului ANG:
alter table ang
add primary key
(nume, prenume);
alter table ang enable primary key;
Restricia de integritate prin referin
Restriciile de integritate prin referin sunt folosite pentru a
impune regulile care dicteaz relaiile dintre coloanele diverselor
tabele, ntre tabele se creeaz o relaie printe-fiu. Tabelul printe
conine cheia referit iar tabelul fiu conine cheia extern.
Exemplul urmtor creeaz aceast restricie de integritate
prin referin asupra tabelului de adrese:
alter table adrese
add constraint fk cod stat
foreign key (cod _stat)
references cod_stat(cod_stat);
Eliminarea n cascad a cheilor externe
Exist cazuri cnd este necesar s eliminai o valoare a cheii
referite. Atunci cnd nu exist valori ale cheii externe care s fac
referire la valoarea respectiv, putei elimina valoarea cheii
referite. Dac ns, exista linii avnd asociat restricia foreign
key ea va mpiedica s eliminai valoarea cheii referite.
Pentru a rezolva aceast problem, stabilii asupra cheii
referite restricia on delete cascade. Restricia on
delete cascade permite eliminarea din tabelul printe a
oricror valori ale cheii referite care au linii dependente n tabelul
fiu. Atunci cnd este eliminat o asemenea valoare n tabelul
printe, programul Oracle elimin automat liniile corespunztoare
din tabelul fiu.
Restricia de integritate check
Restricia de integritate check definete n mod explicit
o condiie care trebuie s fie adevrat. Fiecare linie a
tabelului trebuie s respecte condiia. Condiia poate fi
evaluat i la valoarea Unknown pentru a permite
prezena valorii null. Dac se ncearc executarea unei
instruciuni care ar duce la nerespectarea condiiei,
instruciunea este derulat napoi.
Exemplul urmtor creeaz o restricie check
asupra coloanei ora din tabelul
adresa_filiala:
create table adresa_filiala
(nr_filiala number(5),
nume_filiala varchar2(50),
oras varchar2(50)
constraint verificare_oras
check oras in
("chisinau","balti","tigina"),
stat varchar2(50));
O singur coloan poate avea mai multe
restricii check.
O definiie n SQL a bazei de date Student i Curs.
create table Student (
IDSt char(4),
numSt varchar2(4),
anSt number(1) ,
IDGrup char(3),
constraint pk_etud primary key (IDSt)
);
Table created.
create table Curs(
IDC char(4),
numC varchar2(2),
punctC number(2),
IDGrup char(3),
constraint pk_Curs primary key (IDC)
);
create table StudCurs (
IDC char(4),
IDSt char(4),
Nrpunct number(2),
notaStC number(2) null,
constraint fk_Stud foreign key(IDSt) references
Student (IDSt),
constraint fk_Curs foreign key(IDC) references
Curs (IDC),
constraint pk_StudCurs primary key (IDC,IDSt))
;
linstrucia describe. Exemplu :
describe Student;
Name Null? Type
----------- -------- ------------
IDST NOT NULL CHAR(4)
NUMST VARCHAR2(3)
ANST NUMBER(1)
IDGRUP CHAR(3)
1.3. Operaii de actualizare
Regulile de actualizare a bazei de date fac
parte din cele trei componente ale modelului
relaional de date. Vom examina cele trei
operaii de actualizare a datelor: Inserarea
datelor, tergerea datelor i modificarea
datelor.
Fie c n relaia r(A1 A2 ...An) vrem s
introducem date. Operaia de inserie, a unui
tuplu n relaia r poate avea forma:
Add (r;<a1 a2...an|A1 A2...An>).
n cazul c ordinea atributelor n relaie e
cunoscut, e acceptabil o form mai scurt a
operaiei:
Add (r; a1 a2...an>).
Scopul acestei operaii const n adugarea
unui tuplu ntr-o relaie concret.
Rezultatul operaiei poate s eueze din
urmtoarele cauze:
(1) tuplul de inserie e definit pe o mulime de
atribute ce nu corespunde schemei relaiei;
(2) valorile componentelor tuplului nu sunt
luate din domeniile corespunztoare;
(3) n relaie deja se gsete un tuplu cu
asemenea componente cheie.
n toate aceste cazuri operaia Add pstreaz
relaia r intact.
Operaia de tergere a datelor se utilizeaz
pentru eliminarea coninutului relaiilor. Pentru
relaia r de mai sus, operaia de tergere se
reprezint:
Del (r; <a1 a2...an|A1 A2...An>).
n cazul cnd numele de atribute sunt sortate,
poate fi utilizat urmtoarea notaie scurt:
Del (r;<a1 a2...an>).
n realitate, o parte de date din operaia de mai
sus poate fi redundant. E suficient definiia
valorilor atributelor cheie.
Dac K=B1B2.,.Bm este cheia relaiei r, atunci
e util urmtoarea form a operaiei Del:
Del (r; <bl b2...bm| B1B2.,.Bm >).
Tuplul e eliminat, dac el este relaie. n cazul
c tuplul lipsete - relaia rmne intact. Nu
se pune nici o restricie asupra eliminrii
ultimului tuplu n relaie. Relaia vid se
admite.
Uneori, n loc de eliminarea unui tuplu din
relaie i includerea unui alt tuplu e mai
efectiv schimbarea unei pri a tuplului.
Schimbarea se face cu operaia de modificare.
Dac C1C2...Ck_A1A2...An, atunci operaia de
modificare poate avea forma:
Ch ((r; <al a2...an|A1 A2...An>;<c1c2...ck|C1C2...Ck>).
Dac mulimea K=B1B2...Bm este cheia
relaiei r, atunci expresia de mai sus poate fi
redus la:
Ch((r; <bl b2...bn|B1 B2...Bn>;<c1c2...ck|C1C2...Ck>).
Instruciile SQL : insert, update, et delete.
insert into Student values ('0001','St01',1,'002');
insert into Student values ('0002','St02',2,'001');
insert into Student values ('0003','St03','1,'001');
insert into Student values ('0004','St04','3,'001');
insert into Student values ('0005','St05','4,'001');
insert into Student values ('0006','St06','2,'001');
insert into Student values ('0007','St07',1,'002');
insert into Student values ('0008','St08',3,'002');
insert into Student values ('0009','St09',3,'003');
insert into Student values ('0010','St10',3,'002');
insert into Student values ('0011','St11',3,'003');

insert into Curs values ('5001','c1','10','001');
insert into Curs values ('5002','c2','30','002');
insert into Curs values ('5003','c3','20','003');
insert into Curs values ('5004','c4','30','001');
insert into Curs values ('5005','c5','20','003');
insert into StudCurs values (5001','0001',20, null);
insert into StudCurs values (5002','0001',30, null);
insert into StudCurs values (5003','0001',50, null);
insert into StudCurs values (5004','0001',60, null);
insert into StudCurs values (5005','0001',70, null);
insert into StudCurs values (5001','0002',20, null);
insert into StudCurs values (5002','0002',30, null);
insert into StudCurs values (5003','0003',50, null);
insert into StudCurs values (5004','0003',60, null);
insert into StudCurs values (5005','0005',70, null);
insert into StudCurs values (5001','0003',20, null);
insert into StudCurs values (5002','0005',30, null);
insert into StudCurs values (5003','0006',50, null);
insert into StudCurs values (5004','0007',60, null);
insert into StudCurs values (5005','0008',70, null);
Selectarea datelor din tabele
Sintaxa general a instruciunii select este urmtoarea:
select nume_coloana(e) from tabel (sau vedere sau instantaneu)

select * from Student;
IDST NOME ANET IDG
---- ---- ---------- ---
0001 St01 1 002
0002 St02 2 001
0003 St03 1 001
0004 St04 3 001
0005 St05 4 001
0006 St06 2 001
0007 St07 1 002
0008 St08 3 002
0009 St09 3 003
0010 St10 3 002
0011 St11 3 003
11 rows selected.
select * from Cours;
IDC NO POINTC IDG
---- -- ---------- ---
5001 c1 10 001
5002 c2 30 002
5003 c3 20 003
5004 c4 30 001
5005 c5 20 003
select * from StudCurs
IDC IDST NRPOINT NOTEETC
---- ---- ---------- ----------
5001 0001 20
5002 0001 30
5003 0001 50
5004 0001 60
5005 0001 70
5001 0002 20
5002 0002 30
5003 0003 50
5004 0003 60
5005 0005 70
5001 0003 20
5002 0005 30
5003 0006 50
5004 0007 60
5005 0008 70
Actualizarea datelor
Instruciunea update este cea care efectueaz aceast
sarcin.
Exemplul urmtor actualizeaz toate liniile din tabelul
VANZARI prin stabilirea unui comision de 0.25 pentru toi
agenii de vnzri:
update financiar.vanzari
set comision = '.25';
Instruciunea urmtoare modific valoarea coloanei
nr_dept pentru angajatul cu numar_marca egal cu 10923:
update ang
set nr_dept = '982-C'
WHERE marca_ang = 10923;
Eliminarea datelor
Pentru a elimina date dintr-un tabel sau din tabelele de
baz ale unei vederi, folosii comanda SQL delete.

Instruciunea urmtoare elimin toate liniile din tabelul
CALIFICARE_1:
delete from calificare_l;
Uneori dorii s eliminai numai anumite linii ale unui tabel.
Pentru a face acest lucru, folosii comanda delete cu
clauza where. De exemplu, instruciunea urmtoare elimin
numai acele linii ale cror cantiti vndute sunt mai mici
dect 100:
delete from comenzi
where cant_vanzari < 100;
Capitolul 2. ALGEBRA RELAIONAL
Algebra relaional e conceput ca un limbaj
abstract de formulare a interpelrilor
(cererilor) sau ca o colecie de operaii pe
relaii avnd drept operanzi una sau mai multe
relaii i producnd ca rezultat alt relaie.
Operaiile algebrei relaionale pot fi divizate n
dou grupuri: operaiile tradiionale pe mulimi
(vezi fig 2.l) ce consider relaiile ca mulimi
de tupluri i operaiile relaionale native (fig
2.2).

Denumire Simbol
Uniunea
Intersecia
Diferena
Produsul (cartezian)


\

Fig. 2. l. Operaiile tradiionale pe
mulimi
2.1. Operaiile traditionale
2.1.1. Scheme relaionale compatibile
Operaiile binare asupra relaiilor: uniunea,
intersecia i diferena, necesit ca
operanzii (relaiile) s fie definii pe
scheme compatibile.
Compatibilitatea schemelor se definete n
felul urmtor.
Definiia 2.1. Vom spune c dou relaii r(R)
i s(S) sunt compatibile (sau au scheme
compatibile), dac ntre R i S exist o
coresponden biunivoc f:
pentru orice atribut A din R, exist un atribut
B n S nct dom(A)=dom(B), B=f(A) i
A=f(B), unde f este funcia invers funciei f.
Remarc. Dou relaii cu aceeai schem sunt
compatibile.
Exemplu 2.1. Schemele relaiilor vnzri i articole nu
sunt compatibile. Schemele relaiilor vnzri i
furnizori sunt compatibile.

vnzri FIRMA ARTICOL
f1 a1
f1 a2
f2 a1

f3 a1


articole ARTICOL CULOAR
E
A1 c1
a1 c2
a1 c3
a3 c2


a2 c1

furnizori ARTICOL FURNIZOR
a1 f1
a1 f3
a2 f1

a3 f3

Ultimele relaii sunt definite pe atribute ce
primesc valori din aceleai domenii. Valorile
active sunt totui diferite, fiindc un furnizor
poate s nu fie firm i viceversa.
2.1.2. Uniunea
Uniunea a dou relaii presupune c schemele
lor sunt compatibile.
Definiia 2.2. Uniunea a dou relaii
compatibile r(R) i s(S), notat cu r s, e o
relaie definit pe schema R sau S i const din
tuplurile ce aparin relaiilor r sau s, adic
rs = {t|tervtes}.
Exemplul 2.2. Fie relaiile r(A B C) i s(A B
C) din fig.2.4. Relaia din fig.2.5 este
q = r s.

r A B C
a
1
b
1
c
1

a
1
b
2
c
3


a
2
b
1
c
2


s A B C
a
1
b
1
c
1

a
1
b
1
c
2

a
1
b
2
c
3


a
3
b
2
c
3



Fig. 2.4. Relaiile r(A B C) i s(A B C)
q A B C
a
1
b
1
c
1

a
1
b
1
c
2

a
1
b2 c
3

a2 b
1
c
2


a
3
b
2
c
3

Fig.2.5. Relaia q = r s

Operaia uniunea are dou proprieti. Ea e
comutativ, adic r s = s r. Ea este i
asociativ, adic (r s) q = r(s q)
pentru relaiile mutual compatibile r, s i q.
Prin urmare, n expresiile ce conin o cascad
de operaii uniunea, parantezele pot fi omise
fr a provoca ambiguiti. Deci, dac avem k
relaii compatibile r1,r2,...,rk, uniunea acestor
relaii poate fi notat cu (r1, r2,..., rk).
Operaia uniunea are dou cazuri speciale.
Pentru orice relaie r(R) au loc:
r C = r i r s = s, dac r _ s.
2.1.3. Intersecia
Similar uniunii, intersecia a dou relaii cere
ca operanzii s fie relaii cu scheme
compatibile.
Definiia 2.3. Intersecia a dou relaii
compatibile r(R) i s(S), notat cu r s, este o
relaie definit pe schema R sau S i const din
tuplurile ce aparin concomitent relaiilor r i s,
adic rs ={t|ter&tes}.
Exemplul 2.3. Fie relaiile r(A B C) i s(A B C)
din fig. 2.4. Relaia q = r s este prezentat n
fig. 2.6.

q A B C
a
1
b
1
c
1

a
1
b
2
c
3

fig.2.6.

2.1.4.Diferena
Operaia diferena presupune c operanzii sunt
relaii cu scheme compatibile.
Definiia 2.4. Diferena a dou relaii
compatibile r(R) i s(S), notat cu r \ s, este o
relaie definit pe mulimea de atribute R sau S
i are n calitate de tupluri, toate tuplurile din
relaia r ce nu sunt n s, adic
r\s ={t|ter & tes}.
Exemplul 2.4. Fie relaiile r(A B C) i s(A B C)
din fig.2.4. Relaiile q1 = r \ s, i q2= s \ r sunt
prezentate n fig.2.7.

q
1
A B C
a
2
b
1
c
2


q
2
A B C
a
1
b
1
c
2

a
3
b
2
c
3



Fig.2.7.

Din exemplul de mai sus observm c
diferena nu se bucur de proprietatea
comutativ, adic
r \ s s \ r.
Totodat, nu e nici asociativ, adic
(r \ s) \ q r \ (s \ q),
fiindc
(r \ s) \ q = r \ (s q)
pentru orice relaii mutual compatibile r, s, i q.
Diferena a dou relaii are patru cazuri
speciale. Un caz este
C\r=C,
altul e
r \ C = r
pentru orice relaie r(R).
Celelalte cazuri le vom examina n urmtoarele
dou seciuni.

atup A B C
a
1
b
1
c
1

a
1
b
1
c
2

a
1
b
1
c
3

a
1
b
2
c
1

a
1
b
2
c
2

a
1
b
2
c
3

a
2
b
1
c
1

a
2
b
1
c
2

a
2
b
1
c
3

a
2
b
2
c
1

a
2
b
2
c
2


a
2
b
2
c
3


~r A B C
a
1
b
1
c
2

a
1
b
1
c
3

a
1
b
2
c
1

a
1
b
2
c
2

a
2
b
1
c
1

a
2
b
1
c
3

a
2
b
2
c
1

a
2
b
2
c
2


a
2
b
2
c
3


Fig.2.9.
2.1.7. Produsul cartezian
Definiia 2.7. Produsul cartezian a dou relaii
r(A1...An) i s(B1...Bm), notat cu rs, este o
mulime de tupluri (i nu ntotdeauna o relaie)
definite pe mulimea de atribute A1...An
B1...Bm.
Tuplurile reprezint toate posibilele asociaii
de tupluri din r i s: dac trer i tses, atunci
concatenaia tr ts este un tuplu n r s,
Pentru orice pereche de tupluri t, i t, din r i s,
respectiv, exist un tuplu t n rs nct
t[Ai] = tr[Ai], 1>i> n
i
t[Bj]=ts[Bj], 1>j>m.

Exemplul 2.7. Fie relaiile r(A B C) i s(D E) din
fig 2.10.

r A B C
a
1
b
1
c
1

a
1
b
2
c
3

a
2
b
1
c
2



s D E
d
1
e
1

d
1
e
2



Fig.2.10
Produsul cartezian q = rs arat ca n
fig 2 11

q A B C D E
a
1
b
1
c
1
d
1
e
1

a
1
b
1
c
1
d
1
e
2

a
1
b
2
c
3
d
1
e
1

a
1
b
2
c
3
d
1
e
2

a
2
b
1
c
2
d
1
e
1


a
2
b
1
c
2
d
1
e
2

Fig 2 11

Produsul cartezian a dou relaii nevide nu
ntotdeauna produce o relaie. Rezultatul e o
relaie, dac ambii operanzi sunt relaii cu scheme
nevide i disjuncte (vezi exemplul 2.7).
Dac, ns, relaiile operanzi au scheme vide sau
nondisjuncte, atunci produsul cartezian nu este o
relaie.
Aceast problem poate fi soluionat cu ajutorul
operaiei atribuirea, care de fapt produce
schimbarea numelor atributelor.
Produsul cartezian nu este o operaie
comutativ n schimb se bucur de proprietatea
asociativ.
Prin urmare, dac avem o cascad de produse
carteziene
r1( r2(...rk)),
ea poate fi reprezentat n form de prefix
(r1,r2,..., rk)
Schemele relaiilor ri, 1 > i > k, trebuie s fie
disjuncte dou cte dou. n caz contrar
rezultatul nu v fi o relaie.
2.1.8. Atribuirea
Fie r(R) i s(S) dou relaii cu scheme
compatibile i R S.
Pentru a aplica asupra lor operaiile binare
tradiionale se face reatribuirea relaiilor pentru
a redenumi diferena de atribute R \ S sau S \
R.
Atribuirea se utilizeaz i pentru pstrarea
rezultatelor intermediare.
Definiia 2.8. Fie r o relaie cu schema A1...An
i {B1..,Bn,} o mulime de atribute
compatibile, adic dom(Bi) = dom(Ai), 1 > i >
n.
O nou relaie s(B1.,.Bn) compatibil cu r se
poate defini prin atribuirea:
s(B1...Bn) = r(A1...An).
Extensia relaiei s este extensia relaiei r: tes
atunci i numai atunci, cnd - trer, unde ts[Bi]
= tr[Ai], 1>i>n
Exemplul 2.9. Fie relaia r(A B C) din fig.2.12. Atunci,
s(A D C): = r(A B C)

r A B C
a
1
b
1
c
1

a
1
b
2
c
3


a
2
b
1
c
2



s A D C
a
1
b
1
c
1

a
1
b
2
c
3


a
2
b
1
c
2



Fig 2.12
n urmtorul exemplu, operaia atribuirea se
folosete pentru pstrarea rezultatelor
intermediare.
Exemplul 2.10. Fie relaiile r(A B C) i s(A B
C) din fig. 2.l3.
Atunci q : = (r s) \ (r s).
Relaia q s-a construit aplicnd
consecutivitatea de operaii:
q1: = r s, q2: = r s, q= q1 \ q2.

r A B C
a
1
b
1
c
1

a
1
b
2
c
3


a
2
b
1
c
2



s A B C
a
1
b
1
c
1

a
1
b
1
c
2

a
1
b
2
c
3


a
3
b
1
c
3



q
1
A B C
a
1
b
1
c
1

a
1
b
1
c
2

a
1
b
2
c
3

a
2
b
1
c
2


a
3
b
2
c
3



q
2
A B C
a
1
b
1
c
1

a
1
b
2
c
3



q A B C
a
1
b
1
c
2

a
2
b
1
c
2


a
3
b
2
c
3


Fig. 2.l3
2.2. Operaiile relaionale native
2.2.1. Proiecia
Proiecia e o operaie unar.
Definiia 2.9. Fie r o relaie cu schema R i X _ R.
Proiecia relaiei r asupra mulimii de atribute X,
notat cu x(r), e o relaie cu schema X ce const din
X-valorile tuturor tuplurilor din r:
x(r)={t(Xl|ter}.
Tupluri distincte din r pot deveni identice, cnd se
proiecteaz pe o mulime de atribute. Tuplurile
duplicate n relaia rezultat se elimina.
Exemplul 2.11. Fie relaia r(A B C) din fig.2.14.
Atunci s = A,C(r).

r A B C
a 10 l
a 20 l
b 30 l

b 40 2


s A C
a l
b l

b 2


Fig.2.14
Exist dou cazuri speciale:
(1) X = R. Atunci X(r) = r.
(2) r=C. Atunci X(r) = C.
Dac mulimea de atribute X = C, atunci
proiecia C(r) este indefinit, fiindc schema
unei relaii nu poate fi o mulime vid. Schema
unei relaii, produs de operaia proiecia, are
cel puin un atribut.
Pentru cazul cnd RcX, operaia proiecia
iari este indefinit. Mulimea asupra creia
se face proiecia nu poate fi mai larg dect
schema relaiei iniiale.
Fie relaia r(R) i Y _ X _ R.
Atunci
y(x(r)) = y(r).
Dac X = Y, atunci
x( (y(r)) = x(r) = y(r).
2.2.2. Selecia
Selecia este o operaie unar. Pentru
Selectarea unor tupluri dintr-o relaie e
necesar specificarea condiiilor de selectare.
n rezultat se obine o relaie ce e o submulime
de tupluri a relaiei iniiale.
Fie c condiia de selecie se noteaz prin
formula calculului propoziional, F, definit
recursiv:
(1) AB i Aa sunt formule, unde A i B
sunt atribute compatibile i aedom(A), iar
e{=,, <, , >, >}. Aceste formule sunt
atomice.
(2) Dac G i H sunt formule, atunci
conjuncia G&H, disjunctia GvH, negaiile ~G
i ~H sunt formule.
(3) Nimic altceva nu e formula.
Definiia 2.10. Formula F e aplicabil relaiei
r(R), dac orice constant c din F este n
dom(R), i orice atribut A din F este n R.
O relaie r satisface F (sau F e valid n r),
dac F e aplicabil relaiei r i orice tuplu ter
satisface formula F n sensul c formula G
obinut prin substituirea oricrui atribut A din
F cu A-valoarea tuplului t are valoarea adevr.
Definiia 2.11. Selecia relaiei r (R) conform
formulei F, unde F e aplicabil relaiei r(R), e
o submulime a relaiei r(R), notat cu F(r),
ce const din toate tuplurile ter ce satisfac F,
adic
F(r)={t|ter&F(t)}.
Exemplul 2.12. Fie r(A B C D) din fig. 2.l5. Atunci
s=((a - b) & (D>5))(r)

r A B C D
a a l 7
b b 5 5
b b 12 3

b b 23 10

s A B C D
a a l 7
b b 23 10


Fig.2.l5.
Exist dou cazuri speciale ale seleciei.
(1) Dac F e o formul ce nu e compus nici
dintr-o formul atomic, adic e o formul
nul, atunci F(r) = r. n acest caz asupra
tuplurilor ter nu se impune nici o restricie
pentru selecie.
(2) Dac r(R) = C, atunci F(r) = C pentru
orice formul F, fiindc F e valid n orice
relaie vid.
Este evident c
G(F(r)) = G&F(r).
ntruct conjuncia este comutativ, adic
G&F(r) = F&G (r),
atunci i compozitia a dou selecii este
comutativ.
Deci
G(F(r)) = F(G(r)).
Operaia selecia este distributiv n raport cu
operaiile binare tradiionale pe mulimi. Fie r
i s dou relaii compatibile i e{,,\},
atunci
F(r s) = F(r) F(s).
Trebuie menionat c selecia nu comuteaz cu
operaia complement. ns selecia comuteaz
cu proiecia, dac sunt respectate unele
condiii. Fie r o relaie cu schema R, XeR, i
fie F o formul ce e satisfcut de tuplurile
t[X]. Atunci
X F(r) = F X(r).
2.2.3. -jonciunea
Definiia 2.12. Fie r(R) i s(S) dou relaii,
RS=C, AeR, BeS i fie un element
din mulimea {=, , <, , >, >}. Presupunem
c atributele A i B sunt compatibile, adic
dom(A) = dom(B).
-jonciunea relaiilor r(R) i s(S), notat
cu r|X|
AB
s , este o mulime de tupluri
concatenate de forma t
r
t
s
, unde
t
r
er, t
s
es
i t
r
(A) t
s
(B),

adic:
r|X|ABs = {trts|trer &tses & tr(A) ts(B)}.
Condiia RS=C n definiie este necesar.
Dac RSC, atunci -jonciunea nu este o
relaie.
In cazul cnd este "=, -jonciunea se mai
numete echijonctiune.
Exemplul 2.13. Fie relaiile r(A B C) i s(D E) din
fig2.l6, unde dom(C) = dom(D). n fg. 2.l7 relaia
r|X|
C>D
S este prezent.

r A B C
a
1
b
1
4
a
1
b
2
2

a
2
b
1
6


s D E
3 e
1

4 e
1


l e
2



q A B C D E
a
1
b
1
4 1 e
2

a
1
b
1
4 3 e
1

a
1
b
2
2 1 e
2

a
2
b
1
6 3 e
1

a
2
b
1
6 4 e
1


a
2
b
1
6 1 e
2


Fig. 2.l6
Fig. 2.l7
Operaia -jonciunea poate fi exprimat prin
operaiile produsul cartezian i selecia.
Rezultatul unei -jonciuni este acelai cu
rezultatul unei selecii operate asupra unui
produs cartezian, adic
r|X|
AB
s =
AB
(rs).
S observm c operaia selectia poate fi
simulat prin operaiile q-jonciunea i
proiecie Fie relaia r(R) Pentru a calcula
Aa(rs) se construiete o relaie s definit pe
un singur atribut, A. Relaia s conine un
singur tuplu componenta cruia are valoarea a
pentru atributul A. Atunci

Aa
(r) = t
R
(r|X|
Aa
s)
2.2.4. Jonciunea (Jonciunea natural)
Definiia 2.13. Fie dou relaii r(R) i s(S)
Jonciunea relaiilor r i s (notatia uzual r|X|s)
este o relaie cu schema RS Tuplul t aparine
relaiei rezultat, dac exist tuplurile t
r
i t
s
n r
i s, respectiv, i satisfac
t[R]=t
r
i t[S]=t
s
,
adic
r |X| s = {t | t[R] = t
r
& t[S] = t
s
& t
r
er & t
s
es}
Deci, fiecare tuplu din relaia rezultat este o
concatenare a unui tuplu din r cu un tuplu din s
ce au (RS)-valori egale. Atributele cu acelai
nume n schema relaiei rezultat se iau o
singur dat.
Exemplul 2.14. n fig 2 18 sunt afiate relaiile
r(A B C), s(B C D) i q(A B C D),
unde q = r|X|s

r A B C
a
1
b
1
c
1

a
1
b
2
c
1


a
2
b
1
c
2



s B C D
b
1
c
1
d
1

b
1
c
1
d
2

b
1
c
2
d
3


b
2
c
2
d
4



q A B C D
a
1
b
1
c
1
d
1

a
1
b
1
c
1
d
2


a
2
b
1
c
2
d
3



Fig 2 18

Dac R i S sunt disjuncte, RS=C, atunci jonciunea relaiilor r
i s este identic cu produsul cartezian al lor, adic
r|X|s=rs
Dac RS=C i |RS| = k, atunci jonciunea poate fi
redat prin operaiile proiecia, selecia i produsul
cartezian
r|X|s =
RS
(
F
(rs)),
unde
F = (r.A
1
=s.A
1
)&(r.A
2
=s.A
2
)& &(r.A
k
=s.A
k
)
pentru AieRS, lsisk.
Dac R=S, atunci r|X|s = rs.
Operaia jonciunea nu este comutativ, n schimb, ea
se bucur de proprietatea asociativ. Prin urmare, o
cascad de jonciuni (r1|X|(r2 |X|(... rk)) poate fi
prefixat, adic
|X|(r
1
,r
2
,...,r
k
Din exemplul 2.14 se vede c nu toate tuplurile
relaiilor r i s particip la jonciune.
Definiia 2.14. Fie relaiile s
1
(S
1
), , s
k
(S
k
)
Considerm o consecutivitate de tupluri t
1
,...,
t
k
, unde tes
i
(S
i
), lsisk Tuplurile t
1
,..., t
k
se
numesc joncionabile, dac exist un tuplu t
definit pe mulimea de atribute S
1
...S
k
i
t[S
i
]=t
i
lsisk n caz contrar se numesc
nonjoncionabile
Exemplul 2.15. Fie relaiile S
1
(A B), S
2
(B C), S
3
(A
C) i q(A B C) din fig 2 19,






unde
q=s
1
|X|s
2
|X|s
3
.
Tuplurile <a
1
b
1
, <b
1
c
1
>, i <a
1
c
1
> sunt joncionabile.
De asemenea <a
2
b
1
, <b
1
c
2
>, i <a
2
c
1
>
sunt jonctionabile, dar tuplurile
<a
2
b
1
, <b
1
c
2
>, i <a
1
c
1
>
sunt nonjoncionabile
s
1
A B
a
1
b
1

a
2
b
1



s
2
B C
b
1
c
1

b
1
c
2



s
3
A C
a
1
c
1

a
2
c
1



q A B C
a
1
b
1
c
1

a
2
b
1
c
2



Fig. 2.19

S examinm acum legtura dintre jonciune i uniune.
Fie relaiile
r(R), r
1
(R) i s(S).
Atunci are loc urmtoarea egalitate
(r
1
r)|X|s=(r|X|s)(r
1
|X|s).
S cercetm acum legtura dintre proiecie i jonciune.
Fie dou relaii
r(R) i s(S).
Notm q=r|X|s
(din definiia operaiei jonciunea, schema relaiei q este
RS).
Proiectm relaia q asupra mulimii de atribute R:r
1
=

R
(q).
n ce corelaie se afl r
1
i r?
Rspuns r
1
_r.

Exemplul 2.16. Fie relaiile r(A B) i s(B
C). Notm q=r|X|s i r
1
=
AB
(q). n urma
operaiilor, observm c tuplurile relaiei r
1

constituie o submulime proprie a relaiei r
(vezi fig. 2.20.).









r A B
a
1
b
1


a
1
b
1



s B C

b
1
c
1



q A B C
a
1
b
1
c
1



r A B
a
1
b
1



Fig. 2.20
Exemplul 2.17. n acest exemplu r
1
= r. Sunt date
relaiile r(R) i s(S) cu extensiile ca n fig. 2.21,
q = r|X|s i r
1
=
AB
(q).










Este evident, c semnul dintre relaiile r
1
i r este "=",
dac pentru orice tuplu t
r
din r exist un tuplu t
s
n s ce
satisfac egalitatea t
r
[RS] = t
s
[RS]. Cu alte cuvinte,
dac
RS
(r) =
RS
(s).
r A B
a
1
b
1


a
2
b
2



s B C
b
1
c
1

b
2
c
2



q A B C
a
1
b
1
c
1

a
2
b
2
c
2



r A B
a
1
b
1

a
2
b
2


Fig. 2.21
S considerm acum legtura dintre proiecie
i jonciune, schimbnd ordinea de aplicare a
acestor operaii. Fie relaia q este definit pe
mulimea de atribute RS. Notm
r =
R
(q) i s =
S
(q).
Fie q
1
= r|X|s. Care e relaia dintre q
1
i q?
Rspuns: q_q
1
.
Exemplul 2.18. Relaia q din fig. 2.22 se
descompune far pierderi pe mulimile de
atribute AB i BC, fiindc q = q
1
, unde
r =
AB
(q), s =
BC
(q), q
1
= r|X|s.










r A B
a
1
b
1


a
2
b
2



s B C
b
1
c
1

b
2
c
1



q A B C
a
1
b
1
c
1

a
2
b
2
c
2



Fig. 2.22
q A B C
a
1
b
1
c
1

a
1
b
2
c
1



Acuma s continum procesul de
descompunere a relaiei q
1
.
Fie
r
1
=
R
(q
1
),
i
s
1
=
S
(q
1
).
Construim jonciunea q
11
= r
1
|X|s
1
.
Care este corelaia dintre q
1
i q
11
?
Rspuns: q
1
= q
11
.
2.2.5. Divizarea
Definiia 2.15. Fie r(R) i s(S) dou relaii i S_R.
Notm Q = R \ S. Divizarea relaiei r la relaia s, notat
cu rs, este o relaie definit pe mulimea de atribute Q:
rs = {t| pentru t
s
es(S)-t
r
er(R) ce satisface t
r
[Q]=t i
t
r
[S]=t
s
}.
Remarc. Operaia divizareaea poate fi conceput
drept operaie invers produsului cartezian. Fie q= rs.
Atunci qs produce o relaie cu schema R i relaia q v
conine numrul maximal de tupluri ce ar satisface
expresia qs_r.

Teorema 2.1. Fie dou relaii q(Q) i s(S). Dac r=qs, atunci q=
rs.
Exemplul 2.19. Fie relaia r(A B C) din fig.2.23. n fig.2.24 sunt
prezentate relaiile s i q, unde q= rs. S se observe c qs_r i c
q conine un numr maximal de tupluri ce posed aceast
proprietate.











s C
c
1



r A B C
a
1
b
1
c
1

a
2
b
1
c
1

a
1
b
2
c
1

a
1
b
2
c
2

a
2
b
1
c
2

a
1
b
2
c
3

a
1
b
2
c
4


a
1
b
1
c
5



Fig. 2.23
q A B
a
1
b
1

a
2
b
1


a
1
b
2



Fig. 2.24
Teorema 2.2. Operaia divizarea poate fi
exprimat n termenii produsului cartezian,
diferenei i proieciei:
rs=
Q
(r)\
Q
((
Q
(r)s)\r).
S subliniem c operaia divizarea nu este nici
comutativ, nici asociativ.
Din definiia diviziunii i remarc urmeaz c,
dac relaia r[R] este o submulime proprie de
tupluri a relaiei s(S), atunci rs este o relaie
vid.
Dac S=C atunci rs este indefniit, fiindc
indefinit este s(C).
2.2.6. Semijonciunea
Semijonctiunea e o operaie binar. Ea
const n construirea unei relaii din cele dou
i e format numai din tuplurile unei singure
relaii ce particip la jonciune.

Definiia 2.16. Fie dou relaii r(R) i s(S).
Semijonciunea relaiei r i s, notat cu r|Xs,
este o mulime de tupluri determinat de
expresia r|Xs =
R
(r|X|s).
Exemplul 2.20. Fie relaiile r(A B), s(B C) i
q(A B) din fig.2.25. Relaia q = r|Xs.








s B C
b
1
c
1



r A B
a
1
b
1

a
1
b
2

a
2
b
1



Fig. 2.25
q A B
a
1
b
1

a
2
b
1



IMPLEMENTAREA OPERATORILOR ALGEBREI
RELATIONALE N SQL
1. Restricia
A where B
select * from StudCurs
WHERE NRPOINT > 59;
IDC IDST NRPOINT NOTEETC
---- ---- ---------- ----------
5004 0001 60
5005 0001 70
5004 0003 60
5005 0005 70
5004 0007 60
5005 0008 70
6 rows selected.
2. Proiecia A[X,Y,...,Z]

SELECT DISTINCT IDST
FROM StudCurs;
IDST
----
0001
0002
0003
0005
0006
0007
0008
7 rows selected.

3.Produs A times B

select Cours.IDC, Student.IDST, null
from Student, Cours, dual;











IDC IDST N
---- ---- -
5001 0001
5001 0002
5001 0003
5001 0004
5001 0005
5001 0006
5001 0007
5001 0008
5001 0009
5001 0010
5001 0011
IDC IDST N
---- ---- -
5001 0001
5001 0002
5001 0003
5001 0004
5001 0005
5001 0006
5001 0007
5001 0008
5001 0009
5001 0010
5001 0011 etc.

4. Jonciunea A times B where C
select Cours.IDC, Student.IDST, null
from Student, Cours, dual
where Student.anEt=1
;






IDC IDST N
---- ---- -
5001 0001
5002 0001
5003 0001
5004 0001
5005 0001
IDC IDST N
---- ---- -
5001 0003
5002 0003
5003 0003
5004 0003
5005 0003

IDC IDST N
---- ---- -
5001 0007
5002 0007
5003 0007
5004 0007
5005 0007

5. Divizarea A(X,Y) devid by B(Y)
SELECT IDST FROM StudCurs
GROUP BY IDST
HAVING COUNT(*) = (SELECT COUNT(*) FROM Cours) ;

















StudCurs
IDC IDST NRPOINT NOTE
---- ---- ---------- ------
-
5001 0001 20
5002 0001 30
5003 0001 50
5004 0001 60
5005 0001 70
5001 0002 20
5002 0002 30
5003 0003 50
5004 0003 60
5005 0005 70
5001 0003 20
5002 0005 30
5003 0006 50
5004 0007 60
5005 0008 70
Cours
IDC NO POINTC IDG
---- -- ------- ---
5001 c1 10 001
5002 c2 30 002
5003 c3 20 003
5004 c4 30 001
5005 c5 20 003
IDST
----
0001
:
=
Urmtoarele trei interogri cer ca tabelele s aib
aceleai tipuri. Din acest motiv, vom construi dou
tabele virtuale numite vederi Student2 Student1
din tabelul Student:
create view Student1 AS
select IDST, nomSt, anSt, IDGrup
FROM Student
WHERE anSt <= 3;

SELECT * FROM Student1;














Student1
IDST NOME ANST IDG
---- ---- ---------- ---
0001 St01 1 002
0002 St02 2 001
0003 St03 1 001
0004 St04 3 001
0006 St06 2 001
0007 St07 1 002
0008 St08 3 002
0009 St09 3 003
0010 St10 3 002
0011 St11 3 003
create view Student2 AS
select IDST, nomSt, anSt, IDGroup
FROM Student
WHERE anSt >= 3;

SELECT * FROM Student2;







Student2
IDST NOME ANST IDG
---- ---- ---------- ---
0004 St04 3 001
0005 St05 4 001
0008 St08 3 002
0009 St09 3 003
0010 St10 3 002
0011 St11 3 003
6. Uniune : A Union B
SELECT *
FROM Student1
UNION
SELECT *
FROM Student2;












IDST NOME ANST IDG
---- ---- ---------- ---
0001 St01 1 002
0002 St02 2 001
0003 St03 1 001
0004 St04 3 001
0005 St05 4 001
0006 St06 2 001
0007 St07 1 002
0008 St08 3 002
0009 St09 3 003
0010 St10 3 002
0011 St11 3 003
11 rows selected.
7. Diferena A Minus B
SELECT *
FROM Student1
MINUS
SELECT *
FROM Student2;








IDET NOME ANET IDG
---- ---- ---------- ---
0001 St01 1 002
0002 St02 2 001
0003 St03 1 001
0006 St06 2 001
0007 St07 1 002
8. Intersecia: A intersect B
SELECT *
FROM Student1
INTERSECT
SELECT *
FROM Student2;







IDET NOME ANET IDG
---- ---- ---------- ---
0004 St04 3 001
0008 St08 3 002
0009 St09 3 003
0010 St10 3 002
0011 St11 3 003
Capitolul 3
DEPENDENE FUNCIONALE
Proiectarea logic a bazei de date presupune
diminuarea redundanei i asigurarea
securitii datelor. Acest scop se poate atinge,
dac se cunosc restriciile ce pot fi aplicate
asupra datelor. Dependenele sunt restricii
impuse datelor n baza de date. Mulimea de
dependene este partea esenial a schemei
unei relaii, deci i a schemei bazei de date.
3.1. Noiuni generale
S considerm relaia orar din fig. 3.1.
orar PROFESOR DISCIPLINA ZI ORA GRUPA SALA
Petrescu Baze de date Luni 8:00 0941 402
Petrescu Baze de date Mierc. 14:30 0941 216
Petrescu Baze de date Mierc. 16:00 0941 216

Vasilache Progr.logic Luni 9:30 0941 404

Fig. 3.l. Relaia orar
Aceast relaie arat, care profesor pred disciplina dat,
crei grupe, n ce zi a sptmnii, la ce or i n ce sal.
Atributele ce formeaz schema acestei relaii nu pot primi
orice valori. Atributele se afl ntr-o interdependen.
n particular, se impun atributelor urmtoarele restricii:
(1) o disciplina este predat unei grupe de studiu de un
singur profesor;
(2) profesorul, n ziua dat, la ora dat se gsete ntr-o
singur sal;
(3) n ziua dat, la ora dat, n sal dat se pred o
singur disciplina.
Aceste restricii, ce reflect o interdependen ntre
atribute, sunt exemple de dependene funcionale.
Dependena funcional este o generalizare a noiunii de
cheie.
Restriciile de mai sus pot fi formulate:
(1) DISCIPLINA GRUPA determin funcional
PROFESOR sau, ce e echivalent PROFESOR e determinat
funcional de DISCIPLINA GRUPA;
(2) PROFESOR ZI ORA determin funcional SAL;
(3) ZI ORA SAL determin funcional DISCIPLINA;
i notate respectiv:
(1) DISCIPLINA GRUPA PROFESOR;
(2) PROFESOR ZI ORA SALA;
(3) ZI ORA SALA DISCIPLINA.
Unica posibilitate de a determin
dependenele funcionale const ntr-o analiz
cu luare-aminte a semanticii atributelor. n
acest sens dependenele sunt de fapt aseriuni
despre lumea real. Ele nu pot fi demonstrate.
Dar ele pot i trebuie s fie susinute de
SGBD-uri. Majoritatea sistemelor susin
numai dependenele funcionale determinate
de cheile relaiei. Dar sunt i sisteme ce susin
dependene funcionale arbitrare.
Trebuie menionat c declararea dependenelor
funcionale ntr-o baza de date este o decizie pe care
o ia numai proiectantul bazei de date. Odat
declarate SGBD-ul v susine aceste restricii. n
afar de aceasta, dup cum se v vedea n celelalte
seciuni, graie dependenelor, exist o structur mai
eficient de pstrare a datelor. Dependenele
funcionale vor servi la proiectarea schemelor
bazelor de date cu anumite proprieti dezirabile.
Definiia 3.1. Fie relaia r cu schema R i
X,Y_R. Vom spune c dependena funcional
XY este valid n relaia r (sau relaia r
satisface dependena funcional XY), dac,
pentru orice dou tupluri din r, fie t
1
i t
2
din
condiia c tuplurile au X-valori identice,
urmeaz c au i Y-valori identice, adic
t
1
[X]=t
2
[X]t
1
[Y]=t
2
[Y].

Dac X Y e valid n r(R), vom spune c X
determin funcional Y sau, c Y e determinat
funcional de X n aceast definiie (i mai departe)
simbolul "" noteaz "implic".
Deci dependenta funcional XY reprezint o
restricie de integritate aplicat tuplurilor relaiei
r(R), n sensul c oricare dou tupluri din r care
prezint o aceeai valoare pentru X trebuie s
prezinte o aceeai valoare pentru Y.
Definiia 3.l poate fi interpretat i n felul urmtor:
relaia r(R) satisface dependenta funcional XY, dac
relaia
Y
(
X=x
(r)) conine nu mai mult de un tuplu
pentru orice valoare x a atributului X.
Partea stng a dependenei poart numele de
determinant, iar partea dreapt a dependenei poart
numele de determinat Astfel n cadrul dependenei
XY, X este determinantul, iar Y determinatul.
Exemplul 3.1. Considerm relaiile din fig.3.2 n ele
sunt valide urmtoarele dependente functionale n
relaia r
1
AB, n relaia r
2
AB, BA, n relaia
r
3
AB.









r
1
A B
a
1
b
1

a
2
b
2

a
3
b
1

a
4
b
1

a
5
b
2


a
6
b
2


Fig. 3. 2. Relaiile r
1
, r
2
i r
3


r
2
A B
a
1
b
1

a
2
b
4

a
1
b
1

a
3
b
2

a
1
b
4


a
4
b
3



r
3
A B
a
1
b
1

a
2
b
4

a
1
b
1

a
3
b
2

a
2
b
4


a
4
b
4



Exemplul 3.1. Considerm relaiile din fig.3.2 n ele sunt
valide urmtoarele dependente functionale:
- n relaia r
1
: AB,
- n relaia r
2
: AB, BA,
- n relaia r
3
: AB.









r
1
A B
a
1
b
1

a
2
b
2

a
3
b
1

a
4
b
1

a
5
b
2


a
6
b
2


Fig. 3. 2. Relaiile r
1
, r
2
i r
3


r
2
A B
a
1
b
1

a
2
b
4

a
1
b
1

a
3
b
2

a
1
b
4


a
4
b
3



r
3
A B
a
1
b
1

a
2
b
4

a
1
b
1

a
3
b
2

a
2
b
4


a
4
b
4



Pentru a verifica dac o dependenta e valid ntr-o relaie
dat, se utilizeaz urmtorul algoritm.
Algoritmul SATISF (r, XY)
Intrare: Relaia r(R), dependenta funcional XY, unde
X,Y_R.
Ieire: Adevr, dac relaia r satisface dependenta
funcional XY,fals - n caz contrar.
(1) Se sorteaz tuplurile relaiei r n aa fel, ca tuplurile cu
X-valori egale s fie grupate mpreun.
(2) Se verifica dac mulimea de tupluri cu X-valori egale
are i Y-valori egale, atunci la ieire obinem adevr, n caz
contrar fals.
Menionm c nu ne intereseaz dependenele
funcionale ntmpltoare, dar numai acele ce
decurg din semantica atributelor. De exemplu,
n relaia orar e valid i dependenta
funcional
PROFESORDISCIPLIN
Dar ea nu reprezint o restricie ce reflect
lumea real, fiindc n realitate un profesor
poate i, de regul, pred mai multe discipline.
Numai dependenele nentmpltoare, asigur integritatea
semantic a bazei de date De exemplu, dac un utilizator
dorete s insereze n relaia orar un tuplu

Add(orar, <Vasilache "Structuri de date" luni 8 00 c942 402),

sistemul de gestiune v stopa efectuarea acestei operaii,
fiindc v fi violat dependenta funcional
ZI OR SAL DISCIPLIN.
Dac SGBD-ul nu susine dependenele funcionale,
atunci se poate ntmpla c ntr-o sal n acelai timp se
vor preda dou discipline diferite.
3.2. Reguli de inferen
ntr-o relaie r(R) n orice moment sunt valide o
mulime de dependente funcionale, s zicem F. Adic F
este o mulime de dependente satisfcut de relaia r(R).
Aici apare aceeai problem ca i n cazul cheilor. O
extensie a relaiei satisface mulimea F de dependente
funcionale, n timp ce alt extensie nu satisface. Pe noi ne
intereseaz numai dependenele ce sunt satisfcute de
orice extensie a relaiei r(R). Dar pentru aceast sunt
necesare cunotine asupra semanticii relaiei r(R).
Vom considera c mulimea F de dependente
funcionale este definit pe mulimea R de atribute ce
formeaz schema relaiei r i orice extensie a relaiei r
satisface mulimea F.
Evident c mulimea de dependente valide n r(R)
este finit, fiindc finit este schema R. Prin urmare,
s-ar putea verifica dac r satisface dependenele din
F, aplicnd algoritmul SATISF. ns astfel de soluie
este foarte laborioas. Exist o alt cale. Dac sunt
cunoscute nite dependente, din ele pot fi deduse
altele.
Definiia 3.2. Fie relaia r cu schema R, F - o
mulime de dependente funcionale i f o
dependenta asupra R.
Notm cu SAT(F) mulimea tuturor relaiilor
asupra R ce satisface orice dependenta din F. Vom
spune c F logic implic f, sau f este consecin
logic a F. Scriem F|=f, dac orice relaie r(R) ce
satisface dependenele din F satisface i f, adic
r(R) e SAT(F) r(R) e SAT(F{f})
O regul de inferen stabilete c, dac o relaie
satisface anumite dependene, ea trebuie s satisfac
i alte dependene. Vom considera ase reguli de
inferen a dependenelor funcionale.
Fie relaia r definit pe mulimea de atribute R i
fie W,X,Y,Z_R.
DF1. Regul reflexivitii. Dac Y_X, atunci
XY.
Definiia 3.3.0 dependen XY este trivial dac
Y_X.
Regul DF1 genereaz numai dependene triviale
i ea nu depinde de F, ntruct C_X_R, atunci
XC i RX sunt dependene triviale.
Deoarece X_X, XX e dependen trivial. Dintre
aceste dependene prima, XC, nu are nici o
aplicare practic.
DF2. Regul incrementrii. Dac XY i Z_W,
atunci XWYZ.
S observm c regul DF2 are mai multe cazuri
speciale.
Dac Z=C i XY, atunci XWY pentru orice
submulime W din R.
Dac W=Z i XY, atunci XWYW.
Dac X=W, Z=X i XY, atunci XXXY, adic
XXY.
Exemplul 3.2. Considerm relaia din figura 3.3. Relaia
r(ABCD) satisface dependen funcional AB. Confom regulii
DF2 n aceast relaie sunt valide i dependenele:








ABB, ACB, ADB, ABCB, ABDB, ACD.B,
ABCDB, ACBC, ADBD, ABCBC, ABDBD,
ACDBC, ACDBD, ACDBCD, ABCDBC, ABCDBD,
ABCDBCD.
r A B C D
a
1
b
1
c
1
d
1

a
2
b
2
c
1
d
1

a
1
b
1
c
1
d
2


a
3
b
3
c
2
d
3


Fig3.3

DF3. Regul aditivitii. Dac XY i XZ, atunci
XYZ.

Exemplul. 3.3. Relaia r(ABCD) reprezentat n fig.3.3
satisface dependenele funcionale AB i AC.
Conform regulii DF3, relaia r trebuie s satisfac i
dependen ABC.

DF4. Regul proiectivitii. Dac XYZ, atunci XY.
Exemplul 3.4. Relaia din fig.3.3 satisface dependen
funcional ABC. Conform regulii DF4, ea satisface i
dependenele AB i AC.
DF5. Regul tranzitivitii. Dac XY i YZ, atunci
XZ.

Exemplul 3.5. Relaia r(ABCD), reprezentat n fig.3.4,
satisface dependenele funcionale AB i BC. Conform
regulii tranzitivitii, relaia r satisface i dependen
fiinctional AC.


r A B C D
a
1
b
1
c
2
d
1

a
2
b
2
c
1
d
2

a
3
b
1
c
2
d
1


a
4
b
1
c
2
d
3


Fig.3.4
DF6. Regul pseudotranzitivitii. Dac XY i
YWZ, atunci XWZ.

S observm c proiectivitatea (DF4) este, ntr-un sens,
regul invers regulii aditivittii (DF3). Regul DF3 se
utilizeaz pentru a uni dou dependene cu determinante
egale n una, n timp ce regul DF4 - pentru
descompunerea unei dependene.
3.3. Axiomele Armstrong
Definiia 3.4. Fie F o mulime de dependene asupra R i
fie f o dependen funcional asupra R. Derivaie a
dependenei f din F, notat cu F|-f, este o consecutivitate
finit de dependene funcionale f
1
,f
2
,.,.,f
k
unde:

(1) orice dependen f
1
poate fi dedusa din (o submulime
a mulimii) F{f
1
,f
2
,...,f
i-l
}, aplicnd regulile de inferen
DF1-DF6;

(2) f este ultimul element, f
k
, n consecutivitate.
Remarc. Condiia (l) mai poate fi formulat n felul
urmtor. Orice dependen f este element al mulimii F sau
se deduce din consecutivitatea {f1, f2,..., f
i-1
}, aplicnd
regulile de inferen DFl-DF6.

Dac F|-f, vom spune c F deriv f sau c f e derivabil din
F. Dac G este mulime de dependene funcionale, atunci
prin F|-G se subnelege c orice dependen funcional
din G e derivabil din F.
E clar c, dac n condiia (1) a definiiei 3.4 mulimea de
dependene funcionale F e vid, adic C|-f, atunci f e
dependen trivial, fiindc singura regula de inferen
corespunztoare poate fi doar DF1.

Cu ajutorul regulilor de inferen putem deduce noi
dependene funcionale din cele date.
Exemplul 3.4. Fie r o relaie cu schema R i X,Y,Z_R.
Presupunem c n r(R) sunt valide dependenele XYZ i
XY. Atunci, conform regulii DF6, relaia r satisface i
dependen XXZ care se reduce La XZ.

Pentru a combate o afirmaie despre validitatea unei
dependene funcionale, e suficient de a aduce un exemplu
de relaie ce nu satisface afirmaia dat.
Exemplul 3.5. S combatem afirmaia c dependen
XYZW implic dependen XZ.
Relaia r(ABCD) din fig.3.6 satisface dependen
funcional ABCD, dar nu satisface dependen
AC.







r A B C D
a
1
b
1
c
1
d
1

a
1
b
2
c
2
d
1


Fig.3.6

Unele reguli de inferen pot fi deduse din altele.

Armstrong a artat c regulile DFl, DF2 i DF5 formeaz o
mulime de reguli independente, iar regulile DF3, DF4 i
DF6 pot fi deduse din DF l, DF2 i DF5.

Mulimea {DFl, DF2, DF5} de reguli de inferen
este cunoscut sub denumirea de axiome
Armstrong.
Teorema 3.1. Regulile DF3, DF4 i DF6 se deduc din
regulile DFl, DF2, DF5.
Definiia 3.5. Fie F o mulime de dependene funcionale
asupra schemei R i X,Y_R. nchiderea mulimii F,
notat cu F
+
se definete recursiv:
(1) F_F
+
;
(2) Dac F
1
_F i F
1
|-XY, atunci XYeF
+
;
(3) Nimic altceva nu e n F
+
.

Deci,
F
+
=F{XY| F
1
|-XY pentru F
1
eF i X,
YeR}.
Cu alte cuvinte, nchiderea unei mulimi de
dependene funcionale, F
+
reprezint
mulimea tuturor dependenelor funcionale
care se pot deriv din mulimea F, aplicnd
axiomele Armstrong.
Este clar c F
+
=(F
+
)
+
.
Exemplul 3.6. Fie relaia r(ABC) i
F={ABC, CB}.
Atunci
F
+
= {AA, ABA, ACA, ABCA,
BB, ABB, BCB, ABCB, CC,
ACC, BCC, ABCC, ABAB,
ABCAB, ACAC, ABCAC, BCBC,
ABCBC, ABCABC, ABC, ABAC,
ABBC, AQABC, CB, CBC, ACB,
ACAB}.
n F
+
primele nousprezece dependene sunt
triviale i se deriv din mulimea C de
dependene, aplicnd DF1, adic C|-
{XY|Y_X_ABC}.
Alte dependene XY se deriv din ZY,
unde ZcX, aplicnd regula incrementrii
(DF2), adic {ZY} |-(XY|ZcX_R, Y_R,
Y.X}. n F
+
avem ase dependene deduse,
aplicnd regula DF2 asupra F.
Deci:
ABC|-{ABAC, ABBC, ABABC} i
{CB)|-{CBC, ACB, ACAB}.
Regula tranzitivitii nu genereaz dependene
netriviale. n afar de aceasta, F
+
conine cele
dou dependene din F. n total F
+
const din
douzeci i apte dependene.
Din exemplul de mai sus, se observa c
numrul de dependene ce alctuiesc F
+
este
destul de mare n raport cu F.
Dac F=C, atunci F
+
const numai din
dependene triviale. Fiindc orice relaie r(R)
satisface orice dependen trivial asupra R.
Dependenele triviale, bineneles, nu se
consider restricii asupra relaiei. ntruct R
are 2
[R]
submulimi, numrul de dependene
triviale ntr-o relaie este exponenial. Nu vom
consider de asemenea dependenele de forma
XC, fiindc ele nu au aplicare practic.
3.4. Completitudinea regulilor de inferen
Definiia 3.6. Fie R1 o mulime de reguli de inferen
asupra mulimii de dependene F. Mulimea R1 de reguli
este nchis, dac F|-f, utiliznd regulile din R1, implic
F|=f. Mulimea de reguli de inferen R1 este complet,
dac F|=f implic F|-f, utiliznd regulile din R1.
C mulimea de reguli DFl-DF6 este nchis,
adic ele au loc n orice relaie, s-a demonstrat
pentru fiecare regul n parte n seciunea 3.2.
Pentru a arta c mulimea de reguli este
complet, mai nti introducem noiunea de
nchidere a unei mulimi de atribute.
Definiia 3.7. Fie F o mulime de
dependene asupra R i X_R. nchiderea
mulimii de atribute X n raport cu mulimea
de dependene F, notat cu X
+
se definete
astfel:
(1) X_X
+
(X e o submulime a nchiderii);
(2) Dac Z_X
+
i ZYeF, atunci Y_X
+

(3) Nici un alt atribut nu face parte din X
+
.
Adic X
+
X{Y|Z_X
+
i ZYeF}.
3.5.4. Algoritmi
Pentru a deternuna dac F|=XY, e
suficient de verificat dac XYeF
+
. ns, F
+

este excesiv de mare n raport cu F. E
dezirabil o metod de verificare, dac XY
aparine F
+
, fr a deduce toate dependenele
funcionale din F. Un astfel de algontm e
prezentat mai jos. Nucleul algontmului const
din procedura de construire a nchiderii
mulimii de atribute X n raport cu F. Dup ce
se gsete X
+
se verific dac Y_X
+
.
Este evident c ultimul element, Xn, din
derivaia maximal nu este altceva dect X
+
iar
teorema 3.5 ne sugereaz c XY urmeaz
logic din F, dac Y_X
+
. Deci, derivaia
maximal servete drept model teoretic pentru
urmtorul algontm de deternunare a lui X
+
.
Algoritmul CLOSURE caut n F o
dependen funcional pentru care
determinantul reprezint o submulime a lui
X
i
, iar determinatul nu-este inclus n X
i
. Dac
se gsete o astfel de dependen funcional,
atunci se adaug la X
i
atributele, care
constituie determinatul dependenei. Dac nu
se gsete, atunci nchiderea cutat, X
+
este
reprezentat de mulimea de atribute X
i
.
Algoritmul CLOSURE (F, X, X
+
)
Intrare: F- o mulime de dependene
funcionale asupra schemei R; X - o mulime
de atribute, X_R.
Ieire: X
+
- nchiderea mulimii X n raport cu
F.
begin
i:=0; Xi:=X;
repeat
i:=i+l;
X
i
:= X
i-1
;
For all VW in F
if V_X
i
then X
i
:= X
i
W;
until X
i
:= X
i-1
;
retum (X
+
:=X,);
end.
Exemplul 3.10. Fie F={BCD, ADE,
BA}, X=B. S se calculeze X
+
.
Iniial X
0
=B.
n ciclul repeat:
X
1
=B.
n ciclul for:
X
1
= BCD (aplicnd BCD),
X
1
= ABCD (aplicnd BA).
X
2
=ABCD.
n ciclul for:
X
2
=ABCDE (aplicnd ADE)
X
3
=ABCDE.
Dup ciclul for X
3
=X
2
.
Rezultat: X
+
:=ABCDE.
Deci nchiderea lui B n raport cu F este
(B)
+
=ABCDE.
Algoritmul CLOSURE realmente
construiete derivaia maximal a mulimii de
atribute X n raport cu F. Apelnd la
CLOSURE e uor de construit algoritmul de
verificare a apartenenei unei dependene
funcionale la F
+
.
3.6. Acoperiri
n aceast seciune se consider diverse
moduri de reprezentare a mulimilor de
dependene, cum ar fi mulimile
nonredundante, reduse, canonice, minimale i
optimale.
3.6.1. Mulimi echivalente de dependene
funcionale
Definiia 3.15. Dou mulimi de dependene
funcionale F i G se numesc echivalente, notat cu
FG, dac F
+
=G
+
. Vom mai spune n acest caz c F
acoper G (sau G acoper F).
Dac FG, adic F
+
=G
+
, atunci orice dependen
XY ce urmeaz logic din F unneaz i din G. Deci
pentru a verifica dac F i G sunt echivalente se ia
orice dependen XY din F i se verific dac
G|=XY. Dac o oarecare dependen XY nu
aparine lui G
+
atunci F
+
G
+
. Apoi analogic se verific
dac orice dependen VW din G se deduce din F.
Dac toate dependenele se deduc, mulimile F i G
sunt echivalente.
3.6.2. Acoperiri nonredundante
Definiia 3.16. Mulimea de dependene
funcionale F este nonredundant, dac nu
exist o submulime proprie F
1
a mulimii F i
F
1
F. Dac o astfel de submulime exist,
atunci F se numete redundant. Mulimea F
este acoperire nonredundant a mulimii G,
dac F este acoperire pentru G i F este
nonredundant.
Exemplul 3.12. Fie G={ABC, BC}.
Mulimea F={AB, AC, BC} este
acoperire a mulimii G, dar nu e acoperire
nonredundant, fiindc F
1
={AB, BC} e
acoperire pentru G, ns F
1
cF.
Definiia 3.17. Mulimea F de dependene
funcionale se numete nonredundant, dac n ea nu
exist nici o dependen XY nct (F \ {XY})|
=XY. n caz contrar, F se numete redundant.
3.6.3. Acoperiri reduse
Dac F e o mulime nonredundant, atunci
nu poate fi eliminat din F nici o dependen
funcional fr a afecta echivalent mulimii
obinute cu cea anterioar. n schimb poate fi
micorat dimensiunea mulimii F, eliminnd
unele atribute din dependenele funcionale.
Definiia 3.18. Fie F o mulime de
dependene funcionale asupra schemei R i
XYeF. Atributul A este redundant n
dependen XY n raport cu F, dac:
(1) AeX, V=X \ A i F\{XY}{VY}F
sau
(2) AeY,W=Y\A i F\{XY}{XW}F.
Cu alte cuvinte, atributul A este redundant
n dependen XY, dac el poate fi eliminat
din determinant sau determinat, fr a fi
schimbat nchiderea mulimii F. Procesul de
eliminare a atributelor redundante se numete,
corespunztor, reducere n stnga i reducere
n dreapta a dependenelor.
Definiia 3.19. Fie F o mulime de dependene
funcionale asupra schemei R. Mulimea F se
numete redus n stnga (dreapta), dac orice
dependen din F nu are atribute redundante n
partea stnga (dreapta). Mulimea de
dependene redus n stnga i n dreapta se
numete redus.
Exemplu 3.15. Mulimea
F = {ACB, AC, ABD}
nu este redus nici n stnga, nici n dreapta.
Mulimea
F
1
={AB, AC, ABD}
e redus n stnga i nu e redus n dreapta, dar
F
2
={ACB, AC, AD}
e redus n dreapta i nu n stnga.
Mulimea de dependene funcionale
F
3
={AB, AC, AD}
e redus n stnga i n dreapta, deci e redus.
Mai jos se aduc algoritmii de reducere a
unei mulimi nonredundante.
3.6.4. Acoperiri canonice
Defiiuia 3.20. Mulimea de dependene
funcionale F este canonic, dac F este
nonredundant, redus n stnga i orice
dependen din F are forma XA.
ntruct mulimea canonic este
nonredundant i redus n stnga, iar
detemunatul oricrei dependene const dintr-
un singur atribut, ea este redus i n dreapta,
adic este redus.
3.6.6. Acoperiri minimale
Definiia 3.22. Mulimea de dependene
funcionale F este minimal, dac nu exist o
mulime echivalen ei cu mai puine
dependene funcionale.
Este evident e orice mulime minimal de
dependene funcionale este i nonredundant.
Afirmaia invers nu este corect.
Exemplul 3.19. Mulimea F={AB,
AC} este nonredundant, dar nu este
minimal, fiindc G={ABC} este acoperire
pentru F i are o singur dependen.
3.6.7. Acoperiri optimale
Mulimea de dependene funcionale F poate
fi estimat dup numrul de atribute (inclusiv
repetate) antrenate de dependenele funcionale
din F. De pild, mulimea F={ABC, CB}
are aritatea cinci.
Definiia 3.23. Mulimea de dependene
funcionale F se numete optimal, dac nu
exist o mulime echivalen ei cu o aritate mai
mic.
Exemplul 3.21. Mulimea F{ABCE, BCD,
DBC} nu este acoperire optimal, fiindc mulimea
G={ADE, BCD, DBC} are aritatea mai mic
dect F i GF. Mulimea G este optimal.
Trebuie menionat c problema construirii unei
acoperiri optimale aparine clasei de probleme NP-
complete, pentru care nc nu au fost gsii algoritmi
polinomiali.
Teorema 3.8. Mulimea optimal este minimal i
redus.
Capitolul 4
DEPENDENE MULTIVALOARE I
DEPENDENE JONCIUNE
Modelul relaional utilizeaz dependenele pentru
exprimarea restriciilor pe care datele din baza de date
trebuie s le satisfac. Schema bazei de date relaionale
este definit de o varietate de restricii ce sunt impuse
componentelor sale. Dependenele funcionale sunt un
exemplu de astfel de restricii de integritate. Ele au fost
studiate detaliat n capitolul 3.
O generalizare a dependenelor funcionale, numite
dependene multivaloare, a fost descoperit de mai muli
cercettori n domeniu. Cea mai important proprietate a
dependenei multivaloare const n faptul c existena ei ntr-o
relaie este o condiie necesar i suficient pentru ca relaia s
poat fi nlocuit fr pierderi de informaii, independent de
extensia curent, cu dou proiecii ale sale. Aceast
proprietate face ca dependena multivaloare s joace un rol
important n teoria i practica proiectrii bazelor de date
relaionale.
O dat ce dependenele multivaloare au devenit parte
a teoriei relaiilor, o cerin de baza ce trebuie s fie
satisfcut este cunoaterea proprietilor lor i, n
particular, metodelor de manipulare. ntruct
dependenele multivaloare sunt o generalizare a celor
funcionale, metodele aplicate asupra ultimelor pot servi
drept ghid n susinerea acestei cerine.
Este bine cunoscut c existena ntr-o relaie a
dependenelor funcionale implic c n ea exist
dependene funcionale adiionale. Aceast e valabil i
pentru dependenele multivaloare. Noiunea de implicare
este formalizat n conceptul de reguli de inferen. Sunt
cunoscute mulimi nchise i complete de reguli de
inferen pentru dependenele multivaloare.
Dependenele jonciune sunt o generalizare
a dependenelor multivaloare. E cunoscut
faptul c o mulime de dependene funcionale
plus o dependena jonciune se consider
suficiente pentru exprimarea dependenelor
dintre atributele unei scheme a bazei de date.
Acest capitol cuprinde noiuni generale
despre dependenele multivaloare, regulile de
inferen, dependenele multivaloare incluse,
regulile de inferen ale dependenelor
jonciune etc.
4.1. Dependene multivaloare

Definiia 4.1. Fie relaia r cu schema R i X,Y_R. Notm
Z=R\XY. Vom spune c relaia r(R) satisface dependena
multivaloare XY (sau XY e valid n r(R)), dac
pentru orice pereche de tupluri t
1
i t
2
din r(R) ce satisfac
t
1
[X]= t
2
[X] exist n r(R) un tuplu t
3
pentru care au loc
egalitile t
3
[X]= t
1
[X], t
3
[Y]= t
1
[Y] i t
3
[Z]= t
2
[Z].

Remarc. Din proprietatea de simetrie a acestei defiiuii
urmeaz c n r(R) mai exist un tuplu t
4
ce satisface
egalittile t
4
[X]= t
1
[X], t
4
[Y]= t
2
[Y] i t
4
[Z]= t
1
[Z].
Teorema 4.1. O dependena multivaloare
XY e valid n relaia r(R) dac i numai
dac XZ e valid n r(R),unde Z=R\XY.
Exemplul 4.1. Relaia r(ABCD)
din fig.4.1 satisface dependena
multivaloare BCA. n relaia
r(ABCD) e valid de asemenea
dependena multivaloare BCD.
Dac, ns, din relaia r(ABCD) este
eliminat un tuplu, atunci
dependenele multivaloare BCA
i BCD devin invalide n
r(ABCD).



r A B C D
a
1
b
1
c
1
d
1

a
1
b
1
c
1
d
2

a
1
b
1
c
2
d
1

a
1
b
1
c
2
d
2

a
2
b
1
c
1
d
1

a
2
b
1
c
1
d
2

a
2
b
1
c
2
d
1


a
2
b
1
c
2
d
2

Fig.4.1
n definiia 4.l nu s-au pus condiii asupra
mulimilor X i Y. Deci XYC n caz
general. Determinatul Y poate fi redus.
Teorema 4.2. Dependena functional
XY e valid n relaia r(R), dac i numai
dac XY \ X e valid n r(R).
Exemplul 4.2. Relaia r(ABCD) din fig. 4.l
satisface dependena multivaloare BCA.
Conform teoremei 4.2, n r este valid i
dependena multivaloare BCAB.
Teorema ce urmeaz poate fi considerat o
metod de verificare dac o dependen
multivaloare e valid ntr-o relaie.
Teorema 4.3. Fie relaia r(R), X,Y_R i Z = R\XY.
Dependena multivaloare XY e valid n r(R) dac i
numai dac r este jonciunea proieciilor sale
XY
(r) i

XZ
(r).
Din teorema 4.3 se poate face unntoarea concluzie.

Concluzie. Relaia r(R) se descompune far pierderi n
relaiile r
1
(R
1
) i r
2
(R
2
) dac i numai dac R1R2R
1

(sau R1R2R
2
).

4.8. Dependene jonciune
Definiia 4.8. Fie U mulimea universal de atribute i fie
relaiile r
1
, ..., r
m
definite pe schemeleR
1
,...,R
m
, respectiv,
unde R
i
_U, lsism. Jonciunea relaiilor r
1
, ..., r
m
, notat cu
|X|(r
1
, ..., r
m
) este o relaie definit pe schema
U
l
=R
1
,...,R
m
_U:
|X|(r
1
, ..., r
m
)={t | t[R
i
] = t
i
& t
i
er
i
(R
i
), lsism}.

De noiunea jonciune |X|(r
1
, ..., r
m
) a relaiilor r
1
, ..., r
m
e
strns legat noiunea de dependen jonciune asupra U
1
,
care este o restricie asupra U
1
de forma |X|(r
1
, ..., r
m
). Vom
spune c dependena jonciune este inclus dac U
1
_U.
Dac U
1
= U, vom spune simplu dependen jonciune.
Definiia 4.9. Vom spune c relaia r(U) satisface
dependen jonciune |X|(r
1
, ..., r
m
) sau dependen
jonciune |X|(r
1
, ..., r
m
) e valid n r(U), dac r(U) se
descompune fr pierderi pe schemele R
1
,...,R
m
, adic
r(U)= |X| (
r1
(r),...,
rm
(r)) (4.3)
Exemplul 4.10. Relaia r(ABC) satisface (vezi relaia i
proieciile corespunztoare n fig. 4.7) dependen
jonciune |X|(AB, AC, BC), fiindc r(ABC) = |X|(
AB
(r),

AC
(r),
BC
(r)).
O condiie necesar, ca egalitatea (4.3) s fie satisfcut,
este U=R
1
,...,R
m
.









r A B C
a
1
b
1
c
1

a
1
b
2
c
2

a
3
b
3
c
3

a
4
b
3
c
4

a
5
b
5
c
5


a
6
b
6
c
5


AB
(r)
A B
a
1
b
1

a
1
b
2

a
3
b
3

a
4
b
3

a
5
b
5


a
6
b
6

AC
(r)
A C
a
1
c
1

a
1
c
2

a
3
c
3

a
4
c
4

a
5
c
5


a
6
c
5

BC
(r)
B C
b
1
c
1

b
2
c
2

b
3
c
3

b
3
c
4

b
5
c
5


b
6
c
5


Flg.4.7.
Este evident c dependen de jonciune inclus este o
generalizare a dependenei jonciune. La rndul sau,
apelnd la teorema 4.3, despre condiia necesar i
suficient ca o relaie s se descompun fr pierderi n
dou proiecii, conchidem c dependen jonciune este o
generalizare a dependenei multivaloare. ntr-adevr,
teorema 4.3 ne spune c r(R) satisface dependen
multivaloare XY, atunci i numai atunci cnd r se
descompune far pierderi pe schemele XY i XZ, unde Z =
R\XY. Condiia coincide cu definiia dependenei jonciune
| X | (XY, XZ).

Definiia 4.11. Dependena jonciune |X|(R
i
,..., R
n
,)
asupra U = R
1
...R
m
, este trivial, dac e valid n orice
relaie r cu schema U.
Capitolul 5
PROIECTAREA BAZELOR DE DATE
Prin Proiectarea bazei de date, aici se
subnelege proiectarea unei scheme logice
care ar nltura apariia unor anomalii n lucrul
cu baza de date, asigurnd totodat faciliti i
performane sporite la exploatarea ei.
Anomaliile care apar n lucrul cu baza de date sunt
cunoscute sub anomalii de actualizare a datelor. Ele sunt
puse n legtur cu dependenele care se manifest ntre
atribute. O asemenea abordare a anomaliilor de
actualizare permite caracterizarea riguroas a gradului de
perfeciune a schemei bazei de date i face posibil
definirea unor tehnici formale de proiectare a unor astfel
de scheme.
Prelucrarea datelor o perioad de timp, cum se ntmpl
n bazele de date, poate provoca o serie de probleme
personalului responsabil de meninerea integritii datelor.
Anomaliile n date cum ar fi datele duplicate sau pierderile
de informaii pot aprea, dac datele nu sunt organizate
ntr-un mod rezonabil. In ce const o organizare rezonabil
a datelor? Cercetrile la zi i experiena acumulat n
domeniul proiectrii bazelor de date au artat c unele
aranjri de date lucreaz mai bine dect altele. S-au
elaborat tehnici de analiz a datelor i organizare a lor ntr-
o structur flexibil i stabil.
Procesul de normalizare const n aplicarea unui set
de reguli predefinite asupra unei aranjri a datelor cu
scopul reducerii structurii complexe i transformrii lor
n structuri mai mici si stabile ce vor facilita
manipularea i meninerea datelor.

La fiecare pas o regul este aplicat, datele pot fi
restructurate i cnd regula este satisfcut se spune c
datele sunt ntr-o form normal.
Deci normalizarea este o abordare formal de analiz i
grupare a datelor n structuri mai eficiente ce se pot
acomoda viitoarelor actualizri. n afar de aceasta
normalizarea minimizeaz impactul ce poate avea loc
asupra aplicaiilor n procesul actualizrii bazei de date.

Pentru a produce o baza de date bine proiectat de
obicei se pornete de la relaii nenormalizate i printr-o
serie de pai se descompun structurile de date pentru a
obine schema final a bazei de date.
5.1. Prezumia schemei universale
Materia expus pn acum (i mai departe) presupune
c toat mulimea de atribute formeaz schema unei relaii
"mari" i toate restriciile asupra atributelor sunt restricii
ale acestei scheme.
Unul din scopurile, pe care i le propune s le ating
modelul relaional este eliberarea utilizatorului de a
specifica cile de acces la date. Aceasta problem e
cunoscut sub denumirea de problema navigaiei logice,
ns, dac baza de date const din mai multe relaii
independena navigaiei logice nu este asigurat.
De exemplu, fie baza de date are dou relaii:

angajai(FUNCIONAR DEPARTAMENT)
i
departamente(DEPARTAMENT MANAGER).

Pentru a obine asocierile FUNCTIONAR MANAGER se
joncioneaz relaiile angajati i departamente i apoi relaia
obinut se proiecteaz pe atributele FUNCTIONAR i
MANAGER. Dar indicarea operaiilor i este specificarea
cilor de acces. Dac baza de date se restructureaz,
reprezentndu-se printr-o singur relaie, atunci trebuie s se
modifice corespunztor i programele ce specifica jonciunea.
Formulnd o interpelare (cerere) la baza de date ce se
refer la mai multe relaii din baza de date e comod a
interpreta lumea real ca o singur relaie, schema creia
include toate atributele din schemele relaiilor bazei.
Aceasta relaie se numete relaie universal, iar schema ei
- schema relaiei universale sau schema universal.
Modelul relaiei universale realizeaz complet
independena navigaiei logice, excluznd astfel definirea
unor ci de acces neoptimale din partea unor utilizatori
neiniiai. Deci acest model faciliteaz interaciunea
sistem-utilizator, cernd de la ultimul doar cunoaterea
atributelor i semanticii.
Cea mai strict form de realizare a relaiei universale
const n construirea propriu-zis a bazei de date dintr-o
singur relaie pe mulimea de atribute universal U. Dar
aici apar multe dezavantaje. n primul rnd, nu toate
tuplurile vor avea valori definite. n al doilea rnd, pstrarea
tuturor datelor ntr-o singur relaie inevitabil v genera o
serie de anomalii de actualizare.
De aceea, realmente, baza de date const dintr-o
mulime de relaii normalizate definite pe submulimi de
atribute ale schemei relaiei imaginare universale. ns n
acest caz baza de date trebuie s satisfac unele condiii.
Una din condiii presupune c baza de date trebuie s
posede proprietatea jonciunii fr pierderi.
A doua - c descompunerea relaiei universale imaginare
conserv dependenele.
A treia condiie presupune ca atributele n schema
universal joac un singur "rol". Astfel ambiguitile sunt
excluse. Dac numele exprim diverse noiuni problema se
soluioneaz prin renuniirea atributelor sau divizarea unui
atribut n mai multe .
5.2. Descompunerea relaiilor cu conservarea
dependenelor
S-a constatat c e binevenit ca descompunerea unei relaii
(inclusiv celei universale) s posede proprietatea jonciunii
fr pierderi. Aceasta este garania c relaia poate fi
refacut din proieciile sale.
O alt important proprietate a descompunerii unei relaii
r(R) pe mulimea de scheme R
1
,...,R
m
, unde R=R
1
...R
m
,
const c mulimea de dependene valide n r(R) s se
deduc din dependenele valide n proieciile
R1
(r),...,

Rm
(r).
Definiia 5.1. Fie F o mulime de dependene funcionale
asupra schemei R. Proiecia mulimii F asupra unei mulimi
de atribute Z, notat
z
(F), este mulimea de dependene
XY din F
+
i XY_Z.

S observm c dependena XY nu neaprat trebuie s
aparin mulimii F. E de ajuns ca ea s aparin nchiderii
F
+
adic F|-XY.
Definiia 5.2. Fie relaia r(R) este descompus pe
mulimea de scheme R
1
,...,R
m
, unde R= R
1
,...,R
m
, i fie o
mulime F de dependene asupra R. Vom spune c
descompunerea relaiei r(R) asupra R
1
,...,R
m
conserv
dependenele F, dac
{
Rl
(F)...
Rm
(F)}|-F.
Tendina de conservare a dependenelor e fireasc.
Dependenele sunt restricii de integritate asupra relaiilor
cu schema dat. Dac din dependenele proiectate nu ar
urma mulimea F, atunci s-ar gsi o descompunere

Rl
(r),...,
Rm
(r) a relaiei r(R) ce nu satisface mulimea de
dependene F, dar posed proprietatea jonciunii fr
pierderi.
Exemplul 5.1. Fie relaia r(ORA
ADRES COD), unde ADRES este
denumire de strad, numr de casa, iar COD
este codul oficiului potal ce deservete o
anumit adres. n aceast relaie avem valide
urmtoarele dependene funcionale:
F = {ORA ADRESCOD, CODORA}.
Adic adres complet determin funcional
codul potal, dar codul potal e de ajuns pentru
a determina oraul. Descompunerea relaiilor r
asupra schemelor ORA COD i ADRES
COD posed proprietatea jonciunii fr
pierderi. ntr-adevr, ntruct CODORA,
atunci CODORA. Dar conform teoremei
4.3 relaia r se descompune fr pierderi n
dou relaii definite pe schemele de mai sus.
Proiecia mulimii de dependene F asupra
schemei ADRES COD produce numai
dependene triviale ce urmeaz din axioma
reflexivitii, n timp ce proiecia mulimii F pe
schema COD ORA produce dependena
CODORA i dependenele triviale. Deci
{
ADRESCOD
(F)
CODORA
(F)}|-F.
Din alt parte descompunerea unei relaii
poate conserva dependenele, dar s nu posede
proprietatea jonciunii fr pierderi.
Exemplul 5.2. Fie relaia r(ABCD) i fie mulimea
F{AB, CD} de dependene funcionale valide n r.
Descompunerea relaiei r n
AB
(r) i
CD
(r) conserv
dependenele din F, ns ea nu posed proprietatea jonciunii
far pierderi. ntr-adevr, tabloul ce definete descompunerea
arat ca n fig.5.l. Asupra acestui tablou nu pot fi aplicate F-
regulile i ntruct el nu conine un tuplu-scop, descompunerea
nu posed proprietatea jonciunii fr pierderi.



tab A B C D
a
1
a
2
b1
3
b
14

b
21
b
22
a
3
a
4


Fig.5.l.
n capitolul l s-a definit noiunea de cheie a unei relaii
sau a unei scheme i sau discutat problemele legate de
aceast noiune. E evident c noiunea de cheie este n
strns corelaie cu noiunea de dependena funcional.
Prin urmare, aici ne vom opri asupra repetrii noiunii de
cheie n termenii dependenelor funcionale.
Vom presupune mai departe, cnd vom avea nevoie, c
schema unei relaii const din dou componente S=(R, F),
unde R este propriu-zis schema, iar F mulimea de
dependene definite pe mulimea R.

Definiia 5.3. Fie S=(R, F) o schema relaional. O
submulime de atribute K a schemei R se numete
supercheie pentru schema S, dac KR este n F
+


Submulimea de atribute K din R se numete cheie, dac
K e supercheie i pentru orice submulime proprie K
1
a
supercheii K dependena K
1
R nu este n F
+
.

Dependenele de forma KR, unde K este cheie sau
supercheie a schemei S, le vom numi dependene cheie.
Exemplul 5.3. Fie schema relaional S=(ABCDEFG,
{ABCF, CD, BDE, EFG}). S gsim cheile i
supercheile acestei scheme.

Calculm A
+
=ABCDEFG, C
+
=CD, (BD)
+
=BDE i
(EF)
+
=EFG. ntruct atributul A determin funcional
toate atributele schemei, el este cheie. Uniunea atributului
A cu orice submulime din BCDEFG formeaz
supercheile schemei S.
5.3. Anomalii i redundane
De ce o schem a bazei de date poate fi "rea"?
Anomaliile, care apar n lucrul cu baza de date, se
produc datorit dependenelor "nedorite" care se
manifest ntre atributele din cadrul schemelor relaiilor
din baza de date. Aceste dependene determin
creterea redundanei datelor i reducerea flexibilitii
structurii bazei de date, fcnd extrem de dificil lucrul
cu ea.
Deci, n primul rnd, o schem poate fi ineficient
fiindc conine o mulime de date redundante.

n al doilea rnd, ca o consecin a primei cauze,
actualizarea unei baze redundane poate duce la situaia
cnd ea v conine fapte logic contradictorii. O parte de
date pot rmne nemodificate. Deci o baza de date "rea"
duce la apariia unor inconsistente la modificarea
datelor.
n al treilea rnd, o baza de date "rea" poate
limita posibilitatea de inserare a datelor, ntr-o
relaie nu pot fi introduse date despre o entitate
pn nu se cunosc alte date conform restriciilor de
integritate ale entitii.

n al patrulea rnd, pot aprea pierderi de date
la tergere. n mod normal, prin operaia de
tergere trebuie s se poat elimina din baza de
date numai datele pe care dorim s le tergem.
Atunci cnd, concomitent cu aceste date sunt
terse i altele, care nu mai pot fi reconstruite din
baza de date, spunem c la operaia de tergere se
produc pierderi de date.
5.4. Forma normal unu
Definiia 5.4. Schem relaional R se gsete n
forma normal unu, dac pentru orice atribut A din R
valorile din dom(A) sunt atomice. Schem unei baze de
date se gsete n forma normal unu, dac orice schem
relaional din ea este n forma normal unu.
Forma normal unu este forma de baza a relaiilor,
care figureaz ca cerin minimal la majoritatea SGBD-
urilor. Toate exemplele de relaii considerate pn aici au
fost n forma normal unu.
Definirea noiunii de valoare atomic e destul de
dificil. Valoarea atomic dintr-o aplicaie n alt
aplicaie poate fi considerat nonatomic. De aceea
ne vom conduce de urmtoarea regul: atributul nu
este atomic, dac n aplicaii e se utilizeaz pe
pri.
n general se cunosc dou tipuri de atribute
nonatomice. Unul din ele sunt listele sau mulimile
de valori.
Exemplul 5.4. Relaia cmin din fig.5.2(a) nu se afl n
forma normal unu, fiindc atributul NUME_STUDENT
nu e atomic.






cmin
NUME_STUDENT CAMERA
Ionescu, Vasilachi 301
Popovici 302

Grlea, Efim 303


Fig.5.2(a)

Aducerea relaiei cmin n forma normal
unu presupune eliminarea listelor de valori.
Pentru orice valoare din list pe care o poate
primi atributul NUME_STUDENT se
formeaz un tuplu aparte, coninnd numele
studentului i camera unde locuiete. Relaia
cmin adus n forma normal unu arat ca n
fg.5.2.b(b).







cmin
NUME_STUDENT CAMERA
Ionescu 301
Vasilachi 301
Popovici 302
Grlea 303

Efim 303


Fig.5.2(b)

Alt tip de atribute nonatomice sunt atributele compuse.
Exemplul 5.5. Relaia data_natere din fig. 5.3(a) nu
este n forma normal unu, dac dorim s avem accesul la
unele componente ale atributului DATA_NATERE.







data_natere
NUME_STUDENT DATA NATERE
Ionescu 9 ianuarie 1989
Vasilachi 21 februarie 1988
Popovici 15 decembrie 1987
Grlea 6 iunie 1989

Efim 9 ianuarie 1988


Fig.5.3(a)
Pentru a aduce relaia data_natere n forma
normal unu, atributul compus
DATA_NATERE se divizeaz n trei atribute
ZI, LUN, AN. Noua relaie data_natere din
fig.5.3(b) se gsete n forma normal unu.







data_natere NUME_STUDENT ZI LUN AN
Ionescu 9 ianuarie 1989
Vasilachi 21 februarie 1988
Popovici 15 decembrie 1987
Grlea 6 iunie 1989

Efim 9 ianuarie 1988


Fig.5.3(b)
Utilitatea formei normale unu este destul de
evident. Listele de valori distrug structura
natural dreptunghiular a unei relaii. Este
extrem de greu s te referi la un element din
grupul de valori, fiindc trebuie specificat
cumva poziia valorii cutate. i, bineneles,
c operaia de actualizare nu poate fi efectuat.
Cu att mai mult, c cheia NUME_STUDENT
a relaiei cmin nu poate fi specificat n cazul
unei liste de valori.
n afar de aceasta, diverse pri ale unui
atribut partiionat pot s se comporte n mod
diferit din punctul de vedere al dependenelor.
Presupunem c n prima relaie data_natere
din fig.5.3(a) s-a adugat atributul SEMN
valorile cruia sunt semnele zodiacului. Tot ce
se poate de fcut n aceasta relaie este s
stabilim dependena funcional
DATA_NATERESEMN. Dar aceasta
restricie de integritate permite ca doi indivizi
nscui n aceeai zi i aceeai lun, dar ani
diferii, s aib semne diferite ale zodiacului.

Relaia a doua data_natere din fig.5.3(b)
este lipsit de acest dezavantaj, fiindc aici se
poate defini dependena funcional ZI,
LUNSEMN, ce corespunde semanticii
semnului zodiacului, care nicidecum nu
depinde de anul n care este nscut persoana
dat, ci numai de ziua i luna naterii. Deci
unul din avantajele formei normale unu const
n aceea c ea poate exprima dependenele la
aa grad de detaliere, de care avem nevoie.
5.5. Forma normal doi
Apariia formei normale doi a fost motivat de
reducerea redundanei i eliminarea unor anomalii ce
apar la actualizarea schemelor n forma normal unu.
Considerm relaia r din fig. 5.4.






r
DISCIPLINA PROFESOR GRUPA EF_GR
Baze de date Popescu 941 Vasilachi
Programarea logic Petrache 942 Grlea
Structuri de date Ciobanu 942 Grlea

Cerc. operationale Cazacu 942 Grlea


Fig. 5.4. Relaia r n forma normal unu
Relaia r(DISCIPLIN PROFESOR GRUPA
EF_GR) este constrns de dou dependene
funcionale:
GRUP EF_GR, semnificnd c grupa de
studenti are un singur ef i GRUPA
DISCIPLINPROFESOR ce presupune c
o disciplin ntr-o grup de studiu este predat
de un singur profesor. Este evident c singura
cheie a acestei relaii este mulimea {GRUPA
DISCIPLIN}.
Relaia dat se gsete n forma normal
unu. Dar s observm dezavantajele ce le
posed o relaie cu astfel de schem.
n primul rnd, sunt limitate posibilittile de
inserare a datelor, n relaia r nu pot fi
introduse date despre o grup, adic eful
grupei, dect atunci cnd se cunoate mcar o
disciplin ce v fi predat n aceasta grup.
Atributul DISCIPLIN face parte din cheie i
nu poate avea valoare nedeterminat.
n al doilea rnd, pot fi pierderi de date la
tergere. De exemplu, n situaia cnd
disciplin Baze de date nu se mai pred grupei
941, tuplul dat trebuie ters. ns tergerea
acestui tuplu din relaia considerat determin
pierderea datelor despre eful grupei 941,
ntruct acestei grupe nu se mai predau de
acum nici o disciplin (fie din cauza c pentru
aceasta grup s-a terminat semestrul de studiu
mai devreme n legtur cu plecarea la
practic).
n al treilea rnd, persist o redundan de
date. De exemplu, faptul c Grlea este eful
grupei 942 se repet de trei ori.
Aceasta redundan implic al patrulea
dezavantaj: apariia unor inconsistene la
modificarea datelor. Presupunem c s-a
schimbat eful grupei 942. Modificarea
tuplurilor poate duce la apariia
inconsistenelor, dac numele efului de grup
nu este actualizat n toate tuplurile. n mod
normal, numele efului grupei trebuie de scris
o singura dat, lucru posibil de realizat numai
dac datele despre grup s-ar pstra ntr-o
relaie separat.
Din punctul de vedere al actualizrii fr anomalii i
ndeprtrii redundanei, pstrarea datelor n dou relaii r
1
i r
2

(vezi fig. 5.5(a), 5.5(b) e binevenit.










r
1
DISCIPLIN PROFESOR GRUPA
Baze de date Popescu CIM-941
Programare logic Petrache 942
Structuri de date Ciobanu 942

Cerc. operaionale Cazacu 942


Fig.5.5(a) Relaia r
1

r
2
GRUPA EF
941 Vasilachi
942 Grlea


Fig.5.5.(b) Relaia r
2


Este evident c relaia r se restabilete din r
1
i r
2
, adic
r= r
1
|X| r
2
.
n afar de aceasta, au disprut anomaliile de actualizare
i ne-am eliberat de careva redundan.
S trecem la expunerea strict a formei normale doi.

Definiia 5.4. Fie relaia r(R) i AeR. Atributul A se
numete primar, dac el aparine unei chei a schemei R i
nonprimar n caz contrar.

Definiia 5.5. Fie XA o dependen funcional
netrivial. Atributul A este parial dependent de X, dac
exist o submulime proprie Y a mulimii X i YA. Dac
nu exist o astfel de submulime proprie, se spune c A
depinde complet de X.
Exemplul 5.6. Fie F=(DISCIPLIN
GRUPA PROFESOR, GRUPAEF}
asupra schemei R=DISCIPLIN PROFESOR
GRUPA EF. Aici atributul EF depinde
parial de DISCIPLIN GRUPA, iar atributul
PROFESOR depinde complet de
DISCIPLIN GRUPA, ntruct mulimea de
atribute {DISCIPLIN, GRUPA} este singura
cheie a schemei R, atributele DISCIPLIN i
GRUPA sunt primare, iar PROFESOR i EF
sunt nonprimare.
Definiia 5.6. Schema unei relaii R se gsete n
forma normal doi n raport cu mulimea de dependene
funcionale F, dac ea se gsete n forma normal unu
i orice atribut nonprimar nu depinde parial de careva
cheie a schemei R. Schema bazei de date se gsete n
forma normal doi, dac orice schem relaional a ei se
gsete n forma normal doi.
Exemplul 5.7. Fie R i F din exemplul 5.6. Schema
bazei de date Db={R} nu se gsete n forma normal doi,
fiindc atributul EF depinde parial de cheia
{DISCIPLIN, GRUPA}. Dar schem Db=
{DISCIPLIN PROFESOR GRUPA, GRUPA EF}
bazei de date din fig. 5.5(a) i 5.5(1) se gsete n forma
normal doi.
ntr-adevr, n schem relaional R
1
= DISCIPLIN
PROFESOR GRUPA, atributul PROFESOR este nonprimar
i el depinde complet de cheia DISCIPLIN GRUPA. Cheia
schemei R; = GRUPA EF este atributul GRUPA. Deci
singurul atribut nonprimar e EF care depinde complet de
cheie.
Problema determinrii, dac un atribut e primar e legat de
problema gsirii cheilor unei relaii. Prin urmare,
determinarea dac o schem se gsete n forma normal doi
e o problema NP-complet.
5.6. Forma normal trei
Considerm relaia r(STUDENT DISCIPLIN
PROFESOR COD_PROF) din fig.5.6.







Relaia r este constrns de urmtoarele dependene
funcionale:
STUDENT DISCIPLIN COD_PROF,
COD_PROFPROFESOR,
PROFESOR COD_PROF.
r STUDENT DISCIPLIN PROFESOR COD_PROF
Vasilachi Baze de date Popescu P.021
Marin Baze de date Popescu P.021
Gutu Baze de date Popescu P.021

Vasilachi Programarea Petrache P.024


Fig.5.6. Relaia r(STUDENT DISCIPLIN
PROFESOR COD_PROF) n forma normal doi.

Cheia acestei relaii e format din dou
atribute STUDENT i DISCIPLIN. Deci ele
sunt primare. Atributele PROFESOR i
COD_PROF sunt nonprimare. ntruct ele
depind complet de cheie, relaia r se gsete n
forma normal doi.
Dar s observm c i aceasta relaie nu e
lipsit de unele anomalii.
n relaia r nu poate fi inserat numele unui
profesor i codul lui, dect atunci cnd acest
profesor pred mcar o disciplin n momentul
dat. Deci n r se manifest anomalia de
inserare a datelor.
n situaia, cnd profesorul Petrache nu mai
pred disciplina Programarea, operaia de
tergere a acestui tuplu determin pierderea
codului acestui profesor. Deci schema dat nu
e liber nici de anomaliile de tergere a
datelor.
n afar de aceasta, perechea de date
<Popescu P.021> se repet de attea ori ci
studeni ascult prelegerile profesorului
Popescu. Prin urmare, persist o redundan,
care poate duce la apariia anomaliilor de
modificare i inconsisten a datelor. De
exemplu, dac codul profesorului Popescu se
v schimba cu P.022, atunci neaprat trebuie
modificate toate tuplurile (dar nu se tie
numrul lor) i de fcut substituirea
corespunztoare. O singur greeal poate
duce la violarea dependenelor
PROFESORCOD_PROF
i
COD_PROFPROFESOR.
Aceste anomalii pot fi eliminate, dac relaia r se
descompune n dou relaii r
1
i r
2
din fig.5.7(a) i 5.7(b).
n afar de aceasta, relaia r poate fi restabilit prin
jonciunea proieciilor sale r
1
i r
2
. Existena jonciunii
fr pierderi este evident.












r
1
STUDENT DISCIPLINA COD_PROF
Vasilachi Baze de date P.021
Marin Baze de date P.021
Gutu Baze de date P.021

Vasilachi Programarea P.024


Fig.5.7(a). Relaia r
1
(STUDENT
DISCIPLINA COD_PROF)


r
2
PROFESOR COD PROF
Popescu P.021
Petrache P.024


Fig.5.7(b). Relaia r
2
(COD_PROF
PROFESOR)
Definiia 5.7. Fie relaia r(R), X,Y_R i
AeR. Vom spune c atributul A depinde
tranzitiv de X prin Y, dac sunt satisfcute
condiiile:
(1) XY,
(2) Y/X (adicX nu depinde funcional de
Y),
(3) YA
(4) AeXY.
n aceasta definiie, condiiile (l) i (3)
implic XA conform regulii tranzitivitii.
Condiia (2) este esenial, de altfel XY.
Condiia (4), de asemenea, e esenial, n caz
contrar XA poate fi dedus cu ajutorul
reflexivitii (dac AeX) sau cu ajutorul
regulii proiectivitii (dac AeY).
Exemplul 5.8. Considerm relaia din
fig.5.6. Atributul nonprimar PROFESOR este
tranzitiv dependent de cheia {STUDENT,
DISCIPLINA} prin COD_PROF fiindc
(1) STUDENT DISCIPLINA COD_PROF
(ntruct {STUDENT, DISCIPLINA} e cheie
i deci determin toate atribuitele din schema
relaiei r),
(2) COD_PROF /STUDENT DISCIPLINA,
(3) COD_PROFPROFESOR,
(4) PROFESOReSTUDENT DISCIPLINA.
Definiia 5.8. Schema R se gsete n forma
normal trei n raport cu o mulime de
dependene funcionale F, dac R se gsete n
forma normal unu i orice atribut nonprimar
nu depinde tranzitiv de careva cheie a schemei
R. Schema bazei de date Db{R
1
,...,R
m
} se
gsete n forma normal trei, dac orice
schema relaional R
i
eDb, l s i s m, se
gsete n forma normal trei.
Exemplul 5.9. Schema relaiei din fig. 5.6 nu
se gsete n forma normal trei, fiindc, cum
s-a vzut n exemplul 5.8, atributul nonprimar
PROFESOR depinde tranzitiv de cheia
{STUDENT, DISCIPLINA}. n schimb,
schema bazei de date din fig. 5.7(a) i 5.7(b)
Db = {STUDENT DISCIPLINA COD_PROF,
COD_PROF PROFESOR} se gsete n forma
normal trei.
ntr-adevr, s examinm pe rnd schemele
relaionale din Db. Cheia relaiei r
1
este {STUDENT,
DISCIPLINA}. Atributele antrenate n aceasta cheie
sunt primare. Singurul atribut nonprimar este
COD_PROF. El nu depinde tranzitiv de {STUDENT,
DISCIPLINA}. Deci relaia r
1
(sau schema ei) se
gsete n forma normal trei.

Ct privete relaia r
2
, n ea sunt valide dependenele
funcionale COD_PROFPROFESOR i
PROFESORCOD_PROF. Deci r
2
are dou chei
COD_PROF i PROFESOR. ntruct schema relaiei r
2

nu conine atribute nonprimare ea este n forma
normal trei.
E fireasc ntrebarea, care este corelaia
dintre forma normal trei i forma normal
doi. Rspunsul l d urmtoarea teorem.
Teorema 5.1. Schema unei relaii ce se
gsete n forma normal trei se gsete i n
forma normal doi.
Exemplul 5.10. Schema bazei de date Db= {DISCIPLINA
PROFESOR GRUPA, GRUPA EF} din fig.5.5(a) i
5.5(b) se gsete n forma normal trei, deci se gsete i n
forma normal doi.

ntr-adevr, schema R
1
= DISCIPLIN PROFESOR
GRUPA se gsete n forma normal trei, fiindc cheia e
{DISCIPLIN, GRUPA}, iar singurul atribut nonprimar
este PROFESOR i el nu depinde tranzitiv de cheie. Cheia
schemei R
2
= GRUPA EF este atributul GRUPA.
Atributul nonprimar EF nu depinde tranzitiv de GRUPA.
E uor de observat, din cele expuse mai sus, c definiia
formei normale trei poate fi formulat i altfel.
Definiia 5.9. Schema unei relaii se gsete n forma
normal trei, dac orice atribut ce depinde tranzitiv de
cheie este primar.
Atunci putem formula urmtoarea teorem.

Teorema 5.2. Schema R se gsete n forma normal
trei n raport cu mulimea de dependene funcionale F,
dac pentru orice dependen netrivial XAeF
+
.
(1) X este supercheie pentru R
sau
(2) A este atribut primar.
Exemplul 5.11. Fie schema bazei de date Db = {(AC,
{CA}), (ABE, {AEB}), (BCDEF, {BFC, CDEF,
EFCD})}.
Este uor de constatat c schema Db se gsete n forma
normal trei. ntr-adevr, schemele relaionale
R
1
= (AC, {CA})
i
R
2
= (ABE, {AEB})
se gsesc n forma normal trei fiindc nu au dependene
tranzitive. S exammm schema R
3
= (BCDEFE, {BFC,
CDEF, EFCD}). Schema R
3
are trei chei BCD, BDF i
BEF. Dependenele tranzitive BCDEF, BDFC, BEFCD
includ numai atribute primare (ele toate fac parte dintr-o
cheie). Prin urmare i schema R
3
este n forma normal trei.
5.7. Forma normal Boyce-Codd
Forma normal trei nu interzice dependen tranzitiv a
atributelor primare de cheie. ns i unele relaii n forma
normal trei nu sunt lipsite de anomaliile de actualizare a
datelor.
Exemplul 5.12. Considerm relaia r(ORA ADRESA
COD) din fig. 5.8 examinat i n exemplul 5 l. Relaia r
satisface dependenele funcionale ORA
ADRESCOD i CODORA. Mulimea de atribute
{ORA, ADRESA} formeaz cheia relaiei. Atributul
ORA e primar. Nici un atribut nonprimar nu depinde
tranzitiv de aceast cheie. Deci relaia r se afl n forma
normal trei.







r ORA ADRESA COD
o
1
a
1
c
1

o
1
a
2
c
1

o
1
a
3
c
1


o
1
a
4
c
2



Fig. 5.8. Relaia r(ORA
ADRESA COD) n forma
normal trei

ns, n ea nu putem introduce un tuplu ce conine date
despre un ora i codul lui, pn nu cunoatem adresa asociat
de acest cod.
n afar de aceast, n r se repet perechea ORA COD ce
poate duce la apariia inconsistenelor la modificarea acestor
date.
Dac relaia r e descompus n dou relaii r
1
i r
2
(precum
sunt prezentate n fig.5.9(a) i 5.9(b)), atunci aceste dezavantaje
lipsesc.








r
1

COD ADRESA
c
1
a
1

c
1
a
2

c
1
a
3


c
2
a
4



Fig 5.9(a) Relaia
r
1
(COD ADRESA)
r
2
ORA COD
o
1
c
1

o
1
c
2


Fig 5.9(b) Relatia
r
2
(ORA COD)

Definiia 5.10. Schema R se gsete n forma normal
Boyce-Codd n raport cu o mulime de dependene
funcionale F, dac pentru orice dependen XYeF
+

determinantul X este o supercheie a schemei R. Schema
bazei de date se gsete n forma normal Boyce-Codd,
dac orice schem relaional din ea se gsete n forma
normal Boyce-Codd.
Exemplul 5.13. Considernd relaia din fig.5.8 ce satisface
dependena funcional CODORA, conchidem c COD
nu este supercheie. Deci schem acestei relaii nu se gsete
n forma normal Boyce-Codd.

Examinm relaiile r
1
i r
2
din fig. 5.9(a) i 5.9(b).

Cheia relaiei r
1
const din toat mulimea de atribute
{COD, ADRES}. n r
1
nu e valid nici o dependena
funcional, n afara celor triviale. Deci schem R
1
= COD
ADRES se gsete n forma normal Boyce-Codd.
Relaia r
2
satisface dependena funcional CODORA.
Atributul COD este cheie, deci i supercheie. Prin urmare, r
2

se gsete n forma normal Boyce-Codd.

Relaia r poate fi restabilit din proiecnle sale, r
1
i r
2
.
Deci descompunerea dat posed proprietatea jonciuni fr
pierderi ns descompunerea dat nu conserv dependenele
funcionale. Dependena ORA ADRESCOD valid n
relaia r nu se deduce din dependenele valide n relaiile r
1
i
r
2
.
Din exemplul 5 13 putem face concluzia c forma
normal trei nu implic forma normal Boyce-Codd
Urmtoarea afirmaie stabilete legtura dintre forma
normal Boyce-Codd i forma normal trei.

Teorem 5.3. Dac schem R se gsete n forma
normal Boyce-Codd, atunci R se gsete i n forma
normal trei.
5.8. Normalizarea prin descompunere
5.8.1. Aducerea schemelor n forma normal
trei
Normalizarea este procesul de aducere a schemei ntr-
o forma normal dat. Algoritmul FN3 aduce schem R
n forma normal trei prin descompunere.

Algoritmul FN3 (R, F, Db)
Intrare. Schem R; F - o mulime de dependene funcionale
definite pe schem R. ieire: Db - schem bazei de date n
forma normal trei.


La nceput vom porni de la ideea c orice schem ce nu se
gsete n forma normal trei poate fi descompus ntr-o serie
de scheme ce se gsesc n forma normal trei. Descompunerea
presupune divizarea unei scheme R n dou scheme R
1
i R
2

astfel c orice relaie r(R) ce satisface mulimea dat de
dependene F se proiecteaz fr pierderi asupra schemelor R
1

i R
2
, adic

r =
R1
(r)|X|
R2
(r).

Acest proces se repet asupra schemelor R
1
i R
2
,
bineneles, pn subschemele formate sunt aduse n forma
normal trei.
n linia 3 variabila i denot schem curent, iar k
numrul de scheme deja create.

Linia 4 determin mulimea K. de chei a schemei curente
R
i
.

Linia 5 construiete mulimea AttrNP de atribute
nonprimare din R
i
.
Linia de baza a algoritmului este 6. Ea analizeaz dac
schem curent se gsete n forma normal trei. Pentru
fiecare dependena valid n schem curent cu
determinatul format numai din atribute nonprimare se
verific, dac determinantul ei este supercheie. Dac nu,
atunci conform teoremei 5.2 schema R, nu se gsete n
forma normal trei. n acest caz (linule 7-9) se produce
descompunerea schemei R
i
: se formeaz o nou schem
din atributele implicate n dependena, R
i
=XY, iar schem
R, e substituit de R
i
\Y. Conform teoremei 4.3, aceast
descompunere posed proprietatea jonciunii fr pierderi.
Apoi continu analiza schemelor deja formate. Dac n
cadrul lor nu se mai manifest dependene ce satisfac
condiiile din lima 6, atunci schem obinut se gsete n
forma normal trei.
Exemplul 5.14. Considerm schem relaional R =
DPOCSN, unde D e disciplin, P - profesor, O - ora, C -
clasa, S - student i N nota.
Presupunem c pe schem dat sunt definite urmtoarele
dependene funcionale:
DP - orice disciplin e predat de un singur profesor;
OCD - ntr-o clas n acelai timp se pred o singur
disciplin;
OPC - profesorul ntr-un anumit timp se gsete ntr-o
singur clas;
DSN - orice student are o singur not final la o
disciplin;
OSC - studentul se gsete la ora dat ntr-o singur
clas;
S se aduc schema R n forma normal trei.
De la nceputul algoritmului se formeaz schema R
1
=
R n linia 4 a fost gsit o singur cheie pentru R
1
i
anume OS. Deci {D,P,C,N} formeaz mulimea de
atribute nonprimare Pentru a aduce schema R
1
la forma
normal trei considerm dependena funcional DP
care satisface toate condiiile din lima 6 Formm o nou
schema (linia 8) R
2
= DP, iar R
1
este substituit de R
1
=
DOCSN.
Schema R
2
se gsete n forma normal trei, fiindc nu
exist vre-o dependena definit pe aceast schema i s
satisfac condiiile liniei 6. Schema R
1
nu este n forma
normal trei, fiindc exist o dependena, de exemplu,
OCD ce satisface condiiile liniei 6 se formeaz a treia
schema R
3
= OCD, dar R
1
devine de acum egal cu OSCN
Este evident c schema R
3
se gsete n forma normal trei
Schema R
1
de asemenea se gsete n forma normal trei,
fiindc singur dependena, OSC, definit pe atributele
schemei R
1
nu satisface condiiile liniei 6.
Deci schema R s-a descompus fr pierderi n R
1
, R
2
i
R
3
. Schema bazei de date Db={R
1
, R
2
,R
3
} se gsete n
forma normal trei.
S menionm c schema Db={R
1
, R
2
,R
3
} se gsete i n
forma normal Boyce-Codd.
5.8.2. Aducerea schemei la forma
normal Boyce-Codd
Adresndu-ne la definiia formei normale
Boyce-Codd, un algoritm de aducere a
schemelor n aceast form poate fi prezentat
astfel
Algoritmul FNBC (R, F, Db)
Intrare Schema R;
F- o mulime de dependene funcionale asupra
schemei R.
Ieire Db - schema bazei de date n forma
normal Boyce-Codd



Exemplul 5.15. Fie R = (ABCDEF,
{ABE, ACF, ADB, BC, CD}) S
se aduc schema R n forma normal Boyce-
Codd.
R
1
=ABCDEF. Considerm pe rnd
dependenele funcionale valide n R
1

Dependena ABE nu particip la
descompunere, fiindc (AB)
+
=ABCDEF
Considerm dependena ACF (AC)
+
=
ABCDEF, deci ACF, de asemenea, nu poate
fi aplicat la descompunerea schemei R
1
.
Acelai lucru putem spune i despre
dependena ADB, fiindc (AD)
+
=
ABCDEF.
Determinantul dependenei BC nu este
supercheie, fiindc B
+
= BC Deci R
1
se
descompune n dou scheme R
2
=BC i
R
1
=ABDEF Schema R
2
evident se gsete n
forma normal Boyce-Codd, fiindc const
numai din dou atribute. Alt dependena, ce
poate fi aplicat de acum asupra schemei R
1

modificate, este BDeF
+
unde BD_R
1

Construim schemele R
3
=BD i R
1
=ABEF
Cheia schemei R
3
este B, iar a schemei R
1
-
AB. Schema bazei de date n forma normal
Boyce-Codd este
Db={(ABEF, {AB}), (BC, {B}), (BD, {B})}
5.10. Forma normal patru
Definiia 5.12. Schema R se gsete in forma
normal patru n raport cu mulimea de dependene
multivaloare i funcionale M, dac ea se gsete n
forma normal unu i orice dependena XY din M
+

satisface:
(1) XY este trivial (adic Y_X sau XY=R)
sau
(2) X este supercheie pentru schema R.

Schema bazei de date se gsete n forma normal
patru, dac orice schem a ei se gsete n forma-
normal patru.
Procedura de aducere n forma normal patru
se bazeaz pe teorema 4.3, care ne spune c o
dependena XY e valid ntr-o relaie r(R),
dac i numai dac r(R) este jonciunea
proieciilor
XY
(r) i
XZ
(r), unde Z = R \ XY.
Procesul de normalizare decurge n felul urmtor. e ncepe
cu schema iniial R. Dac n aceast schema e valid
dependena multivaloare netrivial XY i X nu e
supercheie, atunci schema R se descompune n dou
scheme R
1
=XY i R
2
=XZ, unde Z = R \ XY. La rndul lor,
schemele R
1
i R
2
sunt considerate n privina satisfacerii
condiiilor de a fi n forma normal patru. Dac careva
schem nu e n forma normal patru, procesul de
descompunere continu pn toate schemele sunt
normalizate. Evident c procesul este finit.
Exemplul 5.22. Fie mulimea de dependene
M = {CDE, ABC}
definit pe schema R=ABCDE.
Schema R nu se afl n forma normal patru, fiindc
CDE nu e trivial i C nu este cheie.
Schema bazei de date ce const din dou scheme R
1
=CDE
i R
2
=ABC se gsete n forma normal patru.
ntr-adevr, cu toate c ABeM
+
, deci ABeM
+
i
AB nu este trivial, ns A este supercheie pentru R
2
.
Exemplul 5.23. S se normalizeze schema
R=ABCDEI, dac pe ea e definit mulimea de
dependene M={ABCD, BAC, CD}. Fiindc
ABCD nu este trivial i A nu e supercheie, schema
R se descompune fr pierderi n schemele R
1
=ABCD i
R
2
=AEI. Schema R
2
se gsete n forma normal patru: pe
ea e definit o singur dependena multivaloare trivial
AEI Cu toate c n M
+
este BAC, din BAC i
CD urmeaz BACD. Deci, B este cheia schemei R
1

i BAC nu particip la descompunerea de mai
departe a schemei R
1
. ns, din CD urmeaz dependena
netrivial CD ce descompune schema R
1
n dou:
R
3
=CD i R
1
=ABC. Schema bazei de date n forma
normal patru este DB={ABC, AEI, CD}.
Teorema 5.5. Dac schema R se gsete n forma
normal patru, atunci R se gsete n forma normal
Boyce-Codd.
5.11. Forma normal proiecie-jonciune
Definiia 5.13. Dependena jonciune |X|(R
1
,..., R
m
) este
aplicabil schemei R, dac R=R
1
,..., R
m
.
Definiia 5.14. Schema R se gsete in forma normal
proiecie-jonciune n raport cu o mulime de dependene
jonciune (dependenele multivaloare sunt aceleai dependene
jonciune) i funcionale J, dac ea se gsete n forma normal
unu i orice dependena jonciune |X|(R
1
, ..., R
m
) aplicabil din
J
+
este trivial sau orice R, este supercheie pentru R.
Definiia 4.11. Dependena jonciune
|X|(R
i
,..., R
n
,)
asupra U = R
1
...R
m
, este trivial, dac e valid
n orice relaie r cu schema U.
Exemplul 5.24. Fie mulimea de dependene J = {|X|(ABCD,
CDE, BDF), |X|(AB, BCD, AD), ABCDE, BCA} definit
pe schema R = ABCDEF.
Schema R nu se gsete n forma normal proiecie-
jonciune din cauza dependenei aplicabile |X|(ABCD, CDE,
BDF).
Schema bazei de date Db = {ABCD, CDE, BDF} se gsete
n forma normal proiecie-jonciune n raport cu J. Cu toate c
dependena jonciune |X|(AB, BCD, AD) e aplicabil schemei
relaionale ABCD, Db se gsete n forma normal proiecie-
jonciune datorit faptului c orice subschem AB, BCD i AD
este supercheie pentru schema ABCD.
Exemplul 5.25. Fie R = ABCDEF i J = {|X|(ABC, ADEF),
ABCDE, BCAF}.
Schema R se gsete n forma normal proiecie-jonciune,
fiindc cu toate c dependena |X|(ABC, ADEF) este
aplicabil schemei R, subschemele ei sunt superchei pentru
R.
Teorema 5.6. Dac schema R se gsete n forma normal
proiecie-jonciune n raport cu mulimea de dependene J,
atunci R se afl n forma normal patru.
5.12. Concluzii
Etapele de proiectare a bazei de date pot fi cele de mai
jos. Fiecare din aceste etape produce o baza de date mai
"bun" dect precedenta. Corelaia dintre diverse forme
normale este reprezentat n figj.5.ll.
(1) Iniial datele sunt nenormalizate.
(2) e elimina atributele ce formeaz mulimi de valori
sau sunt complexe. n consecin se obine schema relaiei
universale. e spune c schema acestei relaii se gsete n
forma normal unu (FN1).
(3) Pentru a ajunge la forma normal doi (FN2) se elimina
dependenele pariale de chei ale atributelor nonprimare.
(4) Forma normal trei (FN3) cere eliminarea dependenelor
tranzitive ale atributelor nonprimare de chei. De obicei muli
profesioniti n proiectarea bazelor de date se limiteaz la
aceast forma normal.
(5) Dup nlturarea tuturor dependenelor tranzitive, se obine
forma normal Boyce-Codd (FNBC).
(6) Forma normal patru (FN4) soluioneaz problemele
cauzate de dependenele multivaloare netriviale.
(7) Forma normal proiecie-jonciune (FNPJ) se refer la
soluionarea problemei descompunerii fr pierderi a relaiilor.




Fig.5.11. Corelaia dintre formele normale

n afar de facilitile pe care ni le ofer o
schema a bazei de date, construit conform
rigorilor tiinifice, normalizarea creeaz i
dou probleme: micorarea eficienei cutrii
datelor i apariia unor duplicate de date.

Un efect adiional al normalizrii este
creterea numrului de structuri de date n
baza de date. Aceast ns afecteaz eficiena
de cutare a datelor n sistemul informatic.
Dei normalizarea reduce spaiul total necesar
de pstrare a datelor, ns crete timpul n care
poate fi cutat informaia. Pentru procesarea
interpelrilor i extragerii rspunsurilor apare
necesitatea rejoncionrii relaiilor. Prin
aceast i se explic faptul c primele baze de
date relaionale au aprut pe calculatoare
performante, iar mai trziu au aprut sisteme
instalate pe microcomputere.
n ceea ce privete duplicatele de date trebuie de
menionat c ele nu pot fi comparate cu redundana de date
ce este redus n procesul de normalizare. Redundana
genereaz anomalii de actualizare a datelor. Pe cnd
duplicatele aprute dup normalizare, nu genereaz
asemenea anomalii. Aici e vorba de atributele ce formeaz
determinantul dependenei care particip la descompunere.
Atributele determinantului apar n ambele scheme produse
din schema precedenta.

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