Sunteți pe pagina 1din 13

3.

PROIECTAREA BAZELOR DE DATE RELAŢIONALE


Există mai multe metode de proiectare a BD relaţionale, dar nici-una nu s-a impus cu
desăvârşire până în prezent. Fiecare dintre ele însă se bazează pe consideraţii practice
referitoare la sistemele modelate, consideraţii care stau la baza activităţilor de procesare a
datelor şi anume: protocoale de funcţionare a sistemului, modul cum sunt folosite datele,
modul de gestionare a acestora etc.
Proiectarea BD cuprinde 3 etape principale:
- Realizarea schemei conceptuale a BD
- Realizarea proiectului logic al BD (schemei logice a BD)
- Realizarea proiectului fizic al BD (schemei fizice a BD)

3.1. Realizarea schemei conceptuale a BD (modelul entitate - legătură)

În prima fază, o echipă nominalizată colectează (achiziţionează) datele


corespunzatoare din sistem, apoi urmează faza de organizare a acestora utilizându-se modelul
entitate-legătură. Principalele concepte folosite în acest model sunt: entitatea, relaţia
(legătura) şi atributul.
Pentru exemplificarea lor vom considera, în cele ce urmează, un sistem care
reprezintă o universitate compusă din mai multe facultăţi. La fiecare facultate studiază mai
mulţi studenţi şi predau cursurile mai multe cadre didactice (le vom numi profesori). Fiecare
student, conform programei şcolare, urmează mai multe cursuri. Un profesor poate preda
mai multe cursuri, dar şi un curs poate fi predat de mai mulţi profesori (fie pe module, fie în
totalitate, dar la serii diferite).

3.1.1. Entitatea

Entitatea este un obiect de interes din sistem pentru care trebuie să existe date
înregistrate. De ex., în sistemul descris mai sus obiectele de interes (entităţi) sunt:
FACULTATE, PROFESOR, STUDENT şi CURS care sunt legate între ele conform figurii de
mai jos

lucrează_în
FACULTATE PROFESOR

studiază_în predă

urmează
STUDENT CURS

Fig. 3.1. Exemplu de sistem de baze de date


Observaţii:
- Fiecare entitate are o denumire unică în cadrul unui sistem.
- Entităţile sunt reprezentate prin substantive, dar nu orice substantiv folosit în
descrierea sistemului este entitate, ci numai acelea care au o semnificaţie deosebită.
- Fiecare entitate trebuie să fie bine definită şi precizată pentru a se evita confuziile.
3.1.2. Relaţia (legătura)

Relaţia (legătura) este o asociere (raport) nedirecţionată între 2 entităţi. În exemplul


de mai sus relaţiile sunt:
- "lucreaza_în" - între entităţile FACULTATE şi PROFESOR,
- "studiază_în" între FACULTATE şi STUDENT,
- "predă" între PROFESOR şi CURS,
- "urmează" între STUDENT şi CURS.
Observaţii:
- Relaţiile sunt reprezentate prin verbe, dar nu orice verb utilizat în descrierea sistemului este
relaţie.
- Între 2 entităţi pot exista mai multe relaţii. Ex.: "lucrează_în" şi "conduce" - între entităţile
FACULTATE şi PROFESOR.
- Pot exista în cadrul unei scheme conceptuale mai multe relaţii cu acelaşi nume, dar cele care
leagă aceleaşi entităţi trebuie să aibă nume diferite.

Cardinalitatea unei relaţii indică numarul de instanţe din fiecare entitate care poate
participa la relaţie. Există 3 tipuri de cardinalitate:

- "mulţi-la-unu" (many-to-one, M:1).


Relaţia dintre entităţile A şi B este de tipul "mulţi-la-unu" dacă fiecarei instanţe din A
i se poate asocia cel mult o singură instanţă din B şi fiecărei instanţe din B i se pot asocia mai
multe instanţe din A.
Ex.: "studiază-la"
M studiază_la 1
STUDENT FACULTATE

Fig. 3.2. Exemplu de relaţie "mulţi-la-unu" (M:1)

- "unu-la-unu" (one-to-one, 1:1).


Relaţia dintre entităţile A şi B este de tipul "unu-la-unu" dacă fiecărei instanţe din A i
se poate asocia cel mult o singură instanţă din B şi fiecărei instanţe din B i se poate asocia cel
mult o singură instanţă din A.
Ex.: "conduce"
1 conduce 1
PROFESOR FACULTATE

Fig. 3.3. Exemplu de relaţie "unu-la-unu" (1:1)

- "mulţi-la-mulţi" (many-to-many, M:M).


Relaţia dintre entităţile A şi B este de tipul "mulţi-la-unu" dacă fiecărei instanţe din A
i se pot asocia mai multe instanţe din B şi fiecărei instanţe din B i se pot asocia mai multe
instanţe din A.
Ex.: “predă”, “urmează”.
M predă M
PROFESOR CURS

Fig. 3.4. Exemplu de relaţie "mulţi-la-mulţi" (M:M)


Valorile prezentate până acum (M:1, 1:1, M:M) reprezintă cardinalitatea maximă a unei
relaţii. Pe de altă parte, o relaţie este caracterizată şi de o cardinalitate minimă ce indică
obligativitatea participării entităţilor la relaţie. Cardinalitatea minimă a unei relaţii poate avea
valorile: 0:0, 0:1, 1:1. Dacă avem cardinalitatea minimă a unei relaţii egală cu 1 înseamnă că
există o participare totală a entităţii la relaţie (participare obligatorie). Dacă avem
cardinalitatea minimă egală cu 0 înseamnă că există o participare parţială a entităţii la relaţie.
În cadrul reprezentării grafice cardinalitatea maximă a unei relaţii se va afişa fără paranteze,
în timp ce cardinalitaatea minimă, se va scrie scrie între paranteze. Uneori cardinalitatea
minimă nu este reprezentată în diagramă, dar cea maximă este obligatorie.

M(0) studiază_la 1
STUDENT FACULTATE

1(0) conduce 1(0)


PROFESOR FACULTATE

M(0) predă M(0)


PROFESOR CURS

Fig. 3.5. Exemple de reprezentare a cardinalităţii maxime şi minime

Alt mod de reprezentare a relaţiilor, indicând numai cardinalitatea maximă este:

many_to_one
studiază_la
STUDENT FACULTATE

one_to_one
conduce
PROFESOR FACULTATE

many_to_many
predă
PROFESOR CURS

Fig. 3.6. Altă variantă de reprezentare a relaţiilor, indicând numai cardinalitatea maximă

3.1.3. Atributul

Atributul este o caracteristică a unei entităţi sau a unei relaţii. Fiecare entitate are un anumit
număr de atribute despre care sunt înregistrate date. Ex.: nume, prenume, dată. Fiecare atribut
poate lua valori care furnizează informaţii despre entitatea respectivă. Ex.: Ionescu, Aurel,
13.10.84. Şi relaţiile pot avea atribute. Ex.: “lucrează_în” Æ data_angajării.
Observaţii:
- Numele unui atribut este unic în cadrul unei entităţi sau al unei relaţii.
- Atributele sunt întotdeauna substantive, dar nu orice substantiv este atribut.
- Pentru fiecare atribut este necesară o descriere, împreună cu domeniul de valori
(întreg, şir de caractere, dată calendaristică etc.).
- Trebuie evitate atributele indirecte. Ex.: numele_facultăţii este un atribut indirect
pentru tabelul STUDENT şi un atribut direct pentru tabelul FACULTATE.

3.1.4. Chei primare, naturale, artificiale

Cheia unei entităţi este un atribut sau set de atribute care identifică în mod unic o instanţă a
acelei entităţi (face distincţie între oricare 2 rânduri diferite ale tabelului asociat entităţii).
Cheile sunt de 2 feluri: naturale (au semnificaţie reală pentru entitate, ex.: (nume, prenume,
data_naşterii)) şi artificiale (nu au semnificaţie reală pentru entitate, ex.: cod_student,
cod_facultate).
Avantajele cheilor artificiale primare:
- stabilitatea – Cheile primare artificiale se schimbă rar. Schimbarea unei chei primare
presupune schimbarea cheilor străine care fac referire la ea.
- simplitatea – Au un număr de atribute şi de caractere mai mic.
- Nu prezintă ambiguităţi în reprezentare (ex.: liniuţe, spaţii etc.).
- Elimină apariţia valorilor Null.

3.1.5. Cazuri speciale de entităţi, relaţii, atribute

a) Subentitate / Superentitate

- Subentitatea este o submulţime a unei entităţi numită superentitatea (ex.: superenti-


tatea PERSONAL Æ subentităţile PROFESOR, PERSONAL_ADMINISTRATIV).
- Cheia primară, atributele şi relaţiile unei superentităţi sunt valabile pentru orice
subentitate, reciproca fiind falsă.
- Între o subentitate şi superentitatea corespunzătoare există totdeauna o relaţie 1:1 cu
cardinalitatea minimă 1:0.
Ex.:
PERSONAL
cod_personal
nume
prenume
data_naşterii

PROFESOR
grad didactic

PERSONAL_ADMINISTRATIV

Fig. 3.7. Exemplu de subentitate şi superentitate

b) Entitate dependentă (detaliu) / entitate master

- O entitae dependentă (detaliu) este o entitate care nu poate exista de sine stătătoare, ci
numai ataşată unei alte entităţi, numită entitate master, din cadrul legăturii respective.
- Ex.:
MODUL CURS
cod_curs M(0) face_parte_din 1 cod _curs
nr_modul nume_curs
descriere descriere

Fig. 3.8. Exemplu de entitate dependentă (detaliu) şi entitate master

- Între entităţile master şi detaliu va exista totdeauna o relaţie 1:M având cardinalitatea
minimă 1:0.
- Cheia primară a unei entităţi detaliu va fi formată din cheia primară a entităţii master
la care se adaugă atribute proprii.

c) Relaţii recursive

- Relaţia recursivă este o relaţie între o entitate şi ea însăşi.


- Ex.:
M(0)

PROFESOR este_şef_direct

1(0)
Fig. 3.9. Exemplu de relaţie recursivă

d) Relaţii binare (de tip 2) / Relaţii între mai mult de 2 entităţi (de tip 3)

Obs.: O relaţie de tip 3 nu poate fi spartă în relaţii binare între entităţile dependente
deoarece se obţin informaţii eronate, relaţia iniţială nemaiputând fi reconstituită din
relaţiile componente.
Ex.: STUDENT

M(0)

coordoneaza
PROFESOR
M(0)
efectueaza

M(0)
PROIECT

Fig. 3.10. Exemplu de relaţie între mai mult de 2 entităţi (de tip 3)

STUDENT PROIECT PROFESOR


s1 p1 x2
s1 p2 x1
s2 p1 x1
Fig. 3.11. Relaţia de tip 3 iniţială
STUDENT PROIECT STUDENT PROFESOR PROIECT PROFESOR
s1 p1 s1 x2 p1 x2
s1 p2 s1 x1 p2 x1
s2 p1 s2 x1 p1 x1

Fig. 3.12. Descompunerea prin proiecţie a relaţiei de tip 3 în relaţii de tip 2

STUDENT PROIECT PROFESOR


s1 p1 x1
s1 p1 x2
s1 p2 x1
s2 p1 x1

Fig. 3.13. Reconstituirea eronată a relaţiei iniţiale

e) Atribute simple / compuse / repetitive (multivaloare) / calculate (deduse)

- Unui atribut simplu îi corespunde o singură valoare atomică. Ex.: nume_facultate.


- Un atribut compus este format din mai multe atribute simple numite componentele
sale. Ex.: adresa (oraş, stradă, număr).
- Un atribut repetitiv (multivaloare) poate avea mai multe valori, numărul lor variind de
la o instanţă la alta. Ex.: nr_telefon (051-435455, 095-770324).
- Un atribut calculat (dedus) are valoarea cunoscută indirect, pe baza calculului cu
ajutorul valorilor altor atribute. Ex.: salariul_net = 0,75*salariul_brut.
Obs.: Atributele deduse reprezintă o redundanţă a datelor.

3.1.6. Diagrama entitate – legătură

Ex.:
PROFESOR
FACULTATE 1 lucrează_în M(0) cod_profesor
cod_facultate nume
nume_facultate prenume
adresa 1(0) conduce 1(0) data_naşterii
grad_didactic

1 M(0)

studiază_în predă

M(0) M(0)

STUDENT
cod_student M(0) urmează M(0) CURS
nume cod_curs
prenume nume_curs
data_naşterii descriere

Fig. 3.14. Exemplu de diagramă entitate - legătură


În diagrama entitate – legătură entităţile sunt reprezentate prin dreptunghiuri, iar relaţiile
dintre ele prin arce neorientate specificându-se şi cardinalitatea acestora. Pentru fiecare
entitate se specifică cheile primare (subliniate) şi eventual atributele mai importane
(semnificative).

3.1.7. Probleme în identificarea entităţilor, relaţiilor şi atributelor

a) Relaţie – entitate

Uneori este greu de identificat dacă o componentă a sistemului este relaţie sau entitate. Dacă o
entitate are o cheie provenită din combinaţia cheilor primare a 2 sau mai multe entităţi, atunci
poate fi definită o relaţie.
Ex.:
PROFESOR PREDARE CURS
cod_profesor cod_profesor cod_curs
cod_curs

PROFESOR M predă M CURS


cod_profesor cod_curs

Fig. 3.15. Relaţie – entitate

b) Relaţie – atribut

- O relaţie poate fi reprezentată ca un atribut al unei entităţi, iar atributele unei entităţi
pot fi înlocuite cu relaţii.
- Atunci când un atribut al unei entităţi reprezintă cheia primară a altei entităţi (e cheie
străină), el reprezintă, de fapt, o relaţie.
Ex.:

STUDENT FACULTATE
cod_student cod_facultate
cod_facultate
exprimă o relaţie

STUDENT M studiază_la 1 FACULTATE


cod_student cod_facultate

Fig. 3.16. Relaţie – atribut

3.1.8. Algoritm pentru obţinerea modelului entitate – legătură

Etapele pentru realizarea modelului (diagramei) entitate – legătură sunt:


- Sunt identificate entităţile sistemului.
- Sunt identificate relaţiile sistemului şi este stabilită cardinalitatea acestora.
- Sunt identificate atributele entităţilor şi atributele relaţiilor sistemului.
- Sunt stabilite cheile primare ale entităţilor.
- Se trasează diagrama entitate – legătură a sistemului considerat.

Diagrama entitate – legătură a sistemului (PROFESOR, STUDENT, FACULTATE, CURS)


discutat mai înainte este prezentat în Fig. 3.17.

PERSONAL
cod_personal
nume, prenume, data_nasterii

PERSONAL_ADMINISTRATIV

FACULTATE 1 lucreaza_in M(0) M(0)


cod_facultate este_sef
nume_facultate 1(0) conduce 1(0) PROFESOR
adresa grad_didactic 1(0)
M(0)
1 M(0)

studiaza_la coordoneaza

M(0) preda

STUDENT PROIECT
cod_student M(0) M(0) cod_proiect
nume efectueaza nume_proiect
prenume
data_nasterii
M(0)
M(0)
CURS
urmeaza M(0) cod_curs
nume_curs
descriere

face_parte_din

M(0)

MODUL
Fig. 3.17. cod_curs
Diagrama entitate–legătură a sistemului nr_modul
(PROFESOR, STUDENT, FACULTATE, CURS) descriere
3.2. Realizarea schemei (proiectului, diagramei) logice a unei baze de date

Pentru realizarea schemei logice a unei baze de date se porneşte de la scheme conceptuală
(modelul entitate – legătură) urmărindu-se conversia entităţilor şi a legăturilor în tabele
relaţionale.
Regulile de conversie ale entităţilor, legăturilor şi atributelor sunt următoarele:

3.2.1. Transformarea entităţilor

Regulă generală: entităţile se transformă în tabele.


Subcazuri:
a) Entităţile independente devin tabele independente, adică tabele a căror cheie primară
nu conţine chei străine.
Ex.: Entitatea “STUDENT” devine tabelul “STUDENT” cu cheia primară cod_student.

b) Entităţile dependente devin tabele dependente (tabele detaliu) adică tabele a căror
cheie primară conţine cheia străină ce face referinta la cheia primara a entitatii de care
depinde entitatea in cauza.
Ex.: Entitatea “MODUL” devine tabelul “MODUL” a carui cheie primara este formata din
cod_curs (care este o cheie straina pentru entitatea “CURS”) si nr_modul.

c) Subentitatile devin subtabele, adica tabele a caror cheie primara este cheia straina
pentru tabelul superentitate.
Ex.: Subentitatea “PROFESOR” va avea cheia primara cod_personal, aceeasi cu cea a
superentitatii “PERSONAL”.
- Avantajele supertabelelor: simplificarea programelor de manipulare a datelor.
- Dezavantajele supertabelelor: probleme de integritate, apar valori de Null.
- Avantajele subtabelelor: mai stabile, mai flexibile, ocupa spatiu mai mic, contin mai
putine valori de Null.
- Dezavantajele subtabelelor: se ingreuneaza manipularea datelor.

3.2.2. Transformarea relatiilor (legaturilor)

Regula generala: Relatiile (legaturile) se convertesc in chei straine.


Conventie: plasamentul cheii straine este simbolizat printr-o sageata. Atunci cand cheia
straina este inclusa in cheia primara, varful sagetii este plin ( ) si este gol in caz
contrar ( ).
Cazuri:
a) Relatiile 1:1 devin chei straine. Cheia straina este plasata in tabelul cu linii mai putine.
Ex.:
a1) SOT 1 este_casatorit 1 SOTIE - cheia straina poate fi plasata oriunde

a2) SOT 1 este_casatorit 1(0) SOTIE

a2) SOT 1(0) este_casatorit 1(0) SOTIE - cheia straina va fi plasata in tabelul cu
linii mai putine
b) Relatiile M:1 devin chei straine plasate in tabelul care se afla in partea de “multi” a
relatiei.
Ex.:
PROFESOR M(0) lucreaza_in 1 FACULTATE

Cazuri:

b1) M(0) 1

Cheia straina nu poate avea valoarea Null, iar in cazul entitatilor dependente ea va face parte
chiar din cheia primara a tabelului detaliu.

b2) M(0) 1(0) Fig. 3.18

Cheia straina poate avea valoarea Null si nu poate face parte din cheia primara.

c) O relatie M:M se transforma in 2 relatii M:1. In acest caz se construieste un tabel


special numit tabel asociativ care are 2 chei straine care fac referinta la cheile primare
ale celor 2 tabele aflate in relatia M:M. Cheia sa primara este formata din cele 2 chei
straine plus (eventual) alte atribute suplimentare.
Ex.:
PROFESOR M preda M CURS
cod_profesor cod_curs

PROFESOR 1 M(0) PREDARE M(0) 1 CURS


cod_profesor cod_profesor cod_curs
cod_curs
Fig. 3.19

d) O relaţie de tip 3 se transforma intr-un numar de relatii de tip 2, egal cu numărul de


tabele asociate. Aceste relatii (legaturi) se stabilesc intre un tabel asociativ si tabelele
asociate. Tabelul asociativ are cate o cheie straina pentru fiecare tabel asociat, iar
cheia sa primara este formata din toate aceste chei straine plus (eventual) alte atribute
suplimentare.
Ex.:
STUDENT

M(0)

coordoneaza
PROFESOR
M(0)
efectueaza

M(0)
PROIECT

Fig. 3.20 Relatia de tip 3 initiala


PROFESOR
cod_personal

M(0)

EFECTUARE_
COORDONARE
STUDENT 1 M(0) cod_student M(0) 1 PROIECT
cod_student cod_proiect cod_proiect
cod_personal

Fig. 3.21. Tabelele si legaturile rezultate

3.2.3. Transformarea atributelor

Regula generala: Atributele se convertesc in coloane ale tabelelor provenite din entitati
sau chiar in tabele.
Cazuri:
a) Atributele simple ale unei entitati devin coloane in tabelul provenit din acea entitate.

b) Toate componentele unui atribut compus devin coloane.


Ex.: adresa Æ tara, oras, str,. nr., bl., sc., et., ap.

c) Atributele repetitive (multivaloare) ale unei entitati devin tabele dependente ce contin
fiecare o cheie straina (care face referinta la cheia primara a entitatii) si atributul
multivaloare. Cheia primara a unui astfel de nou tabel este formata din cheia straina
plus alte coloane suplimentare.
Ex.:
STUDENT 1 M(0) TELEFON
cod_student cod_student Fig. 3.22.
nr_telefon

d) - Atributele simple ale unei relatii 1:1 sau M:1 devin coloane ale tabelului care contine
cheia straina.
Ex.: atributul data_inscrierii al relatiei studiaza_la devine coloana in tabelul STUDENT.

STUDENT M(0) studiaza_la 1 FACULTATE


Fig. 3.23.
(data_inscrierii)

- Fiecare componenta a unui atribut compus al unei relatii 1:1 sau M:1 se va converti
in mai multe coloane in tabelul care contine cheia straina.

e) - Atributele simple ale unei relatii M:M vor deveni coloane ale tabelului asociativ.
Ex.: STUDENT M(0) urmeaza M(0) CURS
Fig. 3.24.
(nota_examen)

Atributul “nota_examen” al relatiei “urmeaza” devine coloana in tabelul asociat


URMARE.
- Fiecare componenta a unui atribut compus al unei relatii M:M va deveni o coloana in
tabelul asociativ creat.

f) - Atributele repetitive (multivaloare) ale unei relatii 1:1 sau 1:M devin tabele
dependente de tabelul care contine cheia straina.
- Atributele repetitive ale unei relatii M:M devin tabele dependente de tabelul
asociativ corespunzator relatiei. Cheia primara a acestor tabele dependente va fi
formata din cheia straina respectiva plus una sau mai multe coloane suplimentare.
Ex.:
STUDENT M(0) urmeaza M(0) CURS
Fig. 3.25.
(nota_test)
Atributul “test” este un atribut repetitiv. Va rezulta urmatoarea structura:

STUDENT 1 M(0) URMARE M(0) 1 CURS


cod_student cod_student cod_curs
cod_curs

M(0)

TEST
cod_student
cod_curs
nr_test

Fig. 3.26. Transformarea atributelor repetitive ale unei relatii M:M

3.2.4. Diagrama logica a BD si tabelele asociate

In Fig. 3.27. este prezentata diagrama logica a bazei de date pentru sistemul UNIVERSI-
TATE (PROFESOR, STUDENT, FACULTATE, CURS) care a rezultat in urma transfor-
marilor prezentate mai inainte si efectuate asupra diagramei entitate-legatura (Fig. 3.17).
Tabele asociate acestei diagrame sunt urmatoarele:
PERSONAL(cod_personal, nume, prenume, data_nastere, sex, stare_civila,data_angajare)
PERSONAL_ADMINISTRATIV (cod_personal, profesie, functie)
PROFESOR (cod_personal, grad_didactic, titlu, sef, ore_predate, vechime, cod_facultate)
CURS (cod_curs, nume_curs, descriere, nr_ore)
PREDARE (cod_personal, cod_curs, data_inceput)
MODUL (cod_curs, nr_modul, descriere)
FACULTATE(cod_facultate, nume_facultate, localitate, strada,nr,cod_postal, cod_decan)
STUDENT (cod_student, nume, prenume, data_nasterii, tara, localitatea, strada, nr,
cod_postal, studii_anterioare, data_inscriere, cod_facultate)
TELEFON (cod_student, nr_telefon, tip_telefon)
PROIECT (cod_proiect, nume_proiect, domeniu)
EFECTUARE_COORDONARE (cod_student, cod_proiect, cod_personal)
URMARE (cod_student, cod_curs, nota_examen, nota_restanta, observatii)
TEST (cod_student, cod_curs, nr_test, nota_test, data_test, observatii)

PERSONAL
cod_personal
nume, prenume, data_nasterii

PERSONAL_ADMINISTRATIV
cod_personal

FACULTATE 1 lucreaza_in M(0) M(0)


cod_facultate PROFESOR
nume_facultate 1(0) conduce 1(0) cod_personal
adresa grad_didactic 1(0)
1
1 1

M(0) M(0) M(0)

STUDENT EFECTUARE_ PROIECT PREDARE


cod_student 1 M(0) COORDONARE M(0) 1 cod_proiect cod_personal
nume cod_student nume_proiect cod_curs
prenume cod_proiect
data_nasterii cod_personal M(0)
1
1 1
URMARE CURS
M(0) cod_student M(0) 1 cod_curs
cod_curs nume_curs
descriere
1
1

M(0) M(0) M(0)

TELEFON TEST MODUL


cod_student cod_student cod_curs
nr_telefon cod_curs nr_modul
nr_test descriere

Fig. 3.27. Diagrama logica a BD

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