Baze de date, tabele si relatii
Înca de la varianta 95, Access va pune la dispozitie experti care pot crea pentru dumneavoastra toate tabelele, formularele si rapoartele unei baze de date pe care o veti specifica. De asemenea, Access va pune la dispozitie un numar de baze de date predefinite, din domenii variind de la administrarea unei biblioteci, fonoteci sau videoteci, pâna la contacte de afaceri, informatii despre companii, servicii, etc. Desi acesti experti va pot usura considerabil munca, scopul nostru este sa va aratam cum sa creati propria baza de date, pornind de la zero.
La pornire, Access va prezinta o cutie de dialog care va permite sa optati între a deschide o baza de date existenta si a crea una noua. Pentru a crea manual o baza de date, selectati Blank Database si apasati butonul OK.
Altfel, daca doriti sa creati o baza de date noua în timp ce lucrati cu Access, alegeti comanda File/New Database sau apasati butonul New Database de pe bara cu instrumente si apoi alegeti Blank Database din pagina General a cutiei de dialog New.
Daca doriti sa lucrati împreuna cu noi la crearea bazei de date Cursuri optionale, specificati în câmpul File Name al cutiei de dialog File New Database numele Cursuri Optionale si alegeti din lista Save In directorul în care doriti ca Access sa salveze noul fisier (aveti grija ca tipul fisierului sa fie Microsoft Access Database (*.mdb)).
În acest moment, baza noastra de date nu contine nici o tabela. (daca ati fi folosit un expert pentru a crea baza de date, acesta ar fi creat si tabelele, si chiar ar fi stocat în ele informatie)
„Atelierul” pe care Access vi-l pune la dispozitie este fereastra Database, care se deschide imediat dupa ce ati creat o baza de date noua, sau ati deschis una deja existenta. Aceasta contine pagini pentru diferitele tipuri de obiecte care pot alcatui o baza de date Access: tabele, interogari, rapoarte, formulare si module. Pe parcursul acestui subcapitol ne vom concentra atentia asupra paginii Tables a ferestrei Database.
Access va ofera mai multe posibilitati de a crea o tabela noua, dupa cum se poate observa si din figura:
Datasheet View: va permite sa creati o tabela pe baza datelor stocate în ea (pentru Acces 97 737b15h );
Design View: va ajuta sa definiti structura tabelei, specificând coloanele care o compun si proprietatile acestora;
Table Wizard: este un expert care creeaza pentru dumneavoastra o tabela pe baza unor structuri predefinite;
Pentru a crea manual o tabela, puteti folosi fie modul Datasheet View, fie modul Design View. În cele ce urmeaza, vom discuta amanuntit despre ambele moduri moduri amintite mai sus.
Modul Datasheet View va ajuta sa creati tabele simple, prin simpla introducere a datelor în tabel. Access determina apoi, pe baza cestor date, tipurile si formatele coloanelor. De asemenea, Access poate crea si o cheie primara. Cu toate acestea, Datasheet View nu va va permite sa intrati în detalii cum ar fi stabilirea proprietatilor tabelei sau ale coloanelor. Pentru acestea, folositi modul Design View, care va va oferi control asupra tuturor proprietatilor disponibile ale tabelei si ale coloanelor care o compun, inclusiv reguli de validare si valori implicite.
Dupa cum spuneam, modul Datasheet View va permite realizarea simultana a doua obiective: crearea tabelei si umplerea ei cu date. În ciuda acestor avantaje, trebuie sa tinem cont de faptul ca în majoritatea cazurilor, bazele de date nu sunt create doar pentru a stoca informatiile existente, ci pentru a oferi un mecanism pentru introducerea ulterioara a datelor si pentru lucrul cu acestea.
Dupa cum puteti observa din figura, folosirea modului Datasheet View se aseamana cu lucrul cu Microsoft Excel: fiecare linie reprezinta o înregistrare în tabela
Pentru a crea o tabela noua în modul Datasheet View (97), procedati în felul urmator:
În fereastra Database, apasati butonul New. Va aparea fereastra New Table.
Din lista prezentata în fereastra New Table, alegeti Datasheet View si apasati butonul OK.
Acum, pe ecran a aparut o fereastra continând o tabela fara date, dar cu 20 de coloane si 30 de linii (daca doriti, puteti adauga mai multe). În partea de sus a fiecarei coloane se afla un selector ce contine numele coloanei respective. Facând clic cu butonul din stânga al mouse-ului pe acest selector, puteti selecta coloana. Initial, aceste nume sunt Field1, Field2 etc. dar, ulterior, le vom schimba în asa fel încât sa reflecte atributele entitatii descrise de tabela. Pentru a redenumi o coloana, puteti proceda în unul din urmatoarele trei moduri:
Faceti dublu-clic pe selectorul coloanei, care se va schimba într-un câmp de editare. Introduceti noul nume.
Selectati coloana, alegeti comanda Format Rename column si editati numele.
faceti clic dreapta pe selectorul coloanei. Din meniul context, selectati comanda Rename Column si editati numele.
Nota: desi Access va permite includerea de spatii în numele coloanelor, încercati, pe cât posibil, sa evitati acest lucru. Unele sisteme de baze de date (cum ar fi dBase) nu permit folosirea spatiilor în numele coloanelor. Deci, daca aveti de gând sa legati o tabela dintr-un astfel de DBMS (Data Base Management System – Sistem de gestionare a bazelor de date) la baza dumneavoastra de date, nu folositi spatii.
Daca cele 20 de coloane initiale nu sunt suficiente, iata cum puteti insera în tabela o noua coloana:
Faceti clic dreapta pe selectorul coloanei din dreapta locului în care doriti sa inserati noua coloana.
Din meniul context selectati comanda Insert Column. Noua coloana va aparea la locul ales si va avea numele Fieldn.
Redenumiti coloana.
Acelasi lucru îl puteti face si cu ajutorul comenzii Insert | Column.
Daca doriti sa schimbati ordinea coloanelor în tabela, procedati astfel:
Selectati coloana pe care doriti s-o mutati.
Ţinând butonul din stânga al mouse-ului apasat în timp ce cursorul se afla deasupra selectorului coloanei selectate, mutati coloana catre locul dorit.
În timp ce miscati mouse-ul, se va misca pe ecran si o linie verticala ce reprezinta marginea din stânga a coloanei pe care o mutati. Când aceasta linie a ajuns în pozitia dorita, eliberati butonul mouse-ului.
Desi Access nu tine cont de ordinea coloanelor în tabela, e de preferat ca aceasta ordine sa fie cât mai naturala si mai sugestiva.
Dupa ce ati redenumit coloanele si le-ati aranjat într-o ordine logica, este timpul sa introduceti datele. Nu este necesar sa introduceti de la început toate datele, dar trebuie ca fiecare coloana sa contina macar o înregistrare. Access va sterge complet coloanele care nu contin deloc date atunci când veti salva tabela. De asemenea, nu este necesar sa completati toate câmpurile unei înregistrari, atâta vreme cât aceste câmpuri nu vor fi declarate ca Required (adica nu e obligatoriu sa contina date) în modul Datasheet View.
Nota: Access considera ca un câmp gol, care nu contine date, are o valoare speciala, numita null. Astfel, regasirea ulterioara a înregistrarilor pentru care un câmp nu contine date va fi foarte usoara, comparând valoarea lui cu null.
Pozitionati cursorul mouse-ului între selectorul coloanei pe care doriti sa o redimensiunati si cel al unei coloane adiacente. Cursorul va lua forma a doua sageti, îndreptate spre stânga si spre dreapta. Ţinând apasat butonul din stânga al mouse-ului, mutati cursorul catre pozitia dorita.
Puteti redimensiona o coloana astfel încât sa se potriveasca cel mai bine cu date pe care le contine. Pentru aceasta, aveti la dispozitie doua metode. Prima ar fi sa pozitionati cursorul mouse-ului între selectorul coloanei pe care doriti sa o redimensionati si cel al coloanei din dreapta ei si atunci când cursorul ia forma celor doua sageti sa faceti dublu-clic si coloana se va redimensiona automat. O alta metoda ar fi sa faceti clic dreapta pe selectorul coloanei de redimensionat si, din meniul context, sa selectati comanda Column Width. Apoi, din cutia de dialog Column Width, alegeti Best Fit.
Important este si formatul în care introduceti datele. De exemplu, daca o coloana poate contine atât cifre cât si litere, aveti grija sa includeti în acea coloana si caractere nenumerice deoarece, altfel, Access va atribui coloanei respective tipul Number (numeric). Astfel, desi aveti posibilitatea sa schimbati tipul unei coloane în modul Design View, puteti sa evitati de acum acest pas.
Dupa ce ati introdus datele, apasati butonul Save de pe bara cu instrumente sau alegeti comanda File Save pentru a salva tabela. Va aparea cutia de dialog Save As, unde va trebui sa introduceti un nume pentru tabela creata. Dupa ce ati apasat butonul OK, va aparea un mesaj care, informându-va ca tabela dumneavoastra nu are definita o cheie primara, va va propune crearea automata a uneia. Daca alegeti Yes, Access va adauga la tabela o noua coloana, al carei tip va fi Autonumber si va servi drept cheie primara. Daca alegeti No, tabela va fi salvata asa cum ati definit-o, iar dumneavoastra va trebui sa definiti cheia primara folosind modul Design View. Daca alegeti Cancel, tabela nu va fi salvata si veti ramâne în modul Datasheet View.
Daca veti dori dori sa lucrati împreuna cu noi pe parcursul lecturarii cartii, va propunem sa creati în modul Table Datasheet View tabela Curs, prezentata în figura. Ne va folosi în exemplele urmatoare.
Dupa ce ati salvat tabela, cel mai probabil veti dori sa stabiliti sau sa modificati unele dintre proprietatile câmpurilor. Aceasta o puteti face numai lucrând în modul Design View, în care puteti trece alegând comanda View Table Design. Unele proprietati importante ale câmpurilor, cum ar fi regulile de validare sau valorile implicite, nu pot fi stabilite în modul Datasheet View. De aceea, va trebui sa folositi design view, despre care vom vorbi în sectiunea urmatoare.
Spre deosebire de modul Datasheet View, modul Design View nu va permite introducerea de date în tabela. Cu toate acestea, el este indispensabil datorita posibilitatilor pe care vi le ofera.
Pentru a crea o tabela în modul Table Design View, procedati în felul urmator:
apasati butonul Tables.
Selectati din lista optiunea Create table using Design View .
Va aparea o fereastra ce nu contine informatie. Aici veti defini coloanele (numite si câmpuri) ce compun tabela, precum si proprietatile acestora. Dupa cum puteti observa din figura, fereastra este împartita în doua parti. Partea de sus foloseste la definirea coloanelor, iar partea de jos la stabilirea proprietatilor fiecarei coloane în parte si continutul ei se schimba în functie de tipul pe care l-ati atribuit coloanei.
Va propunem ca, pe baza informatiilor prezentate în continuare, sa încercati sa creati tabela Student în Table Design View si apoi sa introduceti în ea date. Acesta va fi un exercitiu util si va va ajuta sa parcurgeti urmatoarele sectiuni.
Dupa cum spuneam, pentru a defini coloanele, veti folosi partea de sus a ferestrei Table Design. Pentru a defini prima coloana, introduceti numele acesteia în prima linie a coloanei Field Name. Treceti apoi în coloana Data Type pentru a alege tipul pe care doriti sa-l atribuiti noii coloand. Access va pune la dispozitie un numar de tipuri de date predefinite, despre care vom vorbi în cele ce urmeaza:
Text: sir de caractere (maximum 255), pentru stocarea datelor alfanumerice. Folosit si pentru numerele ce nu vor fi folosite la calcule (de exemplu, numere de telefon).
Memo: folosit pentru stocarea textelor lungi, de pâna la 65.535 de caractere.
Number: folosit pentru stocarea datelor numerice de tipul: întreg, întreg lung, în virgula mobila, cu precizie simpla sau dubla.
Date Time: folosit pentru stocarea datei si a orei.
Currency: un tip numeric special, folosit pentru valori monetare, deoarece nu permite rotunjirile de calcul.
Autonumber: un tip numeric special care poate fi folosit pentru cheile primare. Coloanele de acest tip sunt de tip read-only (doar citire), Access introducând automat ori valori consecutive, ori valori aleatoare la crearea unor înregistrari noi.
Yes/No: folosit pt stocarea datelor booleene.
OLE Object: folosit pentru a stoca text sau o combinatie de text si date numerice, folosite ca adresa de hiperlegatura ce poate contine trei parti separate prin semnul #: textul afisat într-un control sau câmp, adresa (calea catre un fisier (UNC) sau catre o pagina (URL)) si o subadresa (o locatie din cadrul fisierului sau paginii).
Lookup Wizard: va da posibilitatea sa definiti un câmp în care utilizatorul sa poata selecta o valoare din alta tabela sau dintr-o lista predefinita. (vom reveni asupra acestei probleme)
Dupa ce ati ales tipul coloanei pe care vreti sa o creati, puteti introduce o scurta descriere a acesteia în coloana Description. Desi acest lucru este optional, este bine sa profitati de el, pentru ca tabela sa fie usor de întretinut.
În aceasta sectiune vom descrie diferitele proprietati pe care le poate acea un câmp (coloana) si care pot fi stabilite folosind partea de jos a ferestrei Table design. Setul de proprietati pe care îl aveti la dispozitie variaza în functie de tipul de date ales pentru coloana respectiva. Multe dintre proprietatile de baza sunt comune tuturor tipurior de date. În afara de proprietatile booleene (Required, Allow Zero Length si Indexed), singurele proprietati pe care trebuie sa le specificati sunt Field Size (pentru tipurile de date Text, Number si Autonumber) si New Values (pentru Autonumber). Toate celelalte proprietati sunt optionale. În continuare, vom vorbi mai pe larg despre proprietati.
Aceste proprietati le gasiti în pagina General din partea de jos a ferestrei Table Design. Cea de-a doua pagina este Lookup si, pentru unele tipuri de date (Text, Number, Yes/No), ea va permite sa alegeti tipul de control folosit pentru introducerea datelor în câmp. Figura reprezinta pagina Lookup pentru un câmp de tip text.
Prima proprietate din pagine Lookup este Display Control si ea specifica modul în care vor fi afisate datele. În functie de valoarea sa, sunt disponibile sau nu si alte proprietati. Daca la tipul coloanei ati ales Lookup Wizard, valoarea pentru Display Control va fi stabilita automat. Pentru coloane de tip Text sau Number, valorile disponibile pentru Display Control sunt Text Box, Combo Box sau List Box, iar pentru coloane de tip Yes/No, puteti alege Text Box, Combo Box sau Check Box.
Daca ati optat pentru Text Box, nu mai sunt alte proprietati de stabilit. Valorile Text Box sau Combo Box va dau posibilitatea sa specificati liste din care utilizatorul sa selecteze datele ce trebuie introduse în câmp. Aceste date pot proveni din liste predefinite sau din alte tabele. Asupra acestei probleme vom reveni ulterior în acest capitol.
Cel mai simplu mod de a folosi proprietatile din pagina Lookup este cu ajutorul expertului Lookup Wizard, despre care vom vorbi în sectiunea urmatoare.
Expertul Lookup Wizard este folosit pentru a defini modul în care pot fi regasite si afisate valorile ce pot fi introduse într-un câmp. Dupa cum am mai spus, aceste valori pot proveni din alte tabele, dintr-o interogare sau dintr-o lista specificata de dumneavoastra.
Pentru a întelege mai bine mecanismul si utilitatea expertului Lookup Wizard, va propunem sa cream împreuna, în modul Table Design View, tabela Curs_Student, despre care am mai vorbit. Pentru aceasta este necesar ca dumneavoastra sa fi creat în prealabil tabelele Curs si Student. Pentru a putea fi stabilite ralatiile. Vom folosi Lookup Wizard pentru a regasi denumirile cursurilor optionale disponibile si a-i oferi utilizatorului posibilitatea de a alege un curs dintr-o lista.
Nota: daca tabela Curs este deschisa în modul Datasheet View sau Design View, închideti-o, pentru ca Lookup Wizard sa îsi poata finaliza actiunile.
Dupa ce ati creat coloanele NrMatricol si Nota (vezi figura), urmati pasii urmatori pentru a crea coloana IdCurs:
în câmpul Field Name Introduceti numele coloanei, IdCurs.
în câmpul Datatype alegeti Lookup Wizard.
în prima cutie de dialog a expertului alegeti prima optiune, prin care specificati ca doriti ca datele sa fie luate dintr-o tabela sau interogare. Apasati butonul Next.
în cea de-a doua cutie de dialog, selectati din lista tabela Curs si apasati Next
în cea de-a treia cutie de dialog specificati din care coloane ale tabelei Curs doriti sa fie luate datele. Selectati coloana Denumire si apasati Next.
cea de-a patra cutie de dialog va permite sa ajustati latimea coloanelor selectate. De asemenea, în casuta de validare Hyde key column, specificati daca doriti sa apara si coloana care face legatura între cele doua tabele (IdCurs). Cum nu dorim acest lucru, lasati casuta validata si apasati Next.
în ultima cutie de dialog introduceti numele pe care doriti sa-l aiba noua coloana în modul Datasheet View sau în formulare („Curs”). Apasati butonul Finish.
Lookup Wizard va salva tabela cu noile modificari si va stabili relatia între tabela Curs si Curs_Student (care este de tipul 1:m).
observati în fereastra Table Design noile valori ale proprietatilor din pagina Lookup (vezi figura). Proprietatea Caption din pagina general are acum valoarea Curs.
Pentru a vedea rezultatele acestor actiuni, treceti în modul Table Datasheet View. Selectati coloana Curs si apasati butonul din parteadreapta a câmpului. Va aparea o lista a tuturor cursurilor din tabela Curs (fig.). daca selectati un nume din lista, acesta va fi afisat în câmp. Desi ceea ce vedeti este denumirea cursului, în tabela Curs_Student este stocat doar IdCurs, astfel încât regulile de integritate referentiala sa poata fi pastrate. Astfel, în cazul în care denumirea unui curs în tabela Curs se modifica, aceasta modificare sa se reflecte si în tabela Curs_Student, fara ca ea sa trebuiasca sa fie facuta manual.
În continuare, vom descrie procedeul prin care valorile stocate în câmpul Curs al tabelei Curs_Student sa poata fi selectate dintr-o lista definita de dumneavoastra.
în modul Table Design, alegeti pentru coloana Curs tipul Lookup Wizard, ca mai înainte.
în prima cutie de dialog a lui Lookup Wizard alegeti cea de-a doua optiune, prin care specificati faptul ca veti introduce dumneavoastra valorile dorite. Apasati butonul Next.
cea de-a doua cutie de dialog va permite sa specificati numarul de coloane ce vor fi afisate si valorile lor. În câmpul Number of Columns, introduceti cifra 2. În partea de jos a cutiei de dialog, vor aparea doua coloane, în care introduceti, de exemplu, datele din tabelul urmator. Apoi, apasati Next.
Col. 1 |
Col.2 |
Programare |
|
Engleza |
|
Franceza |
|
Germana |
în cea de-a treia cutie de dialog, specificati care dintre cele doua coloane va avea datele stocate în tabela Curs_Student. Alegem Col1, datele din Col2 vor fi doar afisate, ajutând utilizatorul la alegerea lor. Astfel, datele stocate în tabela vor ucupa mai putin spatiu. Apasati butonul Next.
dialogul final va cere sa introduceti denumirea coloanei. Aceasta este Curs. Apasati butonul Finish.
Acum, în pagina Lookup a ferestrei Table Design, puteti modifica unele proprietati, cum ar fi latimea coloanelor (Column Widths) sau puteti specifica daca utilizatorul poate introduce în câmpul Curs Numai valori din lista sau si alte valori (prin proprietatea Limit to List).
Salvati tabela Curs_Student si apoi treceti în modul Datasheet View pentru a testa functionarea acesteia.
Puteti beneficia de facilitatile coloanelor de tip Lookup (de cautare) si fara a apela la Lookup Wizard (desi aceasta este cea mai comoda cale). De exemplu, pentru a specifica o lista de valori aveti grija ca, în functie de tipul valorilor ce vor fi stocate în tabela, sa alegeti în câmpul Data Type tipul Text, Number sau Yes/No. În cazul exemplului nostru, tipul este Number (daca ati fi dorit sa stocati în tabela denumirile, ar fi trebuit sa alegeti tipul Text). Apoi, în pagina Lookup, pentru proprietatea Display Control stabiliti valoarea Combo Box sau List Box, iar pentru proprietatea Row Source Type, alegeti valoarea Value List. În câmpul proprietatii Row Source introduceti valorile din tabel, parcurse pe linii, sub forma de lista, separate prin punct si virgula, ca în figura. (datele de tip text este bine sa le introduceti între ghilimele).
Daca doriti ca valorile pentru coloana de cautare sa fie luata dintr-o tabela, va trebui sa folositi Query Builder, un alt instrument util pus la dispozitie de Access, ce va va permite sa specificati coloanele din care sa fie luate datele prin intermediul unei interogari. Despre interogari si Query Builder vom vorbi în capitolele urmatoare.
Un index reprezinta o cale rapida de localizare si sortare a înregistrarilor dintr-o tabela prin gruparea tuturor înregistrarilor pentru un anumit atribut sau grup de atribute. Indexarea este utilizata în doua scopuri principale: accelerarea cautarilor în baza de date si asigurarea unicitatii înregistrarilor.
De exemplu, daca va intereseaza anumite nume de familie în tabela Student, puteti crea un index pentru coloana NumeSt, pentru a regasi mai rapid studentii cu un anumit nume de familie.
Cheia primara a unei tabele este indexata automat. Nu pot fi indexate coloanele de tipul Memo, Hyperlink sau OLE Object.
Utilizarea unui index are sens doar daca se vor face interogari frecvente relativ la coloana indexata. Desi accelereaza procesul de regasire a datelor, indecsii îngreuneaza serios actualizarea lor. Dupa fiecare operatie de actualizare a datelor (inserare, modificare sau stergere) trebuie sa verificati si sa actualizati si indecsii. De aceea, folosurea lor trebuie sa fie bine întemeiata, deoarece, altfel, ei pot mari timpul de raspuns al sistemului si ocupa spatiu suplimentar pe disc.
Pentru a crea cheia primara a unei tabele, treceti în modul Design View al acelei tabele. Selectati coloana sau grupul de coloane ce va servi drept cheie primara si apoi apasati butonul Primary Key de pe bara cu instrumente sau alegeti comanda Edit | Primary Key.
Nota: Pentru a selecta un câmp în Table Design View, faceti clic în coloana cea mai din stânga a ferestrei Table Design. Pentru a selecta mai multe câmpuri, tineti apasata tasta Ctrl în timp ce efectuati operatia de mai sus pentru fiecare câmp.
Când o coloana face parte din cheia primara a unei tabele, proprietatea Indexed are valoarea o coloana face parte din cheia primara a unei tabele, proprietatea Indexed are valoarea Yes (No Duplicates), adica Access indexeaza acea coloana si duplicatele nu sunt permise. Proprietatea Required primeste valoarea Yes, deoarece cheia primara nu poate contine valoarea null.
Sa presupunem ca se fac frecvente cautari în tabela Student, dupa numele complet (NumeSt PrenumeSt). Pentru a crea un index pe aceste doua coloane, procedati astfel:
deschideti tabela Student în Table Design View.
apasati butonul Indexes de pe bara de instrumente sau alegeti comanda View Indexes. Va aparea fereastra Indexes pentru tabela Student (fig.). Observati ca ea continde deja o intrare pentru cheia primara a tabelei, NrMatricol, deci exista un index de pe coloana NrMatricol, numit Primary Key.
deoarece sortarea studentilor se va face dupa nume si prenume, vom crea si un index pe aceste coloane. Pentru aceasta, introduceti în primul câmp liber al coloanei Index Name denumirea indexului: sa-i spunem Nume.
faceti clic în coloana Field Name a aceleiasi linii si alegeti din lista derulanta coloana NumeSt. Cum de cele mai multe ori vom dori ca studentii sa fie sortati în ordine alfabetica, lasati în coloana Sort Order valoarea Ascending.
lasati necompletat câmpul din linia urmatoare a coloanei Index Name (am precizat deja numele indexului) si alegeti în câmpul Field Name coloana PrenumeSt. Ordinea sortarii va fi tot crescatoare. Astfel am creat indexul Nume pe coloanele NumeSt si PrenumeSt.
Proprietatile fiecarui index le puteti vedea în partea de jos a ferestrei Indexes daca faceti clic în celula în care ati specificat numele indexului (nume si, respectiv, Primary Key). Proprietatile pentru noul index creat le puteti vedea în figura.
I.2.2. Crearea unei tabele folosind expertii Access.
Pîna acum am discutat despre cel mai complicat mod de a crea o tabela. Acesta este si modul care va ofera cel mai mult control asupra tabelelor create si proprietatilor lor. Access va pune la dispozitie si trei experti: Table Wizard, Import Table Wizard si Linking Table Wizard.
Primul va ajuta sa creati o tabela pe baza unei tabele predefinite. Table Wizard va da posibilitatea sa alegeti tabela care sa va serveasca drept model, sa selectati coloanele dorite, sa le redenumiti, sa spuneti daca doriti ca Access sa creeze o cheie primara, sa stabiliti relatii între noua tabela si alta existenta. O data tabela creata, puteti folosi modul Table Design pentru a-i modifica proprietatile sau Table Datasheet pentru a introduce datele. Table Wizard este util mai ales pentru aceia dintre dumneavoastrp care nu au mai lucrat cu Access. Cei cu experienta vor gasi ca este mai simplu sa porneasca direct cu Table Design View.
Expertul Import Table Wizard va permite sa importati obiecte si date din surse externe, cum ar fi: tabele Excel, dBase, Fox Pro, fisiere text, documente HTML, orice sursa ODBC disponibila în sistemul dumneavoastra sau din alte baze de date Access.
Link table Wizard creeaza legaturi între baza de date curenta si tabele dintr-un fisier extern (oricare din cele specificate mai sus). Puteti vizualiza si modifica datele dintr-o tabela legata de baza dumneavoastra de date, sa le modificati anumite proprietati, sa stabiliti relatii. Daca stergeti o tabela legata din baza de date curenta, se sterge doar legatura, nu si tabela din baza de date sursa.
Posibilitatea de a crea si de a folosi relatiile dintre tabelele unei baze de date este punctul forte al bazelor de date relationale si al sistemelor de administrare a bazelor de date relationale, cum este si Microsoft Access.
Pentru a stabili relatii între tabele, bazele de date relationale folosesc coloane cheie care sunt comune tabelelor pe care le leaga.
Relatiile pot fi definite fie în timpul crearii unei tabele noi, fie dupa aceea. Pentru a defini o relatie, ambele tabele trebuie sa existe în baz ade date.
În primul caz, în care relatia este definita în timpul crearii unei tabele, veti folosi pentru definirea relatiei ori expertul Table Wizard, ori coloanele de cautare. Table Wizard va permite acest lucru într-una dintre cutiile sale de dialog. Cea de-a doua modalitate este sa definiti coloane de tip lookup (despre care am mai vorbit în cadrul acestui capitol). Prin crearea unei coloane de tip lookup (de cautare) care sa-si ia datele din alta tabela, se stabileste si o relatie între cele doua tabele.
Nu este necesar ca relatiile sa fie create o data cu tabelele. De fapt, cel mai simplu mod de a crea o relatie între doua tabele este folosirea ferestrei Relationships. Aceasta poate fi deschisa fie prin comanda Tools | Relationships, fie apasând butonul Relationships de pe bara cu instrumente.
Nota: înainte de a folosi fereastra Relationships pentru crearea sau modificarea unei relatii, este bine sa închideti orice fereastra Datasheet View pentru ca nu pot fi impuse regulile de integritate referentiala daca tabelele implicate sunt deschise într-unul din cele doua moduri amintite.
Daca fereastra Relationships este deschisa pentru prima data pentru baza de date curenta sau daca a mai fost folosita, dar relatiile nu au fost salvate, ea va aparea pe ecran goala, împreuna cu cutia de dialog Show table.
Daca pentru baza de date curenta exista relatii salvate, cutia de dialog Show table nu va apare ci, în fereastra, vor fi afisate tabelele si relatiile dintre acestea. Relatiile sunt prezentate sub forma unei linii continue ce leaga câmpurile cheie ale tabelelor ce participa la o relatie.
Pentru a adauga o tabela sau o interogare la fereastra Relationships, faceti dublu clic pe numele ei în cutia de dialog Show Table. Astfel, ea va aparea în fereastra Relationships împreuna cu toate relatiile la care participa. Pentru a vedea toate relatiile care au fost definite pentru o anume tabela, adaugati tabela la fereastra Relationships, închideti cutia de dialog Show Table si alegeti comanda Relationships | Show Direct. Access va adauga automat în fereastra Relationships toate tabelele care participa la relatii cu tabela aleasa, precum si relatiile respective. Figura prezinta relatiile la care participa tabela Curs_Student.
Pentru a putea vedea relatiile stabilite între toate tabelele bazei de date curente, alegeti comanda Relationships | Show All. Pentru a înlatura o tabela din fereastra Relationships fara a sterge vreuna din relatiile la care participa, selectati tabela facând clic pe oricare dintre câmpurile ei si apoi alegeti comanda Relationships | Hide Table sau Edit | Delete. (aveti grija sa selectati o tabela si nu o relatie). Pentru a înlatura toate tabelele din fereastra Relationships fara a sterge relatiile dintre ele, folositi comanda Edit | Clear Layout.
Din fereastra Relationships puteti accesa modul Table Design View pentru o tabela. Pentru aceasta, faceti clic pe unul dintre câmpurile tabelei si din meniul derulant alegeti comanda Table Design. (Dupa ce terminati lucrul în fereastra Table Design View, închideti-o.)
I.3.2. Crearea relatiilor dintre tabele.
Acum, dupa ce ati aflat cum sa adaugati si sa înlaturati o tabela din fereastra Relationships, este timpul sa învatati cum se poate stabili o relatie între doua tabele. Vom crea o relatie între tabelele Profesor si Titlu. Pentru aceasta, procedati astfel:
adaugati ambele tabele la fereastra Relationships.
faceti clic pe câmpul IdTitlu din tabela Titlu si, tinand mouse-ul apasat, trageti câmpul peste câmpul IdTitlu din tabela Profesor.
va aparea cutia de dialog Relationships (fig.) apasati butonul Create pentru a accepta valorile propuse de Access. Acum, în fereastra Relationships relatia este figurata printr-o linie ce uneste câmpurile IdTitlu din cele doua tabele.
De cele mai multe ori, pentru a crea o relatie 1:m între doua tabele va trebui sa deplasati cheia primara (afisata îngrosat) a uneia dintre tabele peste câmpul corespunzator (cheie straina) din cealalta tabela. Cele doua câmpuri trebuie sa aiba acelasi tip de date. Câmpurile de tip Autonumber, pentru care valoarea New Value are valoarea Increment, pot fi puse în relatie cu coloane de tipul Number, pentru care Proprietatea Field Size este stabilita la Long Integer. Daca ambele câmpuri sunt de tipul Number, proprietatea Field Size trebuie sa aiba aceeasi valoare.
Cutia de dialog Relationships va permite sa stabiliti proprietatile relatiilor. Aici puteti adauga câmpuri pentru a defini o relatie, facând clic într-o celula goala a grilei si alegând câmpul dorit din lista derulanta. (Daca adaugati un câmp, trebuie sa alegeti un câmp corespunzator din cealalta tabela.)
Daca doriti sa schimbati câmpul unei tabele care participa la relatie, faceti clic în celula care îl contine si alegeti noul câmp ca mai înainte.
Tot aici puteti stabili tipul de asocoere (join) pe care Access îl va folosi când veti crea o interogare bazata pe cele doua tabele. Acest lucru îl realizati apasând butonul Join Type. Se va deschide cutia de dialog Join Properties (fig.). despre tipurile de asociere vom vorbi în sectiunea urmatoare.
De asemenea, puteti decide daca Access va impune regulile de integritate referentiala asupra tabelelor care participa la relatie, problema asupra careia vom reveni.
Tipul de asociere (join) al unei relatii specifica modul în care sunt regasite informatiile din doua tabele corelate si nu afecteaza relatia însasi. Cele trei tipuri principale sunt: inner join, outer join si self-join. Tipul outer join poate fi, la rândul sau, left outer join si right outer join. Rezultatul unei interogari bazate pe doua tabele corelate poate fi interpretat ca o tabela în care fiecare linie este o combinatie a unei linii luate din prima tabela si a uneia din cea de-a doua tabela.
O asociere de tipul inner join este aceea în care liniile celor doua tabele sunt concatenate si adaugate la rezultatul unei interogari numai daca valorile câmpurilor de legatura sunt egale. Acest tip de asociere este util atunci când doriti numai înregistrarile care au valori în câmpurile corelate. Tipul inner join mai este cunoscut si sub numele de equi-join si este optiunea implicita propusa de Access.
Tipul outer join este opusul lui inner join. El permite adaugarea unei linii la rezultatele unei interogari chiar daca nu exista o linie corespunzatoare în tabela corelata. De exemplu, daca doriti sa vedeti numai cursurile pentru care a optat cel putin un student, folositi un inner join. Daca doriti sa regasiti cursurile indiferent daca au fost alese sau nu de cel putin un student, folositi un outer join.
O asociere de tipul left outer join (sau left join) va da posibilitatea sa includeti în rezultatele interogarii toate înregistrarile din tabela din partea stânga a operatorului LEFT JOIN, iar din tabela din partea dreapta, doar înregistrarile care au corespondent în tabela din stânga. Pentru a ilustra cele mai de sus, va prezentam interogarea ce regaseste toate cursurile disponibile si numerele matricole ale studentilor care s-au înscris la cel putin un curs:
SELECT Denumire, NrMatricol
FROM Curs LEFT JOIN Curs_Student
ON Curs.IdCurs Curs_Student.IdCurs
O asociere de tip right outer join (right join) va include în rezultatele interogarii toate înregistrarile din tabela din partea dreapta a operatorului TIGHT JOIN, iar din tabela din partea stânga a operatorului doar înregistrarile care au un corespondent din tabela din dreapta. Observati ca cei doi operatori, LEFT JOIN si RIGHT JOIN pot produce aceleasi efecte daca sunt schimbati între ei si daca se modofica ordinea tabelelor. Astfel, interogarea urmatoare va avea acelasi efect ca si cea de mai sus:
SELECT Denumire, NrMatricol
From Curs_Student RIGHT JOIN Curs
On Curs.IdCurs Curs_Student.IdCurs
Nota: nu exista nici o legatura între pozitionarea tabelelor în fereastra Relationships (una la stânga celeilalte) si pozitionarea lor în stânga sau în dreapta operatorului LEFT JOIN sau RIGHT JOIN. În cazul în care între doua tabele exista definita o relatie, la creareea interogarii Access va considera ca tabela care contine cheia primara este tabela din stânga operatorului.
Dupa ce ati selectat o asociere de tipul outer join, Access o va reprezenta printr-o linie cu sageata la unul din capete. Retineti ca sensul în care este orientata sageata este dinspre tabela din care se vor include toate înregistrarile catre tabela din care se vor include doar înregistrarile ce au un corespondent.
O asociere de tip self-join este între doua copii ale aceleiasi tabele si o puteti crea prin corelarea a doua câmpuri ale aceleiasi tabele.
Access va da posibilitatea de a opta doar pentru inner join, left outer join sau right outer join. Pentru relatia Profesor/Titlu, alegeti în cutia de dialog Join Properties optiunea cu nunarul unu, inner join.
I.3.3.2. Asigurarea integritatii referentiale.
Access va asigura în mod automat integritatea referentiala pentru doua tabele corelate daca veti valida caseta de validare Enforce Referential Integrity din cutia de dialog Relationships. Astfel, daca în tabela Profesor exista o valoare pentru câmpul IdTitlu, va trebui ca acea valoare sa existe si în tabela Titlu. De asemenea, nu veti putea sterge o înregistrare din tabela Titlu daca tipul respectiv este atribuit unui profesor din tabela Profesor. Daca veti încerca sa introduceti date sau sa le modificati astfel încât sa fie încalcata integritatea referentiala, Access va afisa o cutie de dialog în care va va spune ca actiunea dorita nu se poate finaliza. De asemenea, va va spune si care dintre tabelele corelate cauzeaza violarea integritatii referentiale.
Access va da si posibilitatea de a specifica în ce mod doriti sa fie rezolvate problemele legate de integritatea referentiala. Astfel, puteti alege ca modificarile sau stergerile dintr-o tabela sa se reflecte si în tabela corelata, pentru ca integritatea referentiala sa nu fie afectata.
Prima optiune va este oferita prin intermediul casetei de validare Cascade Update Related Fields. Aceasta optiune va asiguraca orice modificare a valorilor din cheia primara a unei tabele va duce automat la modificarea corespunzatoare a valorilor din cheia straina a tabelei corelate. Astfel, daca modificati o valoare a coloanei IdTitlu din tabela Titlu, Access va modifica, în consecinta, toate aparitiile acelei valori în coloana IdTitlu din tabela Titlu a tabelei Profesor.
Cea de-a doua optiune este Cascade Delete Related Fields. Astfel, daca stergeti o linie din tabela Titlu, Access va sterge toate înregistrarile din tabela profesor pentru care IdTitlu corespunde valorii sterse.
Pentru a modifica o relatie existenta între doua tabele, adaugati tabelele respective în fereastra Relationships. Apoi faceti dublu clic pelinia ce reprezinta relatia pe care doriti sa o modificati. Va aparea cutia de dialog Relationships, în care puteti efectua modificarile dorite.
Pentru a sterge o relatie, selectati-o facând clic pe linia care o reprezinta si apoi apasati tasta Delete.
Cele mai multe aplicatii de baze de date se sprijina pe importul sau exportul de date dinspre sau catre alte aplicatii. Pentru ca o aplicatie sa aiba access la genul acesta de date, ele trebuie sa-i fie puse la dispozitie. Pentru aceasta, datele trebuie sa fie exportate de o aplicatie si importate de aplicatia curenta.
Access va pune la dispozitie instrumentele GUI (Graphical User Interface) necesare pentru a importa si exporta datele în diferite formate.
Pentru a importa un fisier în Access, selectati comanda File | Get External Data | Import sau faceti clic dreapta în fereastra Database si alegeti din meniul derulant comanda Import. Va aparea cutia de dialog Import (fig.).
Aici puteti alege fisierul pe care doriti sa-l importa-i. În functie de formatul de fisier ales, Access, va prezenta cutiile de dialog corespunzatoare, în care veti putea specifica optiunile dumneavoastra.
Access va da posibilitatea de a exporta toate tipurile de obiecte dintr-o baza de date. Totusi, exista câteva reguli de care este bine sa tineti cont:
puteti exporta o tabela sau o interogare fie salvând-o într-un fisier nou, fie într-o noua tabela sau interogare din baza de date curenta.
puteti exporta un formular sau un raport în unul din formatele: Access, Excel, text si RTF (Rich Text Format). În toate cazurile în afara de formatul Access , veti exporta si datele ce creeaza formularul sau raportul.
Puteti exporta un modul numai în formatul Access sau text.
Pentru a exporta un obiect din baza de date curenta, selectati-l în fereastra Database si alegeti comanda File | Save As | Export. Va aparea o cutie de dialog care va va întreba daca doriti sa salvati obiectul într-un fisier extern sau în baza de date curenta. Daca selectati prima optiune, va aparea cutia de dialog prezentata în fig. .
Aici puteti alege tipul de fisier extern în care doriti sa salvati obiectul si locatia acestuia. În functie de formatul ales, Access va prezenta diferite interfete.
Access va pune la dispozitie peste unsprezece formate pentru exportul datelor si peste noua formate pentru import. De asemenea, aveti la îndemâna si trei experti : Import Text Wizard, care va ajuta sa importati date din formatul text, Import Spreadsheet Wizard, pentru importul tabelelor Excel sau lotus si Export Text Wizard, pentru exportul datelor în format text.
|