Invatare Atomica

Vreau sa construiesc un catalog digital complet!

Progres lectie:
0%
🎯

Obiectivul lectiei

In aceasta lectie construiesti de la zero o baza de date functionala in Access - "Catalogul Clasei" - aplicand tot ce ai invatat in Lectiile 1-5.

Dupa aceasta lectie vei putea:

  • Sa explici tabele si campuri (lectia 2)
  • Sa explici ce este si de ce conteaza
  • Sa aplici cheie straina si relatia intre tabele
  • Sa aplici cele 3 interogari din proiect
  • Sa aplici interogarea cu media (avg) - pas cu pas

Incearca singur!

🔧 CONSTRUIESTE

Construieste Catalogul Clasei pas cu pas

Urmeaza fiecare pas in ordine. La final, vei avea un catalog digital complet si functional!

1
Creeaza baza de date
Fisierul care va contine totul
a
Deschide Microsoft Access. Apasa File → New → Blank database.
b
Denumeste fisierul CatalogulClasei.accdb si alege un folder unde sa-l salvezi (de ex. Desktop sau Documente).
c
Apasa Create. Access va deschide automat o tabela goala numita "Table1". O vom sterge si vom crea tabelele noastre.
2
Creeaza tabela "Elevi"
Datele personale ale elevilor
a
Du-te la Create → Table Design. Se deschide editorul de structura.
b
Adauga campurile urmatoare, exact in aceasta ordine:
Nume camp Tip date (Data Type) Rol
ID_Elev AutoNumber Cheie primara - se completeaza automat
Nume Short Text Numele de familie al elevului
Prenume Short Text Prenumele elevului
DataNasterii Date/Time Data nasterii
Clasa Short Text Clasa (ex: "8A", "8B")
c
Click dreapta pe campul ID_ElevPrimary Key. Vei vedea o cheita aparand langa camp.
d
Salveaza tabela: Ctrl+S → Scrie numele Elevi → OK.
3
Creeaza tabela "Note"
Notele elevilor la fiecare materie
a
Din nou: Create → Table Design.
b
Adauga aceste campuri:
Nume camp Tip date (Data Type) Rol
ID_Nota AutoNumber Cheie primara - se completeaza automat
ID_Elev Number Legatura catre tabela Elevi (cheie straina)
Materia Short Text Numele materiei (ex: "Matematica")
Nota Number Nota primita (1-10)
DataNotei Date/Time Cand a fost pusa nota
c
Seteaza ID_Nota ca Primary Key (click dreapta → Primary Key).
d
Salveaza tabela cu numele Note.
💡 Ce este ID_Elev in tabela Note?

Campul ID_Elev din tabela Note este o cheie straina (foreign key). El face legatura intre o nota si elevul care a primit-o. Daca un elev are ID_Elev = 3 in tabela Elevi, atunci toate notele sale vor avea ID_Elev = 3 in tabela Note. Asa stie Access "aceasta nota apartine acelui elev".

4
Introdu date in tabele
Minim 10 inregistrari in fiecare tabela
a
Dublu-click pe tabela Elevi in panoul din stanga pentru a o deschide in modul Datasheet View.
b
Introdu minim 10 elevi. Campul ID_Elev se completeaza automat! Foloseste datele de mai jos ca exemplu:
🗃 Tabela Elevi - Date exemplu
ID_Elev Nume Prenume DataNasterii Clasa
1 Popescu Andrei 15/03/2012 8A
2 Ionescu Maria 22/07/2012 8A
3 Georgescu Alexandru 01/11/2011 8A
4 Dumitrescu Elena 30/05/2012 8B
5 Stanescu Ion 14/09/2012 8A
6 Marinescu Ana 08/01/2012 8B
7 Constantinescu Mihai 19/04/2012 8A
8 Radu Cristina 25/12/2011 8B
9 Popa Stefan 11/06/2012 8A
10 Voicu Diana 03/02/2012 8B
c
Acum deschide tabela Note si introdu minim 10 note. Atentie: ID_Elev trebuie sa fie un numar care exista in tabela Elevi!
🗃 Tabela Note - Date exemplu
ID_Nota ID_Elev Materia Nota DataNotei
1 1 Matematica 9 10/09/2025
2 1 Romana 8 12/09/2025
3 2 Matematica 10 10/09/2025
4 2 Istorie 7 15/09/2025
5 3 Matematica 6 10/09/2025
6 3 Romana 9 12/09/2025
7 4 Matematica 10 10/09/2025
8 5 Matematica 5 10/09/2025
9 5 Romana 7 12/09/2025
10 6 Matematica 8 10/09/2025
11 7 Romana 9 12/09/2025
12 8 Matematica 7 10/09/2025
💡 Sfat

Observa ca un elev poate avea mai multe note (Popescu Andrei are note la Matematica SI la Romana). De aceea avem doua tabele separate: una pentru elevi, alta pentru note. Fiecare nota "arata" catre elevul ei prin ID_Elev.

5
Creeaza interogarile
3 interogari care extrag informatii utile
🔍 Interogare 1: Toti elevii in ordine alfabetica
a
Create → Query Design. Adauga tabela Elevi si inchide fereastra "Show Table".
b
Dublu-click pe campurile: Nume, Prenume, Clasa pentru a le adauga in grila de interogare.
c
La campul Nume, in randul Sort, alege Ascending (A → Z).
d
Apasa Run (butonul !) pentru a vedea rezultatul. Salveaza interogarea ca Elevi_Alfabetic.
SELECT Nume, Prenume, Clasa FROM Elevi ORDER BY Nume ASC;
🔍 Interogare 2: Elevii cu media peste 8
a
Create → Query Design. Adauga ambele tabele: Elevi si Note.
b
Adauga campurile: Nume (din Elevi), Prenume (din Elevi), Nota (din Note).
c
In meniul Design, apasa pe Totals (sigma Σ). Apare un rand nou "Total" in grila.
d
Seteaza: Nume → Group By, Prenume → Group By, Nota → Avg (media).
e
La campul Nota, in randul Criteria, scrie: >8
f
Ruleaza si salveaza ca Elevi_Media_Peste_8.
SELECT Elevi.Nume, Elevi.Prenume, Avg(Note.Nota) AS MediaNota FROM Elevi INNER JOIN Note ON Elevi.ID_Elev = Note.ID_Elev GROUP BY Elevi.Nume, Elevi.Prenume HAVING Avg(Note.Nota) > 8;
🔍 Interogare 3: Toate notele unui elev specific
a
Create → Query Design. Adauga tabelele Elevi si Note.
b
Adauga campurile: Nume, Prenume, Materia, Nota, DataNotei.
c
La campul Nume, in randul Criteria, scrie: "Popescu" (cu ghilimele!).
d
Ruleaza si salveaza ca Note_Elev_Specific. Vei vedea doar notele lui Popescu Andrei.
SELECT Elevi.Nume, Elevi.Prenume, Note.Materia, Note.Nota, Note.DataNotei FROM Elevi INNER JOIN Note ON Elevi.ID_Elev = Note.ID_Elev WHERE Elevi.Nume = "Popescu";
6
Aplica un filtru
Doar notele la Matematica, sortate descrescator
a
Deschide tabela Note in Datasheet View (dublu-click pe ea).
b
Click pe sageata de filtru (▼) de langa titlul coloanei Materia. Debifaeaza tot, apoi bifeaza doar Matematica. Apasa OK.
c
Acum click dreapta pe coloana NotaSort Largest to Smallest (descrescator). Vei vedea notele la Matematica de la cea mai mare la cea mai mica.
d
Pentru a elimina filtrul, apasa butonul Toggle Filter din meniul Home (sau Ctrl+Shift+F).
☑ Lista de verificare - Proiect complet
  • Fisierul CatalogulClasei.accdb a fost creat
  • Tabela "Elevi" cu 5 campuri si minim 10 inregistrari
  • Tabela "Note" cu 5 campuri si minim 10 inregistrari
  • Interogare 1: Elevi in ordine alfabetica
  • Interogare 2: Elevii cu media peste 8
  • Interogare 3: Notele unui elev specific
  • Filtru aplicat: doar Matematica, sortate descrescator
Probleme la Query 2 (medie)? Click aici

Daca Access nu leaga automat tabelele, trebuie sa creezi legatura manual: trage campul ID_Elev din tabela Elevi peste campul ID_Elev din tabela Note. Va aparea o linie intre ele.

Daca nu apare butonul Totals (Σ), cauta-l in meniul Design, sectiunea Show/Hide.

La Criteria, scrie exact >8 (mai mare decat 8). Nu pune ghilimele la numere!

Campul ID_Elev nu se completeaza automat in tabela Note? Click aici

Este normal! In tabela Note, campul ID_Elev este de tip Number, nu AutoNumber. Trebuie sa il completezi manual cu numarul elevului din tabela Elevi.

Exemplu: Daca Popescu Andrei are ID_Elev = 1 in tabela Elevi, atunci cand adaugi o nota pentru el in tabela Note, scrii 1 la campul ID_Elev.

1

Tabele si campuri (Lectia 2)

Tabele si campuri (Lectia 2)

O tabela este componenta fundamentala a oricarei baze de date. Ea stocheaza date despre un singur tip de entitate (elevi, note, produse, etc.).

Fiecare coloana din tabela se numeste camp (field) si are un tip de date specific: text, numar, data, autonumerotare.

Fiecare rand din tabela se numeste inregistrare (record) si reprezinta o entitate individuala (un elev, o nota).

Structura tabelei "Elevi" - Anatomia unei tabele
Camp Tip Date Exemplu Valoare De ce acest tip?
ID_Elev AutoNumber 1, 2, 3... Unic, automat - identificator perfect
Nume Short Text Popescu Text scurt - sub 255 caractere
Prenume Short Text Andrei Text scurt - sub 255 caractere
DataNasterii Date/Time 15/03/2012 Permite calcule cu date (varsta, etc.)
Clasa Short Text 8A Text, nu numar (contine si litera)
2

Ce este si de ce conteaza

Ce este si de ce conteaza

Cheia primara (Primary Key, prescurtat PK) este un camp care identifica unic fiecare inregistrare din tabela. Nu pot exista doua randuri cu aceeasi valoare a cheii primare.

In proiectul nostru:

  • ID_Elev este PK in tabela Elevi - fiecare elev are un numar unic
  • ID_Nota este PK in tabela Note - fiecare nota are un numar unic
🎓 Analogie: CNP-ul

Cheia primara este ca si CNP-ul (Codul Numeric Personal). Fiecare persoana din Romania are un CNP unic. Daca doua persoane se numesc "Ion Popescu", le deosebesti dupa CNP. La fel, cheia primara deosebeste inregistrarile chiar daca au date similare.

3

Cheie straina si relatia intre tabele

Cheie straina si relatia intre tabele

Cand un camp dintr-o tabela "arata" catre cheia primara a altei tabele, ii spunem cheie straina (Foreign Key, prescurtat FK).

In proiectul nostru, ID_Elev din tabela Note este o cheie straina care face legatura cu ID_Elev din tabela Elevi. Asa stie Access ca nota "Matematica 9" apartine lui "Popescu Andrei".

Relationship Diagram

🗃 Elevi
🔑 ID_Elev (PK)
Nume
Prenume
DataNasterii
Clasa
← 1 : N →
🗃 Note
🔑 ID_Nota (PK)
🔗 ID_Elev (FK)
Materia
Nota
DataNotei
💡 Ce inseamna "1 : N" (unu la multi)?

Un elev poate avea mai multe note (la diferite materii). Dar fiecare nota apartine unui singur elev. Aceasta relatie se numeste "unu la multi" (one-to-many) si este cel mai frecvent tip de relatie in bazele de date.

4

Cele 3 interogari din proiect

Cele 3 interogari din proiect

O interogare (query) pune o intrebare bazei de date si obtine un raspuns. In proiectul nostru am creat 3 interogari care demonstreaza diferite tehnici:

Interogare Tehnica folosita Concept din lectie
Elevi_Alfabetic ORDER BY (sortare) L5: Sortare Ascending
Elevi_Media_Peste_8 GROUP BY + AVG + HAVING L4: Functii de agregare + Criterii
Note_Elev_Specific WHERE (filtrare) L4: Criterii de selectie + L5: Filtrare
5

Interogarea cu media (Avg) - pas cu pas

Interogarea cu media (Avg) - pas cu pas

Cea mai complexa interogare din proiect calculeaza media notelor. Sa intelegem ce face fiecare parte:

Componenta Ce face Exemplu
SELECT Nume, Prenume Alege coloanele de afisat Popescu, Andrei
Avg(Nota) Calculeaza media aritmetica (9+8)/2 = 8.5
INNER JOIN ... ON Leaga tabelele prin ID_Elev Elevi.ID_Elev = Note.ID_Elev
GROUP BY Grupeaza notele pe elev Toate notele lui Popescu impreuna
HAVING Avg > 8 Filtreaza dupa medie 8.5 > 8 → DA, se afiseaza
6

Diferenta dintre sortare si filtrare

Diferenta dintre sortare si filtrare

Sortarea schimba ordinea in care vezi datele, dar le pastreaza pe toate. Ca si cum ai rearanja cartile dintr-un sertar dupa marime.

Filtrarea ascunde datele care nu corespund criteriului. Ca si cum ai scoate din sertar doar cartile rosii si le-ai pune pe masa.

Actiune Ce face In proiect
Sortare Ascending Ordoneaza A → Z sau 1 → 9 Elevii in ordine alfabetica
Sortare Descending Ordoneaza Z → A sau 9 → 1 Notele de la cea mai mare
Filtrare Afiseaza doar randurile care indeplinesc o conditie Doar notele la "Matematica"
Combinare Filtrare + Sortare impreuna Doar Matematica, sortate descrescator
7

Cum poti face proiectul si mai bun

Cum poti face proiectul si mai bun

Baza de date pe care ai construit-o poate fi extinsa cu:

💡 Tabela "Absente"

Campuri: ID_Absenta (AutoNumber, PK), ID_Elev (Number, FK), DataAbsenta (Date), Motivata (Yes/No). Apoi poti face o interogare care numara absentele nemotivate ale fiecarui elev!

💡 Rapoarte (Reports)

Access poate genera rapoarte printabile bazate pe interogari. Imaginati-va un raport "Situatia scolara" cu numele elevului, media la fiecare materie si numarul de absente - totul formatat frumos pentru print!

💡 Formulare (Forms)

In loc sa introduci datele direct in tabela, poti crea un formular cu campuri frumos aranjate, etichete clare si butoane. E ca diferenta intre a scrie intr-un Excel vs. a completa un formular web.

Exercitii practice

Exercitiul 1 (Nivel minim) - Adauga tabela "Absente"

Cerinta: Extinde baza de date CatalogulClasei cu o noua tabela pentru inregistrarea absentelor.

  1. Creeaza tabela Absente cu campurile: ID_Absenta (AutoNumber, PK), ID_Elev (Number, FK), DataAbsenta (Date/Time), Motivata (Yes/No)
  2. Introdu minim 8 absente pentru diferiti elevi (unele motivate, altele nemotivate)
  3. Creeaza o interogare care afiseaza numele elevilor si numarul total de absente nemotivate (foloseste COUNT si WHERE Motivata = False)
  4. Cum se leaga aceasta tabela de tabela Elevi? Deseneaza diagrama pe hartie.

Indicii:

  • Campul Motivata de tip Yes/No apare ca o casuta de bifat in Datasheet View
  • In Criteria pentru filtrarea dupa Motivata, scrie False (fara ghilimele)
  • Foloseste COUNT(ID_Absenta) si GROUP BY Nume in interogare

Salveaza baza de date dupa ce adaugi tabela si interogarea.

Exercitiul 2 (Nivel standard) - Creeaza un raport

Cerinta: Genereaza un raport printabil "Situatia Scolara" bazat pe datele din proiect.

  1. Du-te la Create → Report Wizard
  2. Selecteaza interogarea Elevi_Media_Peste_8 ca sursa de date
  3. Adauga campurile Nume, Prenume si media notelor
  4. Alege un layout (Tabular sau Columnar) si un stil
  5. Salveaza raportul si deschide-l in Print Preview. Cum arata?

Indicii:

  • Report Wizard te ghideaza pas cu pas - nu trebuie sa stii totul dinainte
  • Poti modifica raportul dupa generare in Design View (culori, fonturi, titlu)
  • Raportul se bazeaza pe o interogare existenta - nu trebuie sa rescrii datele

Exercitiul 3 (Nivel performanta) - Proiecteaza o baza de date pentru o biblioteca

Cerinta: Gandeste-te cum ai proiecta o baza de date pentru biblioteca scolii. Raspunde la urmatoarele intrebari:

  1. Ce tabele ai crea? (minim 2 tabele) Ce campuri ar avea fiecare tabela?
  2. Care ar fi cheia primara in fiecare tabela?
  3. Cum ar fi legate tabelele intre ele? (ce camp ar fi cheie straina?)
  4. Scrie 3 interogari utile pe care le-ai crea (in cuvinte, nu SQL). Exemplu: "Toate cartile imprumutate de elevul X"
  5. Ce filtre ar fi utile? Exemplu: "Doar cartile nerreturnate"

Indicii:

  • Gandeste-te la: Carti (titlu, autor, gen, an), Imprumuturi (cine, ce carte, cand, returnat?)
  • Relatia Carti-Imprumuturi este similara cu Elevi-Note: o carte poate fi imprumutata de mai multe ori
  • Ai putea avea si o tabela Elevi (reutilizata din catalogul clasei!)

Cuvinte cheie de folosit: tabela, camp, cheie primara, cheie straina, relatie 1:N, interogare, filtrare, sortare, tip de date

Ce ai invatat astazi

  • Ai invatat tabele si campuri (lectia 2)
  • Acum stii ce este si de ce conteaza
  • Ai descoperit cheie straina si relatia intre tabele
  • Ai explorat cele 3 interogari din proiect
  • Ai inteles interogarea cu media (avg) - pas cu pas
  • Ai invatat diferenta dintre sortare si filtrare
  • Acum stii cum poti face proiectul si mai bun

Urmatoarea lectie

Continua cu lectia urmatoare pentru a aprofunda cunostintele.

Continua →