CATEGORII DOCUMENTE |
Dupa ce am deschis o baza de date , eveniment confirmat prin aparitia ferestrei cu cele 7 clase de obiect, putem crea diferite obiecte in oricare din clasele nominalizate. Dar deoarece fiecare din clasele Queries, Forms, Reports, Pages, Macros si Modules se definesc in baza tabelelor, acestea (tabelele) trebuie create in primul rand. Cu alte cuvinte, daca o BD nu contine cel putin un tabel, crearea altor clase de obiecte devine lipsita de sens.
Pentru a crea o baza de date relationala cu ajutorul programului Microsoft Access se parcurg urmatorii pasi:
Se lanseaza in executie programul.
Se selecteaza din fereastra deschisa optiunea Blank Database (Baza de date necompletata) si se da un nume bazei de date.
In fereastra principala a bazei de date vom putea crea in continuare tabelele de care vom avea nevoie.
Intr-o baza de date sunt permise urmatoarele operatii: crearea de tabele; legarea tabelelor cu una dintre cele trei relatii posibile; modificarea tabelelor; stergerea tabelelor.
Crearea unui tabel se poate face folosind optiunea Create table in design view, apasand butonul Design din partea de sus a ferestrei, sau selectand din fereastra deschisa la apasarea butonului New optiunea Design View.
Odata create tabelele, pentru fiecare trebuie stabilite campurile si tipul acestora, dupa care se leaga tabelele prin relatiile posibile.
Modificarea tabelelor se poate face tot in modul Design. Se pot adauga campuri noi, se poate modifica cheia primara, se pot schimba tipurile campurilor, se pot sterge campuri.
Un tabel se poate sterge in fereastra principala deschisa odata cu baza de date, dand click pe butonul drept al mouse-ului si selectand optiunea Delete.
Crearea tabelelor
Un tabel se poate crea in trei feluri:
utilizand Expertul
prin introducere de date
in modul Vizualizare, particularizandu-l dupa preferinta.
Microsoft Access pune la dispozitia utilizatorilor o serie de tabele grupate pe domenii.
Exista o lista de tabele dintre care se pot alege pe rand tabelele a caror campuri ne sunt necesare si tabelul rezultat se poate completa cu campurile dorite din lista pusa la dispozitia utilizatorilor. Pentru a pune in noul tabel un camp din lista, acesta trebuie selectat si trecut cu ajutorul sagetilor in lista destinatie. Dupa ce s-au ales toate campurile dorite se trece mai departe (Urmatorul), se alege numele tabelului, se defineste automat sau de catre utilizator cheia primara a tabelului, se specifica relatiile dintre tabelul nou creat si restul tabelelor existente in baza de date, dupa care se poate completa tabelul, sau deschide in modul Vizualizare.
b. Crearea unui tabel prin introducere de date (Datasheet View)
Modul datasheet permite realizarea simultana a doua obiective: crearea structurii tabelului si completarea lui cu date in acelasi timp. Foaia care apare seamana cu o foaie de calcul Excel, fiecare linie reprezinta o inregistrare si fiecare coloana un camp.
Coloanele foii unt numite initial Camp1 (Field1), Camp2(Field2),.. Aceste nume se pot schimba printr-un simplu clic pe numele initial. Dupa introducerea efectiva a datelor in celule, Access va asocia fiecarei coloane un tip de date corespunzator. Pentru a alege o cheie primara, daca aceasta nu este de tip autonumerotare(tip de date care porneste cu valoarea 1 si pentru fiecare linie nou introdusa creste valoarea cu o unitate: 2, 3, etc), trebuie deschis tabelul in modul vizualizare(Design View) si alesa o alta cheie.
Acest mod de creare a tabelelor este cel mai des folosit si cel mai eficient. Premite utilizatorului sa-si defineasca fiecare camp in parte, sa aleaga tipul de date corespunzator.
Pentru a crea un tabel in modul Design View se alege din fereastra principala a bazei de date optiunea Creare tabel in modul Vizualizare proiect.
Pentru a crea un tabel nou, de exemplu, Comenzi, selectam clasa de obiecte Tables, apoi actionam butonul . Caseta de dialog New Table care apare (fig.5) ne ofera 5 moduri de definire a structurii tabelului.
Figura.5 Moduri de definire a structurii unui tabel
Daca selectam optiunea Design View si actionam butonul OK, obtinem o fereastra (fig.6) in care definim campurile tabelului si caracteristicile lor.
fig.6. Definirea campurilor tabelului Comenzi
1. Caracteristicile campurilor
Pentru fiecare camp al tabelului se specifica 3 caracteristici, si anume:
Field Name (denumirea campului, obligatoriu);
Data Type (tipul campului, obligatoriu);
Description (descrierea campului, optional).
Pentru comoditate, denumirile campurilor se introduc pe verticala, urmand ca in regimul de introducere a datelor Datasheet View denumirile campurilor sa-si ocupe pozitiile obisnuite (pe orizontala). Regimul Design View nu permite introducerea inregistrarilor in tabel, ci doar descrierea campurilor care alcatuiesc tabelul.
Denumirea campului poate contine diferite caractere, inclusiv spatii, cu exceptia unor semne speciale ( '.', '!' s.a.). In caz de necesitate, denumirea poate contine semnul '_' (subliniere). Lungimea denumirii campului (impreuna cu spatiile) nu poate depasi 64 de caractere.
Exemple: autorul; Id_ tarii; locul_ de_ munca; LoculDeMunca; Locul de Munca.
Tipul campului poate fi unul din urmatoarele:
Text - pentru texte sau numere care nu vor fi folosite in calcule; Se foloseste pentru sirurile de caractere de lungime maxima 255.
Memo - pentru texte lungi (biografia autorului, rezumatul cartii etc.) Pentru sirurile mai mari de 65536 caractere
Number - pentru numere care vor fi folosite in calcule; Se foloseste pentru numere intregi sau zecimale. Se poate particulariza
Date/Time - pentru date calendaristice;
Currency - pentru valori banesti; monetare
AutoNumber - pentru numere intregi care isi maresc in mod automat valorile (numarul de ordine, de exemplu); Se foloseste de obicei pentru chei primare deoarece isi modifica automat valoarea
Yes/No - pentru valori logice care pot lua numai doua valori: Yes (adevar), No (fals);
OLE Object - pentru imagini (fotografia autorului), sunete (imnul tarii); Pentru legarea obiectelor (fisiere Word, imagini, sunete, etc) prin mecanismul OLE.
Hyperlink - pentru adrese Hyperlink. Valorile
acestui camp pot fi adrese Internet (de exemplu, www.google.com) sau locatii (calea spre un
fisier
sau dosar din
calculator); Pentru retinerea adreselor URL (EX:
www.email.ro)
Lookup Wizard - reprezinta, de fapt, nu un tip de date, ci o proprietate a campului prin care valorile lui pot fi selectate din alt tabel. Acest mod de abordare simplifica procedura introducerii valorilor campului si, in plus reduce riscul comiterii unor erori.
Pentru a schimba tipul campului (implicit tipul este Text), trecem in coloana Data Type (fig.6) si din lista derulanta alegem tipul dorit. Apoi trecem (daca e cazul) in coloana Description, pentru a introduce note explicative, sau in randul urmator, pentru descrierea altui camp.
2. Stabilirea cheilor primare
Daca valorile unui camp sunt unice (nu se repeta), putem semnala acest lucru, pentru a evita introducerea accidentala a doua valori identice. Aceasta procedura poarta denumirea de stabilire a cheii primare.
Dupa definirea campurilor se alege o cheie primara.
In cazul tabelului CITITORI, cheia primara poate fi stabilita pe campul IdCarte, pentru a exclude eventualitatea repetarii identificatorului cartii (in biblioteca nu pot exista doua carti cu acelasi identificator). Cheia primara poate fi stabilita si pe cateva campuri. Pentru a stabili cheia primara, selectam campul respectiv, apoi executam un clic pe butonul din bara cu instrumente sau da un clic pe butonul drept al mouse-ului cand acesta este pozitionat pe patratul dinaintea numelui campului si din meniul derulant se alege optiunea Cheie primara. Ca rezultat, in partea din stanga a campului respectiv apare semnul cheii (vezi fig. 6)
Dupa incheierea procedurii de descriere a campurilor si de stabilire a cheii primare, salvam tabelul (descrierea lui), selectand comanda Save din meniul File si indicand numele tabelului. Daca nu am stabilit o cheie primara (acest lucru nu este obligatoriu), sistemul ne va avertiza, sugerandu-ne stabilirea cheii pe un camp de tip AutoNumber. Pentru a confirma, actionam butonul Yes. In acest caz sistemul stabileste automat cheia primara pe un camp AutoNumber (daca el exista) sau creeaza suplimentar un asemenea camp (daca el nu exista), stabilind pe el cheia primara. Pentru a renunta la stabilirea cheii primare, actionam butonul No.
In parte de jos a ferestrei care ne permite sa definim campurile unui tabel apar mai multe casete de text:
Field Size este zona unde se specifica dimensiunea alocata pentru anumite tipuri de date (numeric, text)
Format este zona in care se stabileste modul de afisare a datelor pe ecran pentru tipurile de date: numeric, data calendaristica, data logica
Decimal places este zona unde se stabileste numarul de zecimale ce pot fi atribuite campului.
Input Mask ofera posibilitatea introducerii unui sablon pentru datele corespunzatoare unui camp.
Caption - denumirea sub care va aparea coloana in formularele sau rapoartele create de utilizator.
Default Value determina valoarea ce trebuie salvata in campul unei inregistrari, daca noi nu introducem nici o valoare
Validation Rule - aici se stabileste regula ce trebuie respectata inaintea salvarii valorii introduse intr-un camp
Validation Text - contine textul ce se va afisa pe ecran daca regula de validare nu este respectata
Required - permite sa stabilim daca este obligatorie completarea unui camp sau nu.
Allow Zero Length - daca este selectata optiunea No la campul descris anterior campul poate sa ramana necompletat
Definirea campurilor de cautare - Lookup Wizard (Lista de optiuni): combo - alege din lista.
Definirea campurilor de tip Hyperlink - adresa paginii#liabalan yahoo.com
Proprietatile campurilor
In afara de tipul campului, putem stabili si unele proprietati ale sale, cum ar fi marimea (lungimea), numarul cifrelor zecimale, formatul datei calendaristice etc. Fiecare tip de date are proprietati prestabilite, dar ele pot fi modificate, executand un clic pe campul respectiv (fig. 6, partea de sus) si modificand valorile prestabilite care apar in partea de jos.
Campurile de tip Text pot avea lungimi cuprinse intre l si 255 de caractere. Implicit, marimea campului este de 50, dar ea poate fi modificata in limitele amintite, in functie de lungimea maxima preconizata a valorilor campului respectiv. Astfel, pentru IdCarte (identificatorul cartii), modificam marimea campului din 50 (valoarea prestabilita) in 8 (valoarea necesara). La fel procedam si cu caracteristicile altor campuri.
Mentionam si cu aceasta ocazie, ca pentru campurile ce contin numai valori numerice (identificatori numerici), care nu vor fi folosite in calcule, vom prefera tipul Text in locul tipului Number. Acest mod de abordare va facilita ulterior cautarea informatiei in baza de date.
Campurile de tip Number au lungimi diferite in functie de optiunea specificata pentru proprietatea Field Size.
Optiunea implicita pentru campurile de tip Number este, de regula, Single, dar ea poate fi modificata, utilizand comanda Options din meniul Tools. Pentru campurile de tip Number poate fi stabilita si proprietatea Format, in care specificam modul de afisare a valorilor (numarul cifrelor zecimale etc.).
Campurile de tip Date/Time au lungimi variabile in functie de formatul datei/orei specificat pentru proprietatea Format a campului. De altfel, formatul de reprezentare a datelor calendaristice, la fel ca si delimitatorii dintre data, luna si an, pot sa difere de cele utilizate in aceasta lucrare. Reprezentarea datelor tine de modul in care a fost personalizat sistemul Windows. Pentru a schimba formatul de reprezentare a datelor calendaristice (dar si a orei, a numerelor si a valutei), este necesar de a efectua setarile respective, utilizand aplicatia Regional Options din meniul Control Panel al meniului de baza Start.
Remarca: Daca anul este indicat cu 2 cifre, Access il interpreteaza astfel:
pentru valorile din intervalul 00-29 se subintelege anii 2000-2029; pentru valorile din intervalul 30-99 se subintelege anii 1930-1999.
Campurile de tip logic (Yes/No) ocupa in memoria calculatorului un octet si pot fi reprezentate in 4 moduri, in functie de optiunea specificata pentru proprietatea Format a acestui camp, si anume: Yes/No, True/False, On/Off, -1/0. In ultimul caz valoarea - l corespunde starii True (adevar), iar valoarea 0 - starii False (fals).
Specificarea valorilor prestabilite
Daca o buna parte din valorile unui camp se repeta frecvent (de exemplu, in cazul cand majoritatea cititorilor au studii superioare), putem specifica o valoare prestabilita (implicita) a campului respectiv. Valoarea prestabilita (in cazul nostru 'super') se specifica pentru proprietatea Default Value a campului. In procesul introducerii datelor sistemul atribuie campului valoarea prestabilita in mod automat, utilizatorul urmand sa modifice doar valorile care difera de cea prestabilita.
Stabilirea unor conditii de validare
Pentru a diminua riscul introducerii unor valori gresite, putem stabili conditii (reguli) de validare pentru valorile campurilor respective. Regulile de validare se stabilesc pentru proprietatea Validation Rule a campului. Totodata, pentru proprietatea Validation Text se specifica mesajul care trebuie sa fie afisat in cazul nerespectarii regulii. Astfel, daca se stie ca pretul cartilor nu depaseste valoarea 200, specificam pentru proprietatea Validation Rule a campului Pret conditia <=200, iar pentru proprietatea Validation Text - mesajul 'Pretul cartii nu poate fi mai mare de 200 de lei. Reintroduceti pretul cartii. La fel, data imprumutului/restituirii cartii nu poate depasi data curenta, astfel ca pentru campurile DataImpr si DataRestit putem stabili conditia <=Date() pentru proprietatea Validation Rule. Mesajul specificat pentru proprietatea Validation Text va fi si el adecvat. In fiecare din situatiile descrise vor fi afisate mesajele respective in cazul introducerii unor valori care nu corespund conditiilor de validare stabilite in procesul definirii campurilor.
Modificarea descrierii unui tabel
In cazul cand apare necesitatea modificarii descrierii initiale a unui tabel (adaugarea sau excluderea unuia sau mai multor campuri, schimbarea ordinii, modificarea unor caracteristici etc), deschidem tabelul respectiv in regimul Design View si efectuam modificarile necesare dupa cum urmeaza (in orice consecutivitate):
a) Modificarea denumirii campului. Executam un clic pe denumirea campului si efectuam schimbarile necesare.
b) Adaugarea unui camp. Marcam campul, inaintea caruia trebuie inserat noul camp. Pentru aceasta executam un clic in partea stanga a randului respectiv, acesta schimbandu-si culoarea. Apoi executam comanda Insert Row din meniul Edit.
c) Excluderea unui camp. Marcam campul ca in cazul precedent, apoi apasam tasta Delete. Confirmam actiunea prin OK.
d) Schimbarea ordinii (deplasarea) campurilor. Marcam campul care urmeaza a fi deplasat, apoi, tinand apasat butonul stang al mouse-ului, deplasam campul dat peste campul, inaintea caruia dorim sa fie situat.
e) Schimbarea caracteristicilor. Executam un clic pe randul in care este definit campul, apoi stabilim caracteristicile campului in modul descris in paragrafele precedente. In cazul in care in tabel au fost introduse date,modificarea caracteristicilor campurilor tabelului poate implica denaturarea informatiei. Astfel, daca micsoram lungimea unui camp de tip Text, este posibila trunchierea (din dreapta) a datelor. Modificarea tipului campului poate avea, de asemenea, consecinte nedorite. Din aceasta cauza ne vom stradui sa definitivam proprietatile campurilor inainte de a introduce valori in tabel.
f) Adaugarea sau anularea unei chei primare. In caz de necesitate, putem adauga sau anula una sau mai multe chei primare. Pentru a schimba cheia primara de pe un camp pe altul, selectam campul nou, apoi actionam butonul din bara cu instrumente. Pentru a stabili cheia primara pe cateva campuri, le selectam, apoi actionam acelasi buton. Pentru a anula una sau mai multe chei primare, executam comanda Indexes din meniul View, apoi in caseta care se deschide selectam campurile respective si apasam tasta Delete.
Dupa efectuarea modificarilor, salvam tabelul cu Save As sau Save din meniul File.
Introducerea datelor in tabel
Dupa ce am efectuat procedurile de descriere a tabelului, putem introduce date in campurile lui. Pentru a initia procesul de introducere a datelor, deschidem BD (daca nu este deschisa), apoi in fereastra Database (fig.4) selectam tabelul necesar (de exemplu Cititori) si executam un clic pe Open. Ca rezultat, se afiseaza campurile tabelului respectiv fig.7 (initial tabelul contine doar un rand liber).
fig.7 Introducerea si modificarea datelor in tabel
Nu este absolut obligatoriu sa completam toate campurile; astfel daca anumite date nu sant deocamdata cunoscute, introducerea lor poate fi amanata.
Exceptie fac campurile pentru care au fost stabilite chei primare. Aceste campuri nu pot avea valori nule, de aceea valorile lor trebuie introduse in mod obligatoriu. Ordinea introducerii datelor poate fi si ea oricare. Daca a fost stabilita o cheie primara , la o noua deschidere a tabelului inregistrarile vor fi afisate in ordinea crescatoare a valorilor campului respectiv. Datorita acestui fapt, orice inregistrare noua se adauga la sfarsitul tabelului, avand certitudinea ca ulterior ea va fi plasata in locul corespunzator. Dupa terminarea introducerii datelor inchidem tabelul, actionand butonul sau executind comanda Close din meniul File (modificarile efectuate se salveaza automat).
Remarca: Tipul si caracteristicile datelor introduse trebuie sa corespunda intocmai tipului si caracteristicilor campurilor respective definite in procesul crearii (descrierii) tabelului.
Redactarea datelor
Daca apare necesitatea modificarii (editarii) inregistrarilor unui tabel, deschidem tabelul in regimul Datasheet View, actionand butonul Open din fereastra Database (sau executand un dublu-clic pe numele tabelului). Ca rezultat, obtinem tabelul cu continutul precedent, continut pe care-1 putem modifica la dorinta. Modificarile pot fi cele mai diverse: inlocuirea datelor existente, completarea unor campuri, ale caror valori nu erau cunoscute anterior, adaugarea unor inregistrari noi, stergerea unor inregistrari, copierea unor valori etc. Majoritatea acestor modificari se efectueaza prin simpla deplasare in campul si randul necesar si prin inlocuirea continutului vechi prin altul nou. Mentionam, ca semnul indica randul curent, iar atunci cand
initiem procedura se modificare a inregistrarii, acest semn este inlocuit cu ultimul fiind prezent pana la trecerea la o alta inregistrare.
In cele ce urmeaza vom descrie cateva proceduri de redactare a datelor.
a) Adaugarea unor
inregistrari noi Inregistrarile noi sunt plasate la sfarsitul
tabelului .
b) Deplasarea intre inregistrarile tabelului se face cu ajutorul butoanelor din partea de jos a ferestrei.
Primul buton sare la prima linie a tabelului, cel de al doilea se deplaseaza cu o inregistrare inainte, cel de al treilea se deplaseaza la inregistrarea urmatoare, iar al patrulea buton merge la ultima linie a tabelului. Numarul inregistrarii in care este pozitionat cursorul este precizata in caseta de text dintre cele patru butoane.
Butonul creeaza o inregistrare vida la sfarsitul tabelului, care poate fi ulterior completata.
c) Excluderea unor inregistrari se poate face dupa marcarea inregistrarilor care se doresc eliminate. Pentru a sterge una sau mai multe inregistrari consecutive, marcam aceste inregistrari prin glisarea ('tragerea') mouse-ului pe verticala din stanga tabelului, apoi apasam tasta Delete sau alegem comanda Delete din meniul Edit. Ni se va cere confirmarea actiunii, la care vom raspunde prin OK sau vom renunta prin Cancel.
d) Modificarea valorilor din celulele tabelului se face dupa pozitionarea cursorului pe rand pe liniile pe care se afla celulele care vor fi modificate. In momentul in care se pot modifica datele in dreptul linei apare semnul creion, care se pastreaza pana la terminarea corectiei si trecerea la o alta linie.
e) Copierea unor
blocuri de date. Pentru a copia un bloc de date, marcam
blocul, apoi actionam butonul Copy din bara cu instrumente. Ca
rezultat,
continutul blocului se copie in memoria Clipboard. Din acest
moment, continutul memoriei Clipboard
poate fi 'lipit' oriunde. In acest scop marcam locul
inserarii (blocul-destinatie) si actionam butonul
Paste din bara cu instrumente.
Remarca: Dimensiunile si caracteristicile blocului-destinatie trebuie sa corespunda intocmai dimensiunilor si caracteristicilor blocului-sursa.
Modificarile efectuate in orice inregistrare a tabelului se salveaza in mod automat de fiecare data cand trecem la o alta inregistrare, sau la inchiderea tabelului. Aceasta inseamna ca dupa terminarea lucrului cu un tabel nu este neaparat nevoie sa-1 salvam, - sistemul o va face singur. Utilizatorul trebuie doar sa aiba grija sa inchida tabelul in caz ca nu-1 va mai utiliza. Daca, insa, am efectuat modificari ce tin de aspectul tabelului (latimea coloanelor, ordinea lor etc.) si dorim ca aceste modificari sa fie prezente la o noua deschidere, inainte de a inchide tabelul, il salvam cu comanda Save din meniul File.
MS Access pastreaza informatia despre modificarile efectuate, ceea ce permite, in cazul cand am gresit, anularea modificarilor si revenirea la starea precedenta. Pentru a anula modificarile din campul curent, apasam tasta Esc, iar pentru a anula modificarile din inregistrarea curenta - apasam tasta Esc de doua ori. Pentru a anula modificarile din inregistrare dupa ce s-a trecut la o noua inregistrare, executam comanda Undo Saved Record din meniul Edit. Prin aceasta se revine la situatia anterioara actiunii gresite (nedorite).
Modificari ce nu afecteaza structura fundamentala
Pe langa modificarile care vizeaza structura unui tabel si continutul lui, sunt posibile si modificari care schimba doar modul de prezentare a tabelului, fara a afecta structura lui fundamentala. Aceste modificari tin de ordinea afisarii campurilor (coloanelor), latimea campurilor, inaltimea randurilor etc.
a) Schimbarea ordinii afisarii campurilor in unele cazuri, este necesar de a schimba ordinea afisarii campurilor, diferita de cea din descrierea fundamentala, stabilita in regimul Design View. Pentru a reamplasa un camp, il marcam, apoi, tinind apasat butonul stang al mouse-ului, il deplasam in pozitia dorita si eliberam butonul. Ca rezultat, campul deplasat inlocuieste campul peste care a fost suprapus, acesta din urma deplasandu-se la dreapta. In mod analog putem deplasa si alte campuri, astfel incit ordinea campurilor sa devina cea dorita. Dar oricare ar fi modificarile efectuate in regimul Datasheet View (Foaie de date), ele nu afecteaza ordinea si caracteristicile campurilor stabilite in regimul Design View (Proiectare).
b) Cautarea inregistrarilor, presupune verificarea tuturor inregistrarilor unui tabel si compararea textului cautat cu valorile luate de celulele corespunzatoare campului in care se face cautarea.
Pentru a cauta o inregistrare sau mai multe se parcurg urmatorii pasi:
in modul de afisare Form sau Datasheet se executa un clic in campul in care se doreste cautarea de date.
Se apasa butonul pentru a deschide fereastra de dialog Find.
In caseta Find What se introduce textul cautat si se indica daca acesta va fi comparat cu intregul camp (Whole Field), cu inceputul sau cu orice parte a campului (Start of Field sau Any part of Field).
Pentru a gasi prima inregistrare se apasa butonul Find First, iar pentru urmatoarele Find Next.
Pentru a usura cautarea se pot folosi urmatoarele caractere de inlocuire:
* - se poate pune la inceputul sau sfarsitul unui sir si poate tine locul la orice numar de caractere
? - inlocuieste un caracter alfabetic oarecare
# - inlocuieste un caracter numeric oarecare
[] - tine locul unui singur caracter specificat intre paranteze
![] - tine locul oricarui caracter care nu se afla intre paranteze.
Exemple:
- *a - se foloseste pentru a cauta toate cuvintele care se termina cu litera a
- A?? - a cauta toate cuvintele formate din patru litere care incepi se termina cu a.
- 2# - cauta toate valorile cuprinse intre 20 si 29 inclusiv.
Pentru a inlocui un text, in fereastra de dialog deschisa pentru cautarea si inlocuirea unui text se selecteaza optiunea Replace.
In continuare se trece textul cu care se va face inlocuirea, in caseta de text corespunzatoare si se trece fie la inlocuirea pas cu pas a cuvintelor, fie la inlocuirea tuturor elementelor gasite, automat.
c) Sortarea inregistrarilor Sortarea este procesul prin care sunt aranjate inregistrarile, pentru a obtine o consecutivitate diferita de cea existenta(in ordine crescatoare sau descrescatoare) dupa valorile unui camp al tabelului. Si in tabelele unei baze de date create cu ajutorul aplicatiei Access se pot ordona datele.
Pentru aceasta plasam cursorul pe campul respectiv si actionam unul din butoanele sau . Daca la inchiderea tabelului aceasta modificare nu se salveaza, la o noua deschidere a tabelului inregistrarile se vor afisa in ordinea obisnuita. Modul de sortare descris aici nu prevede sortari complexe, acestea putand fi obtinute in baza interogarilor.
Pentru sortarea datelor se parcurg urmatorii pasi:
se deschide tabelul in modul de afisare Design View
se executa un click in coloana dupa care vom sorta datele
se selecteaza optiunea Record → Sort → Ascending
(Descending) sau unul dintre butoanele existente pe bara Standard.
Pentru a reveni la ordinea anterioara se selecteaza optiunea RemoveFilter/Sort din acelasi meniu.
Sortarea se poate face pe unul sau mai multe nivele, adica dupa unul sau mai multe campuri. Datele se sorteaza dupa primul nivel ales. Daca pe acest nivel apar doua inregistrari identice sortarea se va face dupa al doilea nivel, iar daca avem valori identice si pe primul si pe al doilea nivel sortarea se face dupa al doilea nivel.
Daca se doreste o sortare pe mai multe nivele se procedeaza in felul urmator: se muta coloanele dupa care vrem sa facem sortarea astfel incat sa fie adiacente, de la stanga spre dreapta in ordinea in care se doreste a se face sortarea. In continuare se selecteaza toate coloanele dupa care se vor sorta datele si se apasa butonul Sort Ascending, cu care s-a lucrat anterior.
Pentru sortarea intr-un formular se procedeaza la fel.
d) Modificarea latimii coloanei unui camp In cazul cand latimea unui camp nu corespunde lungimii datelor pe care le contine, putem schimba (mari, micsora) latimea lui. Pentru aceasta pozitionam indicatorul mouse-ului pe linia din partea dreapta a denumirii campului (forma indicatorului se schimba in sageata dubla orizontala), apasam butonul stang al mouse-ului si, deplasandu-1 la stanga-la dreapta, micsoram-marim latimea campului. Daca in pozitia in care indicatorul mouse-ului ia forma mentionata mai sus executam un dublu-clic, latimea campului devine egala cu lungimea celei mai mari inscrieri a acestui camp din partea vizibila a tabelului. Subliniem si cu aceasta ocazie ca aceste modificari nu schimba latimea initiala a campului, stabilita in procesul descrierii lui in regimul Design View.
e) Modificarea inaltimii randurilor. Pentru a modifica inaltimea randurilor, pozitionam indicatorul pe linia ce desparte oricare doua randuri (forma indicatorului se modifica in sageata dubla verticala), apasam butonul stang al mouse-ului si, deplasandu-1 in sus-in jos, micsoram-marim inaltimea randurilor (se modifica simultan inaltimea tuturor randurilor, si nu doar a celui curent).
f) Filtrarea datelor. Filtrarea este procesul prin care se aleg dintr-o multime de elemente, doar acelea care indeplinesc anumite conditii.
Conditiile care sunt puse in momentul in care se doreste filtrarea unei baze de date poarta numele de criterii de filtrare. Aplicarea unui filtru, unui tabel sau formular Access, izoleaza temporal o parte din inregistrari, pastreaza doar inregistrarile de care are nevoie utilizatorul. In Access exista trei modalitati de filtrare.
Filtrarea dupa macheta Filter by form creeaza un formular sau o foaie de date goala in care se pot introduce valorile dorite. Pentru a introduce un asemenea filtru se alege optiunea Inregistrari(Record) → Filtrare(Filter) → Filtrare dupa macheta (Filter by form) . Odata ce se selecteaza optiunea se va deschide o foaie goala, se selecteaza criteriile si se apasa butonul
Exemplu: Intr-un tabel Elev[Id Elev, Nume, Prenume, Clasa, Adresa], dorim sa afisam elevii cu prenumele Bogdan. Selectam optiunea Filtrare dupa macheta din meniul Inregistrari, iar in fereastra care apare se selecteaza din coloana cu prenume cel dorit, dupa care se apasa butonul propriu-zis de filtrare.
Filtrarea prin selectie Filter by selection) si Filtrarea cu excluderea selectiei Filter by excluding selection permit crearea unui filtru pe baza selectiei unui text sau a unui camp, adica se deschide un tabel, se selecteaza optiunea corespunzatoare acestei filtrari , se da click intr-o celula a tabelului, iar in momentul in care se apasa butonul care aplica filtrul se vor pastra acele inregistrari care contin in celulele corespunzatoare acelei coloane doar textul selectat (prin selectie), sau cuvinte diferite de textul selectat (filtrare prin excluderea selectiei).
Exemplu: Pentru a afisa din tabelul Elev dinainte elevii din clasa cu identificatorul 3, se selecteaza celula care contine identificatorul clasei dupa care se apasa optiunea Filtrare prin selectie din meniul Inregistrare. Pentru a afisa elevii care nu sunt in clasa cu identificatorul 3, se procedeaza ca si in cazul anterior, dar de alege optiunea Filtrare cu excluderea selectiei.
Filtrare/Sortare Complexa Advanced Filter/Sort permite introducerea de criterii de filtrare si sortare complexe, folosind optiunea Inregistrari(Record) → Filtrare(Filter) → Filtrare/Sortare Complexa (Advanced Filter/Sort).
Aceasta filtrare, aleasa provoaca aparitia unei ferestre in care se vor putea alege unul sau mai multe criterii de filtrare, pe unul sau mai multe campuri, la fel ca si la filtrarea in Excel.
Exemplu: Pentru a pastra in tabelul Elev, doar copii care ai caror nume incepe cu litera M sau ai caror nume este Iuhas pe procedeaza in felul urmator:
se selecteaza campul dupa care se doreste filtrarea
se sorteaza eventual datele
in zona de criterii se trec criteriile de filtrare.
Criteriile de filtrare sunt conditii simple, in care pot sa apara semnele urmatoare: =, <>, <=, >=, <, > urmate de datele cu care dorim sa comparam coloana aleasa.
In criteriile de filtrare pot sa apara si cuvintele OR sau AND care presupun intersectia sau reuniunea o doua sau mai multe conditii. Daca vrem sa afisam persoanele cu varsta cuprinsa intre 9 si 18 ani criteriul de filtrare va fi ">=9 AND <=18".
Si in cazul filtrarii se pot inlocui unele caractere la fel ca si la cautare dar trebuie folosit inainte cuvantul rezervat Like, pentru a preciza programului ca se foloseste o masca de filtrare, iar criteriul propriu-zis se trece intre ghilimele.
Pentru a anula filtrarea, adica pentru a reveni la datele initiale se foloseste din meniul Records Inregistrari optiunea Remove sort/filter Eliminare filtrare/sortare
Daca nu salvam tabelul cu Save din meniul File, modificarile descrise in a)- d isi pierd actualitatea, astfel incat, la o noua deschidere a tabelului, ordinea campurilor si a inregistrarilor, dimensiunile coloanelor si randurilor vor ramane aceleasi de pana la modificarea tabelului. Daca insa dupa efectuarea modificarilor salvam tabelul, aceste modificari vor fi actuale la o noua deschidere a tabelului, dar si in acest caz ele nu afecteaza caracteristicile din descrierea lui initiala. Dupa terminarea lucrului cu un tabel, il putem minimiza (in cazul cand intentionam sa-1 mai utilizam) sau inchide (in cazul cand nu-1 vom mai utiliza). Deschizand consecutiv cateva tabele si redimensionand ferestrele respective, putem afisa pe ecran mai multe tabele ale BD. Inchiderea tabelului se face, dupa cum am mai mentionat, prin executarea comenzii Close din meniul File.
Pentru a relua lucrul cu un tabel, il deschidem, actionand butonul Open din fereastra Database (fig. 4).
10. Relatii dintre tabele. Integritatea datelor
Relatiile dintre doua tabele se stabilesc, de regula, prin intermediul unor campuri identice (cu aceeasi denumire, de aceeasi lungime, cu aceleasi proprietati) prezente in ambele tabele.
In cazul relatiei de tipul unu la multi in tabelul primar (din partea caruia se realizeaza relatia 'unu') trebuie sa existe un camp, numit cheie primara, in care nu se admit valori care se repeta, iar in tabelul secundar (din partea caruia se realizeaza relatia 'multi') trebuie sa existe un camp analogic cu cel din tabelul primar, numit cheie straina, care poate admite valori care se repeta.
Relatia multi la multi poate fi transformata in doua relatii de tipul unu la multi prin definirea unui tabel intermediar, in care se introduc, in calitate de chei straine, cheile primare ale primelor douг tabele. Astfel, pentru a evita relatia multi la multi dintre tabelele CARTI si CITITORI, a fost definit tabelul COMENZI in care au fost incluse campurile IdCarte si IDCit din tabelele respective.
Relatia de tipul unu la unu presupune existenta in ambele tabele a unei chei primare cu aceleasi caracteristici, in fond, doua tabele intre care exista o relatie de tipul unu la unu pot fi oricand unite intr-un singur tabel; la fel, orice tabel poate fi divizat in doua sau mai multe tabele intre care se stabileste o relatie de tipul unu la unu. Divizarea unui tabel in modul mentionat mai sus poate fi utila in cazul unui tabel cu un numar foarte mare de campuri (un tabel Access, de exemplu, nu poate contine mai mult de 255 de campuri), dar si in situatia cand o parte din informatia care se refera la o entitate are un caracter confidential, sau se utilizeaza foarte rar. In concluzie, desi relatiile de tipul unu la unu nu sunt caracteristice unei baze de date de tip relational, totusi in unele situatii acest tip de relatii este preferabil sau chiar necesar.
Daca la proiectarea tabelelor tinem cont de principiile expuse mai sus , atunci Access stabileste automat relatiile dintre tabelele care contin campuri comune. Totusi putem stabili relatii intre tabelele bazei de date si in mod explicit, utilizand comanda Relationships din meniul Tools. In acest caz apare o fereastra (fig.8) in care indicam tabelele intre care se stabilesc relatii,apoi, cu ajutorul mouse-ului, trasam legaturile intre campurile respective.
Daca unul din campurile de legatura este de tip cheie primara (el are o
culoare mai pronuntata), trasarea se face pornind de la acest camp. Tabelul
de la care se traseaza legatura se numeste tabel primar (principal), iar celalalt - secundar (subordonat). Ca rezultat, apare o caseta de dialog (fig.9) in care putem specifica proprietatile relatiei (legaturii).
fig.8 Relatiile dintre tabelele bazei de date BIBL
fig.9 Stabilirea proprietatilor relatiilor
Pentru relatia dintre doua tabele pot fi stabilite urmatoarele proprietati:
Tipul relatiei (Relationship Type) poate fi stabilit ca unu la unu (one to one) sau unul la multi (one to many);
2. Impune integritatea referentiala (Enforce Referential Integrity)
Includerea acestui parametru asigura
integritatea datelor in procesul introducerii,
modificarii sau stergerii inregistrarilor din tabelele legate. Acest
lucru este posibil doar in cazul cand
campul din tabelul principal este de tip
cheie primara, iar campul de
legatura din tabelul subordonat are acelasi tip de date. Atunci cand introducem date in campul de legatura al tabelului subordonat, sunt acceptate doar acele valori care se contin in campul respectiv al tabelului principal. De exemplu,
daca nu exista un cititor cu identificatorul
0472 in tabelul
CITITORI, sistemul nu va admite aparitia acestui cod in campul respectiv al tabelului COMENZI. In acest caz este necesar sa introducem mai intai datele despre
cititorul in cauza in tabelul CITITORI,
apoi sa utilizam identificatorul cititorului in tabelul COMENZI.
La fel, nu putem exclude o inregistrare din
tabelul principal, daca valoarea campului
de legatura a acestei inregistrari se contine in una sau
mai multe inregistrari ale
tabelului subordonat.
Modificarea in cascada a inregistrarilor (Cascade Update Related Fields)
Daca acest parametru este inclus, sistemul va modifica toate valorile campului de legatura ale tabelului subordonat in cazul cand valoarea campului respectiv al tabelului principal se modifica. De exemplu, daca un cititor a pierdut carnetul de cititor cu numarul 0519 (identificatorul cititorului) si i se remite un nou carnet cu numarul 1465, aceasta valoare trebuie sa se modifice in toate inregistrarile tabelului COMENZI in care figureaza valoarea veche. In caz contrar, imprumuturile de carti facute de cititorul cu identificatorul 0519 nu sunt valide, deoarece nu se cunoaste nici o informatie despre cititorul in cauza.
4. Excluderea in cascada a inregistrarilor (Cascade Delete Related Records)
Daca acest parametru este activ, atunci excluderea
unei inregistrari din tabelul principal implica excluderea tuturor
inregistrarilor din tabelul subordonat, in care valoarea campului de
legatura coincide cu cea a campului respectiv din tabelul principal. De
cele mai multe ori asemenea excluderi sunt firesti, deoarece existenta unor
inregistrari in tabelul subordonat, pentru
care valoarea campului
de legatura nu se contine si in tabelul principal, duce la pierderea
integritatii datelor.
Toate rationamentele de mai sus tin de integritatea datelor, asigurarea careia reprezinta unul din principiile fundamentale ale proiectarii bazelor de date.
Aplicatie 2
Proiectarea unei relatii
Pentru a proiecta o relatie se parcurg urmatorii pasi:
se identifica tipul relatiei
se pregatesc tabelele
se proiecteaza relatia in fereastra Relationship in felul urmator:
o se deschide fereastra folosind Tools→Relationships sau butonul Relationships , moment in care apare fereastra de proiectare si un meniu ajutator Relatii.
o Se deschid tabelele pe car vrem sa le legam.
o Se verifica existenta campurilor de legatura intre cele doua tabele.
o Se pozitioneaza mouse-ul pe cheia primara a primului tabel si folosind metoda drag and drop pe duce peste campul de legatura din cel de al doilea tabel. Automat de deschide fereastra de editare a relatiei.
o In aceasta fereastra vor aparea tabelele si campurile din acestea care vor fi legate, precum si tipul de relatie care se va stabili intre tabele.
Butoanele Actualizare in cascada campuri corelate si Stergere in cascada campuri corelate au un rol foarte important si se activeaza doar daca se selecteaza optiunea Impunere integritate referentiala. Daca selectam actualizarea in cascada modificarile care vor fi aduse datelor completate in primul tabel in coloana campului legat de al doilea tabel se vor inregistra si in al doilea tabel, iar stergerea unei inregistrari din primul tabel va provoca stergerea inregistrarilor asociate din al doilea tabel, daca se selecteaza stergerea in cascada.
Pentru a sterge sau edita o relatie se da un clic dreapta pe relatia propriu-zisa, iar din meniul derulant se alege optiunea corespunzatoare.
Daca tabelele au fost legate corect, se pot introduce in continuare inregistrari(date), dar atentie se tine cont de relatiile dintre tabele. In relatia de tip 1→n se completeaza primul tabel, doar apoi cel de al doilea.
Tipuri de asocieri prin comanda Join Type
Tipul asocierii datelor dintre tabelele relationate nu afecteaza relatia ci doar modul cum sunt regasite informatiile din cele doua tabele legate. Rezultatul unei relatii poate fi vazut ca o alta tabela, care are pe fiecare linie valori si din prima tabela si din a doua.
Inner join (uniune interna) - rezultatul asocierii include numai acele randuri din ambele tabele care au valori egale ale cheii de legatura. Deci vom obtine selectiv numai elevii pentru care avem informatii despre clasele lor.
Outer join (uniune externa) - este vazut ca opusul lui inner join. Se includ linii dintr-o tabela, chiar daca nu exista corespondent in cealalta tabela. Poate fi de tip:
a) left join (uniune la stanga) -cand se includ toate articolele tabelei parinte si numai acele linii din tabela copil pentru care exista corespondent. De exemplu, vom obtine toate clasele care au fost inregistrate si elevii acestora.
b) right join (uniune la dreapta) - cand se includ toate articolele tabelei copil si doar acele linii ale tabelei parinte care au corespondent. De exemplu vom obtine toti elevii si clasele acestora.
Fie, ca exemplu, cele doua tabele Clase →1-n→Elevi, legate prin codul clasei. Observati ca sunt inregistrati elevi dintr-o clasa care nu este trecuta in tabela Clase (Enache, Elefteriu 12e). De asemenea, in tabela Clase sunt linii care nu au corespondent in tabela Elevi, de exemplu, clasa 12b nu are nici un elev.
clase : Table | |||
ID |
clasa |
diriginte | |
12a |
Albulescu M. | ||
12b |
Barbulescu i. | ||
12c |
Condurescu N. | ||
(AutoNumber) |
clase : Table | |||
Codelev |
nume si prenume |
clasa | |
Avram E. |
12a | ||
Anton M. |
12a | ||
Avasile M. |
12a | ||
Carp V. |
12c | ||
Cordun V. |
12c | ||
Enache T. |
12e | ||
Elefteriu G. |
12e | ||
(AutoNumber) |
Subseturi de date
Odata fixat o legatura de tip 1-n intre tabelele clase si elevi, se pot edita rapid in fereastra Datasheet elevii fiecarei clase, ca subset de date asociat clasei.
Deschidem tabela clase si observam in fata primului camp butonul +.
Daca apasam pe el se va deschide o subfereastra de valori ale tabelei legate (elevi), care corespunde cheii de legatura.
Este creat un subset de date atasat fiecarui articol din tabela parinte. Putem expanda toate liniile, selectand Format → Subdatasheet → Expand All sau putem reveni prin Collapse All.
Crearea automata a relatiei 1-n prin Lookup Wizard
O posibilitate de fixare a relatiei 1-n dintre doua tabele este oferita de asistentul Lookup Wizard la definirea campului de cautare prin preluarea valorilor dintr-o alta tabela. Campul de cautare poate sa extraga valori dintre valorile altei tabele. Sa presupunem ca avem tabelele clase si elevi. Adaugarea informatiilor pentru un elev presupune alegerea clasei sale dintre valorile inregistrate deja in tabela clase. Cum se procedeaza
Pasul 1. vom folosi pentru campul clasa tipul Lookup Wizard.
Pasul 2. vom fixa modalitatea de completare a listei prin folosirea unei tabele (clase).
Pasul 3. vom alege dintre campurile existente in tabela sursa coloana (coloanele care vor fi afisate in lista).
Pasul 4. vom decide daca va fi vizibila coloana care face legatura dintre cele doua tabele si putem ajusta inaltimea listei.
Pasul 6. salvam definitia campului
Stergerea sau modificarea unei relatii
Pentru editarea unei relatii se poate folosi meniul contextual, care apare cand, pozitionati, fiind pe legatura (ea este mai intens colorata), executati clic dreapta. Comanda Edit Relationships deschide caseta de dialog.
Stergerea unei relatii se face, de asemenea, din meniul contextual sau direct prin apasarea tastei Delete.
Proiectarea regulilor de integritate ale bazei de date (altfel)
Gestiunea bazelor de date trebuie sa impuna anumite reguli de actualizare a tabelelor, astfel incat sa se mentina integritatea bazei in ansamblul ei. Acest lucru se realizeaza prin intermediul unor proceduri stocate (Stored Procedures). Premiza de baza este ca valorii unei chei externe dintr-o tabela copil trebuie sa-i corespunda o valoare deja plasata in cheia primara din tabela parinte. Mecanismul de integritate referentiale trateaza inregistrarile care nu indeplinesc aceste conditii drept invalide. Prin analogie, poate exista un parinte fara fii, dar nu poate exista un fiu fara parinte. De asemenea, nu pot fi sterse articole din tabela parinte daca exista articole cu aceeasi valoare a cheii in tabela copil. Deci nu putem lasa orfani
Apelul utilitarului Referential Integrity Builder se face din fereastra de editare a legaturilor, prin clic pe butonul Enforce Referential Integrity. La apelul utilitarului, sunt activate cele doua comutatoare pentru actualizare si stergere.
Comutatorul Cascade Update Related Fields- actualizeaza toate articolele legate in tabela copil cu noile valori ale cheii modificate din tabela parinte. De exemplu,pentru baza de date SCOALA, daca modificam codul unei clase in tabela CLASE, atunci aceasta modificare se va face automat la toti elevii respectivei clase. Daca nu activam aceasta regula, se interzice corectarea valorii cheii primare in tabela parinte (CLASA) daca sunt articole legate (elevi care sunt in aceasta clasa).
Comutatorul Cascade Deleted Related Records-se sterg toate articolele cu aceeasi valoare a cheii straine ca si a cheii primare sterse. De exemplu, daca se desfiinteaza clasa "13a", vor fi stersi si elevii sai. Daca nu activam aceasta regula, se interzice stergerea cand in tabela copil sunt articole cu aceeasi valoare a cheii straine ca si cea a cheii sterse. Deci nu pot exista articole orfane in tabela copil.
Daca modificam structura tabelelor implicate in mecanismul de integritate referentiale, indecsii sau relatiile permanente, trebuie sa rulam din nou utilitarul Referential Integrity Builder. In acest fel, codul sursa din baza de date va fi revizuit.
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 4327
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved