Sunteți pe pagina 1din 9

BAZE DE DATE

CURS nr. 8

3.1. Bazele modelului relaional


Conceptul de baz de date introduce termenul de abstractizare a datelor prin mascarea fa de
utilizator a detaliilor legate de tehnica de stocare a datelor n calculator. Principalul instrument
folosit la realizarea acestui scop este modelul de date, care este alctuit dintr-un set de concepte ce
pot fi utilizate la descrierea structurii bazei de date, cum ar fi de exemplu, tipurile de date, relaiile
i constrngerile stabilite pentru datele reprezentate.
Exist trei tipuri de modele de date: modelul de date conceptual, modelul de date logic i
modelul de date fizic.

3.1.1. Modelul conceptual


Folosete o serie de concepte, cum ar fi entitate, relaie i atribut pentru a descrie ct mai fidel
modul n care este perceput de ctre utilizator realitatea ce urmeaz a fi reprezentat n cadrul unei
baze de date. Pentru a realiza un model conceptual ct mai corect se folosesc o serie de instrumente
ce ajut n modelare, dintre care cel mai folosit este diagrama entitate-relaie. De obicei, proiectarea
unui model conceptual respect urmtorul algoritm:
Pasul 1. Identificarea tipurilor de entiti. Const din identificarea i documentarea
principalelor tipuri de entiti din punct de vedere al beneficiarului bazei de date. n acest
scop este necesar citirea cu atenie a tuturor specificaiilor i cerinelor acestuia, urmat de
crearea unei liste a potenialelor tipuri de entiti. Tipurile de entiti reprezint obiectele sau
conceptele ce prezint cel mai mare interes n cadrul sistemului. De obicei, se creeaz mai
multe tipuri de entiti dect este necesar, urmnd ca ulterior s se recurg la o rafinare a
acestora, eliminndu-se unele dintre ele.
Pasul 2. Eliminarea tipurilor de entiti duplicat. n primul rnd trebuie s se obin
asigurarea c, ntr-adevr, fiecare tip de entitate utilizat reprezint un tip distinct de entitate
i nu nume diferite ale aceluiai tip de entitate. Este foarte important s nu se cad n
capcana definirii unui tip de entitate care s reprezinte ntregul sistem. De exemplu, la
modelarea unei biblioteci, tipurile de entiti pot fi crile, autorii, cititorii etc., dar n nici un
caz nu poate fi definit un tip de entitate biblioteca deoarece aceasta reprezint ntregul
sistem.
Pasul 3. Identificarea tipurilor de relaii. n cadrul acestei etape se recurge la identificarea
i documentarea celor mai importante tipuri de relaii ce se pot stabili ntre tipurile de entiti
rmase dup parcurgerea pasului anterior. n acest scop se examineaz fiecare tip de entitate
n parte pentru a putea determina poziia i legturile acesteia n cadrul sistemului. n acelai
timp se face o analiz a cardinalitii i a participrii fiecrui tip de entitate, identificndu-se
totodat constrngerile impuse tipurilor de entiti participante.
Pasul 4. Identificarea i asocierea atributelor corespunztoare fiecrui tip de entitate
sau relaie. n aceast etap trebuie obinut asigurarea c tipurile de entiti sunt cu
adevrat necesare i nu sunt atribute ale altor tipuri de entiti. De exemplu, telefonul poate
fi o entitate de sine stttoare sau un atribut exprimat sub forma unui numr de telefon
atribuit tipului de entitate Studeni.
Pasul 5. Stabilirea domeniilor de valori ale atributelor. Se realizeaz printr-o analiz
amnunit a situaiilor ce pot apare, documentndu-se fiecare hotrre luat.
Pasul 6. Stabilirea atributelor cheie candidat i primar. Dac n cadrul analizei se
identific mai multe chei candidat, se stabilete cheia primar, documentndu-se hotrrea
luat.
Pasul 7. Specializare/generalizarea tipurilor de entiti. Aceasta etap este una opional
n cadrul modelului relaional i are ca efect stabilirea superclaselor, respectiv a subclaselor
tipurilor de entiti, dac este cazul.

BAZE DE DATE

CURS nr. 8

Pasul 8. Construirea diagramelor entitate-relaie. Prin parcurgerea acestei etape se


asigur o mai bun nelegere a realitii care se modeleaz.
Pasul 9. Eliminarea tipurilor de relaii duplicat.
Pasul 10. Revizuirea diagramei entitate-relaie mpreun cu beneficiarul bazei de date.
Modelarea realizat cu ajutorul unei diagrame entitate-relaie este un proces iterativ. De obicei, nu
exist o singur soluie i, ca urmare, nici o singur diagram de acest fel. Din acest motiv se
practic crearea mai multor diagrame entitate-relaie urmat de rafinarea fiecrei variante din care
se va alege ulterior, mpreun cu beneficiarul bazei de date, diagrama optim. De remarcat este
faptul c, de cele mai multe ori, nu se poate spune c o variant este mai bun dect alta, dar unele
variante pot oferi soluii mai bune dect altele.

Implementarea tipurilor de relaii n cadrul tabelelor


Dndu-se o relaie R care se stabilete ntre dou tipuri de entiti E i F se impun urmtoarele
reguli:
- dac relaia E-R-F este de tip unu-la-muli, cheia primar a relaiei F se introduce n relaia E;
- dac relaia E-R-F este de tip unu-la-unu, cheia primar a relaiei E se introduce n relaia F, sau
cheia primar a relaiei F se introduce n relaia E;
- dac relaia E-R-F este de tip muli-la-muli, se creeaz o nou relaie ce conine cheile primare
att ale lui E ct i ale lui F;
- dac relaia R are atribute, acestea trebuie transferate n cadrul unei relaii folosindu-se cheile
externe.

3.1.2. Modelul logic


Acest model folosete concepte ce mai pot fi nelese nc de ctre utilizator, dar care presupun
reprezentri referitoare la modul n care utilizatorul dorete s vizualizeze datele. n continuare
tehnicile de nmagazinare a datelor rmn transparente utilizatorului. Proiectul logic al unei baze de
date relaionale creeaz i valideaz modelul logic de date local. Scopul urmrit este acela de a
construi un model logic de date bazat pe modelul conceptual de date creat anterior, dup care se
trece la validarea acestui model cu ajutorul tehnicii normalizrii. Un astfel de model parcurge, de
regul, urmtorul algoritm:
Pasul 1. Transformarea modelului conceptual local n model logic local de date. n acest
scop se trece la rafinarea modelului conceptual de date local, prin eliminarea caracteristicilor
incomode:
a. eliminarea relaiilor muli-la-muli;
b. eliminarea relaiilor complexe;
c. eliminarea relaiilor recursive;
d. eliminarea relaiilor ce conin atribute;
e. revizuirea relaiilor unu-la-unu.
Pasul 2. Stabilirea relaiilor corespunztoare modelului logic de date. n aceast etap se
creeaz i documenteaz fiecare relaie, inclusiv cheile primare i externe.
Pasul 3. Validarea modelului folosind tehnica normalizrii.
Pasul 4. Validarea modelului n cazul folosirii tranzaciilor. Trebuie s se obin
asigurarea c modelul de date creat suport tranzaciile cerute de ctre beneficiarul bazei de
date.
Pasul 5. Stabilirea constrngerilor de integritate. n acest scop trebuie identificate:
a. datele necesare;
b. integritatea referenial;
c. constrngerile de domeniu impuse atributelor;
d. constrngerile logice;
e. integritatea entitii.
Pasul 6. Revizuirea modelului logic local mpreun cu beneficiarul bazei de date.

BAZE DE DATE

CURS nr. 8

Pasul 7. Construirea i validarea modelului logic global de date. Scopul acestei etape
este acela de a realiza, pe baza modelelor logice locale de date un singur model logic global
ce poate fi utilizat la reprezentarea realitii care se modeleaz.
Pasul 9. Unificarea modelelor logice locale n cadrul unui singur model loc global. Se
urmresc:
- revederea numelor tipurilor de entiti i a cheilor primare;
- revederea numelor relaiilor;
- aducerea n cadrul unui singur model a tipurilor de entiti din cadrul modelelor
logice locale;
- introducerea n cadrul modelului logic global a tipurilor de entiti specifice
fiecrei vederi logice locale;
- aducerea n cadrul unui singur model a tipurilor de relaii din cadrul modelelor
logice locale;
- cutarea tipurilor de entiti i relaii lips;
- verificarea cheilor externe;
- verificarea constrngerilor de integritate;
- crearea modelului logic global de date;
- actualizarea documentaiei.
Pasul 10. Validarea modelului logic global. Se face prin utilizarea normalizrii.
Pasul 11. Prevederea modificrilor ce trebuie efectuate n vederea dezvoltrilor
ulterioare.
Pasul 12. Revizuirea modelului logic global mpreun cu beneficiarul bazei de date.

3.1.3. Modelul fizic


Acest tip de model descrie reprezentarea datelor n formatul, modul de acces i ordinea real n care
acestea sunt pstrate. Fiecare cmp dintr-un tabel are un anumit tip de dat. Standardul SQL-92
suport o varietate foarte larg de tipuri de date dintre care enumerm:
- char(n) sau character(n): ir de caractere de lungime fix, stabilit de utilizator;
- varchar(n) sau character varying: ir de caractere de lungime variabil a crui lungime maxim
este stabilit de ctre utilizator;
- int sau integer: tipul ntreg a crui lungime depinde de sistem;
- smallint: tip ntreg de dimensiuni mai mici a crui lungime depinde de sistem;
- numeric(p, d): un numr zecimal a crui precizie este stabilit de ctre utilizator, ce const dintrun numr total de cifre (p), dintre care d reprezint cifrele de la partea zecimal; de exemplu,
numeric(3, 1) permite stocarea numrului 1.22 exact aa cum apare i nu n formatul 1.2;
- real sau double precision: numere reale a cror precizie depinde de sistem;
- float(n): numr real a crui precizie este stabilit de ctre utilizator (n cifre);
- date: tip de dat calendaristic;
- time: exprim ora unei zile n ore, minute i secunde.
SQL-92 permite efectuarea de calcule aritmetice i de comparaii pe diverse intervale numerice,
folosind operatori de transformare a tipurilor (cast).

3.2. Normalizarea bazelor de date. Forme normale


3.2.1. Normalizarea
Normalizarea reprezint proiectul logic al unei baze de date. Principalul obiectiv al unui proiect
logic este dezvoltarea schemelor relaionale corecte. n acest scop trebuie:
- evitate datele redundante;
- evitate anomaliile de modificare;
- asigurat reprezentarea relaiilor dintre atribute;
- facilitat verificarea actualizrilor care nu trebuie s foreze integritatea bazei de date.

BAZE DE DATE

CURS nr. 8

Normalizarea este un proces de reducere a redundanelor i cretere a stabilitii unei baze de date.
Existena redundanelor ntr-o baz de date produce urmtoarele efecte defavorabile:
- pierdere inutil de spaiu;
- scderea performanelor de cost;
- apariia inconsistenelor;
- imposibilitatea reprezentrii datelor.
Normalizarea presupune determinarea locului n care trebuie plasate anumite date n cadrul
tabelelor bazei de date, stabilind totodat relaiile dintre acestea. Prin cuvntul norm se
nelege respectarea unui standard i reprezint setul de condiii impuse i cunoscute sub denumirea
de forme normale. Pentru a respecta aceste reguli trebuie identificate condiiile care trebuie
respectate n scopul evitrii nclcrii integritii datelor impunndu-se n acest scop descompunerea
relaiilor. Denormalizarea este procesul invers, opus normalizrii efectuat cu scopul mbuntirii
performanelor bazei de date.
Normalizarea este, cu alte cuvinte, un proces de descompunere a unui tabel n dou sau mai
multe tabele cu scopul eliminrii redundanelor care genereaz anomalii de actualizare. n
timpul procesului de normalizare, structura tabelelor se testeaz cu ajutorul formelor normale care
impun regulile de descompunere.
O form normal reprezint, cu alte cuvinte, un set specific de reguli ce pot fi utilizate n
scopul testrii structurii unui tabel pentru a obine asigurarea c structura respectiv nu pune
probleme la introducerea sau extragerea datelor.
Formele normale folosite n mod curent sunt Prima, A doua, A treia form normal, Forma normal
Boyce-Codd, A patra i A cincea form normal.

Descompuneri
Fie U o schem de relaie. Un set de scheme de relaii {R1 , R2 , ... , Rn} reprezint o descompunere a
lui U dac i numai dac:
U = R1 R2 Rn
i dac la reunire nu se pierde informaie.
O descompunere {R, T} a lui U se face fr pierdere de informaie (referitor la setul de
constrngeri) dac:
U R T

n cazul oricrei instane a R, T, i U. Altfel, descompunerea se spune a fi cu pierdere de informaii.


Un caz mai general este ns:
U R

Dei descompunerea unui tabel n tabele mai mici este de dorit dintr-un anumit punct de vedere, n
scopul reducerii redundanelor i evitrii anomaliilor, totui o astfel de ntreprindere implic
anumite riscuri care, n principal, se manifest sub dou aspecte:
- posibila pierdere de informaie;
- posibila pierdere a dependenelor.
Se prezint n continuare un exemplu de pierdere de informaie.
Descompunerea R = {A, B}
A

A(r)

B(r)

BAZE DE DATE

CURS nr. 8

R1 = {A} R2 = {B}
A ( r)

B ( r)
A

Proprietile descompunerii
O schem relaional R care are o mulime de dependene funcionale F se descompune n relaiile
R1 i R2.
1. Lipsa pierderii de informaie.
Se verific dac cel puin una dintre urmtoarele dependene se afl n F+
R1R2 R1
R1R2 R2
Dac nu, descompunerea se poate face cu pierdere.
2. Pstrarea dependenelor.
Fie Fi o mulime de dependene din F+ ce conine doar atributele relaiei Ri (cu notaia: Fi =
Ri ( F ) ).
Se verific dac (F1 F2)+= F+. Dac se modific o relaie nu trebuie s se verifice dac se
pstreaz dependenele n celelalte relaii.
3. Eliminarea redundanelor.

Dependene funcionale
Dependenele funcionale sunt constrngeri aplicate mulimii de relaii din baza de date. Acestea
permit exprimarea unor fapte din lumea real. Noiunea generalizeaz ideea de supercheie. K este o
supercheie a relaiei R dac n orice situaie n care t1[K] = t2[K], t1[R] = t2[R].
Dependenele funcionale permit exprimarea constrngerilor ce nu pot fi exprimate prin intermediul
supercheilor (cheia primar, cheia candidat). O mulime F de dependene funcionale poate fi
folosit n dou moduri:
- pentru a specifica constrngerile aplicate relaiilor;
- pentru a verifica dac relaiile mai sunt valabile n cazul aplicrii mulimii de dependene
funcionale.
Un atribut A este dependent funcional de o mulime de atribute B dac i numai dac:
- valoarea lui A este determinat numai prin intermediul valorilor lui B;
- valorile lui B determin n mod unic o valoare a lui A
Dependena funcional se reprezint astfel:
BA
ceea ce nseamn c o valoare a lui B afecteaz valoarea lui A. O valoare a lui A nu afecteaz o
valoare a lui B. B reprezint determinantul, A reprezint dependentul/determinatul.
Dependenele funcionale sunt utilizate n scopul verificrii corectitudinii unei relaii.
Exemple:

BAZE DE DATE

CURS nr. 8

a. K este o supercheie a relaiei R dac K R astfel nct pentru orice t1[k] = t2[k], t1[R]= t2[R]. K
determin funcional toate atributele dintr-un tuplu al lui R.
b. Eliminarea redundanelor (dependena parial, dependena tranzitiv, dependena funcional
propriu-zis, aseriunile logice ce implic dependene funcionale).
c. Verificarea constrngerilor aplicate pe un set de relaii.
d. Verificarea corectitudinii modelului entitate-relaie.
e. Verificarea reprezentrilor ntlnite n diagramele entitate-relaie (atribute ale unor entiti
incorect alese, stabilirea de constrngeri de cardinalitate eronate, lipsa tipurilor de relaie unu-lamuli corespunztoare tipului de entitate ales sau existena atributelor multivaloare).
Dndu-se o relaie R care are o mulime de dependene funcionale F, i o cheie K se impune
identificarea atributelor independente:
1. Cheia trebuie s identifice toate atributele unei relaii i dac un atribut depinde doar de o parte
a cheii, atunci se spune c el este parial dependent de cheie.
2. Dac un atribut depinde de o cheie n mod tranzitiv, atunci el depinde n mod direct de alt
atribut i, ca urmare, este independent de cheie. Atributul este dependent tranzitiv fa de cheie
3. Dependenele funcionale sunt transparente modelului entitate-relaie.

Clasa dependenelor funcionale


Clasa reprezint n matematic mulimea elementelor distincte ale unei mulimi.
Definiie: Fie F o mulime de dependee. Clasa dependenelor funcionale corespunztoare mulimii
F (F+), este alctuit din toate dependenele funcionale generate de dependenele mulimii F.
Exemplu:
R = {A, B, C, D}
F= {A B, A C, CD A}
Elementele mulimii F+ sunt:
A BC
CD B
AD B
AD ABCD
+
Dac R F atunci este o supercheie (cheie candidat, cheie primar) a lui R.
Axiomele lui Armstrong ajut la determinarea clasei dependenelor funcionale.
Reflexivitatea: Dac atunci (oricare ar fi mulimile de atribute i ).
Exemplu: {D} {D,C}, astfel nct DC D
Augmentarea: Dac atunci .
Exemplu: dac C D, atunci BC BD
Tranzitivitatea: Dac i atunci .
Exemplu: dac C D i DE, atunci C E.
Axiomele lui Armstrong sunt necesare i suficiente. Sunt necesare pentru c genereaz numai
dependene funcionale corecte i sunt suficiente deoarece genereaz toate dependenele funcionale
posibile (F+) pe baza unei mulimi date, F.
Mai exist i alte proprieti suplimentare:
Reuniunea: Dac i atunci .
Exemplu: dac C D i C B atunci C BD
Descompunerea: Dac atunci i .
Exemplu: dac C BD atunci C B i C D
Pseudotranzitivitatea: Dac i atunci .
Exemplu: dac C D i AD B atunci CA B
Aceste proprieti sunt necesare.

BAZE DE DATE

CURS nr. 8

Dependene multivalorice
Urmtorul pas necesar este cel de determinare a tuturor dependenelor multivalorice care sunt
generate n mod logic de o mulime dat de dependene multivalorice.
Fie R o schem de relaie i R , R . n relaia R exist o dependen multivaloric
dac n orice relaie r( R), oricare ar fi perechile de tupluri t1 i t2 din r pentru t1[] = t2[],
exist tuplurile t3 i t4 n r astfel nct:
t1[] = t2[] = t3[] = t4[]
t3[] = t1[]
t3[ R -] = t2[ R - ]
t4[] = t2[]
t4[ R -] = t1[ R -]
Reprezentarea tabelar a dependenei multivalorice este:

t1
t2
t3
t4

a1 ai
a1 ai
a1 ai
a1 ai

ai+1aj
bi+1bj
ai+1aj
bi+1bj

R--
aj+1an
bj+1bn
bj+1bn
aj+1an

Fie R o schem de relaie cu o mulime de atribute ce se pot divide n trei submulimi nevide, A, B,
C. A B (A l multidetermin pe B) dac i numai dac pentru toate relaiile posibile r( R)
{a1 , b1 , c1} r i {a1 , b2 , c2} r rezult
{a1 , b1 , c2} r i {a1 , b2 , c1} r
Definiia de mai sus presupune formalizarea noiunii prin care unei valori oarecare a lui A i este
asociat o mulime de valori ale lui B i o mulime de valori ale lui C, iar mulimile B i C sunt
independente una fa de alta.
Dependenele multivalorice sunt utilizate n dou moduri:
1. Pentru a verifica corectitudinea relaiilor n cazul apariiei unei mulimi de dependene
funcionale i multivaloare.
2. Pentru a specifica constrngerile aplicate mulimii de relaii.
Dac o relaie r nu satisface o dependen multivaloric, se poate crea o alt relaie r care satisface
dependena multivaloric prin adugarea de tupluri relaiei r.
Aici se folosete acelai concept ca i n cazul dependenelor funcionale. Fie D o mulime de
dependene funcionale i multivalorice. Mulimea D+ a lui D reprezint mulimea tuturor
dependenelor funcionale i multivalorice generate de D. Mulimea D+ se poate calcula pe baza
mulimii D, cu ajutorul definiiilor formale ale dependenelor funcionale i multivalorice dar,
pentru a determina mulimea dependenelor, sunt mai uor de folosit regulile de inferen.
Urmtoarea list de reguli de inferen aplicate dependenelor funcionale i multivalorice este
necesar i suficient (primele trei reguli reprezint axiomele lui Armstrong):
1. Reflexivitatea. Dac reprezint mulimea atributelor i , atunci .
2. Augmentarea. Dac i nu este o mulime de atribute, atunci .
3. Tranzitivitatea. Dac i , atunci .
4. Complementaritatea. Dac , atunci R - - .
5. Augmentarea multivaloric. Dac , iar R i , atunci .
6. Tranzitivitatea multivaloric. Dac i , atunci - .

BAZE DE DATE

CURS nr. 8

7. Duplicarea. Dac , atunci .


8. Cuplarea. Dac , iar , exist astfel nct R, iar = i
.

, atunci

Pstrarea dependenelor
Problema pstrrii dependenelor, atunci cnd vorbim despre dependenele multivalorice, nu este la
fel de simpl ca n cazul dependenelor funcionale. O descompunere a schemei R n schemele
R1,R2, . . .,Rn este o descompunere cu pstrarea dependenelor, corespunztoare mulimii D a
dependenelor funcionale i multivalorice dac, pentru fiecare mulime de relaii r1(R1), r2(R2), . . . ,
rn(Rn) oricare ar fi i, ri satisface Di (restricia mulimii D pe Ri), exist o relaie r(R) care satisface
mulimea D i pentru care ri = Ri(r), oricare ar fi i.
Dac se d o mulime de dependene funcionale i multivalorice, proiectul bazei de date ar
trebui s ndeplineasc urmtoarele trei criterii:
1. S fie adus la forma normal 4.
2. S pstreze dependenele.
3. S nu piard informaie.
Dac nu pot fi ndeplinite toate cele trei criterii, se poate ajunge la un compromis, cerndu-se
respectarea doar a primelor dou criterii.

Dependenele de cuplare (jonciune)


Proprietatea de lips a pierderilor datorate cuplrilor este una dintre proprietile necesare
obinerii unui proiect corespunztor al unei baze de date, datorit faptului c dac aceast
proprietate nu se respect se pierde informaie. Dup ce relaiile au fost testate n raport cu
dependenele funcionale i multivalorice, este obligatoriu s se foloseasc aceste dependene
pentru a arta c descompunerile nu au pierderi de informaie datorate cuplrilor.
Fie R o schem de relaie i R1, R2, . . ., Rn o descompunere a lui R. Dependena de cuplare *(R1,
R2, . . . , Rn) este folosit pentru a restrnge mulimea relaiilor la acelea pentru care R1, R2, . . .,Rn
nu reprezint o descompunere cu pierdere de cuplare a lui R. Formal, dac R = {R1, R2 . . . Rn}, se
spune c o relaie r(R) satisface dependena de cuplare *(R1, R2, . . .,Rn) dac:
r = R1 ( r ) R2 ( r ) ... Rn ( r )
O dependen de cuplare este trivial dac una dintre relaiile Ri este chiar R. Fie dependena de
cuplare *(R1, R2) pe schema R. O astfel de dependen impune ca pentru toate r(R),
r = R1 (r)

R2 (r)

Fiecare dependen de cuplare de forma *(R1, R2) este, din acest motiv, echivalent cu o dependen
multivaloric. Exist ns dependene de cuplare care nu sunt echivalente cu nici o dependen
multivaloric. Cel mai simplu exemplu de astfel de dependen l reprezint schema:
R = {A, B, C}
cu dependena de cuplare:
*((A, B), (B, C), (A, C))
care nu este echivalent cu nici o mulime de dependene multivalorice.
Aa cum dependena multivaloric reprezint o modalitate prin care se demonstreaz independena
unei perechi de relaii, dependena de cuplare este o modalitate de a demonstra c elementele unei

BAZE DE DATE

CURS nr. 8

mulimi de relaii sunt independente unele fa de altele. Noiunea de independen a relaiilor este
o consecin natural a modului general de definire a unei relaii.
n cazul dependenelor funcionale i multivalorice, este posibil folosirea unui set de reguli
necesare i suficiente. Din pcate un set de reguli asemntor nu exist i n cazul dependenelor
de cuplare.