Sunteți pe pagina 1din 16

Curs 5. Entităţi şi legături între entităţi.

Modelul bazei de date trebuie să cuprindă descrierea tuturor entităţilor ce compun


modelul şi a legăturilor între ele.
Prin entitate se înţelege un obiect de sine stătător, o realitate obiectivă care există prin ea
însăşi.
Orice entitate este caracterizată prin proprietăţile ei ce se numesc atribute.
Entităţile sunt reprezentate prin tip de entitate ce semnifică o reprezentare în cadrul unui
model de date ce corespunde unei categorii de obiecte din lumea reală.
Un tip entitate poate fi privită prin prisma abstractizarii prin agregare ca rezultat al
agregării atributelor sale. Prin prisma generalizării un tip entitate este rezultatul tipizării
unei mulţimi de entităţi având proprietăţi comune. Pentru reprezentarea unei mulţimi de
entităţi din lumea reală printr-un tip de entitate se iau în considerare doar acele
caracteristici care sunt relevante pentru scopul propus de aplicaţie.
Intensitatea (Intension) unui tip de entitate se referă la descrierea sau un set de proprietăţi
care se aplică la toţi membri entităţii. Cu alte cuvinte se referă la schema tipului entitate
respectiv. Intensitatea se traduce ca o mulţime de definiţii pentru baza de date ce descrie
formatul fiecărui tabel din baza de date.
Exemple:
tipul de entitate student,profesor, salariat, departament
Prin extensie (extension) se înţelege mulţimea instanţelor tipului de entitate (populaţia
tipului de entitate respectiv). Cu alte cuvinte fiecare entitate este o instanţiere a tipului de
entitate respectiv. Entităţile individuale dintr-un tip particular de entitate se deosebesc
între ele prin valorile diferite ale atributelor lor.
Pentru bazele de date relaţionale extensia poate fi privită drept conţinutul curent sau
populaţia bazei de date ce este compusă din valorile curente pentru fiecare câmp din
tabelele bazei de date.
Exemplu:
o instanţiere a tipului de entitate Salariat ( o entitate a acestui tip) este
123, Ionescu, Gheorghe, 1974/03/12, M
În cadrul modelelor intervin două moduri de structurare a datelor. Prima formă de
structurare se referă la modul de asociere a datelor pentru a forma descrierile tipurilor de
entităţi. Este vorba de modul de agregare a valorilor pentru a forma tipul entitate.
A doua formă de structurare a datelor este dată de modul de reprezentare a relaţiilor
(legăturilor) între diferite mulţimi de entităţi ale bazei de date. Modelele de date apărute
diferă între ele prin modul în care poate realiza legăturile dintre mulţimile de entităţi.
Legăturile între două mulţimi de entităţi E1 şi E2 pot fi de trei tipuri:
Legături 1:1- fiecărei entităţi din E1 îi corespunde o singură entitate din E2 şi numai una
(figura 5.1).
E1 E2

. .
. .
. .

Figura 5.1 Relaţie 1:1


Exemplu de legătură 1:1 este prezentată în exemplul următor
relaţiile PRODUS(cod, denumire,pret_unitar, um)
STOC(cantitate)

PRODUS STOC
1, Ciment,387000, sac 100
2, Cuie, 23000, Kg 40
3, Gresie,650000, cutie 700
4, Var nestins, 120000, Kg 120
5, Var Lavabil, 340000, cutie 210
6, Faianţă, 345000, cutie 32
7, Cărămidă, 1499600, 500 buc 45

Figura 5.2 Exemplu de relaţie 1:1


Legături 1:N- unei entităţi din E1 îi corespund una sau mai multe entităţi din E2, fiecărei
entităţi din E2 îi corespunde o singură entitate din E1 (figura 4.3);
E1 E2

. .
. .
. .

Figura 53. Relaţie 1:N

Exemplu de relaţie 1:N este prezentată în exemplul următor:


relaţiile DEPARTAMENT( denumire)
SALARIAT(marca,nume,data_ang,data_n,salariu)

Departament SALARIAT
Secţia 1 1, Ionescu N.,12/09/65,10000000
Secţia 2 2, Popescu V., 04/05/68, 6500000
Contabilitate 3, Georgescu L., 21/03/78, 56785
Res. Umane 4, Lupescu M., 01/02/77, 3460000
5, Petrescu D., 11/12/76, 7600000
6, Filipescu S., 22/06/81 5600000
7, Negulescu G., 3/4/79, 7200000

Figura 5.4 Exemplu de relaţie 1:N


legături M:N- uneu entităţi din E1 îi corespunde una sau mai multe din E2 şi reciproc.
figura 5.5
E1 E2

. .
. .
. .

Figura 5.5 Relaţie M:N


Exemplu:
Între mulţimile de netităţi Student Profesor relaţia este M la N deoarece un student are
mai mulţi profesori iar un profesor predă la mai mulţi studenţi.

PROFESOR STUDENT
Marculescu I., Matematica 1, Ionescu N.,1, Zi
Gheorghe V., Fizica 2, Popescu V., 1, Zi
Niculescu R., Chimie 3, Georgescu L., 1, Zi
Petre M., Mecanica 4, Lupescu M., 1, Zi
5, Petrescu V., 1, Zi
6, Filipescu S., 1, Zi
7, Negulescu G., 1, Zi

Figura 5.6 Exemplu de relaţie M:N


Funcţie de legăturile între mulţimile de entităţi modelele sunt clasificate în trei categori:
- modele ierarhice;
- modele reţea;
- modele relaţionale.

Modelul ierarhic
Modelul ierarhic – cronologic primul model de date care a fost folosit la obţinerea de
sisteme de gestiune a bazelor de date.
Bazele de date ierarhice sunt primele baze de date moderne care separă organizarea fizică
a datelor de organizarea logică. Ele au apărut în jurul anilor 1969-1970 prin sistemul de
gestiune IMS (Integrated Management System) al firmei IBM ce foloseşte un limbaj de
descriere a datelor.
Modelul de date ierarhic foloseşte două forme de structurare, înregistrările pentru
reprezentarea tipurilor de entitate şi legăturile explicite pentru specificarea relaţiilor şi
conexiunilor generice între entităţi.
Structurile de date din cadrul modelului ierarhic pot fi descrise prin diagrama de structură
a datelor, un instrument de abstractizare, reprezentare şi analizare a proprietăţilor
modelului conceptual al bazei de date.
Diagrama de structură este un graf orientat reprezentând tipuri de entităţi şi legăturilor
funcţionale între acestea. Nodurile grafului corespund tipurilor de entităţi, arcele grfului
reprezentănd legăturile funcţionale între tipurile de entităţi de la capetele sale, orientarea
arcului este opusă sensului funcţionalităţii legăturii.
Relaţiile de tip M la N dintre mulţimile de entităţi nu pot fi reprezentate direct prin arcele
diagramei de structură.
Intensiunea sau modelul conceptual al unei baze de date ierarhice se poate reprezenta
printr-o diagramă de structură printr-un arbore orientat. Prin urmare nodurile sunt
organizate pe nivele, fiecare nod( exceptând nodul rădăcină) are o singură legătură către
nodul de pe nivelul ierarhic superior şi un număr arbitrar de legături cu nodurile de pe
nivelul ierarhic inferior. De asemenea poziţia nodurilor descendente care au acelaşi nod
ascendent este semnificativă. Sensul legăturilor funcţionale este întotdeuna de la nodul
părinte către nodurile fiu. O diagramă de structură care satisface aceste restricţii se
numeşte arbore de definiţie ierarhic.
Exemplu un arbore de definiţie ierarhic pentru o bază de date pentru o facultate din
universitate este:
Pers_Nedidactic

Facultate Cadre_didactice Student

SĂLI

Figura 5.7. Diagrama de structură a unui model de date reţea


Tipurile de înregistrări sunt:
Facultate (cod, denumire, adresa)
Pers_Nedidactic(id, nume, funcţie, salariu)
Cadre_didactice(id, nume, functie, disciplina)
Săli(id, numar, locatie, capacitatea)
Student(id, nume,prenume, an, specializare)

Extensiunea unui arbore de definiţie constă în instanţierile tipurilor entitate şi a


legăturilor corespunzătoare relaţiilor funcţionale de subordonare stabilite între tipurile
entităţilor. Extensiunea unui tip de entitate poate fi reprezentată sub forma unui tabel.
Fiecare linie corespunde unei instanţieri a tipului entitate respectiv. În tabele sunt permise
duplicatele. Relaţiile au ca extensie un set de legături
Exemplu

1, Ingineria Petrolului, Bd. Bucureşti 39


2, Inginerie Mecanica, Bd. Bucureşti 39

1, Stefanescu V., Tehnician, 3400000


2, Constantin, G., Secretar, 3500000

1, Gheorghe V., sef lucr, Matematica


2, Niculescu, R., asistent, Programare
3, Papacostea S., conf., Fizica

1, Ionescu N.,1, Zi
2, Popescu V., 1, Zi
3, Georgescu L., 1, Zi
4, Lupescu M., 1, Zi
5, Petrescu V., 1, Zi
6, Filipescu S., 1, Zi
7, Ionescu N,1, Zi
8, Popescu V, 1, Zi
9, Georgescu L, 1, Zi
10, Lupescu M, 1, Zi

Figura 5.8. Extensiunea unui model de date de tip ierarhic


Descrierea bazei de date ierarhice trebuie să cuprindă specificare elementelor:
- arborele ierarhic de definiţie prin specificarea nodului rădăcină şi a legăturilor între
nivele
- tipurile de entităţi nodurile arborelui
- atributelor din cadrul entităţilor
Descrierea folosind limbajul de descriere a datelor din IMS este
TREE universitate
RECORD Facultate ROOT
Cod INTEGER
Nume CHAR(20)
Adresa CHAR(20)
RECORD Tesa PARENT=Facultate
Cod INTEGER
Nume CHAR(20)
RECORD Profesori PARENT=Facultate
Nume CHAR(15)
Functie CHAR(10)
Disciplina CHAR(20)
RECORD Sala PARENT=Facultate
Numar CHAR(5)
Locatie CHAR(30)
Capacitate INTEGER
RECORD Student PARENT=Facultate
Nume
An INTEGER
Grupa CHAR(6)
Sit_scolara CHAR(1)

Modelul de date ierarhic foloseşte pentru reprezentarea relaţiilor între entităţi legături
explicite de tip părinte-fiu ceea ce face ca legăturile de tip 1:1 şi 1:N să fie bine
reprezentate. Modelul ierarhic nu exclude reprezentarea legăturilor de tip M:N dar
acestea sunt reprezentate cu preţul introducerii duplicatelor (vezi figura 5.8)
Reprezentarea din figura 5.8 nu reflectă în mod natural structura ierarhică a unei baze de
date, o reprezentare mai adecvată este aceea de colecţie de arbori disjuncţi (figura 5.9),
unde fiecare arbore reflectă structura arborelui de definiţie.

2, Inginerie Mecanica, Bd. Bucureşti 39

1, Gheorghe V., sef lucr, Matematica


1, Stefanescu V., Tehnician, 3400000
2, Constantin, G., Secretar, 3500000

2, Niculescu, R., asistent, Programare


7, Ionescu N,1, Zi
8, Popescu V, 1, Zi
9, Georgescu L, 1, Zi
1, Ionescu N.,1, Zi
10, Lupescu M, 1, Zi
2, Popescu V., 1, Zi
3, Georgescu L., 1, Zi
4, Lupescu M., 1, Zi
5, Petrescu V., 1, Zi
6, Filipescu S., 1, Zi

Figura 5.9. Model ierarhic cu arbori disjuncţi


Reprezentarea legăturilor M:N introduce foarte multe redundanţe datorate naturii
legăturilor funcţionale între tipurile de entităţi de tip arbore ierarhic în care orice instanţă
a unui nod fiu să fie legat la o singură instanţă a unui nod părinte.
Datorită structurii de arbore apare şi o puternică asimetrie relativ la tratarea unor
interogări pentru extragarea din baza de date a unor instanţe, care din punct de vedere
logic au complexitate echivalentă. Spre exemplu o interogare care trbuie să extragă
instanţele situate pe un nivel inferior ce se asociază unui nod de pe un nivel superior este
uşor de realizat, dar o inteorgare care să extragă din baza de date instanţele de pe un nivel
superior ce sunt legate la o anume instanţă este mult mai greu de realizat. De exemplu,
considerând instanţele din figura 5.8 se poate găsi foarte uşor toţi studenţi care studiază
Matematică cu profesorul Gheorghe, dar este mult mai greu să se determine care sunt
profesorii cu care studiază studentul Ionescu. Problema devine mult mai dificil de
rezolvat cu cât ierarhia are mai multe nivele.
Datorită modelului explicit de realizare a modelului ierarhic pe baza arborilor, acesta
suferă o serie de anomalii legate de operaţiile de adăugare, ştergere şi actualizare a
datelor. Astfel:
Anomalia de adăugare- nu se pot adauga instanţa de pe un nivel i nferior până nu se
cunoaşte instanţa de pe nivelul superior. Spre exemplu nu se pot adăuga studenţi pă nu se
cunoaşte un profesor cu care aceştia studiază.
Anomalia de ştergere- este inversă anomaliei de adăugare şi se referă la faptul că dacă se
şterge o instanţă de pe un nivel superior, toate instanţele situate pe nivele inferioare
pentru care este părinte unic se pierd. De exemplu, la ştergerea unui cadru didactic se vor
peirde instanţele entităţii STUDENT care au ca unic profesor pe acesta.
Anomalia de actualizare- modificarea unui atribut al unei entităţi situate pe un nivel
inferior necesită parcurgerea întregii ierarhii pentru a depista şi modifica toate duplicatele
acelei entităţi, altfel apare inconsistenţe în baza de date.
Modelul ierarhic prezintă dezavantajul unei flexibilităţi reduse pentru modelarea datelor,
fiind adecvat doar pentru reprezentarea legăturilor 1:1 şi 1:N care prezintă o structură
ierarhică. De asemenea, prin natura relaţiilor induse de structura ierarhică, limitează
interogările adresate bazei de date.
Principalul avantaj este legat de posibilitatea de a realiza implementări eficiente ale
acestui model chiar şi în condiţiile folosirii unor suporturi de memorare cu acces
secvenţial. De asemenea, modelul ierarhic este un model simplu, uşor de înţeles.

Modelul de date reţea


Prima bază de date care apare şi se apropie de structura tip reţea a fost IDS (Integrated
Data System ) a firmei Honeywell-Bull începând cu anul 1970, recomandările standard
pentru organizarea datelor în baze de date tip reţea au fost date în 1971 şi definitivate în
1973 de către CODASYL-DTBG (Conference Data System Language-Data Base Task
Group). Aceste standarde specifică principiile de organizare şi definesc limbajul de
descriere şi de interogare a bazelor de date tip reţea. Raportul original a suferit modificări
în anii 1976, 1978, 1978.
În 1974 apare SOCRATE al firmei franceze Compagnie Internationale pour
l’Informatique (CII) care respectă standardele bazelor de date în reţea.
Modelul conceptual ( intensiunea ) poate fi reprezentată printr-o diagramă de structură
sub formă de graf orientat ale g,arui noduri reprezintă tipurile entitate iar legăturile (
arcele) dintre noduri reprezintă legăturile funcţionale între entităţi. Sensul arcelor este
invers legăturilor de funcţionalitate. datorită acestui model de graf un anumit tip de
entitate ( nod) poate fi legat de un număr arbitrar de noduri. Deoarece un nod poate fi
legat de mai multe şi reciproc fiecare arc (relaţie) din diagrama de structură este
etichetată cu un nume. Aceste arce etichetate poartă numele de fan-set sau set DBTG
reprezentânt o legătură între tipul de înregistrare propietar şi un tip membru. Un fan-set
poate fi folosit pentru reprezentarea relaţiilor de tip 1:1, 1:N, dar nu poate servi pentru
reprezentarea directă a relaţiilor M:N.
Diagrama de structură pentru baza de date universitate este prezentată în figura 5.10

nedidactici TESA

acordate primite
didactic
Facultate Cadre_didactice Note Student

sali
SALI

Figura 5.10. Diagrama de structură a unui model de date reţea


Atributele tipurilor entitate sunt:
Facultate(idf, denumire, adresă)
TESA(Nume, funcţie,salariu)
Cadre_Didactice(nume,functie,disciplina)
Sala(nume,adresa,capacitate)
Note(nota)
Student(matricola,nume,sit_scolara,an,grupa)
Extensiunea bazei de date constă în instanţieri ale tipurilor de entitate şi a fan-set-urilor.
Proprietăţile fanset-urilor sunt:
- fiecare fanset are un tip entitate proprietar
- fiecare instanţiere a unui tip proprietar este proprietarul unui set de instanţieri, un
set nu include şi instanţe membru
- fiecare fanset include cel puţin un tip de entitate membru, unele pot include mai
multe tipuri de entitate membru
- un tip entitate nu poate fi proprietar şi membru al aceluiaşi fanset
- Nici o instanţiere la mai mult de o instanţiere a unui fanset
Implementarea fanset-urilor pentru majoritatea SGBD-urilor de tip reţea s-a făcut prin
lanţuri de pointeri, de regulă liste circulare ce are drept capăt o instanţă a tipului de
entitate proprietar. Pentru legarea instanţelor se pot folosi următoarele tipuri de
pointeri:
- pointeri de tip NEXT folosiţi pentru înlănţuirea simplă prin specificarea
următorului articol din lista instanţelor;
- pointeri de tip previous folosit pentru specificarea anteriorului articol din lista de
instanţe
- pointeri de tip OWNER ce leagă o instanţă membru de instanţa proprietar.
Cele trei tipuri de pointeri se pot combina în mai multe structuri posibile pentru a
reprezenta seturile:
- structura cu pointeri NEXT(fig. 5.11); este structura cea mai simplă şi mai
economică. Permite accesul secvenţial unidirecţional la membrii setului pornind
de la proprietarul acestuia. Dezavantajul este dat de parcurgerea doar
unidirecţională a listei astfel încât detectarea unui nod anterior unui nod se face
doar prin reparcurgerea listei;

E1 E2 En

Figura 5.11. Structura cu pointeri NEXT


- structură cu pointeri NEXT şi PREVIOUS(figura 5.12); este o l istă circulară
bidirecţională, ce permite parcurgerea atât înainte cât şi înapoi a listei. Necesită
capacitate de memorie mai mare şi timp de prelucrare mai mare la adăugare
ştergere pentru actualizarea pointerilor, dar operaţia de ştergere se execută mai
rapid deoarece se identifică direct anteriorul şi următorul element din lista de
instanţe;

E1 E2 E3

Figura 5.12. Structură cu pointeri NEXT PREVIOUS


- structură cu pointeri NEXT şi OWNER(figura 5.13), utilizată atunci cänd se
doreşte găsirea directă a proprietarului unei instanţe membru;
P

E1 E2 En

Figura 5.13. Structura cu pointeri NEXT şi OWNER

- structură cu pointeri de tip NEXT, PREVIOUS, OWNER(figura 5.14.), este cea


mai complexă structură , dar prezintă dezavantajul necesarului de memorie mai
mare şi timp mai mare pentru actualizarea pointerilor la ştergere şi inserare.

E1 E2 En

Figura 5.14. Structura cu pointeri NEXT, PREVIOUS şi OWNER


Descrierea structurii bazei de date trebuie să conţină
- descrierea tipurilor de entitate prin numele entităţii, numele şi tipul atributelor,
dimensiunea atributelor.
- descrierea fanset-urilor prin numele lui, specificarea tipului proprietar şi a tipului
membru;
- opţiuni privind tipul de acces la instanţe;
- structurile folosite la reprezentarea fanset-urilor.
Astfel descrierea minimală bazei de date referitoare la universitate este:
RECORD NAME IS Facultate
idf TYPE IS FIXED 2
denumire TYPE IS CHARACTER 15
adresa TYPE IS CHARACTER 30
RECORD NAME IS TESA
nume TYPE IS CHARACTER 25
functie TYPE IS CHARACTER 10
salariu TYPE IS FIXED 5
RECORD NAME IS Cadre_did
nume TYPE IS CHARACTER 25
functia TYPE IS CHARACTER 15
disciplina TYPE IS CHARACTER 10
RECORD NAME IS Sali
nume TYPE IS CHARACTER 25
adresa TYPE IS CHARACTER 50
capacitate TYPE IS FIXED 3
RECORD NAME IS Note
nota TYPE IS FIXED 2
RECORD NAME IS Student
matricola TYPE IS FIXED
nume TYPE IS CHARACTER 25
sit_scolara TYPE IS CHARACTER 1
an TYPE IS FIXED 1
grupa TYPE IS CHARACTER 4
SET NAME IS Nedidactic
OWNER IS Facultate
MEMBER IS TESA
SET NAME IS didactic
OWNER IS Facultate
MEMBER IS Cadre_did
SET NAME IS sali
OWNER IS Facultate
MEMBER IS Cadre_did
SET NAME IS acordate
OWNER IS Cadre_did
MEMBER IS nota
SET NAME IS primite
OWNER IS student
MEMBER IS nota
Natura funcţională a legăturilor face imposibilă reprezentarea directă a relaţiilor de tip
M:N. Totuşi aceste relaţii pot fi reprezentatefolosind un tip de entitate intermediar şi două
tipuri de legături funcţionale (fanset-uri), sau prin duplicarea instanţelor, la fel ca şi la
modelul ierarhic. O diagramă de instanţe implementată prin structuri cu pointeri NEXT şi
OWNER.
Natura legăturilor funcţionale dintre tipurile de entităţi a atât pentru modelul ierarhic cât
şi pentru modelul reţea, a fost impusă de considerente practice de implementare pe
sistemele de calcul. În lipsa acestei restricţii o anume instanţă ar putea apare membru
într-un număr de fanset-uri necunoscut în momentul descrierii, iar acest număr s-ar
modifica dinamic în timpul exploatării ceea ce înseamnă număr variabil de pointeri
asociaţi unei anumite instanţe.
Datorită simetriei în reprezentarea tipurilor de entităţi a bazei de date rezultate din
modelul de date de tip reţea toate interogările au acelaşi grad de dificultate. De asemenea
sunt eliminate şi anomaliile observate la modelul de date de tip ierarhic referitor la
adăugare, ştergere sau actualizare. Astfel, operaţia de adăugare a unei entităţi membru
este simplă, iniţial nu există nici o legătură a acestei instanţe cu alte instanţe propietar din
baza de date, lista proprie va fi vidă şi constă din un pointer la instanţa respectivă.
Se poate şterge orice instanţă a unei entităţi proprietar fără a afecta instanţele
corespunzătoare instanţelor membru ce au o existenţă de sine stătătoare. Vor dispare doar
unele elemente din legătură.
Se poate actualiza atributele unei instanţe fără a introduce inconsistenţe deoarece orice
instanţă apare o singură dată.
Dezavantajul modelului de date de tip reţea este dat de faptul că are o structură foarte
apropiată de modul de stocare, legăturile între entităţi sunt explicite, realizate prin
poinetri a caror gestiune şi manipulare revine utilizatorului. Întreaga structură de liste
circulare este vizibilă utilizatorului. Aplicaţiile devin complexe deoarece operaţiile de
acces la date presupune abilitatea de parcurgere a listelor de pointeri. Altfel spus, acest
model de date nu realizează corect independenţa fizică şi logică a datelor.
Mulţimea interogărilor posibile din baza de date de tipp reţea este dată de legăturile
explicite dintre mulţimile de entităţi adică de structura bazei de date. Prin urmare
legăturile explicite limiteaz,a gama interogărilor, apariţia de noi interogări presupune
modificarea structurii bazei de date prin adăugarea, ştergerea, modificarea legăturilor
explicite.

Modelul relaţional
Modelul relaţional a fost propus ca în iunie 1970 de către E.F. Codd într-un articol
denumit « A Relational Model of Data for Large Shared Data Banks ».
Modelul relaţional a apărut târziu, fiind necesară atingerea unui anumit nivel de
performanţă a sistemelor de calcul. Principiile care stau la baza modelului relaţional
pornesc de la teoria matematică a relaţiilor fapt ce permite definirea şi deducerea concisă
a proprietăţilor acestuia.
Devine unul din cele mai folosit model de date datorită flexibilităţii structurii lor şi a
uşurinţei în utilizare. Modelul de date relaţional este folosit acum în toate SGBD actuale
ce dispun de limbaje de descriere şi manipulare a datelor de nivel înalt, simple şi
puternice care asigură o independenţă a datelor atât fizică cât şi logică. Caracteristica
principală a cestor limbaje denumite generic limbaje relaţionale este posibilitatea de a
defini relaţii noi pe baza unor relaţii deja existente. Pornind de la aceste limbaje, în cadrul
sistemelor de gestiune a bazelor de date au fost definite interfeţe flexibile şi prietenoase
care permite utilizarea bazelor de date de către categori foarte largi de utilizatori.
Modelul de date relaţional urmăreşte o reprezentare omogenă a legăturilor ce se stabilesc
între date.
Fie mulţimile D1,D2,...,Dn şi produsul lor cartezian D1xD2xD3x...xDn ce este mulţimea
tuturor n-tuplelor ordonate (d1,d2,...,dn) astfel încât d1 aparţine lui D1, d2 aparţine lui
D2,..., dn aparţine lui Dn. O relaţie R pe mulţimile D1,D2,...,Dn este o submulţime a
produsului cartezian D1xD2x...XDn.
Mulţimile D1,...,Dn poartă numele de domeniile relaţiei R;
Valoarea n poartă numele de grad sau aritatea relaţiei R;
numărul n-tuplelor se numeşte cardinalitatea relaţiei R.
O relaţie fiind o mulţime posedă caracteristici ce derivă din noţiunea de mulţime.
Deoarece mulţimile sunt colecţii de elemente distincte rezultă că într-o relaţie nu există
două n-tuple identice adică oricare două n-tuple diferă prin cel puţin o valoare a
elementelor lor. această proprietate stă la baza definirii conceptului de cheie a unei relaţii.
Ordinea elementelor într-o mulţime este nerelevantă şi prin urmare ordinea de specificare
a n-tuplelor într-o relaţie este arbitrară, prin schimbarea ordinii n-tuplelor relaţia rămâne
aceiaşi
Un domeniu este ansamblul de valori admisibile pentru o componentă a unei relaţii.
Exemple:
domeniul numelor de persoane
domeniul notelor ce pot fi acordate studenţilor {1,2,3,4,...,10}

În cadrul modelului relaţional conceptul de domeniu este important în realizarea


legăturilor sementice dintre relaţii.
Două domenii sunt compatibile dacă ele sunt comparabile din punct de vedere semantic,
deci dacă mulţimile de valori care le definesc nu sunt disjuncte.
Două domenii identice sau aflate în relaţie de incluziune sunt compatibile. Orice operaţie
de cuplare sau de comparare a două valori din două domenii are sens numai dacă cele
două domenii sunt compatibile.
Exemplu:
Fie două relaţii salariat(marca, nume, prenume, coddep, salariu)
departament( cod, denumire)
Pentru a cupla cele două relaţii după câmpul coddept↔cod trebuie ca cele două atribute
să aibă domenii compatibile.
Un atribut este un domeniu cu nume sau mai precis o utilizare sub un anumit nume a unui
domeniu. Din acelaşi domeniu pot fi derivate mai multe atribute cu nume diferite, de
asemenea într-o relaţie pot exista mai multe atribute derivate din acelaşi domeniu.
Din punct de vedere al abstractizării, un domeniu este o generalizare a unor atribute.
Atribute cu acelaşi domeniu moştenesc proprietăţile domeniului şi reciproc un domeniu
are toate proprietăţile care sunt comune tuturor atributelor definite pe acesta.
Orice n-tuplă a unei relaţii poate fi identificată în mod unic prin valorile atributelor sale.
De regulă pentru identificarea unor n-tuple nu sunt necesare volorile tuturor
componentelor sale ci sunt suficente doar valorile unui subset al valorilor atributelor.
Numim cheie a unei relaţii R un subset K al atributelor relaţiei R care satisface
proprietăţile:
Identificare unică- fiecare tuplă a relaţiei R este identificată în mod unic de valorile
atributelor care compun cheia K.
Neredondanţă- subsetul K este minimal în sensul că eliminarea oricărui atribut din K
duce la pierderea identificării unice
Orice atribut care face parte dintr-o cheie primară se numeşte atribut prim, toate celelalte
atribute sunt neprime. Cheia primară are un rol important în implementarea strategiilor de
interogare şi căutare. Cheia primară se foloseşte în cazul sistemelor de gestiune a bazelor
de date pentru identificarrea unică a tuplelor. Datorită acestui fapt ( de a asigura
unicitatea tuplei) asupra cheii primare se impun restricţiile:
- nu sunt admise valori nedefinite pentru atributele unei chei primare
- nici o valoare a unui atribut din cadrul unei chei primare nu poate fi modificat în
cadrul operaţiunilor de actualizare
În cadrul unei relaţii se va selecta drept cheie primară dintre cheile candidate aceea cheie
care are cel mai mic număr de atribute.
Modelul relaţional foloseşte o singură formă de structurare a informaţiilor şi anume
relaţiile.
Intensiunea unei baze de date relaţionale este specificată prin schema relaţională ce
constă din una sau mai multe scheme de relaţie. O schemă de relaţie cuprinde numele
relaţiei şi atributele acestuia.
Exemplu:
Datele referitoare la facultăţi vor fi structurate prin intermediul unui model de date
relaţional prin următoarele relaţii:
Facultate( codf, nume, adresa)
Pers_nedidactic( marca, codfac, nume, salariu)
Sala( id,codf, denumire, locatie, capacitate)
Profesor( cod, codfac, nume, functie, disciplina)
Student( matricola, codfac, nume, incadrare, an, sex)
Note( id, codprof,codstud, nota)
Reprezentarea legăturilor într-un model de date relaţional se face în următoarele moduri:
- legăturile 1:1 şi 1:N se implementează printr-o tehnică denumită propagarea
cheilor. Considerând intensiunea din exemplul anterior legătura funcţională între
relaţia Facultate şi relaţia Profesor se realizează prin apariţia în relaţia Profesor a
atributului codfac asociat cu atributul codf ce este cheie primară în relaţia
Facultate. Atributul codfac din relaţia Profesor poartă numele de cheie străină
(externă -foreign key) a relaţiei Facultate în relaţia Profesor.
- legăturile M:N se implementează prin crearea unei scheme de relaţie separate prin
care se reprezintă legătura dintre celelalte două scheme de relaţii. Spre exemplu
legătura de tip M:N între relaţia Profesor şi Student poate fi reprezentată printr-o
altă relaţie separată de cele două denumită Note, care are ca atribute (codprof şi
codstud) cheile primare din Profesor şi Student. În plus faţă de aceste atribute pot
apare şi altele ce caracterizează legătura între cele două relaţii ( în cazul nostru
atributul nota)
Extensiunea unui model relaţional de date este reprezentată sub formă de tabele. Fiecare
tabel corespunde unei scheme de relaţie din cadrul schemei relaţionale. În aceste tabele
nu sunt permise duplicatele, iar ordinea liniilor este arbitrară. Acest tabel corespunde unei
relaţii în sens matematic şi este denumit tot relaţie în sensul bazelor de date. O coloană a
unui tabel corespunde unui atribut al unui tip entitate şi se numeşte tot atribut. O linie a
tabelului reprezintă o instanţiere a unui tip entitate sau unui tip de legătură ,si se numeşte
n_tuplă sau mai simplu tuplă. Tot tabelul reprezintă fie o mulţime de entităţi de un tip dat,
fie mulţimea legăturilor existenete între două sau mai multe mulţimi de entităţi.
Descrierea unei baze de date relaţionale presupune specificarea fiecărei scheme de relaţie
din cadrul schemei relaţionale. Acest lucru se face prin limbajul de descriere date din
cadrul sistemului de gestiune a bazei de date. Spre exemplu în SQL pentru descrierea
structurii datelor se foloseşte instrucţiunea CREATE TABLE, astfel:
CREATE TABLE Facultate( codf int, nume varchar(30), adresa varchar(50))
CREATE TABLE Pers_nedidactic( marca int, codfac int, nume varchar(30), salariu
decimal(12,2))
CREATE TABLE Sala( id int,codf int, denumire varchar(20), locatie varchar(10),
capacitate int)
CREATE TABLE Profesor( cod int, codfac int, nume varchar(30), functie varchar(15),
disciplina varchar(25))
CREATE TABLE Student( matricola int, codfac int, nume varchar(30), incadrare
varchar(15), an int, sex CHAR(1))
CREATE TABLE Note( id int, codprof int,codstud int, nota int)

Sisteme total relaţionale


Un sistem de gestiune a bazelor de date relaţional trebuie să satisfacă trei principii de
integritate:
- principiul integrităţii domeniului – posibilitatea de a se verifica din punct de
vedere sintactic şi semantic orice valoare din baza de date sau operaţie efectuată
asupra acesteia folosind definiţia domeniului din care face parte. Realizarea
acestui principiu face imposibilă inserarea unor valori din afara domeniului unui
atribut ,si efectuarea unor operaţii între valori din domenii incompatibile.
- principiul integrităţii entităţii (relaţiei) condiţiile impuse cheilor primare de a avea
valori unice şi nenule;
- principiul integrităţii referinţei se aplică în cazul propagării cheilor între două
relaţii. Astfel, fie o relaţie R1 ce are o cheie primară K1 şi o relaţie R2 ce conţine
o cheie străină K2 din relaţia R1 în relaţia R2, atunci orice valoare a lui K2
trebuie să se regăsescă printre valorile atributului K1 din R1.
Un sistem total relaţional este un sistem de cestiune a bazelor de date care îndeplineşte
cele trei principii de integritate şi furnizează utilizatorului un limbaj de manipulare a
datelor echivalent ca putere de expresie cu limbajele bazate pe algebra relaţionale.
O cheie străină (foreign key) este un subset K al atributelor unei relaţii R dacă există o
relaţie R1, nu neapărat distinctă, ce are o cheie K1 iar pentru fiecare valoare a lui K din
relaţia R există o singură valoare identică a cheii K1 din relaţia R1.
Din definiţia de mai sus rezultă că o cheie străină poate fi rezultatul propagării unei chei
primare sau unei chei candidate. Valoarea unei chei străine reprezintă o referintă la tupla
( linia) a cărei cheie are o valoare identică cu cea a cheii străine. Relaţia care conţine
cheia străină se numeşte relaţie de referinţă, iar relaţia ce conţine din care aceasta s-a
propagat se numeşte relaţie referită. Condiţia de integritate referenţială cere ca toate
valorile referinţei să se g,asească printre valorile cheilor primare din relaţia referită.
Această cerinţă induce în baza de date constrângeri între relaţii denumite constângeri
referenţiale ce pot fi reprezentate prin diagrame referenţiale. Acestea sunt grafuri în care
nodurile sunt relaţii iar arcele sunt constr;angerile, sensul arcelor este de la relaţia de
referinţă către relaţia referită.
Operaţiile de adăugare, ştergere şi actualizare pot afecta integritatea referenţială a unei
baze dedate.
Operaţia de adăugare a unei tuple în relaţia de referinţă trebuie să se execute astfel încât
valorile tuturor atributelor de fac parte din cheia străină să se regăsească printre valorile
atributelor ce fac parte din cheia primară din relaţia referită. Dacă această condiţie nu este
îndeplinită atunci operaţia de adăugare nu trebuie să se execute. Adăugarea unor tuple în
relaţia referită se face fără nici o restricţie.
Operaţia de ştergere se face fără restricţii pentru relaţia de referinţă. Ştergerea unei tuple
din relaţia referită se face ţinând cont că valoarea cheii primare poate fi folosită în relaţia
de referinţă. De aceea, pentru a se menţine integritatea referenţială, se realizează fie
ştergerea restricţionată fie ştergerea în cascadă. Ştergerea restricţionată se execută după
regula că nu se acceptă ştergerea unei tuple referite dacă aceasta este referită de cel puţin
o tuplă din relaţia de referinţă. Ştergerea în cascadă înseamnă că ştergerea unei tuple din
relaţia referită va fi urmată de ştergerea tuturor tuplelor din relaţia de referinţă care fac
referire la tupla ştearsă. Dacă tuplele şterse din relaţia de referinţă sunt, la rândul lor
referite de alte tuple, atunci ştergerea se propagă, în cascadă, asupra tuplelor ce fac
referire la acestea şi aşa mai departe.
Operaţia de actualizare poate fi privită ca o operaţie de ştergere urmată de o operaţie de
adăugare. Prin urmare, regulile de menţinere a integrităţii referenţiale rezultă din
combinerea regulilor de ştergere şi adăugare. Astfel, putem întâlni două tipuri de
actualizare şi anume actualizare restricţionată şi actualizare în cascadă. Actualizarea
restricţionată este aceea în care nu se acceptă schimbarea valorii unui atribut din cheia
primară a relaţiei referite atât timp cât există cel puţin o tuplă în relaţia de referinţă care
referă această valoare. Actualizarea în cascadă este aceea în care modificarea valorii unui
atribut din cheia primară a relaţiei referite este urmată de modificarea corespunzătoare a
cheilor străine în relaţiile de referinţă care fac referire la valoarea modificată.
Exemple

Comparaţia între modelele de date

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