Documente Academic
Documente Profesional
Documente Cultură
Proiectarea logică
Scopul proiectării logice este de a construi o schemă logică ce reprezintă corect şi eficient
toate informaţiile descrise într-o schemă entitate-relaţie.
Translatarea din schema conceptuală în cea logică nu este un proces simplu deoarece, în
primul rând, nu toate construcţiile modelului E-R pot fi translatate natural într-un model relaţional.
Spre exemplu, dacă o entitate poate fi reprezentată simplu printr-o relaţie, pentru o generalizare
există mai multe variante. În al doilea rând, scopul proiectării conceptuale este de reprezenta datele
la un nivel înalt de abstractizare, fără a ţine cont de detaliile de implementare. Proiectarea logică
trebuie să ia în considerare performanţele impuse produsului final. Din acest motiv, proiectarea
logică presupune parcurgerea următoarelor etape:
• Restructurarea schemei E-R – fază independentă de modelul logic ales şi care se
bazează pe criterii de optimizare a schemei şi de simplificare a următoarei etape;
• Translarea în modelul logic –care ţine cont de un anumit model logic (modelul
relaţional spre exemplu) şi poate include alte optimizări, bazate pe caracteristicile
modelului logic.
La intrarea primei etape există schema conceptuală şi estimarea încărcării bazei de date
(cantitatea de date şi cerinţele operaţionale). Rezultatul acestei etape este schema E-R restructurată,
care nu mai este o schemă E-R propriu-zisă deoarece utilizează aspecte de implementare pentru
reprezentarea datelor.
Această schemă şi modelul logic ales formează intrarea celei de-a doua etape, care va
produce schema logică a bazei de date, împreună cu constrângerile de integritate aferente şi
documentaţia.
Tabelul volumelor
Concept Tip Volum
Filială E 10 Tabelul operaţiilor
Departament E 80 Operaţie Tip Frecvenţă
Angajat E 2000 Op 1 I 50/zi
Proiect E 500 Op 2 I 100/zi
Compoziţie R 80 Op 3 I 10/zi
Membru R 1900 Op 4 B 2/săptămână
Management R 80
Participare R 6000
Figura 3. Exemplu de tabele ale volumelor şi operaţiilor
În tabelul volumelor se prezintă toate conceptele schemei (entităţi şi relaţii) cu volumul lor
estimat. În tabelul operaţiilor se înscriu, pentru fiecare operaţie, frecvenţa aşteptată şi un simbol
care arată dacă operaţia este interactivă (I) sau batch (B).
În tabelul volumelor, numărul apariţiilor unei relaţii depinde de doi parametri:
• volumul entităţilor implicate în relaţie
• de câte ori o apariţie a acestor entităţi participă, în medie, într-o apariţie a relaţiei; acest
parametru depinde de cardinalităţile relaţiei.
Spre exemplu, numărul de apariţii ale relaţiei COMPOZIŢIE este egal cu numărul
departamentelor, deoarece cardinalitatea relaţiei indică faptul că fiecare departament aparţine doar
unei filiale. Numărul de apariţii ale relaţiei MEMBRU este mai mic decât numărul angajaţilor,
deoarece există angajaţi care nu aparţin nici unui departament. Dacă un angajat este implicat în
medie în trei proiecte avem 6000 de apariţii ale relaţiei PARTICIPARE (şi deci 6000/500=12 angajaţi
în medie pentru fiecare proiect).
Pentru fiecare operaţie se pot descrie datele implicate prin intermediul schemei de navigare
care constă în fragmente ale schemei E-R relevante pentru operaţie. Pe această schemă este utilă
desenarea „căilor logice” care trebuie urmate pentru a accesa informaţiile cerute. Un exemplu de
schemă de navigare este prezentat în figura 4, referitoare la operaţia 2.
Tabelul accesărilor
Concept Tip Accesări Tip
Angajat Entitate 1 R
Membru Relaţie 1 R
Departament Entitate 1 R
Participare Relaţie 3 R
Proiect Entitate 3 R
Figura 5. Tabelul accesărilor pentru operaţia 2
• analiza redundanţelor - decide ştergerea sau păstrarea unor redundanţe din schema E-R;
• eliminarea generalizărilor - înlocuieşte toate generalizările cu alte construcţii;
• partiţionarea/combinarea entităţilor şi relaţiilor – decide dacă este convenabilă
partiţionarea unui concept în mai multe sau unirea mai multor concepte separate în unul
singur;
• selecţia identificatorilor primari – alege un identificator pentru acele entităţi care au mai
mult de un identificator.
Analiza redundanţelor
Într-o schemă conceptuală o redundanţă corespunde unei informaţii ce poate fi derivată din
alte date. Cele mai frecvente exemple sunt:
• atribute ale căror valori pot fi derivate, pentru fiecare apariţie a unei entităţi/relaţii, din
valorile altor atribute pentru aceeaşi apariţie. În exemplul de mai jos, fiecare atribut poate
fi dedus din celelalte două prin operaţii aritmetice
• atribute ce pot fi derivate din alte atribute aparţinând altor entităţi/relaţii, de obicei prin
intermediul funcţiilor agregat. În exemplul următor, atributul ValoareTotala a
entităţii ACHIZITIE poate fi calculat din valorile atributului Pret a entităţii PRODUS prin
sumarea preţurilor produselor achiziţionate, după cum se specifică în relaţia
COMPUNERE.
• atribute ce pot fi derivate din operaţii de numărare a apariţiilor. În exemplul de mai jos,
atributul NumarLocuitori poate fi obţinut prin numărarea apariţiilor relaţiei
REZIDENŢĂ în care apare un anumit oraş.
• relaţii ce pot fi derivate din alte relaţii în prezenţa ciclurilor. Relaţia INVATARE dintre
studenţi şi profesori poate fi derivată din relaţiile PREZENŢĂ şi ATRIBUIRE. Prezenţa
ciclurilor nu generează în mod automat redundanţe. Spre exemplu, dacă se înlocuieşte
relaţia INVATARE cu relaţia SUPERVIZARE reprezentând legătura dintre studenţi şi
supervizori, atunci schema nu mai este redundantă.
Prezenţa informaţiilor derivate într-o bază de date prezintă un avantaj şi totodată
dezavantaje.
Avantajul este reducerea numărului de accesări necesare obţinerii informaţiilor derivate.
Dezavantajele ar fi:
• creşterea cererii de stocare;
• necesitatea efectuării de operaţii suplimentare pentru actualizarea informaţiilor derivate.
Decizia menţinerii sau eliminării unei redundanţe poate fi luată prin compararea costului
operaţiilor ce implică informaţia redundantă şi capacitatea de stocare necesară în cazul prezenţei,
respectiv absenţei redundanţei.
Exemplu
Entităţile E1 şi E2 sunt eliminate şi proprietăţile acestora sunt adăugate proprietăţii părinte E0.
Se adaugă entităţii părinte atributul Atype pentru a distinge tipul (E1 sau E2) unei apariţii a lui E0. A11
şi A21 pot avea valoarea NULL pentru unele apariţii ale entităţii E0. Relaţia R2 va avea cardinalitatea
minimă 0 pentru E0 deoarece apariţiile lui E2 formează o submulţime a apariţiilor entităţii E0.
Generalizarea este transformată în două relaţii „una la unu” ce leagă părintele de copiii E1 şi
E2. Nu există transfer de atribute sau relaţii şi entităţile E1 şi E2 sunt identificate extern prin entitatea
E0. În noua schemă apar constrângeri în plus: nici o apariţie a lui E0 nu poate participa în ambele
relaţii RG1 şi RG2.; mai mult, dacă generalizarea este completă, fiecare apariţie a lui E0 trebuie să
participe în exact una din relaţiile RG1 şi RG2.
Pentru a alege una din cele trei variante trebuie avute în vedere următoarele aspecte:
• Prima opţiune este convenabilă atunci când operaţiile implică apariţii şi atribute ale E0,
E1 şi E2 într-un mod asemănător. În acest caz, deşi se stochează valori NULL, alegerea
asigură mai puţine accesări în comparaţie cu celelalte variante în care apariţiile şi
atributele sunt distribuite celorlalte entităţi.
• A doua opţiune este posibilă doar dacă generalizarea este totală, altfel apariţiile lui E0
care nu sunt apariţii nici ale lui E1 nici ale lui E2 nu vor putea fi reprezentate. Această
metodă este utilă când există operaţii care se referă doar la apariţiile lui E1 sau ale lui E2
şi astfel se face distincţia între aceste entităţi. Nu mai există în principiu atribute ce pot
lua valori NULL. Numărul de accesări este mai redus în comparaţie cu a treia metodă,
deoarece nu este necesară accesarea lui E0 pentru a accesa atribute ale E1 şi E2.
• A treia metodă este utilă atunci când generalizarea nu este totală şi operaţiile se referă fie
la apariţiile şi atributele lui E1(E2) fie ale lui E0 şi astfel se face distincţia între entităţile
părinte şi copil. Stocarea este mai mică în raport cu prima metodă datorită absenţei
valorilor NULL dar creşte numărul accesărilor pentru a păstra consistenţa apariţiilor.
Opţiunile prezentate nu sunt singurele posibile. O variantă ar fi cea din figura 8. În acest caz,
pe baza consideraţiilor anterioare, s-a decis înglobarea E0 şi E1 şi lăsarea separată a lui E2. Atributul
Atype este adăugat pentru a distinge apariţiile lui E0 de cele ale E1.
Figura 8. Restructurare posibilă a schemei din figura 7
Creşterea eficienţei accesului la datele dintr-o bază de date se poate realiza conform
următorului principiu: operaţiile de acces sunt reduse prin separarea atributelor aceluiaşi concept
(entitate sau relaţie) ce sunt accesate de operaţii diferite, respectiv prin combinarea atributelor
aparţinând unor concepte diferite ce sunt accesate de aceleaşi operaţii.
Partiţionarea entităţilor
Acest tip de restructurare este necesar deoarece modelul relaţional nu permite reprezentarea
directă a atributelor multi-valoare. Un exemplu este prezentat în figura 10.
Entitatea AGENTIE este separată în două entităţi: una având acelaşi nume şi aceleaşi atribute
cu entitatea originală, în afară de atributul multi-valoare (Telefon) şi o entitate TELEFON cu
atributul Numar. Entităţile sunt legate de o relaţie 1:N. Evident, dacă atributul este opţional, atunci
cardinalitatea minimă pentru entitatea TELEFON trebuie să fie 0.
Combinarea entităţilor
Operaţia de combinare se efectuează în general asupra relaţiilor 1:1 şi mai rar asupra
relaţiilor 1:N sau N:N. Motivul constă în apariţia redundanţelor în atributele non-cheie ale entităţii
având cardinalitatea N.
În cazul în care există entităţi ce deţin mai mulţi identificatori apare necesitatea stabilirii
acelor atribute ce formează identificatorul primar. Identificatorul primar va avea drept corespondent
în modelul relaţional o cheie primară.
Criteriile de alegere a unui identificator primar sunt:
• Atributele ce pot deţine valori NULL nu pot forma un identificator primar.
• Este indicat ca un identificator primar să conţină un atribut sau cât mai puţine atribute.
Avantajele acestei alegeri ar fi:
- indecşi de dimensiune redusă (un index este o structură auxiliară pentru acces
rapid la date);
- spaţiu redus pentru crearea legăturilor logice între relaţii;
- sunt facilitate operaţiile de joncţiune.
• Un identificator intern este de preferat unuia extern, care poate implica mai multe entităţi
şi aceasta din cauză că identificatorii externi sunt translaţi în chei ce conţin identificatorii
tuturor entităţilor implicate în identificatorul extern.
• Este de preferat un identificator ce este utilizat de majoritatea operaţiilor pentru a accesa
apariţiile entităţii. În acest fel operaţiile vor fi executate eficient, fiind avantajate de
indecşii construiţi automat de sistemul de gestiune a bazei de date.
Dacă în această etapă nu există nici un identificator care să satisfacă criteriile anterioare, se
va introduce un atribut suplimentar în entitate, atribut ce va fi utilizat exclusiv pentru identificarea
apariţiilor entităţii.
Relaţii 1:N
Relaţii 1:1
Pentru relaţiile 1:1 există mai multe posibilităţi de translare. Să considerăm relaţia din figura
18, cu participare obligatorie din partea celor două entităţi implicate.
Figura 18. Schemă E-R cu o relaţie 1:1
Pe lângă aceste două soluţii, există posibilitatea obţinerii unei singure relaţii, incluzând toate
atributele din schema E-R. Motivul pentru care această soluţie va fi eliminată este următorul: dacă
după faza de restructurare (care precede faza de translare) schema E-R conţine două entităţi legate
printr-o relaţie 1.1, este de dorit ca în faza de translare cele două concepte să rămână separate.
Să considerăm cazul unei relaţii 1:1 cu participarea opţională a uneia dintre entităţi, ca în
schema din figura 19.
Exemplu de translare a unei scheme complexe cu obţinerea unui număr minim de relaţii
Într-o primă fază se translează fiecare entitate într-o relaţie din modelul relaţional. Translarea
entităţilor cu identificatori interni este imediată:
E3(A31, A32)
E4(A41, A42)
E5(A51, A52)
E6(A61, A62, A63)
Al doilea pas constă în translarea entităţilor cu identificatori externi. Se obţin următoarele
relaţii M-R:
E1(A11, A51, A12)
E2(A21, A11, A51, A22)
Este de notat modul în care E2 preia atributul A11 din E1 şi tranzitiv, atributul A51 din E5
care, împreună, identifică E1. Trebuie impuse constrângeri de referinţă adecvate (de exemplu între
atributul A51 din E1 şi relaţia E5).
În al treilea pas se translează relaţiile din schema E-R. Relaţiile R1 şi R6 au fost deja
translate datorită identificatorilor externi ai entităţilor E1, respectiv E2. Presupunem că vrem să
obţinem un număr minim de relaţii M-R în schema finală. Astfel:
• Pentru a transla R3, vom introduce, cu redenumiri adecvate, atributele care identifică E6
printre cele ale lui E5, precum şi atributul AR3 al lui R3. Astfel introducem A61R3,
A62R3 şi AR3 în E5.
• Similar, pentru R4, introducem A61R4 şi A62R4 în E5.
• Similar, pentru R5, introducem A61R5, A62R5 şi AR5 în E5.
Se obţine
E5(A51, A52, A61R3, A62R3, AR3, A61R4, A62R4, A61R5, A62R5, AR5)
Cheia relaţiei M-R E5 este formată doar din A51 deoarece entitatea E5 participă cu
cardinalitatea maximă 1 la relaţiile E-R R3, R4 şi R5.
Redenumirea atributelor entităţii E6 este obligatorie pentru a face distincţia între utilizări ale
aceloraşi atribute în reprezentarea unor relaţii diferite (spre exemplu A61R3 care reprezintă R3 şi
A61R4 care reprezintă R4).
În final se translează singura relaţie N:N, şi anume R2:
R2(A21, A11, A51, A31, A41, AR21, AR22)
Schema relaţională care se obţine în final este:
În figura 21 sunt prezentate, pe scurt, posibilităţi de translare din modelul E-R în modelul
relaţional
Simbolurile X şi Y indică o cardinalitate permisă. Asteriscul indică posibilitatea prezenţei
valorilor NULL iar linia de subliniere întreruptă marchează o cheie alternativă celei marcate prin
linie continuă.
Tip Schema iniţială Translare posibilă
Relaţie binară
N:N
Relaţie ternară
N:N
Relaţie 1:N cu
participare
obligatorie
Relaţie 1:N cu
participare
opţională
sau
Relaţie cu
identificatori
externi
Relaţie 1:1 cu
participare
obligatorie
pentru ambele sau
entităţi
Relaţie 1:1 cu
participare
opţională pentru
o entitate
Relaţie 1:1 cu
sau
participare
opţională pentru
ambele entităţi
sau
Figura 21. Translări din modelul E-R în modelul relaţional
Documentarea schemelor logice
În acest mod se pot păstra informaţii despre relaţiile din modelul E-R, permiţându-se
reconstrucţia informaţiilor reprezentate prin relaţia originală. În exemplul din figura 22, proiectele în
care angajaţii sunt implicaţi pot fi regăsite prin intermediul relaţiei PARTICIPARE.
În figura 23 este prezentat un alt exemplu referitor la schema din figura 16.
Faza de restructurare
Tabelul volumelor
Concept Tip Volum
Clasă E 8000 Tabelul operaţiilor
EdiţieCurs E 1000 Operaţie Tip Frecvenţă
Curs E 200 Op 1 I 40/zi
Instructor E 300 Op 2 I 50/zi
Temporar E 250 Op 3 I 2/zi
Permanent E 50 Op 4 I 15/zi
Instruit E 5000 Op 5 I 10/zi
Angajat E 4000 Op 6 I 20/zi
LiberProfesionist E 1000 Op 7 I 5/zi
Angajator E 8000 Op 8 B 10/lună
PrezenţăAnterioară R 10000
PrezenţăCurentă R 500
Compoziţie R 8000
Tip R 1000
PredareAnterioară R 900
PredareCurentă R 100
Calificare R 500
AngajareActuală R 4000
AngajareAnterioară R 10000
Figura 26. Tabelele volumelor şi operaţiilor pentru schema din figura 25
Analiza redundanţelor. În schemă există doar o dată redundantă şi anume atributul
NrParticipanţi în EDIŢIECURS, care poate fi derivat din relaţiile PREZENŢĂCURENTĂ şi
PREZENŢĂANTERIOARĂ. Cererea de stocare este de 4 x 1000 = 4000 octeţi, presupunând că sunt
necesari patru octeţi pentru ca fiecare apariţie a entităţii EDIŢIECURS să stocheze numărul de
participanţi. Operaţiile care implică această informaţie sunt 2, 5 şi 8. Ultima operaţie poate fi lăsată
deoparte deoarece este o operaţie cu o frecvenţă mică, care se execută în modul batch. Vom evalua
costul operaţiilor 2 şi 5 în prezenţa şi în absenţa redundanţei. Se poate deduce din tabelul volumelor
că fiecare ediţie a unui curs are, în medie, 8 clase şi 10 participanţi. Pornind de la aceste date se
poate obţine uşor tabelul accesărilor prezentat în figura 27.
Se obţine:
• În prezenţa redundanţei: pentru operaţia 2 avem 2 x 50 = 100 accesări în citire / zi şi tot
atâtea accesări în scriere / zi, în timp ce, pentru operaţia 5, avem 19 x 10 = 190 accesări
în citire / zi dintr-un total de 490 accesări / zi (s-a considerat că accesul în scriere costă
de două ori mai mult decât accesul în citire);
• În absenţa redundanţei: pentru operaţia 2 avem 50 de accesări în citire / zi şi tot atâtea în
scriere, în timp ce pentru operaţia 5 avem 29 x 10 = 290 accesări în citire / zi, dintr-un
total de 440 accesări / zi (s-a considerat că accesul în scriere costă de două ori mai mult
decât accesul în citire).
Selecţia identificatorilor primari. Doar entitatea INSTRUIT are doi identificatori: CNP-ul şi
codul intern. Este preferabil să se aleagă al doilea identificator deoarece CNP-ul poate necesita
câţiva octeţi pentru stocare în timp ce codul, care trebuie să distingă între 5000 de apariţii (vezi
tabelul volumelor) nu necesită mai mult de doi octeţi.
Entitatea EDIŢIECURS este identificată prin atributul DatăStart şi prin entitatea CURS.
Într-o reprezentare relaţională, acest identificator trebuie utilizat pentru a implementa două relaţii
(PREZENŢĂ şi PREDARE). Se poate observa că fiecare curs are un cod şi că numărul mediu de ediţii
pentru un curs este 5. Aceasta înseamnă că este convenabil să adăugăm un atribut Cod cu domeniul
small integer pentru a identifica o ediţie a unui curs, în locul identificatorului extern.
Folosind tehnicile de translare prezentate anterior, schema din figura 28 poate fi translată în
următoarea schemă relaţională: