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

baze de date



+ Font mai mare | - Font mai mic



Relatii intre tabele

Intr-o baza de date relationala datele pot fi stocate in unul sau mai multe tabele. Se recomanda folosirea mai multor tabele intre care exista legaturi decat proiectarea unui singur tabel cu multe campuri. Unul din scopurile principale ale proiectarii bazelor de date relationale este de a grupa campurile in tabele astfel incat sa se minimizeze redundanta datelor, si prin aceasta sa se reduca spatiul de stocare necesar bazei de date. Tabelele care contin date redundante pot crea probleme, denumite anomalii de reactualizare: anomali de inserare, anomalii de stergere si anomalii de modificare. Pentru a elimina aceste probleme tabelele trebuie sa fie normalizate pana la cel putin a treia forma normala.



In cadrul unei baze de date nu este obligatoriu ca intre toate tabelele sa existe relatii. Este posibil ca in cadrul unei aplicatii sa utilizam si tabele independente si/sau de lucru (tabele temporare). Intre doua tabele dintr-o baza de date exista o relatie atunci cand unul sau mai multe campuri cheie dintr-un tabel se potrivesc cu unul sau mai multe campuri cheie din celalalt tabel. De obicei campurile corespondente din ambele tabele au acelasi nume, tip de date si marime.

Din punct de vedere al momentului crearii acestora avem doua tipuri de relatii intre tabelele unei baze de date Access :

- relatii permanente - se stabilesc dupa definirea tabelelor si sunt cerute de modelul relational facand parte din structura bazei de date. Acestea se realizeaza de obicei prin corespondentele cheie primara - cheie externa si sunt memorate in baza de date.

- relatii temporare - se stabilesc intre tabele cu ocazia definirii unor cereri de interogare, nefiind inregistrate in structura bazei de date.

Avantajele utilizarii relatiilor

1. Atunci cand creati relatii intre tabele, Access asociaza automat campurile respective din tabele. Puteti crea astfel formulare, rapoarte, interogari care sa contina date din mai multe tabele.

2. Se pot crea subformulare si subrapoarte.

3. Un alt avantaj este posibilitatea de fortare a integritatii referentiale.

Tipuri de relatii in Access

1. Relatia One to One (unu la unu) - fiecarei inregistrari din tabelul parinte ii corespunde exact o singura inregistrare din tabelul copil. Acest tip de relatie se foloseste foarte rar.

2. Relatia One to Many (unu la mai multi) - fiecarei inregistrari din tabelul parinte ii corespunde mai mult de o inregistrare in tabelul copil. Sunt cele mai folosite.

3. Relatia Many to Many (mai multi la mai multi) - fiecarei inregistrari din tabelul parinte ii corespunde mai mult de o inregistrare in tabelul copil iar fiecarei inregistrari din tabelul copil ii poate corespunde mai mult de o inregistrare in tabelul parinte.

Tabelul parinte este tabelul care contine cheia principala iar tabelele copil sunt tabelele corelate. Pentru a implementa relatiile dintre tabele se folosesc cheile externe. Relatiile de tip one-to-one si one-to-many se implementeaza introducand in una din tabele o cheie externa (straina), care va face legatura cu cheia primara din tabela corespunzatoare. O legatura de tip many-to-many se implemnteaza introducand o tabela suplimentara care are o cheie primara compusa, fiecare element al cheii primare fiind o cheie externa.

Integritatea referentiala: se refera la un set de reguli care protejeaza datele prin stabilirea de restrictii pentru adaugarea si stergerea de inregistrari din tabelele relationate:

1. fiecare valoare a cheii externe trebuie sa se gaseasca printre multimea valorilor cheii candidat corespondente, cu alte cuvinte nu putem adauga inregistrari in tabelul copil fara ca acestea sa aiba corespondent in tabelul parinte;

2. nu putem sterge o inregistrare din tabelul parinte daca exista inregistrari corespondente in tabelele copil.

Alte reguli referitoare le cheia externa:

1. o cheie externa este simpla daca si numai daca cheia candidata corespondenta este simpla, si este compusa daca si numai daca cheia candidata corespondenta este compusa;

2. fiecare camp component al unei chei externe trebuie sa aiba acelasi tip de date si dimensiune cu al campului corespondent din cheia candidat;

3. o valoare a unei chei externe reprezinta o referinta catre o inregistrare care contine aceeasi valoare pentru cheia candidata corespondenta.

Crearea relatiilor intre tabele (Relationships)



Pentru a realiza relatii intre tabelele Access se alege optiunea Relationships din meniul Tools.

Pe ecran va aparea urmatoarea fereastra:

Se selecteaza fiecare tabel pe care doriti sa-l includeti in relatie si se activeaza butonul Add si apoi se inchide fereastra Show Table.

O relatie intre doua tabele se realizeaza prin operatia drag and drop de la cheia primara a tabelului principal la cheia externa a tabeluluii secundar. In fereastra Edit relationships se selecteaza optiunea Enforce Referential Integrity pentru a se asigura integritatea referentiala.

Daca selectati optiunea Cascade Update Related Fields atunci cand veti actualiza cheia primara din tabelul "1" (tabelul parinte), Access va actualiza automat toate cheile externe corespondente din tabelul "n" (tabelul copil). Daca dezactivati aceasta optiune, Access nu va permite sa schimbati valoarea campului cheie principala din tabelul "1" atata timp cat exista inregistrari corespondente in tabelul "n".

Optiunea Cascade Delete Related Fields este similara optiunii Cascade Update Related Fields numai ca afecteaza modul in care se face stergerea inregistrarilor. Cand aceasta optiune este selectata, Access va sterge toate inregistrarile corelate din tabelul/tabelele copil atunci cand stergeti inregistrarea cu cheia primara corespunzatoare din tabelul parinte. Daca nu este selectata, Access nu va permite stergerea inregistrarii ce contine cheia primara din tabelul parinte atata timp cat exista inregistrari corespondente in tabelul/tabelele copil.

In cazul in care relatia a fost definita in mod corect in fereastra Relationships va aparea o linie care leaga cele doua tabele dupa cum se poate vedea in figura de mai jos.

Relatia poate fi modificata ulterior prin dublu-click asupra legaturii dintre cele doua tabele. De asemenea se poate sterge o relatie intre tabele: se selecteaza linia de asociere si se apasa tasta DEL. Pentru stergere se poate folosi si optiunea Delete din meniul contextual (clic dreapta pe linia de asociere). Editarea ulterioara mai poate fi facuta si alegand optiunea Edit

Relationship din meniul contextual. Daca executati clic pe butonul Join Type pe ecran va aparea urmatoarea caseta de dialog:

Aceasta caseta de dialog va permite sa definiti tipul de asociere produsa de relatie. Asocierea (Join) determina modul in care corelatia dintre doua tabele afecteaza rezultatul unei interogari legate. Exista doua tipuri de asocieri:

- Asociere interna (INNER JOIN): este tipul prestabilit de asociere si selecteaza doar acele inregistrari din cele doua tabele care au valori corespondente in campurile de corelare.

- Asociere externa (OUTER JOIN) care poate fi de doua tipuri: asociere externa la stanga (LEFT OUTER JOIN) si asociere externa la dreapta (RIGHT OUTER JOIN).

Asocierea externa la stanga include toate inregistrarile din tabelul "1" si doar inregistrarile corespondente din tabelul "n". Invers, asocierea externa la dreapta include toate inregistrarile din tabelul "n" si doar inregistrarile corespondente din tabelul "1".

Relatiile dintre tabele pot fi tiparite selectand optiunea Print Relationships din meniul File.




Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 6419
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