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).
| 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) |
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
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.
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
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.
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 |
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 |
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 |
Cum poti face proiectul si mai bun
Baza de date pe care ai construit-o poate fi extinsa cu:
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!
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!
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.