access definire relatii
DESCRIPTION
accessTRANSCRIPT
SGBD-ul MICROSOFT ACCESS
Definirea relaţiilor dintre tabele
Pentru a avea acces simultan la datele din mai multe tabele ale aceleiaşi baze de date este
necesar să se definească relaţiile standard dintre aceste tabele. Relaţiile între tabele se definesc pe
baza valorilor unui câmp dintr-o tabelă utilizat drept cheie primară şi valorilor aceluiaşi câmp
dintr-o altă tabelă, unde este utilizat drept cheie externă. Access impune existenţa aceluiaşi tip
de date pentru câmpurile care participă la o relaţie, în cazul câmpului de tip Number
proprietatea Field Size a celor două câmpuri trebuie să fie identică. Relaţia dintre câmpurile de
tip Text trebuie, în principiu, să folosească câmpuri de aceeaşi lungime. Se recomandă ca
stabilirea relaţiilor între tabele să se facă înainte de înregistrarea datelor, în S.G.B.D. Access
există următoarele posibilităţi de realizare a relaţiilor dintre tabele:
• Relaţia 1-1 (one-to-one sau unu la unu) este cea mai simplă relaţie între două
tabele, în această relaţie, unei valori a câmpului cheie principală dintr-o tabelă îi corespunde o
singură valoare din câmpul folosit drept cheie externă din cealaltă tabelă. Altfel spus, unei
înregistrări din tabela aflată în partea stângă a relaţiei îi corespunde o singură înregistrare din
tabela aflată în partea dreaptă a relaţiei. Tabelele aflate într-o relaţie one-to-one se pot combina
într-o singură tabelă, în care apar toate câmpurile celor două tabele. Relaţiile de acest tip nu sunt
uzuale.
• Relaţia 1-n (one-to-many sau unul la mai mulţi) constituie tipul cel mai răspândit
de relaţii. Conform acestei relaţii unei înregistrări din tabela aflată în partea stângă a relaţiei îi
corespund două sau mai multe înregistrări din tabela aflată în partea dreaptă a relaţiei. Asocierea
se bazează pe un câmp cheie principală unic într-o tabelă şi un câmp cheie externă din cealaltă
tabelă care admite valori duplicate.
• Relaţia n-1 (many-to-one sau mai mulţi la unul) este opusă relaţiei 1-n. Pentru a
crea relaţia many-to-one este suficient să se inverseze relaţia one-to-many. De aceea, se spune
că relaţia many-to-one este reflexivă, adică relaţia many-to-om este reflexia relaţiei
corespondente one-to-many. Dacă se selectează o înregistrare din tabela din partea many a
relaţiei se poate afla înregistrarea care corespunde cheii sale externe din tabela din partea one a
relaţiei. Relaţiile n-1 nu sunt bazate pe câmpuri cheie primară din nici una dintre cele două
tabele.
1
• Relaţia m-n (many-to-many sau mulţi la mai mulţi) nu poate fi exprimată ca o
simplă relaţie între două tabele. Relaţia many-to-many se poate exprima prin intermediul unei a
treia tabele care are relaţii one-to-many şi many-to-one cu cele două tabele.
Pe lângă stabilirea relaţiilor între tabelele unei baze de date, Access permite şi specificarea unor
reguli care forţează integritatea datelor. Aceste reguli se numesc restricţii de integritate
referenţială; ele permit să se conserve intacte relaţiile între tabele într-un sistem de gestiune a
unei baze de date relaţionale.
Integritatea referenţială funcţionează după câmpul cheie. Acest sistem verifică în mod
continuu câmpul cheie, primară şi străină, la fiecare operaţie de adăugare, ştergere sau
modificare a unei înregistrări. Dacă o schimbare a unei chei afectează legătura între
tabele, sistemul avertizează că se violează regulile de integritate referenţială.
Atunci când două tabele sunt legate printr-o relaţie, o tabelă se numeşte părinte şi
cealaltă se numeşte copil. Acest sistem este cunoscut sub numele de relaţie părinte-copil
Integritatea referenţială garantează că nu vor exista înregistrări orfane, adică,înregistrare
copil fără o înregistrare părinte.
Capacitatea de a asigura în mod automat integritatea referenţială este o caracteristică
importantă a programului Access.
Definirea legăturilor dintre tabele se realizează din meniul Tools-Relationships, acesta
activând un panou de editare vizuală a acestora. Prima activare a acestei opţiuni are ca efect ŞI
afişarea unei ferestre cu obiectele bazei de date ce se pot plasa în panou prin dublu-chc sau
selectarea obiectului şi butonul Add (figurile de mai jos ).
2
Pentru a putea defini o legătură între două tabele, trebuie să existe compatibilitate între
tipul de date al cheu primare şi cel al cheii externe corespunzătoare. După plasarea tuturor
tabelelor în panoul de editare, definirea propriu-zisă a unei relaţii se realizează prin drag-and-
drop (selectare şi glisare) dinspre cheia primară a unei tabele spre o cheia externă
corespunzătoare sau invers. După realizarea acestei operaţii finalizarea definirii unei legături se
realizează în fereastra din figura următoare unde este prezentată definirea unei relaţii între
tabelul Operaţii (cheie primarăCodOperatie) şi tabelul OperatiiEfectuate (cheie externă
CodOperatie).
4
Crearea legaturilor
Dacă o cheie este formată din mai multe câmpuri, acestea se editează corespunzător în panoul
Edil Relationship (Figura 4. 9.).
Opţiunile din fereastra Edit Relationships au următoarea semnificaţie:
• Enforce Referenţial Integri ty - defineşte o restricţie de integritate referenţială. Nu se
permite actualizarea valorii unei chei externe, dacă această valoare nu există deja în tabelul unde
aceasta este cheie primară.
• Cascade Update Related Fields - actualizarea valorii unei chei primare dintr-un tabel se
propagă şi în înregistrările din tabelele unde aceasta este cheie externă.
• Cascade Delete Related Fields - ştergerea valorii unei chei primare, are ca efect şi ştergerea
înregistrărilor din tabelele unde aceasta este cheie externă.
In caseta Relationship Type sunt prezentate tipurile de legături care pot exista între două tabele:
One to One- 1-1; One to Many - l -n
5
Dacă în această casetă este afişat mesajul Indeterminate, înseamnă că tipul de relaţie nu poate fi
definit, cea mai probabilă eroare fiind incompatibilitatea între tipul de date al cheii primare şi cel
al cheii externe, sau inexistenţa unei chei primare în relaţia respectivă.
Butonul de comandă Join Type permite şi definirea unor tipuri de relaţii particulare între tabele,
aşa cum se observă din figura 4.10.
Figura 4. 10
Variantele 2 şi 3 permit utilizarea implicită în interogări a join-urilor externe de tip LEFT şi
RIGHT, care presupun într-o interogare luarea în considerare a tuturor înregistrărilor dintr-un
tabel, indiferent dacă au sau nu înregistrări corespondente după câmpul (câmpurile) de legătură
în celalalt tabel, în exemplul de legătură prezentat în Figura 4. 10, este posibilă o interogare între
cele două tabele, în care vor fi luate în considerare toate înregistrările din tabelul Operaţii,
indiferent dacă au sau nu corespondent în tabelul OperatiiEfectuate.
EXPLOATAREA DATELOR DIN TABELE. Operaţii
asupra înregistrărilor dintr-o tabelă
Într-o tabelă Access se pot realiza următoarele operaţii:
• Adăugarea înregistrărilor;
• Ştergerea de înregistrări;
• Căutarea de înregistrări;
• Modificarea înregistrărilor;
• Ordonarea înregistrărilor;
6
• Filtrarea înregistrărilor;
Pentru a efectua aceste operaţii este necesar ca tabela să fie deschisă în modul DataSheet View
(meniul View comanda DataSheet).
Adăugarea înregistrărilor. Dacă tabela este deschisă imediat după creare,
Access va afişa o foaie de date vidă, iar pointerul de înregistrare va fi plasat pe prima şi unica
linie, pe butonul ei de selecţie (butonul gri din prima coloană din tabela afişată în modul
DataSheet View).
Pentru a introduce date se plasează pur şi simplu cursorul pe câmp şi se introduce o
valoare, în timp ce se efectuează această operaţie, pointerul de înregistrare se transformă într-un
creion, ilustrând faptul că se editează o înregistrare. O nouă linie vidă apare dedesubtul primei
linii, în locul pointerului de înregistrare figurează un asterisc (*) indicând o nouă înregistrare.
Dacă tabela care se deschide în modul DataSheet conţine date, pentru a adăuga o nouă
înregistrare trebuie plasat cursorul pe ultima linie (al cărei pointer este un asterisc) şi se
introduce noua înregistrare. Pentru plasarea cursorului pe ultima linie se execută clic pe
butonul New Record de pe bara cu instrumente sau se alege Insert, Record sau se utilizează
tasta cu săgeata în jos.
Ştergerea de înregistrări. Pentru a şterge una sau mai multe înregistrări se selectează
înregistrarea sau înregistrările şi se acţionează tasta Delete sau butonul Delete Record de pe bara
cu instrumente sau se alege din meniul Edit opţiunea Delete. Oricare ar fi metoda aleasă, Access
deschide o casetă de mesaj care cere confirmarea ştergerii. Dacă se execută clic pe butonul Yes,
înregistrările sunt şterse. Se recomandă o atenţie deosebită la ştergerea înregistrărilor deoarece
Access nu permite anularea ştergerii înregistrării.
Căutarea unei înregistrări se realizează în acces secvenţial sau în acces direct.
Căutarea secvenţială a unei înregistrări se face utilizând setul de butoane din partea stângă a
barei aflate în partea de jos a ferestrei DataSheet: butonul Next Record, First Record, Last
Record, Previous Record sau bara de derulare verticală dacă sunt prezente mai multe
înregistrări decât pot încăpea în dimensiunea verticală a ferestrei DataSheet.
7
Pentru consultarea în acces direct se selectează câmpul în care se face căutarea şi se
utilizează buton ul Find de pe bara cu instrumente sau se alege Edit, Find. Access deschide
caseta de dialog Find in Field. în caseta de text Find What se specifică criteriul de căutare.
Butoanele de comandă Find First (găsirea primei apariţii) şi Find Next (găsirea următoarei
apariţii) sunt activate când se introduc date în caseta de text. Căutarea se poate realiza în întreaga
tabelă (AH), începând cu înregistrarea curentă până la sfârşitul tabelei (Down), de la
înregistrarea curentă spre prima înregistrare (Top) sau de la ultima înregistrare spre începutul
tabelei (Up), opţiuni care se pot preciza în zona Search. Din lista derulantă Match (potrivire) se
poate selecta Whole Field (întregul câmp), Start of Field (începutul câmpului) şi Any Part of
Field (orice parte a câmpului). Pentru a indica o căutare care să ţină seama de literele mari şi
mici, se marchează caseta de validare Match Case.
Modificarea înregistrărilor. În timp, apare necesitatea actualizării datelor conţinute în baza de
date.
Modificarea conţinutului unei înregistrări se realizează plasând cursorul în câmpul
respectiv şi modificând datele. Pentru înlocuirea automată a valorilor dintr-un câmp din mai
multe înregistrări se utilizează caseta de dialog Replace in Field (o variaţiune a casetei Find in
Field). Caseta Replace in Field se afişează prin comanda Edit, Replace sau a combinaţiei de
taste Ctrl + H .
Comanda va înlocui valorile din câmpurile care se potrivesc cu valorile introduse în
caseta de text Find What. înlocuirea se face cu valorile specificate în caseta de text Replace
With. înlocuirea se poate face selectiv prin căutarea fiecărei valori de înlocuit şi confirmarea
înlocuirii (butoanele Field Next şi Replace) sau pentru toate înregistrările care corespund
criteriul de înlocuire (butonul Replace AH).
Obs. Datele pot fi modificate şi folosind interogări speciale.
Ordonarea înregistrărilor. Ordonarea şi filtrarea înregistrărilor sunt operaţii deosebit de
importante pentru utilizatori, dar ele vizează îndeosebi cererile informaţionale ale utilizatorilor,
motiv pentru care ele sunt realizate pentru obiectele tip Query (cereri de interogare).
8
Îngheţarea afişării câmpurilor. Dacă o tabelă conţine prea multe câmpuri, ele nu pot fi afişate
toate în modul DataSheet View. Pentru a vizualiza toate câmpurile se foloseşte bara de derulare
orizontală sau îngheţarea afişării câmpurilor. Pentru îngheţarea afişării câmpurilor:
• se deschide tabela în modul DataSheet View;
• se selectează coloana sau coloanele a căror afişare se va îngheţa executând clic pe butoanele
antetelor acestor coloane;
• din meniul Format se alege opţiunea Freeze Columns (îngheţarea coloanelor).
Pentru "dezgheţarea" coloanelor "îngheţate" se alege Format, Unfreeze AH Columns.
Exemple:
Promovabilitatea studentilor.
9