Access
RelatiiRelatii1 GeneralitatiPe langa exemplele anterioare, vom utiliza un exemplu mai complet pentru a ilustra modalitatile de definire a relatiilor intre tabele. Asa cum s-a aratat in capitolele anterioare, intre tabele se pot defini relatii care pot fi exploatate de catre utilizator in propriul beneficiu. Relatiile au fost definite si reamintim ca ele se fac prin campuri care apartin diferitelor tabele si care au acelasi continut. Este important de precizat ca aceste relatii trebuiesc definite ori de cate ori este nevoie in aplicatii, pentru a putea fi utilizate in mod eficient. Necesitatea lor nu o vom scoate in evidenta, dar se impune totusi sa mentionam ca intr-o baza de date complexa, avem mai multe tabele care carcaterizeaza obiectele si intre acestea se impune sa se stabileasca anumite relatii pentru a putea obtine informatiile relativ la aceste obiecte intr-o forma accesibila si eficienta pentru pelucrare. Trebuie insa sa remarcam faptul ca definirea relatiilor intre tabele constituie la un moment dat un impediment in efectuarea unei serii de operatii asupra bazei de date. Mentionam faptul ca o definire in exces a relatiilor conduce la situatii de blocaj cum ar fi imposibilitatea efectuarii unor actualizari datorita definirii incorecte a relatiilor. In aceste cazuri programatorul ajunge in situatia de a elimina (sterge) relatiile care il impiedica sa opereze actualizarile. Recomandam pentru aceasta ca atunci cand se definesc relatii sa se tina cont de toate implicatiile. 2 Definirea tabelelor utilizateVom utiliza cateva tabele pentru a evidentia posibilitatile de definire a relatiilor precum si pentru a crea in cele ce urmeaza forme adecvate pentru introducerea si intretinerea tabelelor. In ele vom utiliza lungimi reduse pentru eficienta prezentarii. Vom defini tabelele intr-o modalitate care ne va permite in capitolele urmatoare sa evidentiem elemente specifice Access-ului. Pentru simplificare nu am mai specificat lungimea unor campuri. Parteneri
NomMarfa
CategMarfuri
Merceologi
Factura care este un document unitar, o vom descompune in doua tabele, pentru a scoate in evidenta facilitatea oferita de Access; astfel, vom avea un tabel AntetFactura si un tabel DetaliuFactura, in care vom defini numai acele campuri care pezinta interes pentru evidentierea relatiilor si utilizarea formelor. AntetFactura
DetaliuFactura
3 Relatii uzuale Am definit chei primare in tabele, astfel: in tabelul Parteneri cheia primara este CodPartener iar in tabelul NomMarfa cheia primara este CodMarfa. In tabelele Merceologi si CategMarfuri am definit campurile Merceolog si CategMarfa ca fiind indexate fara duplicate. In aceste conditii putem defini relatii firesti intre tabelele create. Din multitudinea de relatii prezentate in capitolele anterioare, am prezentat cateva care sunt mai sugestive intre inregistrarile din tabelele definite anterior. In marea lor majoritate, sunt relatii de unu la mai multi, care sunt firesti in descrierea relatiilor posibile intre obiectele descrise de tabele si anume: parteneri, marfuri, categorii de marfa, merceologi. Trebuie de asemenea accentuate modalitatile de definire a relatiilor folosind modul in care au fost definite campurile utilizate pentru definirea legaturilor si anume: in primul rand in tabelele de Parteneri NomMarfa au fost utilizate campurile care au fost definite ca si chei primare, sau in tabelele CategMarfuri Merceologi au fost utilizate campurile care au fost indexate fara duplicate, toate acestea fiind in relatii de unu; in al doilea rand in tabelele celelalte, campurile de legatura au acelasi tip ca si cele din tabelele de mai sus, numai ca aici acestea sunt chei secundare, toate acestea fiind in relatii de mai multi.
Un exemplu de definire a relatiei referitoare la parteneri este urmatorul.
Observam ca relatia este definita intre cele doua tabele pe baza identitatii numelui campului, CodPartener. Tipul relatiei este de unu la mai multi, adica un partener se poate regasi intr-unul sau mai multe antete de factura (unui partener ii facem pentru marfurile vandute una sau mai multe facturi dupa cum cumpara odata sau de mai multe ori). Observam de asemenea, ca s-a fortat integritatea referentiala a datelor si actualizarea si stergerea in cascada. Acestea din urma au in esenta urmatoarea semnificatie. Cand se face o actualizare sau o stergere a partenerului, aceasta este facuta in mod automat si in antetul facturii. In privinta stergerii aceasta are semnificatia urmatoare: ca atunci cand se sterge un partener, se sterg in mod automat toate antetele de factura care-l contin. In ceea ce priveste celelalte relatii de unu la mai multi acestea au fost definite in mod similar. Am fi putut crea un tabel de unitati de masura pe care l-am fi putut relationa cu tabelul DetaliuFactura, prin campul UnitMas (tot in relatia unu la mai multi). 4 Alte relatii Este important sa precizam ca relatia unu la unu permite relationarea tabelelor care leaga intre ele inregistrarile din doua tabele care caracretizeaza acelasi obiect (s-a facut o mentiune in acest sens in capitolele anterioare). Pentru un tip mai particular de relatii, sa consideram ca avem o baza de date ce contine cai de rasa. Fiecare cal va avea precizati parintii: tata si mama care se regasesc in mod normal in acelasi tabel. Pentru simplificare vom completa doar cateva dintre campurile tabelului. CaiDeRasa
Relatia care trebuie sa fie stabilita este intre inregistrarile aceluasi tabel. Pentru un cal, parintii sai se regasesc in alte inregistrari din tabel. Tabelul proiectat, arata ca in imaginea urmatoare. Observam ca am indexat dupa campul Rasa, pentru a putea cauta rapid in tabel pentru o aceeasi rasa.
Am incarcat in tabel urmatoarele date
Trebuie sa facem cateva observatii. Fiecare cal are parintii din acelasi tabel, dar cativa dintre ei (cei care sunt parintii initiali ai cailor din ferma noastra) vor avea datele completate incorect (in sensul ca ei insisi sunt proprii lor parinti). Acest lucru poate fi rezolvat intr-o modalitate corecta, pe care o lasam in seama cititorului. Am construit o interogare prezentata in imagine, al carui rezultat este dat in cea de a doua imagine. Prin interogare cerem pentru fiecare rasa sa stim cati fii are fiecare tata si cerem sa facem un total al fiilor pe fiecare rasa. In prima imagine avem definita interogarea iar in cea de a doua, avem rezultatul interogarii.
|