Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


Relatii intre tabele (Relationships)

access



+ Font mai mare | - Font mai mic



Relatii intre tabele (Relationships)

Relatiile se formeaza prin stabilirea unei legaturi intre un camp (o combinatie de campuri) dintr-un tabel    si campurile corespunzatoare din alt tabel.



Legaturile intre tabele sunt de trei tipuri:

  1. relatia unu la mai multi (one-to-many) - este cea mai frecvent utilizata si se realizeaza intre cheia primara a tabelei T1 si un camp similar, ca tip si ca dimensiune din T2, numit si cheie straina. Semnificatia legaturii este ca oricarei valori a campului cheie straina-C21 trebuie sa-i corespunda o valoare a campului cheie cheie-C1. In timp ce in tabela T1 valoarea este unica, in tabela T2 ea se poate repeta de un numar infinit de ori.
 


Tabela T1

 

Tabela T2

C1 - Primary Key

C2 - Primary Key

C21 - Foreign Key

  1. relatia mai multi la mai multi (many-to-many) - se aplica la cazurile in care valorii unui camp din prima tabela ii corespund mai multe valori in a doua tabela si invers, unei valori a unui camp din a doua tabela ii corespund mai multe valori din prima tabela. Exemplul clasic al relatiei este intre tabela Studenti si Cursuri: un student este inscris la mai multe cursuri, un curs este tinut pentru mai multi studenti.

Rezolvarea problemei se face prin spargerea relatiei many-to-many in doua
relatii one-to-many, cu ajutorul unei tabele de jonctiune (legatura) - T3. Cheile primare din T1 si T2 vor constitui (vor face parte) cheia primara compusa a tabelei T3.

Tabela T1

 

Tabela T2

C1 - Primary Key

 

C2 - Primary Key

Tabela T3

 

C31    Primary Key

 

C32    Primary Key

  1. Relatia unu-la-unu (one-to-one)- are loc intre doua tabele care au aceeasi cheie primara. Se defineste prin intermediul ei o tabela compusa din cele doua tabele initiale. Relatia este utila in cazul structurilor mari, care au nevoie de mai mult de 255 de campuri (limita Access-ului pentru un singur tabel) sau pentru cresterea vitezei de cautare a datelor, daca nu toate inregistrarile din primul tabel au corespondent in al doilea tabel.

Crearea unei relatii se face astfel (fig.5):

a)       Din meniul Tools->optiunea Relationships sau activand butonul Relationships se deschide fereastra Relationships;

b)       Se adauga tabelele relationate din fereastra Show Tables;

c)        Se selecteaza campul PK din tabela principala si se "trage" cu ajutorul mouse-ului pana la campul corespunzator din tabela asociata;

d)       Se deschide fereastra de stabilire a detaliilor relatiei (Edit Relationships): campurile corespunzatoare din tabele, butonul Join Type - tipul de legatura stabilit si trei casete de validare:

Enforce Referential Integrity - impune integritatea referentiala

Cascade Update Related Fields - actualizarea in cascada a campurilor
implicate in relatie;

Cascade Delete Related Records - stergerea in cascada a campurilor
implicate in relatie;

e)        Se inchide fereastra Relationships si se salveaza legaturile create.


Verificarea integritatii referentiale este realizata de sistemul Access la solicitarea proiectantului BD si consta in:

ð     Verificarea campurilor incluse in relatie: sa fie de acelasi tip si sa aiba aceeasi dimensiune;

ð     Introducerea unei valori in campul cheie straina din tabela secundara se face numai daca aceasta valoare se regaseste in campul cheie primara din tabela principala;

ð     Nu se admit stergeri sau actualizari ale unei valori a cheii primare atata timp cat exista inregistrari corespunzatoare in tabela secundara;

ð     Pentru realizarea stergerilor si actualizarilor in cascada s-au prevazut cele doua casete de validare Cascade Update si Cascade Delete.

Stergerea in cascada inseamna ca o solicitare de stergere a unei inregistrari din tabela primara va determina stergerea inregistrarilor corespunzatoare din tabelul asociat.

Similar se    produce si actualizarea in cascada: modificarea valorii campului cheie primara din tabela principala determina modificarea tuturor inregistrarilor corespunzatoare din tabela asociata.

Relatiile dintre tabele confera consistenta si coerenta bazei de date, de aceea in cadrul proiectarii bazei de date stabilirea corecta a legaturilor dintre tabele este foarte importanta.

Asocieri in cursul definirii unei relatii Access pune la dispozitie un buton pentru definirea tipului de asociere prestabilit. Asocierea defineste modul in care inregistrarile din tabelele corelate vor fi combinate intr-o interogare:

Asocieri interne (inner join) - tipul de asociere implicit; o interogare cu asociere interna va afisa numai acele inregistrari care corespund ambelor tabele.

Asocieri externe (outer join) - precizeaza ca o interogare va selecta toate inregistrarile dintr-o tabela si numai pe cele care corespund din celalalt tabel.
Sunt de 2 tipuri, in functie de tabela din care se preiau toate inregistrarile:

o       Asociere stanga (left join)

o       Asociere dreapta (right join).

Asocierile externe nu se folosesc prea des deoarece sunt mai putin flexibile, mai
ales cand sunt implicate mai multe tabele.

Asociere intrinseca (self join) - este o relatie care asociaza unui camp dintr-un tabel un camp din acelasi tabel. Se creaza prin duplicarea tabelei si stabilirea legaturii intre campuri. Este o asociere foarte performanta deoarece permite cautari recursive. De exemplu: o tabela care contine date despre parinti si copii.



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 4004
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved