Ghid pentru relațiile între tabele

Ghid pentru relațiile între tabele

Unul din scopurile unei proiectări bune a unei baze de date este de a elimina redundanța datelor (datele dublură). Pentru a atinge acest obiectiv, împărțiți datele în mai multe tabele în funcție de subiect, astfel încât fiecare aspect să fie reprezentat o singură dată. Apoi, furnizați programului Access o modalitate prin care să aducă la un loc informațiile care au fost împărțite - faceți acest lucru plasând câmpurile comune în tabele care sunt asociate. Totuși, pentru a efectua corect acest pas, trebuie să înțelegeți ce sunt relațiile dintre tabele, apoi să specificați relații în baza de date.

În acest articol

Introducere

Tipuri de relații între tabele

De ce se creează relații între tabele?

Despre integritatea referențială

Vizualizarea relațiilor între tabele

Introducere

După ce ați creat un tabel în baza de date pentru fiecare subiect, trebuie să furnizați programului Access o modalitate de a aduce informațiile la un loc atunci când aveți nevoie de ele. Faceți aceasta plasând câmpuri comune în tabele care sunt asociate, apoi definind relații între tabele. Apoi se pot crea interogări, formulare și rapoarte care afișează informații din mai multe tabele odată. De exemplu, formularul afișat aici include informații extrase din mai multe tabele:

Formular de comenzi care afișează informații din cinci tabele odată

1. Informațiile din acest formular provin din tabelul Clienți...

2. …tabelul Comenzi...

3. …tabelul Produse...

4. …și tabelul Detalii comenzi.

Numele clientului din caseta Facturat către este regăsit din tabelul Clienți, valorile ID comandă și Data comenzii provin din tabelul Comenzi, Nume produs provine din tabelul Produse, iar valorile Preț unitar și Cantitate provin din tabelul Detalii comenzi. Aceste tabele sunt legate unele de altele în mai multe moduri, pentru a se aduce informațiile necesare în formular.

În exemplul precedent, câmpurile din tabele trebuie să fie coordonate astfel încât să afișeze informații despre aceeași comandă. Această coordonare este realizată prin utilizarea relațiilor între tabele. O relație între tabele funcționează prin potrivirea datelor din câmpurile cheie (un câmp care are deseori același nume în ambele tabele). În majoritatea cazurilor, aceste câmpuri de potrivire sunt cheia primară dintr-un tabel, care furnizează un identificator unic pentru fiecare înregistrare și o cheie străină în celălalt tabel. De exemplu, angajații pot fi asociați cu comenzile pentru care sunt responsabili prin crearea unei relații între tabele între câmpurile ID angajat din tabelul Angajați și tabelul Comenzi.

ID angajat utilizat sub formă de cheie primară în tabelul Angajați și cheie străină în tabelul Comenzi.

1. ID angajat apare în ambele tabele sub formă de cheie primară... 

2. ... și cheie străină.

Începutul paginii

Tipuri de relații între tabele

În Access există trei tipuri de relații între tabele.

  • Relația unu-la-mai-mulți

    Să utilizăm ca exemplu o bază de date care urmărește comenzi și are un tabel Clienți și un tabel Comenzi. Un client poate plasa oricâte comenzi. Ca urmare, pentru fiecare client din tabelul Clienți, pot exista una sau mai multe comenzi în tabelul Comenzi. Relația dintre tabelul Clienți și tabelul Comenzi este o relație unu-la-mai-mulți.

    Pentru a crea o relație unu-la-mai-mulți în proiectul bazei de date, luați cheia primară din partea „unu” a relației și adăugați-o ca un câmp suplimentar sau câmpuri suplimentare la tabelul din partea „mai-mulți” a relației. În acest caz, de exemplu, adăugați un câmp nou, câmpul ID din tabelul Clienți, la tabelul Comenzi și îl denumiți ID client. Access utilizează apoi numărul ID client în tabelul Comenzi pentru a găsi clientul corect pentru fiecare comandă.

  • O relație mai-mulți-la-mai-mulți

    Acum haideți să vedem relația dintre tabelul Produse și tabelul Comenzi. O singură comandă poate include mai mult de un produs. Pe de altă parte, un singur produs poate apărea în mai multe comenzi. De aceea, pentru fiecare înregistrare din tabelul Comenzi pot exista mai multe înregistrări în tabelul Produse. În plus, pentru fiecare înregistrare din tabelul Produse, pot exista mai multe înregistrări în tabelul Comenzi. Această relație este denumită relație mai-mulți-la-mai-mulți. Rețineți că, pentru a detecta existența relațiilor mai-mulți-la-mai-mulți între tabelele dvs., este important să luați în considerare ambele părți ale relației.

    Pentru a crea o relație mai-mulți-la-mai-mulți, trebuie să creați mai întâi un al treilea tabel, denumit deseori tabel de joncțiune, care împarte relația mai-mulți-la-mai-mulți în două relații unu-la-mai-mulți. Inserați câmpul cheie primară din fiecare dintre cele două tabele în al treilea tabel. Ca rezultat, al treilea tabel înregistrează fiecare apariție, sau instanță, din relație. De exemplu, tabelul Comenzi și tabelul Produse au o relație mai-mulți-la-mai-mulți care este definită prin crearea a două relații unu-la-mai-mulți în tabelul Detalii comenzi. O comandă poate avea mai multe produse și fiecare produs poate apărea în mai multe comenzi.

  • O relație unu-la-unu

    Într-o relație unu-la-unu, fiecare înregistrare din primul tabel poate avea o singură înregistrare potrivită în al doilea tabel și fiecare înregistrare din al doilea tabel poate avea o singură înregistrare potrivită în primul tabel. Această relație nu este comună, deoarece, de cele mai multe ori, informațiile asociate în acest mod se stochează în același tabel. O relație unu-la-unu poate fi utilizată pentru a diviza un tabel cu multe câmpuri, pentru a izola o parte dintr-un tabel din motive de securitate sau pentru a stoca informații care se aplică numai pentru un subset al tabelului principal. Când identificați o astfel de relație, ambele tabele trebuie să partajeze un câmp comun.

Începutul paginii

De ce se creează relații între tabele?

Aveți posibilitatea să creați relații între tabele în mod explicit utilizând fereastra Relații sau glisând un câmp din panoul Listă de câmpuri. Access utilizează relațiile între tabele pentru a decide cum se asociază tabelele când trebuie utilizate într-un obiect de bază de date. Există mai multe motive pentru a crea mai întâi relații între tabele, apoi alte obiecte de bază de date, cum ar fi formulare, interogări și rapoarte.

  • Relațiile între tabele oferă informații proiectelor de interogare

    Pentru a lucra cu înregistrări din mai mult de un tabel, este necesar deseori să creați o interogare care asociază tabelele. Interogarea funcționează prin potrivirea valorilor din câmpul cheie primară al primului tabel cu un câmp cheie străină din alt doilea tabel. De exemplu, pentru a returna rânduri care listează toate comenzile pentru fiecare client, generați o interogare care asociază tabelul Clienți cu tabelul Comenzi pe baza câmpului ID client. În fereastra Relații, aveți posibilitatea să specificați manual câmpurile de asociat. Dar, dacă aveți deja o relație definită între tabele, Access oferă asocierea implicită, pe baza relației existente între tabele. În plus, dacă utilizați unul din experții de interogări, Access utilizează informațiile colectate din relațiile dintre tabele pe care le-ați definit deja pentru a vă prezenta opțiuni informate și a prepopula setările proprietăților cu valorile implicite potrivite.

  • Relațiile între tabele oferă informații proiectelor de formular și raport

    Când proiectați un formular sau raport, Access utilizează informațiile colectate din relațiile între tabele pe care le-ați definit deja pentru a vă prezenta opțiuni informate și a prepopula setările proprietăților cu valorile implicite potrivite.

  • Relațiile între tabele constituie baza pe care puteți impune integritatea referențială pentru a împiedica înregistrări solitare în baza de date. O înregistrare solitară este o înregistrare cu o referință la altă înregistrare, care nu există, de exemplu înregistrarea unei comenzii care face referire la o înregistrare de client care nu există.

    Când proiectați o bază de date, divizați informațiile în tabele, fiecare având o cheie primară. Apoi, adăugați chei străine la tabelele asociate care au referințe la acele chei primare. Aceste perechi de chei de forma cheie străină - cheie primară formează baza pentru relațiile între tabele și interogările multi-tabel. Este important ca aceste referințe cheie străină - cheie primară să fie sincronizate. Integritatea referențială, care este dependentă de relațiile de tabel, asigură că referințele sunt sincronizate.

Începutul paginii

Despre integritatea referențială

Când proiectați o bază de date, împărțiți informațiile din aceasta în mai multe tabele în funcție de subiect, pentru a minimiza redundanța datelor. Apoi, furnizați programului Access o modalitate de a aduce datele la un loc plasând câmpuri comune în tabele asociate. De exemplu, pentru a crea o relație unu-la-mai-mulți, luați cheia primară din tabelul „unu” și o adăugați ca un câmp suplimentar la tabelul „mai-mulți”. Pentru a aduce datele la un loc, Access ia valoarea din tabelul „mai-mulți” și caută valoarea corespondentă în tabelul „unu”. În acest mod, valorile din tabelului „mai-mulți” fac referire la valorile corespondente din tabelul „unu”.

Să presupunem că aveți o relație unu-la-mai-mulți între Expeditori și Comenzi și doriți să ștergeți un expeditor. Dacă expeditorul pe care doriți să-l ștergeți are comenzi în tabelul Comenzi, acele comenzi vor deveni „solitare” atunci când ștergeți înregistrarea expeditorului. Înregistrările vor conține în continuare un ID de expeditor, dar ID-ul nu va mai fi valid, deoarece înregistrarea la care face referire nu mai există.

Scopul integrității referențiale este de a împiedica apariția înregistrărilor solitare și de a ține sincronizate referințele, astfel încât această situație ipotetică să nu apară niciodată.

Impuneți integritatea referențială activând-o pentru o relație între tabele (consultați Impunerea integrității referențiale pentru instrucțiuni pas cu pas). După impunere, Access respinge orice operațiune care ar încălca integritatea referențială pentru acea relație între tabele. Aceasta înseamnă că Access va respinge actualizările care modifică ținta unei referințe și ștergerea care elimină ținta unei referințe. Este posibil să aveți nevoie, perfect corect, de modificarea cheii primare pentru un expeditor care are comenzi în tabelul Comenzi. Pentru astfel de cazuri, ceea ce vă trebuie, de fapt, este ca Access să actualizeze automat toate rândurile afectate ca parte a unei singure operațiuni. Astfel, Access asigură că actualizarea este efectuată complet, pentru ca baza de date să nu rămână inconsistentă, cu unele rânduri actualizate și altele nu. Din acest motiv Access acceptă opțiunea Actualizare în cascadă câmpuri corelate. Când impuneți integritatea referențială și selectați opțiunea Actualizare în cascadă câmpuri corelate, apoi actualizați apoi o cheie primară, Access actualizează automat toate câmpurile care fac referire la cheia primară.

De asemenea, este posibil să aveți nevoie, în mod corect, să ștergeți un rând și toate înregistrările asociate, de exemplu, o înregistrare Expeditor și toate comenzile asociate pentru expeditorul respectiv. Din acest motiv, Access acceptă opțiunea Ștergere în cascadă câmpuri corelate. Când impuneți integritatea referențială și selectați opțiunea Ștergere în cascadă câmpuri corelate, apoi ștergeți o înregistrare din partea cu cheia primară a relației, Access șterge automat toate înregistrările care fac referire la cheia primară.

Începutul paginii

Vizualizarea relațiilor între tabele

Pentru a vizualiza relațiile între tabele, faceți clic pe Relații în fila Instrumente bază de date. Se deschide fereastra Relații și afișează relațiile existente. Dacă nu au fost definite încă relații între tabele și deschideți fereastra Relații pentru prima oară, Access vă solicită să adăugați un tabel sau o interogare la fereastră.

Deschiderea ferestrei Relații

  1. Faceți clic pe Fișier, apoi faceți clic pe Deschidere.

  2. Selectați și deschideți baza de date.

  3. În fila Instrumente bază de date, în grupul Relații, faceți clic pe Relații.

    Dacă baza de date conține relații, apare fereastra Relații. Dacă baza de date nu conține relații și deschideți fereastra Relații pentru prima oară, apare caseta de dialog Afișare tabel. Faceți clic pe Închidere pentru a închide caseta de dialog.

  4. În fila Proiectare, în grupul Relații, faceți clic pe Toate relațiile.

    Astfel se afișează toate relațiile definite în baza de date. Rețineți că tabelele ascunse (tabelele pentru care este bifată caseta de selectare Ascuns din caseta de dialog Proprietăți a tabelului) și relațiile lor nu se vor afișa decât dacă este bifată caseta de selectare Afișare obiecte ascunse în caseta de dialog Opțiuni de navigare.

O relație între tabele este reprezentată printr-o linie de relație trasată între tabelele din fereastra Relații. O relație care nu are impusă integritatea referențială apare ca o linie subțire între câmpurile comune care acceptă relația. Când selectați relația făcând clic pe linia sa, linia se îngroașă pentru a indica faptul că este selectată. Dacă impuneți integritatea referențială pentru această relație, linia apare îngroșată la ambele capete. În plus, numărul 1 apare deasupra porțiunii îngroșate a liniei în partea unu a relației, iar simbolul infinit () apare deasupra liniei în cealaltă parte.

Când fereastra Relații este activă, se pot selecta următoarele comenzi pe panglică:

În fila Proiect, în grupul Instrumente:

  • Editare relații    Deschide caseta de dialog Editare relații. Când selectați o linie de relație, aveți posibilitatea să faceți clic pe Editare relații pentru a modifica relația tabelului. De asemenea, aveți posibilitatea să faceți dublu clic pe linia relației.

  • Ștergere aspect    Elimină toate tabelele și relațiile din afișare în fereastra Relații. Rețineți că această comandă ascunde numai tabelele și relațiile, nu le șterge.

  • Raport relație    Creează un raport care afișează tabelele și relațiile din baza de date. Raportul afișează în fereastra Relații numai tabelele și relațiile care nu sunt ascunse.

În fila Proiect, în grupul Relații:

  • Afișare tabel    Deschide caseta de dialog Afișare tabel pentru a fi posibilă selectarea de tabele și interogări pentru a fi vizualizate în fereastra Relații.

  • Ascundere tabel    Ascunde tabelul selectat în fereastra Relații.

  • Relații directe    Afișează toate relațiile și tabelele asociate pentru tabelul selectat în fereastra Relații, dacă nu sunt afișate deja.

  • Toate relațiile    Afișează toate relațiile și tabelele asociate în fereastra Relații. Rețineți că tabelele ascunse (tabelele pentru care este bifată caseta de selectare Ascuns din caseta de dialog Proprietăți) și relațiile lor nu se vor afișa decât dacă este bifată caseta de selectare Afișare obiecte ascunse în caseta de dialog Opțiuni de navigare.

  • Închidere    Închide fereastra Relații. Dacă faceți modificări în aspectul ferestrei Relații, sunteți întrebat dacă doriți să salvați modificările.

Începutul paginii

Extindeți-vă competențele Office
Explorați instruirea
Fiți primul care obține noile caracteristici
Alăturați-vă utilizatorilor Office Insider

Au fost utile aceste informații?

Vă mulțumim pentru feedback!

Vă mulțumim pentru feedback! Se pare că ar fi util să luați legătura cu unul dintre agenții noștri de asistență Office.

×