În accepțiunea Microsoft Access o bază de date este o colecție de obiecte: tabele (tables), cereri de prelucrare (queries) formulare (forms) rapoarte (reports) pagini Web (pages) comenzi macro (macros) și module (modules).
Bazele de date se prezintă pe suporți magnetici ca fișiere cu extensia .mdb.
Se mai folosesc extensiile .mde pentru baze de date compilate, .ldb pentru fișierele index asociate unei baze de date, .mdz pentru șabloane de baze date ACCESS (templates) și .mda pentru baza de date sistem ACCESS (conține informații de securitate).
Tabelele dintr-o bază de date stochează datele și le pun la dispoziția tuturor celorlate obiecte dintr-o aplicație a bazei de date pentru prelucrare, afișare și raportare.
Tabelele au o structură (capul de tabel împreună cu informațiile privitoare la natura și proprietățile fiecărei coloane/câmp) și conținut (datele concrete stocate în tabel sub formă de rânduri denumite în engleză records, adică articole sau înregistrări).
A crea un tabel înseamnă a defini structura, a specifica acele câmpuri care pot fi folosite pentru indexare, câmpul/câmpurile ce constituie cheie primară precum și relațiile tabelului cu alte tabele (dacă există).
Pentru a crea un tabel, trebuie să avem declarată și deschisă baza de date din care va face parte acel tabel. Altfel spus, trebuie să avem în față o fereastră ca cea din figura de mai jos (aceasta este fereastra managerului bazei de date din Access 2000; cea din Access '97 va avea lista cu obiecte dispusă pe orizontală, deasupra chenarului principal):
Dacă nu avem o bază de date în care să creem un tabel, vom inițializa o bază de date.
Pentru aceasta din Meniul File vom alege opțiunea New, iar din fereastra New care apare vom alege paleta General și
apoi butonul (icoana) Database. După ce, în fereastra File New Database care a apărut, vom alege directorul de destinație al noii baze de date și numele său, vom da clic pe butonul Create. Acum vom avea în față imaginea de mai sus (imaginea fereastrei managerului bazei de date din Access).
Pentru a crea un tabel nou vom da clic pe obiectul Tables , iar din fereastra care apare vom alege una din cele trei metode disponibile și anume:
- DataSheet View (create table by entering data - prin introducerea datelor);
- Table Wizard (utilizând instrumentul Wizard).
Mai există două posibilități de creare a unui tabel, dar prin derivare din alte tabele și anume: Import Table și Link Table . Deosebirea între ele constă în aceea că o tabelă importată intră în gestiune bazei de date curente , în timp ce una cuplată prin Link, râmâne unde este iar SGBD Access doar folosește acel tabel.
Cea mai sigură metodă este Design View. Dând clic pe această opțiune, vom obține fereastra numită Table1: table unde vom putea introduce structura noultui tabel numit pentru moment Table1.
După salvarea structurii, vom fi solicitați să-i dăm un nume acestui tabel și ulterior acel nume* va apare în titlul ferestrei în loc de Table1.
Pentru a introduce structura tabelului
Table1, fiecărui câmp din tabel îi vom da un nume* (Field Name), îi vom atribui un tip de dată (Data Type) și eventual o scurtă descriere (Description). Se recomand[ s[ ne limit[m la max. 30 de c\mpuri. Pentru a alege tipul de dată, în coloana Data Type există o listă ascunsă (combobox) din care dând clic pe triunghiul negru, putem alege tipurile de date din imaginea de mai jos.
*) Maximum 64 de caractere. Blancurile sunt permise
dar nu se recomandã
1. Proprietățile câmpurilor tabelului. Odată ales
tipul de date, mai putem face diferite precizări în legătură cu câmpul curent
din tabel. Aceste precizări sau proprietăți sunt sugerate de Access în
zona de jos a ferestrei managerului bazei de date, pe paleta General,
iar valorile asociate lor se pot introduce pe aceeași paletă în zona albă, unde
în imagine avem ca exemplu pentru Field Size (lungimea câmpului) valoarea 50. Trebuie să remarcăm însă că
uneori simpla alegere a tipului de dată din imaginea alăturată nu este
suficient. Unele tipuri ca number
au subtipuri. Pentru că efectul alegerii unui tip sau a altuia se reflectă în
lungimea câmpului, subtipurile se pot alege dintr-o listă ascunsă aflată la
extremitatea dreaptă a
zonei pentru introducerea valorii Field Size. Dacă la rubrica Data Type era ales tipul Number, dând clic la extremitatea dreaptă a liniei cu date pentru Field Size, ni se va deschide un combobox cu subtipurile/opțiunile prezentate în imaginea din dreapta tabelului de mai jos. Pentru a sti ce subtip să alegem trebuie să știm că de subtipul ales depinde intervalul de valori ce putem stoca în câmpul respectiv, numărul de octeți ocupat de acel câmp, precum și numărul maxim de zecimale ce se pot stoca în acel câmp. Toate acestea rezultă din tabelul următor:
Field size/Subtipuri |
Zecimale |
Interval valoric |
Octeți |
Byte |
de la 0 la 255 | ||
Integer |
de la -32.768 până la 32.767 | ||
Long Integer |
de la -2.147.483.648 până la +2.147.483.647 | ||
Single |
de la -3,4*1038 până la +3,4*1038 | ||
Double |
de la -1,797*10308 până la +1,797*10308 | ||
Replication ID |
Identificator global unic | ||
Decimal |
de la -1028 până la +1028 |
Pentru a ști ce să alegem din lista ascunsă cu tipuri de date este bine să avem cunoștință de specificul acestor tipuri așa cum este el prezentat în tabelul de mai jos:
Date |
Tipul datelor |
Descrierea tipului datelor |
|
Alfanumerice |
Text | ||
Memo |
Pot conține până la 64.000 de caractere. Aceste câmpuri pot fi vizualizate în modul DataSheet View. Un câmp memo nu poate fi cheie și nici nu putem indexa după el |
||
Numerice |
Number | ||
Autonumber |
Se folosește de obicei la câmpurile cheie. La rubrica Field Size acesta ia automat subtipul Long Integer iar după proprietatea Field Size nu mai apare Format ci o propriete specifică acestui tip numită Increment care poate lua valorile Increment sau Random. Dacă am ales Increment, la introducerea unui nou articol câmpul de tip Autonumber va fi incrementat cu 1, dacă am ales Random se alege un număr aleatoriu unic. Numărul maxim de înregistrări ce se pot stoca într-un tabel contorizat cu o cheie de tip autonumber este de 2 miliarde. |
||
Yes/No |
Este folosit pentru reprezentarea câmpurilor de tip logic pentru care se folosesc valorile -1 pentru True sau Yes și 0 pentru False sau No. Nu pot fi folosite ca index și cu atât mai mult nu pot fi folosite drept cheie. Să remarcăm că aceste câmpuri totdeauna vor lua vlaoarea 0 sau orice alt număr diferit de zero (respectiv -1), dar la introducerea datelor, noi nu introducem decât True/False, Yes/No, sau Onn/Off (depinde ce alegem în momentul completării proprietății Format unde există un combobox cu aceste trei oferte și noi putem să alegem una dintre ele). |
||
Currency |
Este un format special, fix, cu patru zecimale proiectat să prevină erorile de rotunjire care ar opera operațiile contabile acolo unde valoarea trebuie să se potrivească la nivel zecimale. |
||
Date calendaristice |
Date/Time | ||
Obiecte mari |
Object OLE (BLOB - binary large object)) |
Se referă la obiecte grafice realizate prin puncte (bitmap), desene vectoriale, fișiere cu semnale audio și alte tipuri de date care pot fi create de o aplicație OLE server. Câmpurile de acest tip nu pot fi folosite drept cheie și nici index. |
|
Adrese Internet |
Hyperlink |
Este un text sau o combinație de text cu numere, stocată ca un text și folosită ca adresă a unei pagini Web. Este formată din trei părți: textul afișat, adresă și subadresă. Fiecare din cele trei părți poate fi compusă din maximum 2048 de caractere. |
|
Informații preluate |
Lookup Wizard |
|
Practic din cele prezentate mai sus, putem completa doar proprietatea Field Size. Să vedem în continuare efectul formatului predefinit ales în linia numită Format pentru tipurile Number, Date/Time și Yes/No (acest efect se poate vedea doar la afișarea datelor):
Tipul datelor |
Format disponibil |
Aspect |
Number |
General Number | |
Currency | ||
Fixed | ||
Standard | ||
Percent | ||
Scientific |
1.23E+03 |
|
Date/Time |
General Date |
10/I/92 4:00:00 Pm |
Long Date |
Thursday, October 1, 1992 |
|
Medium Date |
1 -Oct-92 |
|
Short Date | ||
Long Time |
4:00:00 PM |
|
Medium Time |
04:00 PM |
|
Short Time | ||
Yes/No |
Yes/No |
Yes sau No |
True sau False |
||
On sau Off |
||
-1 sau 0 |
Formatele de mai sus sunt predefinite. Pentru tipul text și memo nu există formate predefinite ca cele de mai sus. În afară de formate predefinite există formate ce se construiesc de programator cu ajutorul diferitelor simboluri.
a) Pentru text/memo se pot folosi simbolurile @, &, < și > cu următoarele semnificații:
se cer caractere de tip text (inclusiv spațiu).
< scrie toate caracterele cu litere mici
> scrie toate caracterele cu majuscule
Formatele pentru text/memo pot avea până la două secțiuni, fiecare secțiune conținând formatul pentru o anume situație și anume: prima secțiune pentru câmpuri cu text și secțiunea doua pentru câmpuri de lungime nulă sau cu valoarea Null.
Astfel dacă pentru situația că în câmp nu există text putem cere să se scrie "Necompletat", vom folosi formatul @;" Necompletat " . În acest caz simbolul @ va fi folosit pentru cazul când există text, iar dacă nu există text va fi folosită secțiunea doua, adică va scrie cuvântul Necompletat .
Notă. Mai există funcția Format care poate returna o valoare pentru un șir de lungime zero și alta pentru șirul Null.
Proprietatea Format poate fi folosită și în modul Datasheet View, pentru a forma automat câmpuri din tabelul deschis în acest mod de lucru.
De exemplu puteți folosi următorul format pentru tipul currency:
#0.00[green];($#,##0.00)[Red];"Zero";"Null".
Culorile se scriu în engleză!
Acest număr conține patru secțiuni, separate prin ; și folosește un format diferit pentru fiecare secțiune. Dacă folosim mai multe secțiuni, dar nu specificăm format pentru fiecare secțiune, în situația în care cădem peste o secțiune ce nu are format fie că nu se va afișa nimic, fie se va aplica automat formatul asociat cu prima secțiune.
Se pot crea formate pentru numere folosind următoarele simboluri:
Simbol Descriere
. (punct) Separator de zecimale. Separatorii se pot stabili dând dublu clic pe zona Regional Settings din Windows Control Panel.
, (virgula) Separator pentru mii
simbol pentru cifre (vom folosi atâtea zerouri câte cifre vrem să obținem) Vom obține o cifră sau zero.
simbol pentru cifre. Vom obține o cifră sau nimic.
afișează caracterul $
procentaj. Valoarea este înmulțită cu 100 și se adaugă semnul %.
E- sau e- Notația științifică pentru numere. Se pune semnul minus după exponenții negativi și nimic după exponenții pozitivi. Acest simbol se va folosi cu alte simboluri ca în 0.00E-00 sau 0.00E00.
E+ sau e+ Notația științifică pentru numere. Se pune semnul minus după exponenții negativi și semnul plus (+) după exponenții pozitivi. Acest simbol se va folosi cu alte simboluri ca în 0.00E+00
Observație: se poate folosi proprietatea Decimal Places pentru a ignora numarul implicit de zecimale prevăzut în formatul predefinit ales cu proprietatea Format.
Formatele predefinite currency și euro se conformează setărilor din Regional Settings existente în Windows Control Panel. Noi putem ignora acele setări folosind propriul nostru format pentru tipul Currency
Notă Dacă doriți să. adăugați în formatul Dv. un separator, acesta va fi încadrat între apostroafe duble ca în exemplul următor: mmm d", "yyyy.
d) Pentru datele de tip Yes/No formatele programator pot conține până la trei secțiuni: prima fără nici un efect, dar trebuie marcată de semnul ; , a doua conține textul ce va fi pus în locul lui Yes, True sau On și a treia conține textul ce va fi pus în locul lui No, False sau Off.
Vom prezenta în continuare semnificația proprietăților ce urmează după Format:
- Numărul de zecimale (Decimal places). În cadrul acestei proprietăți se stabilește numărul de zecimale ce pot fi atribuite câmpului. Există o listă de opțiuni și se pot selecta valori cuprinse între 0 și 15 sau Auto pentru determinarea automată a numărului de zecimale.
- Formatul de introducere (Input Mask). Prin această proprietate se impune un format pentru toate datele ce se vor introduce în câmpul curent. Un astfel de format se poate crea mai ușor cu Input Mask Wizard care se obține dând clic pe extremitatea dreaptă a liniei unde trebuie să introducem proprietatea Input Mask, mai exact pe butonul .
Acest format de intrare are mare importanță în cazul câmpurilor de tip Text sau Date/Time .
Proprietatea InputMask poate conține până la trei secțiuni:
- prima conține formatul de introducere propriu-zis, de exemplu !(999) 999-9999. A se vedea mai jos lista caracterelor ce se pot folosi pentru a defini un format de intrare.
- a doua specifică dacă Access trebuie să stocheze în tabel și caracterele din afișajul literal folosit la introducerea datelor. Mai exact le va introduce pentru valoarea 0 din această secțiune și nu le va introduce pentru valoarea 1 sau blank. Afișajul literal derivă din faptul că de exemplu pentru un număr de telefon putem defini formatul de intrare sub forma (999) 999-9999. La introducerea datelor pe ecran, pe lângă cifrele introduse în locul liniilor, vor apare și parantezele. Dacă în această secțiune am pus 0, parantezele vor fi stocate și ele împreună cu cifrele.
- a treia secțiune specifică un caracter pe care Access îl va afișa în locul unde este de așteptat, conform formatului de intrare, să se introducă date.
Pentru a defini un format de intrare (Input Mask) se pot folosi următoarele caractere:
se cer doar cifre; nu se admite semnul + sau -;
se pot introduce cifre și spațiu; nu se admite semnul + sau -;
se pot introduce cifre și spațiu; spațiile sunt afisate pe timpul editării ca blancuri, dar la stocare blancurile se elimină; se admite semnul + sau -;
L se cer litere de la A la Z; introducere obligatorie;
se cer litere de la A la Z; introducere opțională;
A litere sau cifre; introducere obligatorie;
a litere sau cifre; introducere opțională;
& orice caracter sau spațiu; introducere obligatorie;
C orice caracter sau spațiu; introducere opțională;
/ marchează loc pentru zecimale și separatori pentru mii, dată și timp. Adevăratul caracter folosit, va fi cel din cutia de dialog Regional Settings Properties din Windows Control Panel;
< toate caracterele vor fi convertite la litere mici;
> toate caracterele vor fi convertite la majuscule;
cere formatului de intrare să afișeze de la dreapta la stânga și nu de la stânga la dreapta cum ar fi normal. Acest semn poate fi inclus oriunde în formatul de intrare;
cere formatului de intrare să afișeze caracterele ce urmează după semnul mirării ca niște caractere literale: de ex. din \A va rezulta A
Notă: dacă Input Mask este pusă sub forma cuvântului "Password", orice caracter tastat în zona unde trebuie tastate datele de intrare va fi afișat ca steluță.
În zona unde trebuie tastate datele de intrare, dacă acolo este in vigoare un format de intrare, se scrie în regim Insert Off, adică se scrie peste. Dacă acolo se folosește tasta back space, în locul caracterului șters va râmâne un spațiu.
La afișarea datelor ce au fost citite cu un format de intrare, dacă a fost definit și un format de afișare (cu proprietatea Format), acesta din urmă este prioritar.
- Eticheta (Caption). Permite specificarea unui anumit nume atribuit câmpului în cazul în care acesta este utilizat în cadrul formularelor sau când tabela creată este afișată.
- Valoarea implicită (Default Value). Este utilă atunci când o valoare este foarte comună pentru multe înregistrări (rânduri din tabel). Ea se inroduce la declararea structurii tabelului, iar la introducerea datelor este introdusă automat. Dacă pentru un anumit articol nu se potrivește, putem s-o modificăm, dar ea rămâne valabilă pentru restul articolelor.
- Regula de validare (Validation Rule). Dacă a fost prevăzută o regulă de validare (exprimată printr-o expresie) la introducerea unei valori în câmpul respectiv, expresia se calculează pentru valoarea respectivă și se confruntă cu criteriul de validare. Pe lângă operatori (=, -, *, /, \, Mod, <, >, £ ³, AND, OR, BETWEEN, IN, IS NULL), expresiile conțin și operanzi reprezentați prin identificatori (dați în paranteze rotunde), funcții și constante. Exemplu: regula >= #1/1/98# And <#1/1/99# cere ca data calendaristică ce va fi introdusă să fie în limitele anului 1998.
- Textul de validare (Validation Text) este textul care va apărea ca mesaj în cazul în care nu s-a respectat regula de validare.
- Introducere obligatorie (required). Se aplică pentru toate câmpurile a căror lipsă ar face nerelevant articolul în care ele nu ar fi completate. De exemplu o factură fără dată nu poate fi luată în serios din cauză că ar rămâne în afara multor rapoarte și situații generate de calculator și poate chiar în afara listei cu facturile ce trebuie achitate.
- Indexat (Indexed). Prin această proprietate ne pronunțăm cu privire la utilizarea câmpului curent la indexarea bazei de date, ca index simplu, iar dacă răspunsul este Da, atunci trebuie să precizăm dacă la indexare se iau în calcul și înregistrările care vin cu valori ce se repetă (Duplication OK) sau ne limităm numai la câte o înregistrare de fiecare valoare a câmpului curent (No duplication). Dacă am ales câmpul ca index și apoi renunțăm putem folosi opțiunea No, care alături de primele două se găsesc într-o combobox de pe linia Indexed.
- Valori Noi (New Values) se aplică doar la câmpurile de tip Autonumber. Prin combobox de pe această linie precizăm dacă valoarea din câmpul curent se obține prin incrementare (opțiunea Increment) sau prin generarea de numere aleatoare unice (Random).
- Se admite lungime zero (Allow Zero Length) se pretează numai la câmpurile de tip text și memo. Valoarea introdusă la această proprietate este corelată cu cea de la proprietatea required, conform tabelului de mai jos.
Allow zero length |
Required |
Acțiune |
Valoare memorată |
No |
Yes |
Enter |
Null |
Spacebar |
Null |
||
ªir de lungime zero |
Nu este acceptat |
||
Yes |
No |
Enter |
Null |
Spacebar |
Null |
||
ªir de lungime zero |
ªir de lungime zero |
||
No |
Yes |
Enter |
Nu este acceptat |
Spacebar |
Nu este acceptat |
||
ªir de lungime zero |
Nu este acceptat |
||
Yes |
No |
Enter |
Nu este acceptat |
Spacebar |
ªir de lungime zero |
||
ªir de lungime zero |
ªir de lungime zero |
Centralizarea atributelor tipurilor de date. Tabelul de mai jos marchează prin steluță care sunt atributele (proprietățile) care se pretează fiecărui tip de date:
Data Type Property |
Text |
Memo |
Num-ber |
Date/ Time |
Cu-rrency |
Auto- Number |
Yes/ No |
OLE Object |
Hyper- link |
Field Size | |||||||||
Format | |||||||||
Input Mask | |||||||||
Caption | |||||||||
Valida-tion Rule | |||||||||
Valida-tion Text |
| ||||||||
Required | |||||||||
Allow zero Length | |||||||||
Decimal Places | |||||||||
New Values | |||||||||
Indexed |
2. DisplayControl este o proprietate care nu apare împreună cu cele enumerate în tabelul de mai sus, dar ea se poate introduce selectând pagina LookUp de lângă pagina General unde se află celelalte proprietăți.
Această proprietate conține o listă ascunsă (combobox) ce conține tipurile de obiecte de control disponibile pentru tipul de date selectat pentru câmpul de care ne ocupăm în acel moment. Pentru câmpurile de tip Text sau Number, această proprietate poate fi pusă Text Box, List Box, sau Combo Box. Pentru câmpurile de tip Yes/No, această proprietate poate fi pusă pe Check Box, Text Box, sau Combo Box.
Remarcăm că în momentul în care ați ales un obiect de control pentru această proprietate, orice alte proprietăți necesare pentru a configura acel obiect de control, sunt imediat afișate pe pagina Lookup. Prezentăm mai jos, aceste proprietăți.
De fapt ceea ce se întâmplă pe această pagină, puteați obține dacă în partea de sus a ferestrei utilizate pentru introducerea câmpurilor din compunerea tabelului, în coloana Data Type, ați fi ales tipul Lookup Wizard.
- proprietatea RowSourceType și RowSource
Aceste proprietăți se folosesc corelat pentru a transmite mediului de programare Access, cum să furnizeze datele pentru obiectul de control ales (listă, listă ascunsă sau chiar un obiect OLE liber cum ar fi o hartă. Este vorba de hărțile speciale folosite de Excel, care sunt de fapt un fel de obiect de control prin care se stochează date ca într-o listă, numai că în loc să vezi un rând din listă vezi un punct de pe hartă, căruia i-au fost asociate anumite proprietăți ) . Așa de exemplu, pentru a afișa pe rândurile dintr-un obiect de tip listă, date provenite de la o query numită Lista_Clienți, la proprietatea RowSourceType vom răspunde cu Table/Query, iar la proprietatea RowSource vom răspunde cu query Lista_Clienți.
Pentru completarea proprietății RowSourceType Setting se pot folosi următoarele opțiuni:
- Table/Query, însemnând că datele se vor lua dintr-un tabel, o query, sau o instrucțiune SQL, ce se va specifica prin proprietatea RowSource.
- Value List. Datele vor fi o listă de valori ce se specifică prin intermediul proprietății RowSource. Acolo datele vor fi separate prin punct și virgulă (;).
- Field List Datele vor fi o listă de câmpuri dintr-un tabel, query, sau instrucțiune SQL, specificat(ă) prin RowSource.
Pe pagina Lookup mai sunt specificate și alte proprietăți ale obiectului ales, cum ar fi:
- bound column - din ce coloană a listei sau listei ascunse să se ia datele atunci când aceasta este folosită și când ea dispune de mai multe coloane; de obicei aceste liste sunt prevăzute cu o singură coloană;
- column count - câte coloane să fie afișate;
- column heads - când obiectul va fi activat coloanele sale cu ce să fie etichetate? (cu denumire câmpuri, etichete, primul rând de date din tabel sau etichetele de pe hărți?);
- column widths - lățimea coloanelor (în cazul unor obiecte cu coloane multiple) din compunerea obiectului de control ales;
- list rows - numărul maxim de rânduri dintr-un tabel ce se vor afișa în lista ascunsă;
- list width - lățimea listei ascunse ce se derulează la activarea obiectului Combobox;
- limit to list - (poate lua valorile Yes sau No); dacă utilizatorul în loc să aleagă o opțiune din listă tastează un text, atunci dacă proprietatea limit to list a fost pusă pe Yes și acel text nu se porivește cu unul din cele afisate pe lista ascunsă, textul va fi respins, chiar dacă el s-ar fi potrivit cu unul care este în sursa de date a coloanei listei ascunse, dar nu este vizibil.
3. Indecși și chei. Indecșii au de a face cu indexarea. Aceasta se materializează în crearea unui fișier ce conține cheile (poziția) articolelor din compunerea tabelului, ordonate după valorile din câmpul desemnat ca index. Articolele nu sunt mutate de la locul lor! Există indecși care iau în considerație și valori multiple (Duplicates Ok), indecși care nu iau în considerație articolele ce vin cu valori ce se repetă (No duplicates) și indecși compusi adică valoarea după care se face ordonarea în fisierul index se obține prin combinarea valorilor din două până la zece câmpuri indicate de programator la stabilirea indecșilor. În cazul unui tabel se admit maximum 5 indecși compusi. Nu putem indexa câmpuri de tip memo, hyperlink sau OLE objects.
Dealtfel, de regulă, relațiile se crează tocmai pentru că cheia externă este un câmp cu valori multiple altminteri este foarte posibil ca cele două tabele să poată fi combinate într-unul singur.
Într-un tabel nu poate fi decât o singură cheie primară, dar existența unei chei primare este obligatorie pentru că altfel, pentru tabelul respectiv nu există nici un criteriu de sortare. Dacă mai există un câmp care ar putea identifica unic înregistrările, dar nu a fost desemnat cheie primară, acela poate fi considerat cheie candidată. Singurul index obligatoriu este cheia primară.
4. Relații între tabele
Din fereastra managerului bazei de date selectați Tools/ Relationship. Va rezulta fereastra fereastra Relationship și odată cu ea și fereastra Show Table.
Dați clic pe câmpul cheie primară din tabelul care vă interesează (tabelul părinte) și ținând butonul mouse-ului apăsat mutați cursorul pe cheia externă a tabelului copil. Acum va apare fereastra Edit Relationship de unde putem selecta caseta de validare Enforce referential Integrity și eventual Cascade Update Related Fiels și Cascade Delete Related Records.
De remarcat că pentru a crea o relație între o cheie primară compusă și o cheie externă simplă, trebuie selectat câmpul scris cu bold, din cheia primară și apoi tinând Ctrl apăsat, vom da clic și pe cel de al doilea câmp implicat în cheia primară apoi, ținând butonul mouse-ului apăsat, putem trage cursorul spre cheia externă ce ne interesează.
Definirea unei relații de tip mai multe la mai multe
Pentru aceasta vom crea un al treilea tabel numit reuniune unde, printre altele, vom defini și două câmpuri identice cu cele două câmpuri desemnate cheie primară, în cele două tabele ce urmează a fi puse în relația mai multe la mai multe. În acest tabel ele vor forma o singură cheie primară (compusă) care va funcționa drept cheie externă în relațiile cu cele două tabele date.
Dacă este cazul, în tabela reuniune, se pot aduce și alte câmpuri din tabelele ce urmează a fi puse în relația mai multe la mai multe.
În final vom defini câte o relație una la mai multe între fiecare din cele două tabele date și tabelul reuniune. Adăugarea de articole se face fie creând o query care lucrează cu mai mult de un tabel, fie un formular care lucrează cu mai mult de un tabel.
UN exemplu de tabel reuniune poate fi unul numit Linie_factură care va conține un câmp cu numărul facturii și un câmp cu codul produsului, în condițiile în care există deja un tabel cu facturi și unul cu produse. În acest tabel o factură se poate regăsi la mai multe produse, iar un produs se poate regăsi pe mai multe facturi.
Este bine ca toate modificările de tip, subtip, index, chei, etc. să se facă înainte de începerea completării tabelului cu date, pentru că ulterior schimbările care presupun condiții mai restrictive de lungime câmp sau de subtip, pot duce la piederi de informații sau la erori grave.
Dacă există relații, nu se pot șterge articole decât după ce s-au șters toate articolele ce conțin în cheia externă valoarea cheii primare aflată în articolul ce se dorește a fi șters.
Redenumirea unui tabel din compunerea unei baze de date In fereastra Database se dă clic pe denumirea tabelului și apoi se mai dă clic odată, dar nu sub formă de dublu clic și ca urmare denumirea tabelului se transformă într-o cutie de text în care apare un cursor pentru editare. Se poate șterge vechea denumire sau părți din ea și se pot scrie alte caractere. În final se dă Enter.
|