Documente Academic
Documente Profesional
Documente Cultură
6
Crearea relaţiilor
Cuprins:
6.1 INTRODUCERE............................................................................................. 88
6.2 CREAREA UNEI RELAŢII ÎNTRE DOUĂ TABELE .............................. 89
6.3 TIPUL RELAŢIEI .......................................................................................... 91
6.4 INTEGRITATEA REFERENŢIALĂ ........................................................... 91
6.5 TIPUL DE LEGĂTURĂ A UNEI RELAŢII - JOIN TYPE ....................... 93
6.6 CREAREA RELAŢIILOR MULTIPLE. ..................................................... 96
6.7 ÎNTREBĂRI .................................................................................................... 96
6.8 TEST GRILĂ UNITATEA DE ÎNVĂȚARE NR. 6..................................... 98
Obiective
Cunoaşterea modalităţilor de creare şi proiectarea a unei relaţii.
Configurarea proprietăţilor relaţiilor.
Cunoaşterea şi utilizarea tipurilor de relaţii şi a tipurilor de legătură a
relaţiilor
6.1 Introducere
Cele două
tabele între
care se
construieşte
relaţia
Câmpul comun
Selectăm
căsuţa
Enforce
Referential
Integrity
pentru a
putea defini
restricţii
asupra
legăturii nou
create
Se observă tipul legăturii:unul la mulţi
Nu vom putea crea legături între două tabele după orice câmpuri ci doar
după acele câmpuri care într-o tabelă sunt cheie primară şi în cealaltă
tabelă cheie externă. Cele două câmpuri după care se face legătura
trebuie să fie de acelaşi tip.
90
Tot cu modulul Relationships se vor putea defini şi relaţii multiple între
două tabele(cereri), adică relaţii care se stabilesc între mai multe câmpuri(nu numai
două).
Practic definirea relaţiilor se face prin acţiuni de selecţie din liste, tragere
sau setare, făcute numai cu mouse-ul.
91
editare se va găsi afişată în partea stângă. Dacă relaţia este de tip many to many
(nedeterminată), atunci proprietatea de integritate referenţială nu va putea fi setată.
Dacă o relaţie are setată integritate referenţială atunci se pot selecta(bifa)
două opţiuni care vor permite ca acţiunea de actualizare a unui câmp sau
ştergere a unor înregistrări din tabela părinte să se propage şi în tabelele
legate de aceasta. Acestea sunt:
► Cascade Update Related Fields (actualizarea în cascadă a
câmpurilor din relaţie). În acest caz, dacă se va modifica valoarea dintr-
un câmp al unei tabele părinte, atunci această modificare se va efectua
automat şi asupra câmpului corespunzător din tabela copil, dacă acesta e
legat de tabela părinte printr-o relaţie cu setarea de mai sus făcută. În
felul acesta, integritatea referenţială este păstrată pentru respectiva
relaţie.
► Cascade Delete Related Records (ştergerea în cascadă a
înregistrărilor din relaţie). În acest caz, ştergerea unei înregistrări din
tabela părinte, va duce la ştergerea automată din tabela copil, a tuturor
înregistrărilor care vor avea în câmpul de relaţie, aceiaşi valoare cu cea
din înregistrarea care a fost ştearsă.
Deci, dacă la o relaţie, care are proprietatea de integritatea referenţială,
sunt setate ambele opţiuni atunci actualizări în tabela părinte care ar trebui să fie
refuzate(blocate) pentru că produc în tabele copil „stricarea” integrităţii
referenţiale, vor fi acceptate şi efectuate, dar în acelaşi timp, automat se vor face şi
prelucrările necesare în tabela copil, pentru care proprietatea de care discutăm să se
menţină corectă, adică să nu existe „copil” care să nu aibă „părinţi” în tabelele din
ierarhia superioară.
Exemplu: Între tabelele PRODUSE şi STOCURI este creată o relaţie one to many,
între câmpurile Cod_P din cele două tabele. În funcţie de activarea sau nu a
integrităţii referenţiale şi de setarea sau nu a celor două opţiuni, avem următoarele
operaţii permise:
PRODUSE STOCURI
1 one to many ∞
DenumireP Um Preţ Cod_P Cod_P Cod_G Stoc
P1 Kg 10 1 1 101 10
P2 L 15 2 1 102 25
P3 Kg 25 3 1 103 15
P4 L 45 4 3 102 30
4 101 50
4 103 20
92
1. Integritatea referenţială nu este setată.
Sunt permise orice modificări de câmpuri sau ştergeri de înregistrări în
ambele tabele. Se observă că dacă, de exemplu se şterge înregistrarea 1 din
PRODUSE, înregistrările 1, 2 şi 3 din STOCURI, rămân fără informaţiile de nivel
superior(fără părinţi).
93
care nu se regăsesc în câmpul corespondent din cealaltă tabelă, care vor fi
înregistrările care se vor selecţiona din ambele tabele?
Ea este o proprietate, valabilă atât pentru relaţiile permanente cât şi pentru
cele temporare(din cereri). Este o proprietate care are un rol hotărâtor în execuţia
cererilor care folosesc la intrare mai multe tabele corelate.
Setarea tipului de legătură se face prin acţionarea din modulul de editare a
relaţiei permanente a butonului de comandă Join Type, care va duce la apariţia
ferestrei Join Properties, prezentată mai jos.
94
Exemplu: Considerăm două tabele PRODUSE şi STOCURI, legate printr-o relaţie
de tipul one to many realizată între câmpurile Cod_P şi care nu are setată
proprietatea de integritate referenţială.
PRODUSE STOCURI
1 one to many ∞
DenumireP Um Preţ Cod_P Cod_P Cod_G Stoc
P1 Kg 10 1 1 101 10
P2 L 15 2 1 102 25
P3 Kg 25 3 1 103 15
P4 L 45 4 3 102 30
4 101 50
4 103 20
5 103 50
1 101 10
P1 Kg 10 1
1 102 25
P2 L 15 2
1 103 15
P3 Kg 25 3
3 102 30
P4 L 45 4
4 101 50
4 103 20
95
3. Tipul de legătură a relaţiei este Right Outer Join. Se vor extrage următoarele
înregistrări:
- Din tabela PRODUSE - înregistrările: 1; 3; 4
- Din tabela STOCURI - toate înregistrările: 1; 2; 3; 4; 5; 6; 7
1 101 10
P1 Kg 10 1
1 102 25
P3 Kg 25 3
1 103 15
P4 L 45 4
3 102 30
4 101 50
4 103 20
5 103 50
6.6 Crearea relaţiilor multiple.
Între două tabele se pot crea relaţii multiple, adică între mai multe câmpuri.
Metoda folosită constă în realizarea la început a unei relaţii, după care, în modulul
de editare al acesteia, se vor selecta în cele două casete din partea superioară,
câmpurile din tabelele între care se vor stabili şi celelalte relaţii.
Pentru toate relaţiile create între cele două tabele, se permite o singură
proprietate pentru tipul de legătură.
6.7 Întrebări
1. Cum se stabileşte tipul unei relaţii?
Răspuns:
96
Tipul unei relaţiil este determinat automat funcţie de proprietăţile câmpurilor
care participă la relaţie. Astfel, dacă un câmp e cheie primară sau are
proprietatea Indexed setată la Yes(No Duplication), relaţia va fi în acel capăt
One. Dacă un câmp de legătură are proprietatea Indexed setată la No sau
Yes(Duplication OK), atunci relaţia în acel loc va fi Many. Dacă în ambele
capete relaţia este No Indexed sau Indexed-Duplication OK, atunci relaţia va fi
nedeterminată(many to many).
97
6.8 Test grilă unitatea de învățare nr. 6
100
16. Se dau următoarele două tabele cu: relaţie "one to many" pe câmpul CNP;
integritatea referenţială este setată; dar nu şi ştergerea şi actualizarea în
cascadă. Dacă se modifică câmpul CNP din înregistrarea 1 din tabelul
"Studenţi", ce se întâmplă?
18. Se dau următoarele două tabele cu: relaţie "one to many" pe câmpul CNP;
integritatea referenţială este setată; precum şi ştergerea şi actualizarea în
cascadă. Dacă se şterge înregistrarea 4 din tabelul "Studenţi", ce se întâmplă?
101