access definire relatii

Download Access definire relatii

Post on 07-Dec-2015

4 views

Category:

Documents

0 download

Embed Size (px)

DESCRIPTION

access

TRANSCRIPT

Curs 2 SGBD-ul MICROSOFT ACCESS

SGBD-ul MICROSOFT ACCESS

Definirea relaiilor dintre tabelePentru a avea acces simultan la datele din mai multe tabele ale aceleiai baze de date este necesar s se defineasc relaiile standard dintre aceste tabele. Relaiile ntre tabele se definesc pe baza valorilor unui cmp dintr-o tabel utilizat drept cheie primar i valorilor aceluiai cmp dintr-o alt tabel, unde este utilizat drept cheie extern. Access impune existena aceluiai tip de date pentru cmpurile care particip la o relaie, n cazul cmpului de tip Number proprietatea Field Size a celor dou cmpuri trebuie s fie identic. Relaia dintre cmpurile de tip Text trebuie, n principiu, s foloseasc cmpuri de aceeai lungime. Se recomand ca stabilirea relaiilor ntre tabele s se fac nainte de nregistrarea datelor, n S.G.B.D. Access exist urmtoarele posibiliti de realizare a relaiilor dintre tabele: Relaia 1-1 (one-to-one sau unu la unu) este cea mai simpl relaie ntre dou tabele, n aceast relaie, unei valori a cmpului cheie principal dintr-o tabel i corespunde o singur valoare din cmpul folosit drept cheie extern din cealalt tabel. Altfel spus, unei nregistrri din tabela aflat n partea stng a relaiei i corespunde o singur nregistrare din tabela aflat n partea dreapt a relaiei. Tabelele aflate ntr-o relaie one-to-one se pot combina ntr-o singur tabel, n care apar toate cmpurile celor dou tabele. Relaiile de acest tip nu sunt uzuale. Relaia 1-n (one-to-many sau unul la mai muli) constituie tipul cel mai rspndit de relaii. Conform acestei relaii unei nregistrri din tabela aflat n partea stng a relaiei i corespund dou sau mai multe nregistrri din tabela aflat n partea dreapt a relaiei. Asocierea se bazeaz pe un cmp cheie principal unic ntr-o tabel i un cmp cheie extern din cealalt tabel care admite valori duplicate. Relaia n-1 (many-to-one sau mai muli la unul) este opus relaiei 1-n. Pentru a crea relaia many-to-one este suficient s se inverseze relaia one-to-many. De aceea, se spune c relaia many-to-one este reflexiv, adic relaia many-to-om este reflexia relaiei corespondente one-to-many. Dac se selecteaz o nregistrare din tabela din partea many a relaiei se poate afla nregistrarea care corespunde cheii sale externe din tabela din partea one a relaiei. Relaiile n-1 nu sunt bazate pe cmpuri cheie primar din nici una dintre cele dou tabele. Relaia m-n (many-to-many sau muli la mai muli) nu poate fi exprimat ca o simpl relaie ntre dou tabele. Relaia many-to-many se poate exprima prin intermediul unei a treia tabele care are relaii one-to-many i many-to-one cu cele dou tabele.Pe lng stabilirea relaiilor ntre tabelele unei baze de date, Access permite i specificarea unor reguli care foreaz integritatea datelor. Aceste reguli se numesc restricii de integritate referenial; ele permit s se conserve intacte relaiile ntre tabele ntr-un sistem de gestiune a unei baze de date relaionale.

Integritatea referenial funcioneaz dup cmpul cheie. Acest sistem verific n modcontinuu cmpul cheie, primar i strin, la fiecare operaie de adugare, tergere saumodificare a unei nregistrri. Dac o schimbare a unei chei afecteaz legtura ntretabele, sistemul avertizeaz c se violeaz regulile de integritate referenial.Atunci cnd dou tabele sunt legate printr-o relaie, o tabel se numete printe icealalt se numete copil. Acest sistem este cunoscut sub numele de relaie printe-copilIntegritatea referenial garanteaz c nu vor exista nregistrri orfane, adic,nregistrarecopil fr o nregistrare printe.Capacitatea de a asigura n mod automat integritatea referenial este o caracteristic important a programului Access.Definirea legturilor dintre tabele se realizeaz din meniul Tools-Relationships, acesta activnd un panou de editare vizual a acestora. Prima activare a acestei opiuni are ca efect I afiarea 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 ).

Pentru a putea defini o legtur ntre dou tabele, trebuie s existe compatibilitate ntre tipul de date al cheu primare i cel al cheii externe corespunztoare. Dup plasarea tuturor tabelelor n panoul de editare, definirea propriu-zis a unei relaii se realizeaz prin drag-and-drop (selectare i glisare) dinspre cheia primar a unei tabele spre o cheia extern corespunztoare sau invers. Dup realizarea acestei operaii finalizarea definirii unei legturi se realizeaz n fereastra din figura urmtoare unde este prezentat definirea unei relaii ntre tabelul Operaii (cheie primarCodOperatie) i tabelul OperatiiEfectuate (cheie extern CodOperatie).

Crearea legaturilor

Dac o cheie este format din mai multe cmpuri, acestea se editeaz corespunztor n panoul Edil Relationship (Figura 4. 9.).Opiunile din fereastra Edit Relationships au urmtoarea semnificaie: Enforce Referenial Integri ty - definete o restricie de integritate referenial. 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 nregistrrile din tabelele unde aceasta este cheie extern. Cascade Delete Related Fields - tergerea valorii unei chei primare, are ca efect i tergerea nregistrrilor din tabelele unde aceasta este cheie extern.In caseta Relationship Type sunt prezentate tipurile de legturi care pot exista ntre dou tabele:One to One- 1-1; One to Many - l -nDac n aceast caset este afiat mesajul Indeterminate, nseamn c tipul de relaie nu poate fi definit, cea mai probabil eroare fiind incompatibilitatea ntre tipul de date al cheii primare i cel al cheii externe, sau inexistena unei chei primare n relaia respectiv.Butonul de comand Join Type permite i definirea unor tipuri de relaii particulare ntre tabele, aa cum se observ din figura 4.10.

Figura 4. 10Variantele 2 i 3 permit utilizarea implicit n interogri a join-urilor externe de tip LEFT i RIGHT, care presupun ntr-o interogare luarea n considerare a tuturor nregistrrilor dintr-un tabel, indiferent dac au sau nu nregistrri corespondente dup cmpul (cmpurile) de legtur n celalalt tabel, n exemplul de legtur prezentat n Figura 4. 10, este posibil o interogare ntre cele dou tabele, n care vor fi luate n considerare toate nregistrrile din tabelul Operaii, indiferent dac au sau nu corespondent n tabelul OperatiiEfectuate.EXPLOATAREA DATELOR DIN TABELE. Operaii asupra nregistrrilor dintr-o tabel

ntr-o tabel Access se pot realiza urmtoarele operaii: Adugarea nregistrrilor; tergerea de nregistrri; Cutarea de nregistrri; Modificarea nregistrrilor; Ordonarea nregistrrilor; Filtrarea nregistrrilor;Pentru a efectua aceste operaii este necesar ca tabela s fie deschis n modul DataSheet View (meniul View comanda DataSheet).Adugarea nregistrrilor. Dac tabela este deschis imediat dup creare,Access va afia o foaie de date vid, iar pointerul de nregistrare va fi plasat pe prima i unica linie, pe butonul ei de selecie (butonul gri din prima coloan din tabela afiat n modul DataSheet View).Pentru a introduce date se plaseaz pur i simplu cursorul pe cmp i se introduce o valoare, n timp ce se efectueaz aceast operaie, pointerul de nregistrare se transform ntr-un creion, ilustrnd faptul c se editeaz o nregistrare. O nou linie vid apare dedesubtul primei linii, n locul pointerului de nregistrare figureaz un asterisc (*) indicnd o nou nregistrare.Dac tabela care se deschide n modul DataSheet conine date, pentru a aduga o nou nregistrare trebuie plasat cursorul pe ultima linie (al crei pointer este un asterisc) i se introduce noua nregistrare. Pentru plasarea cursorului pe ultima linie se execut clic pebutonul New Record de pe bara cu instrumente sau se alege Insert, Record sau se utilizeaz tasta cu sgeata n jos.tergerea de nregistrri. Pentru a terge una sau mai multe nregistrri se selecteaz nregistrarea sau nregistrrile i se acioneaz tasta Delete sau butonul Delete Record de pe bara cu instrumente sau se alege din meniul Edit opiunea Delete. Oricare ar fi metoda aleas, Access deschide o caset de mesaj care cere confirmarea tergerii. Dac se execut clic pe butonul Yes, nregistrrile sunt terse. Se recomand o atenie deosebit la tergerea nregistrrilor deoarece Access nu permite anularea tergerii nregistrrii.Cutarea unei nregistrri se realizeaz n acces secvenial sau n acces direct.Cutarea secvenial a unei nregistrri se face utiliznd setul de butoane din partea stng 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 nregistrri dect pot ncpea n dimensiunea vertical a ferestrei DataSheet.Pentru consultarea n acces direct se selecteaz cmpul n care se face cutarea 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 cutare. Butoanele de comand Find First (gsirea primei apariii) i Find Next (gsirea urmtoarei apariii) sunt activate cnd se introduc date n caseta de text. Cutarea se poate realiza n ntreaga tabel (AH), ncepnd cu nregistrarea curent pn la sfritul tabelei (Down), de la nregistrarea curent spre prima nregistrare (Top) sau de la ultima nregistrare spre nceputul tabelei (Up), opiuni care se pot preciza n zona Search. Din lista derulant Match (potrivire) se poate selecta Whole Field (ntregul cmp), Start of Field (nceputul cmpului) i Any Part of Field (orice parte a cmpului). Pentru a indica o cutare care s in seama de literele mari i mici, se marcheaz caseta de validare Match Case.Modificarea nregistrrilor. n timp, apare necesitatea actualizrii datelor coninute n baza de date.Modificarea coninutului unei nregistrri se realizeaz plasnd cursorul n cmpul respectiv i modificnd datele. Pentru nlocuirea automat a valorilor dintr-un