Sunteți pe pagina 1din 7

CURSUL 2

1. Definirea modelului relaţional


2. Normalizarea relaţiilor
3. Nivelul intern (fizic)
4. Proiectarea bazei de date

1. Definirea modelului relaţional

Modelul relaţional are la bază conceptul de relaţie definit în teoria matematică a


mulţimilor, ca fiind o submulţime a produsului cartezian al mai multor mulţimi:
Familia de mulţimi pe care este definită relaţia se numeşte domeniu, iar dacă M1 = M2
= … = Mn, relaţia este omogenă. Numărul n se numeşte gradul relaţiei (aritatea
relaţiei), un element al relaţiei t = (m1, m2, … , mn) este numit tuplu, iar numărul de
tupluri indică cardinalul relaţiei.
Relaţiile se reprezintă într-o formă simplă prin tabele.

Prelucrarea relaţiilor se face prin algebra relaţională

Operatorii relaţionali se pot grupa în operatori de bază, care pot genera toată clasa
operatorilor relaţionali şi operatori auxiliari. Operatorii relaţionali de bază se împart
în operatori de asamblare şi operatori unari.
Operatorii de asamblare sunt operatori binari, care primesc la intrare 2 relaţii şi
generează la ieşire o singură relaţie. Aceştia sunt: reuniunea, diferenţa şi produsul
cartezian, care au aceeaşi semnificaţie ca şi în teoria mulţimilor. Operatorii unari se
aplică asupra unei relaţii şi generează o altă relaţie. Din această clasă fac parte
proiecţia şi selecţia.
Proiecţia relaţiei R de schemă R (A1, A2, … , An) după atributele Ai1, Ai2, … , Aip (ii ≠ ik
şi p < n) este relaţia R’ de schemă R’ (Ai1, Ai2, … , Aip), ale cărei tupluri se obţin prin
eliminarea valorilor atributelor din R care nu apar în R’ şi prin suprimarea dublurilor.
R’ = Π Ai1, Ai2, … , Aip (R)
Altfel spus, prin intermediul proiecţiei, dintr-un tabel cu un anumit număr de coloane
se obţine unul cu un număr mai mic de coloane.
Selecţia relaţiei R faţă de criteriul Q este relaţia R’ cu aceiaşi schemă ca şi R, ale cărei
tupluri satisfac criteriul (predicat).
Q = Ai1 θ1 C1 Λ Ai2 θ2 C2 Λ Aip θp Cp, unde θi = ⎨ < , ≤ , > , ≥ , ≠ ⎬ , Ci - constante
Altfel spus, prin operatorul de selecţie, dintr-un tabel cu un anumit număr de coloane
se obţine unul cu aceleaşi coloane, dar cu un număr mai mic de rînduri.

Baze de date Cursul 2 NP 1/7


Operatorii auxiliari pot fi deduşi din setul de operatori de bază şi sunt: compunerea
(Join), intersecţia şi împărţirea (diviziunea). Compunerea condiţională (Join) a
două relaţii R1 şi R2 după calificatorul multi –atribut Q este relaţia E ale cărei tupluri
sunt cele ale produsului cartezian R1 x R2 care satisfac calificatorul Q. Funcţie de
calificatorul Q se disting mai multe tipuri de compuneri:
‰ dacă Q este de forma Ai = Bj , se numeşte echicompunere;
‰ dacă Q este de forma Ai θ Bj : unde θ = ⎨ < , ≤ , > , ≥ , ≠ ⎬ se numeşte θ
compunere, şi poate fi exprimată în funcţie de operatorii de bază.
‰ dacă Q este de forma Ai = Aj se numeşte autocompunere.
Privită prin prisma modelului relaţional, baza de date apare ca o colecţie de relaţii
(tabele) normalizate, în care fiecare coloană reprezintă un atribut distinct iar fiecare
rând un tuplu distinct. Tuplurile unei relaţii se pot identifica în mod unic prin
intermediul valorilor unuia sau mai multor atribute (eventual toate atributele), care
joacă rol de cheie primară a relaţiei respective. Se numeşte domeniu primar, un
domeniu pe care este definit un singur atribut drept cheie primară. Dându-se două
relaţii R1 şi R2 cu atributele A1 şi A2 chei primare definite pe acelaşi domeniu primar
D, spunem că A1 este cheie externă, dacă utilizând o parte din valorile ei sau toate,
putem regăsi tuplurile relaţiei R2. Altfel spus, un atribut al unei relaţii este cheie
externă, dacă se regăseşte pe post de cheie primară într-o altă relaţie.
Deoarece relaţiile reflectă un anumit aspect din realitate, acestea se supun unor
restricţii care sunt de două tipuri:
‰ restricţii de integritate care depind de semantica valorilor domeniilor şi care
cer ca relaţiile să se supună următoarelor reguli:
9 integritatea entităţii, prin care valorile cheii primare trebuie să fie diferite de
zero; altfel cheia nu va mai fi identificator;
9 integritatea referirii, potrivit căreia valorile unei chei externe trebuie să
refere tuplurile unei alte relaţii sau să fie nedefinite.
‰ alte restricţii care se aplică asupra tuplurilor relaţiei şi nu asupra domeniilor,
reflectând anumite corelaţii de ordin valoric (egalitate, inegalitate).

2. Normalizarea relaţiilor

E. F. Codd, a arătat că într-o anumită formă relaţiile posedă proprietăţi nedorite, pe


care le-a numit anomalii de actualizare:
‰ Anomalia de ştergere
‰ Anomalia de adăugare
‰ Anomalia de modificare
Pentru a înlătura aceste anomalii, Codd a stabilit trei forme normale pentru relaţii şi a
introdus procesul de normalizare care se bazează pe noţiunea de dependenţă
funcţională (FD) ca relaţie între atributele unei entităţi ce are un caracter invariant.
Fie date două atribute D şi E şi notăm domeniul valorilor lui D cu DOM (D) şi
domeniul valorilor lui E cu DOM (E) şi o funcţie f: DOM (D) → DOM (E). Spunem
că f este o dependenţă funcţională, dacă pentru (∀) d ∈ DOM (D) distinct îi

Baze de date Cursul 2 NP 2/7


corespunde o singură valoare e ∈ DOM (E). Atributul D se numeşte “determinantul”
dependenţei, iar dependenţa se simbolizează D → E. Dependenţa funcţională poate fi
generalizată pe mai multe atribute: f: A1, A2, …, An → B1, B2, …, Bm unde A1, A2, …,
An se numeşte “partea stângă” iar B1, B2, …, Bm se numeşte “partea dreaptă” a FD-
ului.
O dependenţă funcţională f: DOM (D) → DOM (E) este elementară (completă), dacă
nu există o altă dependenţă f’: DOM (D’) → DOM (E), unde DOM (D’) ⊂ DOM (D)
sau, altfel spus, dacă “partea stângă” nu mai poate fi descompusă astfel încât
rezultatul obţinut să fie tot o dependenţă funcţională. Dacă f: D1, D2,…, Dm, Dm + 1, …
, Dn → E şi g: D1, D2,…, Dm → E sunt două FD-uri, unde m < n, atunci atributele Dm
+ 1, … , Dn se numesc atribute superflue pentru f, deoarece atributele D1, D2,…, Dm
sunt suficiente pentru a-l determina funcţional pe E. În această situaţie spunem că E
este dependent parţial de D1, D2,…, Dn.
Fie R [A1, A2,…, An] o relaţie şi K o submulţime a mulţimii de atribute (K ⊆ {A1,
A2,…, An}). Spunem că submulţimea K este cheie primară pentru relaţia R dacă sunt
îndeplinite următoarele condiţii:
‰ (∀) Ai ∉ K, Ai este dependent funcţional pe K;
‰ (∀) K’ ⊂ K, Ai nu este dependent funcţional pe K’.
Armstrong a introdus un set de axiome şi reguli de inferenţă, care permit prelucrarea
dependenţelor funcţionale. Notând cu M mulţimea atributelor relaţiei R, axiomele lui
Armstrong sunt:
A1. Reflexivitatea: dacă A ⊆ B ⊆ M ⇒ A → B;
A2. Creşterea: dacă A → B şi X ⊆ M ⇒ AX → BX;
A3. Tranzitivitatea: dacă A → B şi B → C ⇒ A → C.
Din cele trei axiome rezultă următoarele reguli de inferenţă:
R1. Reuniunea: dacă A → B şi A → C ⇒ A → BC;
R2. Pseudotranzitivitatea: dacă A → B şi XB → C ⇒ AX → C;
R3. Descompunerea: dacă A → BC ⇒ A → B şi A → C.
O relaţie este în forma normală 1 (1NF), dacă şi numai dacă toate atributele ei conţin
numai valori atomice (fig. 1.a.).
Cheia primară a relaţiei R este compusă din P# şi B#, iar atributele U, X, C, L şi T nu
sunt complet dependente funcţional de aceasta. De asemenea perechile de atribute (L,
C) şi (L, T) sunt mutual dependente. Această relaţie posedă anomaliile de actualizare
prezentate mai înainte, de exemplu:
‰ nu putem adăuga un tuplu pentru care nu cunoaştem beneficiarul (B#) şi
localitatea (L), deoarece conform regulii de integritate a entităţii nici o
componentă a cheii primare (P#, B#) nu poate fi nulă;
‰ dacă produsul P5 nu mai poate fi fabricat temporar, deci trebuie şters tuplul
(P5, buc, 30, 10, B2, Ploieşti, 500, 244), înseamnă că se pierd şi informaţiile
despre beneficiarul B2, care mai sunt necesare în continuare;

Baze de date Cursul 2 NP 3/7


‰ dacă după o perioadă de timp intervine o schimbare a preţurilor produselor,
modificarea acestora se face greu datorită faptului că acelaşi preţ intervine în
mai multe tupluri (redundanţă mare).
‰
a) P# U X Q B# L C T

P1 buc 20 100 B1 Braşov 400 268


U P1 buc 20 200 B2 Ploieşti 500 244
P# P1 buc 20 50 B3 Arad 550 257
X P1 buc 20 10 B4 Braşov 400 268
P2 Kg 10 250 B5 Arad 550 257
Q P2 Kg 10 120 B2 Ploieşti 500 244
P2 Kg 10 60 B3 Arad 550 257
C P3 m 5 100 B1 Braşov 400 268
B# L P3 m 5 50 B4 Braşov 400 268
T P4 buc 25 6 B5 Arad 550 257
P5 buc 30 10 B2 Ploieşti 500 244

b) Π Π
R1 R2 Π R3
P# U X P# B# Q B# L C T

P1 buc 20 P1 B1 100 B1 Braşov 400 268


P2 Kg 10 P1 B2 200 B2 Ploieşti 500 244
P3 m 5 P1 B3 50 B3 Arad 550 257
P4 buc 25 P1 B4 10 B4 Braşov 400 268
P5 buc 30 P2 B5 250 B5 Arad 550 257
P2 B2 120
U P2 B3 60
P# P3 B1 100 C
X P3 B4 50
P4 B5 6 B# L
P5 B2 10
T

P#
Q Π
B#
c)
R31 R32
B# L L C T
B1 Braşov Braşov 400 268
B2 Ploieşti Ploieşti 500 244
B3 Arad Arad 550 257
B4 Braşov
B5 Arad
C
B# L L
T

Figura 1

Pentru a înlătura anomaliile de actualizare, utilizând operatorul de proiecţie,


descompunem relaţia R în trei relaţii R1, R2 şi R3 (fig. 1.b.) care sunt în forma
normală 2 (2NF) şi care conservă datele din relaţia R.

Baze de date Cursul 2 NP 4/7


O relaţie este în forma normală 2 (2NF) dacă şi numai dacă este în 1NF şi orice
atribut noncheie este complet dependent funcţional de cheia primară.
Analizând diagrama dependenţelor funcţionale asociată relaţiei R3 din fig. 1. b,
observăm existenţa dependenţelor tranzitive B# → L, L → C şi B# → L, L → T care
generează şi ele anomalii de actualizare, cum sunt:

‰ dacă ştergem tuplul referitor la beneficiarul B1 (B1, Braşov, 400, 268) se pierd
şi datele referitoare la localitatea, codul poştal şi prefixul telefonic, care mai
sunt necesare;
‰ modificarea codului poştal (C) se face greu, datorită faptului că aceiaşi valoare
apare în mai multe tupluri (redundanţă mare);
‰ nu putem adăuga o nouă localitate dacă nu există cel puţin un beneficiar din
localitatea respectivă.
Pentru a înlătura aceste anomalii, descompunem relaţia R3 în două relaţii R31 şi R32
(fig. 1.c.) care sunt în forma normală 3NF.
O relaţie este în forma normală 3 ( 3NF ) dacă şi numai dacă este în 2NF şi fiecare
atribut noncheie nu este dependent tranzitiv pe cheia primară. Relaţiile R1, R2, R31 ,
R32 sunt în forma normală 3.
Considerând relaţia A definită pe atributele: localitate (L), stradă (S) şi codul poştal
(C); cheia relaţiei poate fi LS sau SC, iar mulţimea dependenţelor funcţionale este: F
= {LS → C, C → L}. Conform definiţiei, relaţia A este în 3NF şi are două chei
candidate LS şi SC. Analizând mai atent această relaţie, se observă că nu putem
adauga o localitate nouă cu codul poştal asociat dacă nu specificăm o adresă din
localitatea respectivă, iar ştergerea unei străzi implică şi ştergerea localităţii şi a
codului poştal. Deci relaţia A prezintă anomalii la operaţiile de adăugare şi ştergere,
ceea ce denotă că forma normală trei nu mânuieşte satisfăcător relaţiile cu doi sau mai
mulţi chei candidate.
Pentru a înlătura aceste anomalii, a fost introdusă forma normală Boyce - Codd
(BCNF), (mai tare decât 3NF), potrivit căreia o relaţie A cu mulţimea dependenţelor
funcţionale F este în BCNF dacă pentru orice dependenţa (X → Y) ∈ F cu Y ⊄ X, X
include o cheie, a relaţiei A. Conform acestei definiţii relaţia A (L, S, C) cu F = {LS →
C, C → L} nu este în BCNF din cauza dependenţei C → L, unde C nu este cheie
pentru A.

Avantajele modelului relaţional

Făcând o analiză a modelelor nerelaţionale comparativ cu modelul relaţional rezultă


următoarele avantaje în favoarea celui din urmă:
‰ modelul relaţional este un model simplu care permite utilizatorului să vadă
baza de date ca o colecţie de tabele (relaţii) - o reprezentare mentală larg
accesibilă atât informaticienilor cât şi neinformaticienilor;
‰ asigură independenţa fizică şi logică a programelor de prelucrare faţă de
structura datelor, eliminând din schema conceptuală şi schemele externe toate
detaliile privind structura de memorare şi strategiile de acces;

Baze de date Cursul 2 NP 5/7


‰ operaţia de normalizare introdusă de modelul relaţional asigură găsirea
structurii optime a datelor prin înlăturarea anomaliilor de actualizare şi
diminuare a redundanţei.
‰ Prin introducerea noţiunilor de dependenţă funcţională, dependenţa
multivaloare şi dependenţa joncţiune modelul relaţional depăşeşte stadiul
limitat al reprezentării datelor în calculator, avansând spre formalizarea
elementelor de semantică ce guvernează domeniul informaţiilor;
‰ este un model omogen, deoarece reprezintă legăturile şi asocierile dintre relaţii
tot prin relaţii, spre deosebire de modelele ierarhic şi reţea care utilizează în
acelaşi scop conexiunea şi respectiv setul.
‰ supleţe în comunicare cu utilizatorul neinformatician prin intermediul unor
limbaje neprocedurale de nivel înalt.

3. Nivelul intern (fizic)

Nivelul intern (modelul fizic) este cel ce corespunde structurii în care sunt stocate
datele în interiorul maşinii. Sunt specificate tabelele (fişierele) care le conţin (nume,
organizare, localizare etc.), componentele fiecărui fişier (lungime, câmpuri, plasare a
acestora în cadrul fişierului), căile de acces la componentele tabelelor (indecşi, relaţii,
legături între tabele).
Se vor avea în vedere cerinţele privind asigurarea protecţiei datelor, atât din punct de
vedere al conţinutului câmpurilor din tabele (verificarea şi validarea valorilor
câmpurilor la introducere, evitarea ştergerii, din greşeală sau din rea voinţă, a datelor
importante, cu secvenţe de program special concepute), cât şi în ceea ce priveşte
accesul utilizatorilor la baza de date (stabilirea drepturilor de acces trebuie să se facă
ţinând cont de rolul, funcţia şi sarcinile fiecărui utilizator).

4. Proiectarea bazei de date

Proiectarea unei baze de date presupune realizarea modelelor conceptual, logic şi


fizic, prin trecerea de la MCD la MLD, apoi de la MLD la MFD.
MLD se obţine aplicând regulile de trecere de la MCD la MLD.

Baze de date Cursul 2 NP 6/7


FURNIZOR
FACTURA
Cod furnizor 1,n EMITE. 1,1 Număr factură
Denumire furnizor Data factură
Adresă furnizor
Cod fiscal
Banca 1,1 1,n
Cont
LINIE FACTURA
PRIMESTE Cantitate intrată

1,n
MAGAZIE
MATERIAL
Cod magazie 1,n Cod ,material
Denumire magazie
Denumire material
Gestionar
Unitate de măsură
Preţ unitar
1,n
0,n
BON DE CONSUM
DESTINAT 1,1 Nr bon de consum 1,n LINIE BON DE CONSUM
Data bon de consum
Denumire secţie Cantitate ieşită

Modelul conceptual al datelor

Modelul logic (relaţional) al datelor


Furnizor (Cod furnizor, Denumire furnizor, Adresa furnizor, Cod fiscal, Banca, Cont)
Factură (Număr factură, Data factură, Cod furnizor, Cod magazie)
Magazie (Cod magazie, Denumire magazie, Gestionar)
Linie factură (Nr linie factură, Număr factură, Cod material, Cantitate intrată)
Material (Cod material, Denumire material, Unitate de măsură, Preţ unitar)
Linie bon de consum (Nr linie bon de consum, Nr bon de consum, Cod material,
Cantitate ieşită)
Bon de consum (Nr bon de consum, Data bon de consum, Denumire secţie, Cod
magazie)

Baze de date Cursul 2 NP 7/7