Invatare Atomica

Ce este o baza de date relationala. Tabele si tipuri de date

Modulul Baze de Date (Access) — Lectia 1 din 5

Progres lectie:
0%
🎯

Obiectivul lectiei

Vei intelege de ce o firma mica nu isi mai tine evidenta materialelor sau a clientilor intr-o singura foaie de calcul cand datele cresc, ce inseamna o baza de date relationala organizata in tabele, si vei sti sa creezi un tabel in Microsoft Access folosind Vizualizarea Proiect, alegand tipul de date potrivit pentru fiecare camp.

Dupa aceasta lectie vei putea:

  • Sa explici de ce o baza de date relationala evita repetarea si contradictiile fata de o foaie de calcul
  • Sa definesti si sa recunosti in exemple: tabel, inregistrare (rand), camp (coloana)
  • Sa alegi tipul de date corect in Access dintre Text scurt, Numar, Data/Ora, Da/Nu si Moneda
  • Sa deschizi Vizualizarea Proiect (Design View) si sa creezi un tabel nou, camp cu camp
  • Sa recunosti si sa eviti greseala tipica de a alege tipul de date gresit pentru un camp

Incearca singur!

Provocare — inainte sa citesti:

Un atelier de tamplarie tine evidenta comenzilor intr-o foaie Excel, cu o linie pe comanda: nume client, telefon, produs comandat, data comenzii, pret. Dupa un an, acelasi client "Popescu Ion" apare scris in 4 feluri diferite ("Popescu Ion", "popescu ion", "I. Popescu", "Popescu I."), iar cand vor sa afle toate comenzile lui, nimeni nu e sigur ca le-au gasit pe toate. Ce credeti ca a mers prost si cum ati organiza datele altfel, ca sa nu se mai intample?

💡 Ai nevoie de un indiciu?

Problema nu e Excel-ul in sine, ci faptul ca aceeasi informatie (numele clientului) a fost scrisa manual de fiecare data, in loc sa fie introdusa o singura data si refolosita. O baza de date relationala rezolva exact acest tip de problema: tine fiecare informatie intr-un singur loc "oficial" si o leaga de restul datelor.

Subiectul lectiei de azi raspunde exact la aceasta intrebare!

1

De ce nu tii totul intr-o singura foaie de calcul

Intr-o foaie de calcul cu o singura lista (de exemplu comenzi), fiecare rand repeta toate datele: numele clientului, telefonul, adresa — la fiecare comanda noua. Aceasta organizare are trei probleme care apar sigur, mai devreme sau mai tarziu, pe masura ce lista creste:
1. Repetare (redundanta)

Acelasi nume de client, aceeasi adresa, acelasi telefon sunt scrise de la zero la fiecare comanda noua. Daca clientul isi schimba telefonul, trebuie corectat manual pe fiecare rand vechi — si e usor sa ratezi vreunul.

2. Contradictii (inconsistenta)

Acelasi client ajunge scris "Popescu Ion" pe un rand si "popescu ion" sau "I. Popescu" pe altul. Pentru calculator, acestea sunt trei clienti diferiti, desi in realitate e o singura persoana. O cautare dupa nume nu mai gaseste toate comenzile lui.

3. Greutate la intrebari complexe

O intrebare simpla precum "cati clienti diferiti au comandat produse din lemn de stejar in luna martie" devine greu de raspuns cu incredere cand aceiasi clienti sunt scrisi in mai multe feluri si datele sunt amestecate intr-o singura lista lunga.

Solutia — baza de date relationala

O baza de date relationala tine informatiile separate pe subiecte, in tabele distincte care se leaga intre ele: un tabel Clienti (fiecare client scris o singura data) si un tabel Comenzi (fiecare comanda leaga, printr-un cod, catre clientul din tabelul Clienti, nu retranscrie numele lui). Numele clientului exista intr-un singur loc "oficial"; comenzile doar il refera. Microsoft Access este un program pentru construit si gestionat astfel de baze de date.

2

Tabel, inregistrare, camp — vocabularul de baza

In Access, datele se tin in tabele. Un tabel arata ca o foaie de calcul, dar cu reguli mai stricte. Trei termeni trebuie stapaniti inainte de orice altceva:
Tabel — o colectie de date despre un singur subiect (de exemplu toate materialele din depozit, sau toti clientii).
Inregistrare (record) — un rand din tabel; reprezinta o singura aparitie a subiectului (un material anume, un client anume).
Camp (field) — o coloana din tabel; o singura caracteristica, aceeasi pentru toate inregistrarile (de exemplu coloana "Pret" exista o singura data, dar are o valoare pe fiecare rand).
Exemplu complet — tabelul "Materiale" al unui atelier de tamplarie

Tabelul are patru campuri (coloane): CodMaterial, DenumireMaterial, UnitateMasura, StocCurent.
O inregistrare (rand) arata asa: PSAL-04 | Placa PAL melaminat 18mm | buc | 45
Alta inregistrare: PSAL-07 | Sipca lemn de brad 20x30mm | ml | 320
Fiecare din cele doua randuri este o inregistrare; valoarea "45" singura este un camp (campul StocCurent al primei inregistrari).

Legatura cu foaia de calcul, ca sa nu pornesti de la zero

Daca ai lucrat deja in Excel: un tabel Access = o foaie de calcul; o inregistrare = un rand; un camp (pentru o inregistrare data) = o celula. Diferenta mare fata de Excel este ca Access obliga fiecare coloana sa aiba un singur tip de date declarat dinainte — nu poti scrie text intr-o coloana declarata Numar.

3

Tipurile de date din Access

Cand creezi un camp (o coloana) intr-un tabel Access, trebuie sa alegi tipul de date — ce fel de valoare poate contine campul acela. Alegerea corecta impiedica greselile de introducere si face ca sortarile si calculele sa functioneze corect. Cele cinci tipuri de baza, cele mai des folosite:
Text scurt

Pentru siruri de caractere scurte: nume, coduri, adrese, numere de telefon (telefonul e Text scurt, nu Numar, pentru ca nu faci calcule cu el si poate incepe cu 0). Lungime maxima implicita: 255 de caractere.

Numar (Number)

Pentru valori numerice cu care se fac calcule sau comparatii: cantitati, stocuri, varste. Nu se foloseste pentru sume de bani (pentru acelea exista Moneda) si nu pentru telefoane sau coduri postale (acelea sunt Text scurt).

Data/Ora

Pentru date calendaristice si/sau ore: data comenzii, data livrarii. Access stie sa sorteze corect datele cronologic si sa calculeze diferente intre ele (de exemplu cate zile au trecut de la comanda).

Da/Nu (Yes/No)

Pentru valori care au doar doua stari posibile: livrat sau nelivrat, platit sau neplatit, activ sau inactiv. Se afiseaza de obicei ca o casuta de bifat (checkbox).

Moneda (Currency)

Pentru sume de bani: preturi, valori de deviz, incasari. Spre deosebire de Numar, pastreaza exact zecimalele (nu rotunjeste in calcule) si poate afisa automat simbolul monetar (de exemplu "lei").

Greseala tipica si cum o recunosti

Cea mai frecventa greseala a incepatorilor: alegerea tipului Numar pentru un camp de telefon sau cod postal. Rezultatul: numerele care incep cu 0 (ex. 0745123456) isi pierd 0-ul de la inceput, pentru ca Access le trateaza ca valori numerice, iar 0745123456 devine 745123456. Recunosti greseala cand vezi ca un telefon salvat are mai putine cifre decat cel introdus. Rezolvarea: schimbi tipul campului in Text scurt.

4

Crearea unui tabel in Vizualizarea Proiect

Un tabel nou in Access poate fi creat in doua feluri: rapid, in Vizualizare Foaie de date (Datasheet View, unde scrii direct date si Access ghiceste tipul), sau controlat, in Vizualizare Proiect (Design View), unde tu alegi explicit numele si tipul fiecarui camp inainte de a introduce vreo inregistrare. Pentru un tabel folosit serios intr-o firma, Vizualizarea Proiect este alegerea corecta, pentru ca elimina ghicelile de tip de date.
Pasii concreti — creezi tabelul "Materiale" in Vizualizare Proiect

1. Deschizi Access. In ecranul de start alegi Blank database (Baza de date necompletata), scrii un nume pentru fisier (de exemplu Atelier.accdb), apesi pictograma de dosar de langa nume ca sa alegi folderul unde il salvezi, apoi apesi Create (Creare). Daca ai deja o baza de date, o deschizi normal, cu File → Open.
2. Imediat dupa Create, Access deschide automat un tabel gol numit Table1, in Vizualizare Foaie de date. Nu il folosi — il lasi deoparte (clic-dreapta pe fila lui, sus, apoi Close) si il vei recrea corect, cu nume si campuri alese de tine, la pasii urmatori.
3. In panglica (ribbon), din fila Create (Creare), apesi butonul Table Design (Proiect tabel). Se deschide o grila goala cu trei coloane: "Field Name" (Nume camp), "Data Type" (Tip date) si "Description" (Descriere — optionala, o poti lasa goala).
4. Pe primul rand al grilei, scrii numele primului camp, de exemplu CodMaterial, apoi in coloana Data Type alegi tipul din lista derulanta — pentru un cod, Short Text (Text scurt).
5. Repeti pentru fiecare camp: DenumireMaterial (Text scurt), UnitateMasura (Text scurt), StocCurent (Number/Numar), PretUnitar (Currency/Moneda), DataUltimeiIntrari (Date/Time), Activ (Yes/No).
6. Cand ai adaugat toate campurile, apesi Ctrl+S (Salveaza). Access iti cere un nume pentru tabel — scrii Materiale si apesi OK.
7. Daca nu ai desemnat inca o cheie primara, Access afiseaza o caseta care intreaba daca vrea sa creeze automat un camp de cheie primara. Raspunzi Da (Yes) — despre ce este cheia primara si de ce e importanta veti invata in lectia urmatoare.
8. Pentru a trece la introducerea datelor, apesi clic-dreapta pe fila tabelului (in partea de sus) si alegi Datasheet View (Vizualizare Foaie de date), sau butonul View din stanga panglicii.

Exemplu numeric complet — tabelul "Materiale" gata definit

Structura definita in Vizualizare Proiect:
CodMaterial — Short Text
DenumireMaterial — Short Text
UnitateMasura — Short Text
StocCurent — Number
PretUnitar — Currency
DataUltimeiIntrari — Date/Time
Activ — Yes/No

Prima inregistrare introdusa in Vizualizare Foaie de date, refacuta pas cu pas: cod PSAL-04, denumire Placa PAL melaminat 18mm, unitate buc, stoc 45, pret 24,50 (Access il afiseaza automat ca 24,50 lei), data 15.01.2026, activ bifat. Daca la StocCurent ai fi ales din greseala tipul Text scurt, valoarea "45" ar fi acceptata la fel ca "45buc" — Access nu ar semnala nicio eroare, dar mai tarziu o suma sau o sortare numerica pe acea coloana ar da rezultate gresite.

5

Greseala tipica: tipul de date gresit strica sortarea si calculele

Access nu blocheaza intotdeauna o alegere gresita de tip de date la momentul crearii tabelului — problema apare mai tarziu, cand sortezi, cauti sau calculezi cu acele date, iar rezultatul e strambat fara mesaj de eroare vizibil. De aceea gandirea corecta a tipurilor de date, inainte de a introduce vreo inregistrare, economiseste ore de corectat date gresite mai tarziu.
Cum recunosti greseala

Simptom 1: o coloana de numere sortata "crescator" nu iese in ordine normala (de exemplu 100 apare inaintea lui 20) — semn ca tipul campului e Text scurt, nu Number: textele se sorteaza caracter cu caracter ("100" incepe cu "1", inaintea lui "20" care incepe cu "2").
Simptom 2: un numar de telefon salvat are mai putine cifre decat cel scris (0745123456 devine 745123456) — semn ca tipul campului e Number in loc de Text scurt: Number nu pastreaza zerourile de la inceput.
Simptom 3: o data calendaristica nu se sorteaza cronologic — semn ca tipul campului e Text scurt in loc de Date/Time.

Cum se repara

In Vizualizare Proiect, dai clic pe randul campului gresit si schimbi valoarea din coloana Data Type in tipul corect, apoi salvezi (Ctrl+S). Access poate afisa un avertisment ca unele date existente ar putea sa nu se converteasca perfect (de exemplu daca ai avut litere intr-un camp pe care il transformi in Number) — de aceea e mult mai bine sa alegi tipul corect de la inceput, in Vizualizarea Proiect, inainte de a introduce date, decat sa corectezi dupa.

6

Recapitulare si conexiuni

O baza de date relationala imparte informatia pe subiecte, in tabele separate, ca sa nu se mai repete si sa nu se mai contrazica singura. Fiecare tabel are inregistrari (randuri) si campuri (coloane), iar fiecare camp are un tip de date ales in Vizualizarea Proiect, inainte de introducerea datelor.
Rezumat vizual al relatiilor

Problema (date repetate si contradictorii intr-o singura foaie de calcul)
  ↓ rezolvata prin
Baza de date relationala — subiecte separate in tabele diferite
  ↓ fiecare tabel are
Inregistrari (randuri) si Campuri (coloane)
  ↓ fiecare camp are
Tip de date — Text scurt, Numar, Data/Ora, Da/Nu, Moneda — ales in Vizualizare Proiect

Conexiune cu urmatoarea lectie

Astazi ati creat un singur tabel independent. In lectia urmatoare veti invata cum se leaga doua tabele intre ele (de exemplu Clienti si Comenzi) printr-o cheie primara si o cheie externa, astfel incat sa evitati exact problema din provocarea de la inceput — clientul scris de mai multe ori, in mai multe feluri.

De retinut pentru activitatile practice

Tabel = subiect unic; Inregistrare = rand; Camp = coloana.
Text scurt — nume, coduri, telefoane (nu faci calcule cu telefonul).
Number — cantitati si valori de calculat (nu bani).
Currency — bani, cu zecimale exacte.
Date/Time — sortare si calcule cronologice corecte.
Yes/No — doar doua stari posibile.
Vizualizare Proiect (Design View) = unde definesti structura, INAINTE de a introduce date.

Exercitii practice

Exercitiul 1 (Nivel minim) — Alege tipul de date corect

Pentru un tabel Clienti al unui atelier de tamplarie, alege tipul de date potrivit (Text scurt, Numar, Data/Ora, Da/Nu sau Moneda) pentru fiecare din urmatoarele campuri, si justifica intr-o propozitie fiecare alegere: NumeClient, Telefon, DataInregistrarii, ValoareTotalaComenzi, EstePersoanaJuridica.

Vezi rezolvarea

Rezolvare:

  1. NumeClient — Text scurt: e un sir de caractere, nu se fac calcule cu el.
  2. Telefon — Text scurt: poate incepe cu 0 si nu se aduna/inmulteste niciodata, deci nu e Numar.
  3. DataInregistrarii — Data/Ora: e o data calendaristica, trebuie sa se sorteze cronologic si sa se poata calcula diferente de zile.
  4. ValoareTotalaComenzi — Moneda: e o suma de bani, pastreaza corect zecimalele si simbolul monetar.
  5. EstePersoanaJuridica — Da/Nu: are doar doua stari posibile (persoana fizica sau juridica).

Exercitiul 2 (Nivel standard) — Identifica problema si tabelul, inregistrarea, campul

Un atelier de mecanica auto tine intr-o singura foaie Excel toate reparatiile, cu coloanele: NumeClient, Telefon, MasinaModel, DataReparatie, DescriereReparatie, Cost. Dupa un an, foaia are 800 de randuri, iar acelasi client "Ionescu Mihai" apare scris in 3 feluri diferite. a) Explica, folosind termenii din lectie, de ce apare aceasta problema. b) Propune cel putin doua tabele separate (cu numele campurilor pentru fiecare) care ar rezolva problema, fara sa mai repete numele si telefonul clientului la fiecare reparatie.

Vezi rezolvarea

a) Problema este redundanta: NumeClient si Telefon se repeta pe fiecare din cele 800 de randuri de reparatie, in loc sa fie scrise o singura data. Din cauza asta apare inconsistenta (contradictia): acelasi client ajunge scris in 3 feluri diferite, iar Access il vede ca 3 clienti diferiti, nu unul singur.

b) Doua tabele separate:

  1. Clienti: id_client, NumeClient, Telefon — fiecare client scris o singura data.
  2. Reparatii: id_reparatie, id_client, MasinaModel, DataReparatie, DescriereReparatie, Cost — id_client leaga fiecare reparatie de clientul ei, fara sa mai repete numele si telefonul. Legatura exacta intre cele doua tabele (cheie primara/cheie externa) se invata in lectia urmatoare.

Exercitiul 3 (Nivel performanta) — Proiecteaza tabelul in Vizualizare Proiect

Esti angajat la o firma de instalatii electrice si primesti sarcina sa creezi in Access tabelul Comenzi, cu urmatoarele informatii pe fiecare comanda: numar comanda, numele clientului, data comenzii, descrierea lucrarii, valoarea comenzii in lei, si daca a fost sau nu platita. a) Scrie lista completa de campuri cu numele si tipul de date ales pentru fiecare, exact cum le-ai introduce in Vizualizare Proiect. b) Explica pentru campul "numar comanda" de ce ai ales Text scurt sau Numar, argumentand cu un exemplu concret (de exemplu daca numarul de comanda poate incepe cu 0 sau contine litere).

Vezi rezolvarea

Schita de rezolvare (nu solutia completa — proiecteaza singur detaliile):

  1. NumarComanda — decide intai daca poate contine litere sau incepe cu 0; daca da, Text scurt; daca e strict numeric si fara zerouri semnificative, Numar (sau AutoNumber daca vrei ca Access sa il genereze singur).
  2. NumeClient — Text scurt.
  3. DataComenzii — Data/Ora.
  4. DescriereaLucrarii — aici lectia preda doar Text scurt (max. 255 caractere); daca descrierea poate fi lunga, tipul potrivit ar fi Text lung (Long Text/Memo), care NU a fost predat in aceasta lectie — semnaleaza asta explicit in tema ta.
  5. ValoareaComenzii — Moneda.
  6. DacaAFostPlatita — Da/Nu.

Criterii de evaluare: fiecare camp are un tip justificat cu un exemplu concret, iar argumentul pentru NumarComanda arata clar de ce ai ales Text scurt sau Numar.

Ce ai invatat astazi

  • O foaie de calcul cu o singura lista repeta date si produce contradictii (acelasi client scris diferit)
  • Baza de date relationala imparte informatia pe subiecte, in tabele separate, legate intre ele
  • Tabel = subiect unic; Inregistrare = rand; Camp = coloana
  • Tipuri de date Access: Text scurt (nume, coduri, telefoane), Numar (cantitati, calcule), Data/Ora (date calendaristice), Da/Nu (doua stari), Moneda (sume de bani)
  • Tabelul se creeaza in fila Create → Table Design (Vizualizare Proiect), unde alegi numele si tipul fiecarui camp
  • Greseala tipica: tip de date gresit (ex. Numar pentru telefon) strica sortarea si pierde zerourile initiale
  • Introducerea datelor se face dupa aceea, in Vizualizare Foaie de date (Datasheet View)

Vrei mai mult?

Provocare: Deschide Access si creeaza in Vizualizare Proiect un tabel Elevi cu campurile: CNP (Text scurt, 13 caractere), Nume (Text scurt), DataNasterii (Data/Ora), MediaGenerala (Numar, zecimale). Introdu 5 inregistrari, apoi incearca sa scrii la un CNP doar 12 cifre — vezi ce se intampla daca ai pus o Lungime de camp la exact 13. Observa si ce se intampla daca alegi din greseala Numar pentru CNP si introduci un CNP care incepe cu 0.

  • De ce crezi: Access iti lasa campul MediaGenerala sa fie Numar cu zecimale, dar refuza (sau rotunjeste ciudat) daca incerci sa pastrezi mai mult de o anumita precizie. De ce tipul de date dintr-o baza de date e mai strict decat o celula Excel, unde poti scrie orice in orice celula?
  • Deschidere: Alegerea tipului de date nu e doar teorie de ora — orice sistem real (catalogul electronic al scolii, aplicatia unei banci, un magazin online) refuza sau corecteaza automat o valoare care nu se potriveste tipului declarat al coloanei. Un CNP stocat gresit ca Numar pierde zerourile si devine inutilizabil la o verificare oficiala — exact genul de bug care ajunge in productie daca nimeni nu verifica tipurile de la inceput.

Urmatoarea lectie

Continua cu Chei primare si relatii intre tabele — cum legi doua tabele (de exemplu Clienti si Comenzi) astfel incat fiecare informatie sa existe o singura data.

Continua →