De la fisa pe hartie la tabel electronic
Tabel — o colectie de informatii despre acelasi fel de lucru (de exemplu, toate automobilele aduse la atelier). Corespunde, cam, unei foi de calcul intregi.
Camp — o categorie de informatie care se repeta identic la fiecare element (numarul de inmatriculare, marca, anul fabricatiei). Corespunde unei coloane.
Inregistrare — toate informatiile despre UN singur element concret, cu toate campurile lui completate (o masina anume, cu toate datele ei). Corespunde unui rand.
Gandeste-te la un dulap cu fise de masini, ordonate una dupa alta. Dulapul intreg, cu toate fisele din el, este tabelul Autovehicule. O singura fisa, cea a unei masini anume, este o inregistrare. Rubrica "Marca", care apare identic, in acelasi loc, pe toate fisele, este un camp.
Cand cineva iti spune "adauga o inregistrare noua", inseamna sa adaugi o masina noua (un rand nou), nu o coloana noua. Cand cineva iti spune "adauga un camp nou", inseamna ca vrei sa retii o informatie noua despre toate masinile deodata (de exemplu, culoarea) — asta se face o singura data, la nivel de tabel, nu la fiecare masina in parte.
Primul tabel: Autovehicule
| Camp | Tip de date | Ce retine |
|---|---|---|
| ID_Auto | AutoNumber | Cheia primara — generata automat de Access, 1, 2, 3... |
| Nr_Inmatriculare | Short Text | Numarul de pe placuta (ex. NT-07-ABC) |
| Marca | Short Text | Dacia, Volkswagen, Ford... |
| Model | Short Text | Logan, Golf, Focus... |
| An_Fabricatie | Number | Anul de fabricatie, ca numar intreg |
| ID_Auto | Nr_Inmatriculare | Marca | Model | An_Fabricatie |
|---|---|---|---|---|
| 1 | NT-07-ABC | Dacia | Logan | 2019 |
| 2 | NT-12-XYZ | Volkswagen | Golf | 2021 |
| 3 | NT-45-DEF | Dacia | Logan | 2019 |
| 4 | NT-88-GHI | Ford | Focus | 2017 |
Observa masinile 1 si 3: aceeasi marca, acelasi model, acelasi an de fabricatie — dar cu ID_Auto diferit, deci sunt doua masini distincte, fara nicio confuzie.
Cheia primara — identificatorul care nu se repeta niciodata
Deschizi tabelul in Design View (clic-dreapta pe numele tabelului din panoul din stanga → Design View). Dai clic pe randul campului dorit (ID_Auto), apoi din panglica (Ribbon), tab-ul Design, grupul Tools, dai clic pe butonul Primary Key (are o pictograma de cheita). Langa camp apare simbolul unei chei — semn ca acel camp este acum cheia primara a tabelului.
Multi incepatori aleg Nr_Inmatriculare drept cheie primara, pentru ca pare unic. Problema apare cand o masina este revanduta si renumerotata, sau cand introduci temporar o masina fara placute inca puse (masina noua, adusa direct din service auto vecin). Recunosti greseala atunci cand trebuie sa "schimbi cheia primara" a unei inregistrari existente — lucru pe care o cheie primara buna nu ar trebui sa il ceara niciodata. Reparatia: foloseste un camp ID generat automat (AutoNumber) ca si cheie primara, iar Nr_Inmatriculare ramane un camp normal, care se poate edita oricand fara sa afecteze legaturile catre celelalte tabele.
Al doilea tabel: Interventii
| Camp | Tip de date | Ce retine |
|---|---|---|
| ID_Interventie | AutoNumber | Cheia primara — generata automat de Access, 101, 102, 103... |
| Data | Date/Time | Data la care s-a facut interventia |
| Descriere | Short Text | Ce lucrare s-a facut (schimb ulei, reparatie frana...) |
| Cost_Lei | Number | Costul interventiei, in lei |
| Cod_Auto | Number (Long Integer) | Cheia externa spre Autovehicule.ID_Auto |
Regula de tip pentru cheia externa: ID_Auto din Autovehicule este AutoNumber, iar Access stocheaza intern un AutoNumber ca Number — Long Integer. Ca Cod_Auto sa poata primi valorile lui ID_Auto si sa se poata construi relatia dintre cele doua tabele, Cod_Auto trebuie setat exact Number, cu marimea de camp (Field Size) Long Integer — acelasi tip pe care il vei intalni si la id_client din lectia 6, ca si cheie externa spre Clienti.id_client. Daca alegi alt tip (de exemplu tot AutoNumber, alegerea "naturala" prin analogie cu ID_Auto, sau Short Text), Access refuza sa traga legatura intre campuri, cu o eroare de nepotrivire de tip.
| ID_Interventie | Data | Descriere | Cost_Lei | Cod_Auto |
|---|---|---|---|---|
| 101 | 12.01.2026 | Schimb ulei si filtre | 350 | 1 |
| 102 | 15.01.2026 | Reparatie sistem frana | 620 | 3 |
| 103 | 20.01.2026 | Revizie generala | 480 | 1 |
| 104 | 22.01.2026 | Inlocuire baterie | 280 | 2 |
| 105 | 28.01.2026 | Verificare sistem racire | 150 | 1 |
Cheia primara a acestui tabel este ID_Interventie (fiecare vizita e unica). Coloana Cod_Auto nu este cheia primara aici — este campul care spune carei masini ii apartine interventia respectiva, prin numarul ei ID_Auto din tabelul Autovehicule.
Daca ai fi scris Marca si Model pe fiecare din cele 5 randuri de mai sus, ai fi scris "Dacia Logan" de trei ori (randurile 101, 103, 105) si tot riscul unei greseli de tastare la a treia scriere — de exemplu "Daciaa" sau "logan" cu litera mica, ceea ce ar strica orice cautare ulterioara dupa marca.
Relatia dintre Autovehicule si Interventii
Intrebare: cate interventii are automobilul cu ID_Auto=1 (Dacia Logan, NT-07-ABC) si cat a costat in total?
Rezolvare: parcurgi tabelul Interventii si retii doar randurile unde Cod_Auto = 1:
ID_Interventie 101 — Schimb ulei si filtre — 350 lei
ID_Interventie 103 — Revizie generala — 480 lei
ID_Interventie 105 — Verificare sistem racire — 150 lei
Rezultat: automobilul cu ID_Auto=1 are 3 interventii, in valoare totala de 350 + 480 + 150 = 980 lei. Acest calcul a fost posibil exclusiv datorita legaturii Cod_Auto → ID_Auto, fara ca tabelul Interventii sa fi retinut vreodata marca sau modelul masinii.
Din panglica, tab-ul Database Tools → butonul Relationships. In fereastra care se deschide, adaugi ambele tabele (Show Table → selectezi Autovehicule si Interventii → Add). Apoi tragi cu mouse-ul din campul ID_Auto (in Autovehicule) peste campul Cod_Auto (in Interventii). Se deschide fereastra Edit Relationships — aici bifezi obligatoriu caseta Enforce Referential Integrity, apoi confirmi cu butonul Create. Intre cele doua tabele apare o linie cu simbolul 1 langa Autovehicule si simbolul ∞ (infinit) langa Interventii — acestea sunt dovada vizuala ca relatia este de tip unu-la-multe si ca Access va respinge de acum orice interventie introdusa cu un Cod_Auto care nu exista in Autovehicule.
Fara bifa Enforce Referential Integrity, linia tot apare intre cele doua tabele, dar fara simbolurile 1 si ∞ — relatia ramane de tip "Indeterminate", iar Access nu mai verifica nimic: poti introduce o interventie cu Cod_Auto = 99, chiar daca nicio masina cu ID_Auto = 99 nu exista. Bifa este cea care transforma o simpla linie desenata intr-o regula pe care Access chiar o aplica.
Indexul — cautari rapide intr-un tabel mare
Daca atelierul acumuleaza, sa spunem, 3.000 de interventii in cativa ani, iar tu vrei mereu sa vezi rapid toate interventiile unei anumite masini, o cautare dupa Cod_Auto fara index inseamna ca Access parcurge, in principiu, toate cele 3.000 de randuri pe rand. Cu un index pe Cod_Auto, gaseste direct grupul de randuri cautat, mult mai rapid — diferenta devine vizibila pe masura ce tabelul creste.
In Design View, selectezi randul campului (de exemplu Cod_Auto). In panoul Field Properties, de jos, tab-ul General, cauti proprietatea Indexed si alegi din lista una dintre cele trei optiuni:
No — fara index (implicit pentru majoritatea campurilor)
Yes (Duplicates OK) — index care accepta valori repetate; potrivit pentru Cod_Auto, pentru ca aceeasi masina apare la mai multe interventii
Yes (No Duplicates) — index care impune unicitate; acesta e setat automat pe cheia primara
Indexul ocupa spatiu suplimentar pe disc si incetineste, foarte putin, adaugarea de inregistrari noi (pentru ca Access trebuie sa actualizeze si indexul, nu doar tabelul). De aceea nu indexezi orice camp, ci doar pe cele cautate sau sortate frecvent — la Interventii, acestea sunt de obicei Cod_Auto si Data.
Recapitulare si conexiuni
Tabel (colectie de inregistrari) → format din campuri (coloane) si inregistrari (randuri)
fiecare inregistrare identificata unic de cheia primara (ex. ID_Auto, ID_Interventie)
doua tabele legate printr-un camp comun — ID_Auto (Autovehicule) = Cod_Auto (Interventii) — relatie unu-la-multe
campurile cautate des primesc un index, pentru viteza
Acum ca stii cum arata structura celor doua tabele, in lectia urmatoare vei invata sa lucrezi efectiv cu datele din ele: adaugarea de inregistrari noi, modificarea si stergerea celor gresite, sortarea dupa un camp si filtrarea dupa un criteriu — de exemplu, "arata-mi doar interventiile mai scumpe de 400 lei".
Tabel = colectie · Camp = coloana · Inregistrare = rand.
Cheia primara = unica, niciodata goala, stabila in timp (nu folosi Nr_Inmatriculare sau alte date care se pot schimba).
Doua tabele legate printr-un camp comun evita repetarea datelor si a greselilor de tastare.
Relatia unu-la-multe: o inregistrare "parinte" (o masina) poate avea mai multe inregistrari "copil" (interventii).
Indexul = viteza de cautare, cu un mic cost de spatiu si de scriere — se pune doar pe campurile cautate des.