relaţii între tabele

4
.3 Relaţii între tabele (Relationships) Relaţiile se formează prin stabilirea unei legături între un câmp (o combinaţie de câmpuri) dintr-un tabel şi câmpurile corespunzătoare din alt tabel. Legăturile între tabele sunt de trei tipuri: 1.relaţia unu la mai mulţi ( one-to-many ) – este cea mai frecvent utilizată şi se realizează între cheia primară a tabelei T1 şi un câmp similar, ca tip şi ca dimensiune din T2, numit şi cheie străină. Semnificaţia legăturii este că oricărei valori a câmpului cheie străina-C21 trebuie să-i corespundă o valoare a câmpului cheie cheie-C1. În timp ce în tabela T1 valoarea este unică, în tabela T2 ea se poate repeta de un număr infinit de ori. Tabela T1 Tabela T2 C1 – Primary Key C2 – Primary Key ............. ... C21 – Foreign Key ............. ... .......... 2.relaţia mai mulţi la mai mulţi (many-to-many ) – se aplică la cazurile în care valorii unui câmp din prima tabelă îi corespund mai multe valori în a doua tabelă şi invers, unei valori a unui câmp din a doua tabelă îi corespund mai multe valori din prima tabelă. Exemplul clasic al relaţiei este între tabela Studenţi şi Cursuri: un student este înscris la mai multe cursuri, un curs este ţinut pentru mai mulţi studenţi. Rezolvarea problemei se face prin spargerea relaţiei many-to-many în două relaţii one-to-many, cu ajutorul unei tabele de joncţiune (legătură) – T3. Cheile primare din T1 şi T2 vor constitui (vor face parte) cheia primară compusă a tabelei T3. Tabela T1 Tabela T2 C1 – Primary Key C2 – Primary Key 1 1 1

Upload: marytzamaria

Post on 15-Apr-2016

216 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Relaţii între tabele

.3 Relaţii între tabele (Relationships)Relaţiile se formează prin stabilirea unei legături între un câmp (o

combinaţie de câmpuri) dintr-un tabel şi câmpurile corespunzătoare din alt tabel.Legăturile între tabele sunt de trei tipuri:

1. relaţia unu la mai mulţi ( one-to-many ) – este cea mai frecvent utilizată şi se realizează între cheia primară a tabelei T1 şi un câmp similar, ca tip şi ca dimensiune din T2, numit şi cheie străină. Semnificaţia legăturii este că oricărei valori a câmpului cheie străina-C21 trebuie să-i corespundă o valoare a câmpului cheie cheie-C1. În timp ce în tabela T1 valoarea este unică, în tabela T2 ea se poate repeta de un număr infinit de ori.

Tabela T1 Tabela T2

C1 – Primary Key C2 – Primary Key................ C21 – Foreign Key................ ..........

2. relaţia mai mulţi la mai mulţi (many-to-many ) – se aplică la cazurile în

care valorii unui câmp din prima tabelă îi corespund mai multe valori în a doua tabelă şi invers, unei valori a unui câmp din a doua tabelă îi corespund mai multe valori din prima tabelă. Exemplul clasic al relaţiei este între tabela Studenţi şi Cursuri: un student este înscris la mai multe cursuri, un curs este ţinut pentru mai mulţi studenţi. Rezolvarea problemei se face prin spargerea relaţiei many-to-many în

două relaţii one-to-many, cu ajutorul unei tabele de joncţiune (legătură) – T3. Cheile primare din T1 şi T2 vor constitui (vor face parte) cheia primară compusă a tabelei T3.

Tabela T1 Tabela T2

C1 – Primary Key C2 – Primary Key

................

Tabela T3

1

1

1

Page 2: Relaţii între tabele

Tabela T1 Tabela T2

C31 Primary Key

C32 Primary Key

3. Relaţia unu-la-unu ( one-to-one) - are loc între două tabele care au aceeaşi cheie primară. Se defineşte prin intermediul ei o tabelă compusă din cele două tabele iniţiale. Relaţia este utilă în cazul structurilor mari, care au nevoie de mai mult de 255 de câmpuri (limita Access-ului pentru un singur tabel) sau pentru creşterea vitezei de căutare a datelor, dacă nu toate înregistrările din primul tabel au corespondent în al doilea tabel.

Crearea unei relaţii se face astfel (fig.5):a) Din meniul Tools->opţiunea Relationships sau activând butonul

Relationships se deschide fereastra Relationships;b) Se adaugă tabelele relaţionate din fereastra Show Tables;c) Se selectează câmpul PK din tabela principală şi se „trage” cu ajutorul

mouse-ului până la câmpul corespunzător din tabela asociată;d) Se deschide fereastra de stabilire a detaliilor relaţiei (Edit Relationships):

câmpurile corespunzătoare din tabele, butonul Join Type - tipul de legătură stabilit şi trei casete de validare:

Enforce Referential Integrity – impune integritatea referenţială Cascade Update Related Fields – actualizarea în cascadă a câmpurilor implicate în relaţie; Cascade Delete Related Records – ştergerea în cascadă a câmpurilor implicate în relaţie;

e) Se închide fereastra Relationships şi se salvează legăturile create.

11

Page 3: Relaţii între tabele

Verificarea integrităţii referenţiale este realizată de sistemul Access la solicitarea proiectantului BD şi constă în:

Verificarea câmpurilor incluse în relaţie: să fie de acelaşi tip şi să aibă aceeaşi dimensiune;

Introducerea unei valori în câmpul cheie străină din tabela secundară se face numai dacă această valoare se regăseşte în câmpul cheie primară din tabela principală;

Nu se admit ştergeri sau actualizări ale unei valori a cheii primare atâta timp căt există înregistrări corespunzătoare în tabela secundară;

Pentru realizarea ştergerilor şi actualizărilor în cascadă s-au prevăzut cele două casete de validare Cascade Update şi Cascade Delete. Ştergerea în cascadă înseamnă că o solicitare de ştergere a unei înregistrări din tabela primară va determina ştergerea înregistrărilor corespunzătoare din tabelul asociat. Similar se produce şi actualizarea în cascadă: modificarea valorii câmpului cheie primară din tabela principală determină modificarea tuturor înregistrărilor corespunzătoare din tabela asociată.

Relaţiile dintre tabele conferă consistenţa şi coerenţa bazei de date, de aceea în cadrul proiectării bazei de date stabilirea corectă a legăturilor dintre tabele este foarte importantă.

Fig. 5 Stabilirea relaţiilor între tabele

Page 4: Relaţii între tabele

Asocieri – în cursul definirii unei relaţii Access pune la dispoziţie un buton pentru definirea tipului de asociere prestabilit. Asocierea defineşte modul în care înregistrările din tabelele corelate vor fi combinate într-o interogare: Asocieri interne (inner join) – tipul de asociere implicit; o interogare cu

asociere internă va afişa numai acele înregistrări care corespund ambelor tabele.

Asocieri externe (outer join) – precizează că o interogare va selecta toate înregistrările dintr-o tabelă şi numai pe cele care corespund din celălalt tabel.

Sunt de 2 tipuri, în funcţie de tabela din care se preiau toate înregistrările:o Asociere stânga (left join) o Asociere dreapta (right join).

Asocierile externe nu se folosesc prea des deoarece sunt mai puţin flexibile, mai ales când sunt implicate mai multe tabele.Asociere intrinsecă (self join) – este o relaţie care asociază unui câmp dintr-un tabel un câmp din acelaşi tabel. Se crează prin duplicarea tabelei