Sunteți pe pagina 1din 3

.

3 Relaii ntre tabele (Relationships)


Relaiile se formeaz prin stabilirea unei legturi ntre un cmp (o
combinaie de cmpuri) dintr-un tabel i cmpurile corespunztoare din alt
tabel.
Legturile ntre tabele sunt de trei tipuri:
1. relaia unu la mai muli (one-to-many) este cea mai frecvent utilizat i
se realizeaz ntre cheia primar a tabelei T1 i un cmp similar, ca tip i
ca dimensiune din T2, numit i cheie strin. Semnificaia legturii este c
oricrei valori a cmpului cheie strina-C21 trebuie s-i corespund o
valoare a cmpului cheie cheie-C1. n timp ce n tabela T1 valoarea este
unic, n tabela T2 ea se poate repeta de un numr infinit de ori.
Tabela T1
C1 Primary Key
................
................

Tabela T2
C2 Primary Key
C21 Foreign Key
..........

2. relaia mai muli la mai muli (many-to-many) se aplic la cazurile n


care valorii unui cmp din prima tabel i corespund mai multe valori n a
doua tabel i invers, unei valori a unui cmp din a doua tabel i
corespund mai multe valori din prima tabel. Exemplul clasic al relaiei
este ntre tabela Studeni i Cursuri: un student este nscris la mai multe
cursuri, un curs este inut pentru mai muli studeni.
Rezolvarea problemei se face prin spargerea relaiei many-to-many n
dou
relaii one-to-many, cu ajutorul unei tabele de jonciune (legtur) T3.
Cheile primare din T1 i T2 vor constitui (vor face parte) cheia primar
compus a tabelei T3.
Tabela T1
C1 Primary Key
................

Tabela T3
C31 Primary Key
C32 Primary Key

Tabela T2
C2 Primary Key

3. Relaia unu-la-unu (one-to-one)- are loc ntre dou tabele care au aceeai
cheie primar. Se definete prin intermediul ei o tabel compus din cele
dou tabele iniiale. Relaia este util n cazul structurilor mari, care au
nevoie de mai mult de 255 de cmpuri (limita Access-ului pentru un

singur tabel) sau pentru creterea vitezei de cutare a datelor, dac nu


toate nregistrrile din primul tabel au corespondent n al doilea tabel.
Crearea unei relaii se face astfel (fig.5):
a) Din meniul Tools->opiunea Relationships sau activnd butonul
Relationships se deschide fereastra Relationships;
b) Se adaug tabelele relaionate din fereastra Show Tables;
c) Se selecteaz cmpul PK din tabela principal i se trage cu ajutorul
mouse-ului pn la cmpul corespunztor din tabela asociat;
d) Se deschide fereastra de stabilire a detaliilor relaiei (Edit Relationships):
cmpurile corespunztoare din tabele, butonul Join Type - tipul de
legtur stabilit i trei casete de validare:
Enforce Referential Integrity impune integritatea referenial
Cascade Update Related Fields actualizarea n cascad a
cmpurilor
implicate n relaie;
Cascade Delete Related Records tergerea n cascad a
cmpurilor
implicate n relaie;
e) Se nchide fereastra Relationships i se salveaz legturile create.

Fig. 5 Stabilirea relaiilor ntre tabele

Verificarea integritii refereniale este realizat de sistemul Access la solicitarea


proiectantului BD i const n:
Verificarea cmpurilor incluse n relaie: s fie de acelai tip i s aib
aceeai dimensiune;
Introducerea unei valori n cmpul cheie strin din tabela secundar se
face numai dac aceast valoare se regsete n cmpul cheie primar
din tabela principal;
Nu se admit tergeri sau actualizri ale unei valori a cheii primare atta
timp ct exist nregistrri corespunztoare n tabela secundar;
Pentru realizarea tergerilor i actualizrilor n cascad s-au prevzut
cele dou casete de validare Cascade Update i Cascade Delete.
tergerea n cascad nseamn c o solicitare de tergere a unei
nregistrri din tabela primar va determina tergerea nregistrrilor
corespunztoare din tabelul asociat.
Similar se produce i actualizarea n cascad: modificarea valorii
cmpului cheie primar din tabela principal determin modificarea
tuturor nregistrrilor corespunztoare din tabela asociat.
Relaiile dintre tabele confer consistena i coerena bazei de date, de
aceea n cadrul proiectrii bazei de date stabilirea corect a legturilor dintre
tabele este foarte important.
Asocieri n cursul definirii unei relaii Access pune la dispoziie un buton
pentru definirea tipului de asociere prestabilit. Asocierea definete modul n care
nregistrrile din tabelele corelate vor fi combinate ntr-o interogare:
Asocieri interne (inner join) tipul de asociere implicit; o interogare cu
asociere intern va afia numai acele nregistrri care corespund ambelor
tabele.
Asocieri externe (outer join) precizeaz c o interogare va selecta toate
nregistrrile dintr-o tabel i numai pe cele care corespund din cellalt tabel.
Sunt de 2 tipuri, n funcie de tabela din care se preiau toate nregistrrile:
o Asociere stnga (left join)
o Asociere dreapta (right join).
Asocierile externe nu se folosesc prea des deoarece sunt mai puin flexibile,
mai
ales cnd sunt implicate mai multe tabele.
Asociere intrinsec (self join) este o relaie care asociaz unui cmp dintr-un
tabel un cmp din acelai tabel. Se creaz prin duplicarea tabelei

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