Ce este o baza de date
O baza de date este o colectie organizata de date stocate electronic, care permite accesul rapid, modificarea si gestionarea informatiilor. Gandeste-te la ea ca la un dulap cu sertare etichetate: fiecare sertar contine un tip specific de informatie, iar etichetele te ajuta sa gasesti rapid ce cauti. Spre deosebire de un simplu fisier text sau un tabel Excel, o baza de date este proiectata sa gestioneze cantitati mari de date si sa permita mai multor utilizatori sa lucreze simultan cu aceleasi informatii.
Componentele principale ale unei baze de date relationale:
- Tabel (Table) : structura fundamentala care stocheaza datele, organizata in randuri si coloane, similar unui tabel Excel. Fiecare tabel reprezinta o entitate specifica (de exemplu: Elevi, Profesori, Materii).
- Camp (Field / Coloana) : un atribut al datelor, care defineste ce tip de informatie se stocheaza in acea coloana. Exemple: Nume, Varsta, Email, Adresa.
- Inregistrare (Record / Rand) : un set complet de date pentru o singura entitate. De exemplu, un rand in tabelul Elevi contine toate informatiile despre un singur elev.
Cheia primara (Primary Key) este un element esential al oricarui tabel. Aceasta este un camp (sau un grup de campuri) care identifica in mod unic fiecare inregistrare din tabel. Cheia primara nu poate avea valori duplicate si nici valori nule (NULL). Exemple frecvente de chei primare sunt: ID_Elev (un numar unic generat automat), CNP (Codul Numeric Personal, unic pentru fiecare persoana) sau Numar_Matricol.
De ce avem nevoie de chei primare? Imagineaza-ti un tabel cu 500 de elevi. Doi elevi se pot numi "Ion Popescu". Fara o cheie primara, nu am putea distinge intre cei doi. Dar daca fiecare are un ID unic (de exemplu, ID_Elev = 101 si ID_Elev = 102), ii putem identifica fara ambiguitate.
Sisteme de gestiune a bazelor de date (SGBD): Microsoft Access (folosit in scoala), MySQL (cel mai popular pentru site-uri web), SQLite (usor, pentru aplicatii mobile), PostgreSQL (avansat, pentru proiecte mari). Toate aceste sisteme folosesc limbajul SQL pentru interogari, deci ce inveti la Access se aplica si la celelalte.
Tipuri de date in tabele
Fiecare camp dintr-un tabel are un tip de date specific care determina ce fel de valori pot fi stocate in acel camp. Alegerea corecta a tipului de date este esentiala: daca alegi un tip gresit, baza de date nu va functiona corect. De exemplu, daca stochezi varsta ca text in loc de numar, nu vei putea calcula media varstelor.
Tipurile de date cele mai folosite:
- Text (VARCHAR, CHAR) - pentru siruri de caractere: nume, adrese, descrieri. VARCHAR permite texte de lungime variabila (de exemplu, VARCHAR(50) accepta maxim 50 de caractere), iar CHAR are lungime fixa. Exemple: "Ion Popescu", "Strada Victoriei nr. 10", "ion@email.ro".
- Numar intreg (INTEGER, INT) - pentru numere fara zecimale: varsta, cantitate, ID-uri, numar de elevi. Exemple: 14, 100, -5, 0. Acest tip este ideal pentru date care nu vor avea niciodata parte fractionara.
- Numar real (FLOAT, DECIMAL) - pentru numere cu zecimale: preturi, medii, note cu zecimale, coordonate GPS. Exemple: 9.75, 123.50, 3.14159. DECIMAL este mai precis decat FLOAT si este recomandat pentru valori financiare.
- Data/Ora (DATE, DATETIME) - pentru date calendaristice si timp. DATE stocheaza doar data (ex: 2026-01-20), iar DATETIME include si ora (ex: 2026-01-20 14:30:00). Formatul standard este an-luna-zi.
- Boolean (BOOL) - pentru valori logice Da/Nu (True/False). Exemple de utilizare: "Este activ?" (da/nu), "A platit taxa?" (da/nu).
O greseala frecventa este stocarea numerelor de telefon ca tip numeric. Numarul de telefon "0721123456" incepe cu zero - daca il stochezi ca INT, zero-ul dispare si devine 721123456. De aceea, numerele de telefon, codurile postale si CNP-ul trebuie stocate ca TEXT, chiar daca par a fi numere.
In Microsoft Access, tipurile de date au denumiri usor diferite: Short Text (text scurt), Long Text (text lung), Number (numar), Date/Time (data/ora), Currency (valuta), AutoNumber (numar automat pentru chei primare) si Yes/No (da/nu, echivalentul Boolean).
Proiectarea tabelelor
Inainte de a crea o baza de date, trebuie sa o proiectezi cu atentie. Proiectarea inseamna sa decizi ce tabele ai nevoie, ce campuri contine fiecare tabel, ce tipuri de date folosesti si cum se leaga tabelele intre ele. O proiectare buna face baza de date eficienta si usor de intretinut; o proiectare slaba duce la date duplicate, inconsistente si greu de interogat.
Pasii proiectarii:
- Pasul 1: Identifica entitatile (lucrurile despre care vrei sa stochezi date). Exemple: Elevi, Profesori, Materii, Note.
- Pasul 2: Pentru fiecare entitate, decide ce atribute (campuri) are. De exemplu, un elev are: ID, Nume, Prenume, Data_Nasterii, Clasa, Email.
- Pasul 3: Alege tipul de date potrivit pentru fiecare camp (vezi atomul anterior).
- Pasul 4: Stabileste cheia primara pentru fiecare tabel.
- Pasul 5: Identifica relatiile intre tabele si adauga cheile straine.
Proprietatile campurilor sunt setari suplimentare care controleaza ce valori sunt acceptate. Cele mai importante proprietati sunt:
- NOT NULL (Required) - campul nu poate fi lasat gol. De exemplu, Numele elevului este obligatoriu.
- UNIQUE - valoarea trebuie sa fie unica in tot tabelul. De exemplu, adresa de email nu trebuie sa se repete.
- DEFAULT - valoarea implicita daca nu se specifica nimic. De exemplu, Tara = "Romania" ca valoare implicita.
- CHECK - o conditie pe care valoarea trebuie sa o respecte. De exemplu, Varsta > 0 sau Nota BETWEEN 1 AND 10.
Un exemplu concret de proiectare: pentru o baza de date a unei scoli, ai nevoie de cel putin trei tabele: Elevi (ID_Elev, Nume, Prenume, Data_Nasterii, ID_Clasa), Clase (ID_Clasa, Nume_Clasa, An_Studiu, ID_Diriginte), Profesori (ID_Profesor, Nume, Prenume, Specialitate). Observa cum ID_Clasa apare in ambele tabele Elevi si Clase - aceasta este o cheie straina care leaga cele doua tabele.
Interogari SQL de baza - SELECT
SQL (Structured Query Language) este limbajul standard pentru lucrul cu baze de date. Indiferent daca folosesti Access, MySQL sau PostgreSQL, comenzile SQL sunt aceleasi (cu mici diferente de sintaxa). SQL este unul dintre cele mai importante limbaje de programare din lume - aproape orice aplicatie care stocheaza date foloseste SQL in spate.
Comanda SELECT este cea mai folosita comanda SQL. Ea permite citirea (extragerea) datelor din unul sau mai multe tabele. Sintaxa generala este:
SELECT coloane FROM tabel WHERE conditie ORDER BY coloana;
Exemple practice cu tabelul Elevi:
-
SELECT * FROM Elevi;- selecteaza toate coloanele si toti elevii din tabel. Asteriscul (*) inseamna "toate coloanele". -
SELECT Nume, Prenume FROM Elevi;- selecteaza doar coloanele Nume si Prenume, ignorand restul campurilor. -
SELECT * FROM Elevi WHERE Varsta > 14;- selecteaza elevii care au varsta mai mare decat 14 ani. -
SELECT * FROM Elevi WHERE Clasa = '8A';- selecteaza doar elevii din clasa 8A. Atentie: valorile text se pun intre ghilimele simple. -
SELECT Nume, Varsta FROM Elevi WHERE Varsta >= 14 AND Clasa = '8B';- combina doua conditii cu AND (ambele trebuie sa fie adevarate).
Clauze importante care pot fi adaugate la SELECT:
-
ORDER BY coloana ASC- sorteaza rezultatele in ordine crescatoare (A-Z, 1-9). ASC este optional, fiind ordinea implicita. -
ORDER BY coloana DESC- sorteaza in ordine descrescatoare (Z-A, 9-1). -
LIMIT n- returneaza doar primele n rezultate. Util cand tabelul are mii de randuri. -
DISTINCT- elimina duplicatele. De exemplu,SELECT DISTINCT Clasa FROM Elevi;afiseaza fiecare clasa o singura data.
Retine ordinea clauzelor: SELECT ... FROM ... WHERE ... ORDER BY ... LIMIT. Daca le pui in alta ordine, vei primi o eroare de sintaxa. O greseala frecventa la examen este sa inversezi WHERE cu ORDER BY.
Functii SQL agregate
Functiile agregate sunt functii speciale in SQL care efectueaza calcule pe un set de valori si returneaza un singur rezultat. Ele sunt esentiale atunci cand vrei sa obtii statistici din datele tale - de exemplu, cati elevi sunt intr-o clasa, care este media notelor sau care este nota maxima.
Cele 5 functii agregate principale:
-
COUNT()
- numara cate inregistrari exista.
SELECT COUNT(*) FROM Elevi;returneaza numarul total de elevi.SELECT COUNT(*) FROM Elevi WHERE Clasa = '8A';numara doar elevii din 8A. -
SUM()
- calculeaza suma valorilor dintr-o coloana numerica.
SELECT SUM(Nota) FROM Note WHERE ID_Elev = 101;returneaza suma notelor elevului cu ID-ul 101. -
AVG()
- calculeaza media aritmetica.
SELECT AVG(Nota) FROM Note;returneaza media tuturor notelor din tabel. -
MAX()
- gaseste valoarea maxima.
SELECT MAX(Nota) FROM Note;returneaza cea mai mare nota. -
MIN()
- gaseste valoarea minima.
SELECT MIN(Nota) FROM Note;returneaza cea mai mica nota.
Clauza GROUP BY permite calcularea functiilor agregate pe grupuri de date. De exemplu, daca vrei media notelor pentru fiecare elev (nu media generala), folosesti:
SELECT ID_Elev, AVG(Nota) AS Media FROM Note GROUP BY ID_Elev;
Cuvantul cheie AS creeaza un alias - un nume temporar pentru coloana rezultat. In loc sa apara "AVG(Nota)" in rezultat, va aparea "Media", ceea ce este mult mai usor de citit.
Clauza HAVING este echivalentul lui WHERE, dar pentru rezultatele grupate. De exemplu, daca vrei sa afisezi doar elevii cu media peste 8:
SELECT ID_Elev, AVG(Nota) AS Media FROM Note GROUP BY ID_Elev HAVING AVG(Nota) > 8;
Diferenta importanta: WHERE filtreaza randurile inainte de grupare, iar HAVING filtreaza grupurile dupa ce s-au calculat functiile agregate. Aceasta distinctie apare frecvent la examen.
Relatii intre tabele
Relatiile sunt legaturile logice intre tabelele unei baze de date. Ele permit conectarea informatiilor din tabele diferite, eliminand necesitatea de a stoca aceleasi date in mai multe locuri. Aceasta este esenta bazelor de date relationale si motivul pentru care sunt atat de eficiente.
Cheia straina (Foreign Key) este mecanismul prin care se creaza o relatie. O cheie straina este un camp dintr-un tabel care face referinta la cheia primara din alt tabel. De exemplu, in tabelul Elevi, campul ID_Clasa este o cheie straina care face referinta la campul ID_Clasa (cheie primara) din tabelul Clase.
Exemplu concret cu doua tabele:
- Tabelul Elevi: ID_Elev (PK), Nume, Prenume, ID_Clasa (FK)
- Tabelul Clase: ID_Clasa (PK), Nume_Clasa, Diriginte
PK = Primary Key (cheie primara), FK = Foreign Key (cheie straina). Campul ID_Clasa din tabelul Elevi trebuie sa contina o valoare care exista in coloana ID_Clasa din tabelul Clase. Daca incerci sa adaugi un elev cu ID_Clasa = 99 si nu exista clasa cu ID-ul 99, baza de date va refuza operatia - aceasta se numeste integritate referentiala .
Cele trei tipuri de relatii:
- 1:1 (unu la unu) - fiecare inregistrare dintr-un tabel este legata de exact o inregistrare din alt tabel. Exemplu: un elev are un singur carnet de note, un carnet apartine unui singur elev.
- 1:N (unu la multi) - o inregistrare dintr-un tabel este legata de mai multe inregistrari din alt tabel. Exemplu: o clasa are mai multi elevi, dar fiecare elev este intr-o singura clasa. Aceasta este relatia cea mai frecventa.
- N:M (multi la multi) - mai multe inregistrari dintr-un tabel sunt legate de mai multe inregistrari din alt tabel. Exemplu: un elev studiaza mai multe materii, iar o materie este studiata de mai multi elevi. Aceasta relatie necesita un tabel intermediar (de legatura).
Beneficiile relatiilor: Evitam duplicarea datelor (numele dirigintelui se stocheaza o singura data, nu la fiecare elev), pastram consistenta (daca dirigintele se schimba, modificam intr-un singur loc) si putem interoga date din mai multe tabele simultan folosind JOIN.
JOIN - Interogari pe mai multe tabele
Atunci cand datele sunt distribuite in mai multe tabele (ceea ce este normal intr-o baza de date bine proiectata), ai nevoie de JOIN pentru a le combina intr-o singura interogare. JOIN este una dintre cele mai puternice si mai importante operatii din SQL.
Sintaxa JOIN:
SELECT coloane FROM Tabel1 INNER JOIN Tabel2 ON Tabel1.camp = Tabel2.camp;
Exemplu practic: Vrem sa afisam numele fiecarui elev impreuna cu numele clasei sale. Informatiile sunt in doua tabele diferite (Elevi si Clase), asa ca folosim JOIN:
SELECT Elevi.Nume, Clase.Nume_Clasa FROM Elevi INNER JOIN Clase ON Elevi.ID_Clasa = Clase.ID_Clasa;
Aceasta interogare combina tabelele Elevi si Clase pe baza campului comun ID_Clasa. Pentru fiecare elev, gaseste clasa corespunzatoare si afiseaza numele elevului alaturi de numele clasei.
Tipuri de JOIN:
- INNER JOIN - returneaza doar randurile care au corespondent in ambele tabele. Daca un elev nu are clasa atribuita, nu va aparea in rezultat.
- LEFT JOIN - returneaza toate randurile din tabelul din stanga, chiar daca nu au corespondent in tabelul din dreapta. Valorile lipsa apar ca NULL.
- RIGHT JOIN - invers fata de LEFT JOIN: toate randurile din tabelul din dreapta.
La nivelul clasei a 8-a si la examen, cel mai frecvent intalnit este INNER JOIN. Un truc util: cand scrii un JOIN, gandeste-te la intrebarea "ce camp au cele doua tabele in comun?" - acela este campul pe care faci ON.
Exemplu complex cu trei tabele (Elevi, Note, Materii):
SELECT Elevi.Nume, Materii.Denumire, Note.Valoare FROM Elevi INNER JOIN Note ON Elevi.ID_Elev = Note.ID_Elev INNER JOIN Materii ON Note.ID_Materie = Materii.ID_Materie;
Aceasta interogare afiseaza numele elevului, materia si nota, combinand date din trei tabele diferite. La examen, astfel de interogari apar frecvent in forma de exercitii.
Operatii INSERT, UPDATE, DELETE
Pe langa citirea datelor cu SELECT, SQL permite si modificarea datelor din tabele. Cele trei comenzi fundamentale pentru modificare sunt INSERT (adaugare), UPDATE (actualizare) si DELETE (stergere). Aceste comenzi fac parte din categoria DML (Data Manipulation Language) .
1. INSERT - adaugarea unei inregistrari noi:
INSERT INTO Elevi (Nume, Prenume, Varsta, Clasa) VALUES ('Popescu', 'Ana', 14, '8A');
Observa ca valorile text sunt intre ghilimele simple, iar cele numerice nu. Ordinea valorilor trebuie sa corespunda exact cu ordinea coloanelor specificate. Daca tabelul are o coloana AutoNumber (pentru cheia primara), nu o incluzi in INSERT - baza de date genereaza automat valoarea.
2. UPDATE - modificarea datelor existente:
UPDATE Elevi SET Varsta = 15 WHERE Nume = 'Popescu' AND Prenume = 'Ana';
Putem modifica mai multe campuri simultan:
UPDATE Elevi SET Varsta = 15, Clasa = '8B' WHERE ID_Elev = 101;
Atentie critica:
Daca uiti clauza WHERE, comanda UPDATE modifica TOATE randurile din tabel! De exemplu,
UPDATE Elevi SET Varsta = 15;
ar seta varsta tuturor elevilor la 15 - o greseala grava. Aceeasi regula se aplica si la DELETE.
3. DELETE - stergerea inregistrarilor:
DELETE FROM Elevi WHERE ID_Elev = 101;
- sterge doar elevul cu ID-ul 101.
DELETE FROM Elevi WHERE Varsta < 10;
- sterge toti elevii cu varsta sub 10.
Diferenta dintre DELETE si DROP: DELETE sterge randuri (inregistrari) dintr-un tabel, dar tabelul ramane. DROP TABLE sterge intregul tabel, inclusiv structura sa. Nu le confunda la examen!
Bune practici inainte de UPDATE sau DELETE:
Intotdeauna testeaza mai intai cu un SELECT folosind aceeasi clauza WHERE, pentru a vedea ce randuri vor fi afectate. De exemplu, inainte de
DELETE FROM Elevi WHERE Varsta < 10;
, ruleaza
SELECT * FROM Elevi WHERE Varsta < 10;
pentru a verifica ca sunt randurile corecte.
CREATE TABLE - crearea structurii
Inainte de a putea introduce date intr-un tabel, trebuie sa il
creezi
. Comanda
CREATE TABLE
defineste structura tabelului: numele, coloanele, tipurile de date si constrangerile. Aceasta comanda face parte din categoria
DDL (Data Definition Language)
.
Sintaxa generala:
CREATE TABLE NumeTabel (coloana1 tip_date constrangeri, coloana2 tip_date constrangeri, ...);
Exemplu complet - crearea tabelului Elevi:
CREATE TABLE Elevi (ID_Elev INT PRIMARY KEY AUTO_INCREMENT, Nume VARCHAR(50) NOT NULL, Prenume VARCHAR(50) NOT NULL, Data_Nasterii DATE, Varsta INT CHECK (Varsta > 0 AND Varsta < 100), Email VARCHAR(100) UNIQUE, ID_Clasa INT, FOREIGN KEY (ID_Clasa) REFERENCES Clase(ID_Clasa));
Sa analizam fiecare element:
- ID_Elev INT PRIMARY KEY AUTO_INCREMENT - un numar intreg, cheie primara, care creste automat (1, 2, 3, ...) la fiecare inregistrare noua. In Access, echivalentul este tipul AutoNumber.
- Nume VARCHAR(50) NOT NULL - text de maxim 50 de caractere, obligatoriu (nu poate fi gol).
- Varsta INT CHECK (Varsta > 0 AND Varsta < 100) - numar intreg cu o restrictie: trebuie sa fie intre 1 si 99.
- Email VARCHAR(100) UNIQUE - text unic, nu pot exista doi elevi cu acelasi email.
- FOREIGN KEY (ID_Clasa) REFERENCES Clase(ID_Clasa) - declara ID_Clasa ca cheie straina care face referinta la tabelul Clase.
Alte comenzi DDL utile:
ALTER TABLE
modifica structura unui tabel existent (adauga/sterge coloane), iar
DROP TABLE
sterge complet un tabel. De exemplu,
ALTER TABLE Elevi ADD Telefon VARCHAR(15);
adauga o coloana noua numita Telefon. Acestea sunt comenzi ireversibile, deci trebuie folosite cu grija.
In Access, poti crea tabele si vizual (Design View), nu doar prin SQL. Dar cunoasterea comenzii CREATE TABLE este importanta pentru examen si pentru intelegerea profunda a bazelor de date.
Formulare si rapoarte in Access
Microsoft Access ofera doua instrumente importante pe langa tabele si interogari: formularele (Forms) pentru introducerea datelor si rapoartele (Reports) pentru afisarea si tiparirea datelor. Acestea fac baza de date mai usor de utilizat, transformand-o dintr-un instrument tehnic intr-o aplicatie prietenoasa.
Formularele (Forms) sunt interfete vizuale care permit utilizatorilor sa introduca, sa vizualizeze si sa modifice date fara a scrie SQL. In loc sa lucrezi direct cu tabelul (care arata ca un spreadsheet), un formular prezinta campurile intr-un mod organizat, cu etichete clare si butoane.
Elementele unui formular:
- Text Box - casete de text pentru introducerea datelor (nume, adresa, etc.)
- Combo Box (lista derulanta) - permite selectarea unei valori dintr-o lista predefinita. De exemplu, selectarea clasei dintr-o lista cu "7A", "7B", "8A", "8B".
- Check Box - caseta de bifare pentru valori Da/Nu.
- Command Button - butoane pentru actiuni: "Salveaza", "Sterge", "Navigare inainte/inapoi".
- Subform - un formular inclus in alt formular, util pentru relatii 1:N (de exemplu, un formular pentru clasa cu un subformular care arata elevii).
Rapoartele (Reports) sunt documente generate automat din datele bazei de date, formatate pentru tiparire sau export PDF. Un raport poate include: titlu, antete de coloana, date grupate si sortate, totaluri si subtotaluri calculate, grafice si imagini.
Diferenta cheie: Un formular este interactiv (poti scrie in el, modifica date), in timp ce un raport este doar pentru citire (afiseaza date, nu le poti modifica). Gandeste-te la formular ca la un chestionar pe care il completezi, si la raport ca la un buletin de note tiparit - il citesti, dar nu poti scrie pe el.
La examen, intrebarile despre formulare si rapoarte se concentreaza pe: ce elemente de control se folosesc, cum se leaga formularul de un tabel sau o interogare, si care este diferenta intre cele doua. Retine: formularul este pentru input , raportul este pentru output .
Normalizarea bazelor de date
Normalizarea este procesul prin care organizam datele in tabele astfel incat sa eliminam redundanta (duplicarea inutila a datelor) si sa prevenim inconsistentele. Este un concept fundamental in proiectarea bazelor de date si apare frecvent la examenele de TIC.
De ce este necesara normalizarea? Imagineaza-ti un singur tabel "Catalog" cu coloanele: Nume_Elev, Clasa, Diriginte, Materie, Nota. Daca elevul "Ion Popescu" din "8A" are 10 note, numele, clasa si dirigintele se repeta de 10 ori. Daca dirigintele se schimba, trebuie sa modifici 10 randuri in loc de unul singur - si daca uiti sa modifici un rand, ai date inconsistente.
Formele de normalizare (simplificate):
- Forma 1 (1NF) - fiecare celula contine o singura valoare (nu liste). De exemplu, campul "Telefon" nu trebuie sa contina "0721..., 0731..." - ar trebui sa fie un tabel separat cu un rand pentru fiecare numar.
- Forma 2 (2NF) - toate campurile non-cheie depind complet de cheia primara. Daca un camp depinde doar de o parte a cheii primare compuse, trebuie mutat in alt tabel.
- Forma 3 (3NF) - niciun camp non-cheie nu depinde de alt camp non-cheie. De exemplu, daca ai Cod_Postal si Oras in acelasi tabel, si orasul depinde de codul postal, atunci trebuie sa creezi un tabel separat pentru Coduri_Postale.
Exemplu de normalizare: Tabelul nenormalizat "Catalog(Nume_Elev, Clasa, Diriginte, Materie, Nota)" se transforma in trei tabele: Elevi (ID_Elev, Nume, ID_Clasa), Clase (ID_Clasa, Nume_Clasa, Diriginte), Note (ID_Nota, ID_Elev, Materie, Valoare). Acum, dirigintele apare o singura data in tabelul Clase.
In practica, la nivelul clasei a 8-a, cel mai important lucru de retinut este principiul general: daca o informatie se repeta de multe ori, probabil trebuie mutata in propriul tabel . Aceasta regula simpla te va ajuta sa proiectezi baze de date eficiente si sa rezolvi corect exercitiile de la examen.
Recapitulare si greseli frecvente la examen
Aceasta sectiune rezuma cele mai importante concepte si cele mai frecvente greseli pe care elevii le fac la evaluarile despre baze de date. Citeste cu atentie fiecare punct si verifica daca intelegi de ce este importat.
Rezumat al comenzilor SQL esentiale:
- SELECT - citeste date. Retine: SELECT coloane FROM tabel WHERE conditie ORDER BY coloana.
- INSERT INTO - adauga o inregistrare noua. Retine: valorile text intre ghilimele simple.
- UPDATE - modifica date existente. Retine: MEREU cu WHERE!
- DELETE FROM - sterge inregistrari. Retine: MEREU cu WHERE!
- CREATE TABLE - creeaza structura unui tabel nou.
- ALTER TABLE - modifica structura unui tabel existent.
- DROP TABLE - sterge complet un tabel (structura + date).
Top 5 greseli frecvente la examen:
- Greseala 1: Confuzia DELETE cu DROP. DELETE sterge randuri din tabel, DROP sterge intregul tabel.
- Greseala 2: Uitarea clauzei WHERE la UPDATE sau DELETE. Fara WHERE, TOATE randurile sunt afectate.
- Greseala 3: Ghilimelele la valori text. Valorile text se pun intre ghilimele simple: WHERE Nume = 'Popescu', nu WHERE Nume = Popescu.
- Greseala 4: Confuzia intre cheie primara si cheie straina. Cheia primara identifica unic un rand in propriul tabel. Cheia straina face referinta la cheia primara din ALT tabel.
- Greseala 5: Ordinea clauzelor SQL. Ordinea corecta: SELECT - FROM - WHERE - GROUP BY - HAVING - ORDER BY. Nu poti pune WHERE dupa ORDER BY.
Lista de verificare inainte de examen: Stiu sa explic ce este o cheie primara si o cheie straina? Pot scrie o interogare SELECT cu WHERE si ORDER BY? Inteleg diferenta dintre 1:1, 1:N si N:M? Pot scrie comenzi INSERT, UPDATE si DELETE corecte? Stiu diferenta dintre formular si raport? Daca raspunsul este "da" la toate, esti pregatit!
Un sfat final: la examen, citeste cu atentie cerinta. Multe greseli vin din grabire, nu din lipsa de cunostinte. Verifica intotdeauna ca ai scris corect numele tabelelor si coloanelor, ca ai pus ghilimele unde trebuie si ca ai inclus clauza WHERE cand este necesar.
Exercitii practice
Exercitiul 1 (Nivel minim) - Analiza structura baze de date
Ai urmatoarele doua tabele intr-o baza de date a unei biblioteci scolare:
Tabelul Carti: ID_Carte (PK), Titlu, Autor, An_Publicare, ID_Categorie (FK)
Tabelul Categorii: ID_Categorie (PK), Denumire_Categorie, Descriere
Raspunde la urmatoarele intrebari:
- Ce tip de relatie exista intre tabelele Carti si Categorii? Explica de ce.
- Scrie o interogare SQL care afiseaza titlul si categoria fiecarei carti (folosind JOIN).
- Scrie o interogare SQL care numara cate carti sunt in fiecare categorie (folosind GROUP BY).
- Daca vrei sa adaugi un camp "Disponibila" (da/nu) la tabelul Carti, ce comanda SQL folosesti si ce tip de date alegi?
Raspunde numerotat: 1. ... 2. ... 3. ... 4. ...
Sfat: pentru intrebarea 2, gandeste-te ce camp au cele doua tabele in comun. Pentru intrebarea 3, aminteste-ti ca GROUP BY grupeaza randurile si permite folosirea functiilor agregate (COUNT, SUM, AVG).
Exercitiul 2 (Nivel standard) - Mini-proiect: Baza de date Catalog scolar
Proiecteaza si implementeaza o baza de date pentru catalogul clasei tale. Baza de date trebuie sa gestioneze elevi, materii si note, permitand interogari complexe despre situatia scolara.
Cerinte obligatorii:
⭐ Bonus (pentru nota maxima):
- Adauga un tabel Clase si leaga-l de tabelul Elevi cu o relatie 1:N
- Creeaza un formular in Access pentru introducerea notelor
- Creeaza un raport care afiseaza situatia scolara a fiecarui elev, grupat pe materii
- Adauga o interogare care gaseste nota maxima si minima din intreaga baza de date
Salveaza baza de date cu numele "Catalog_NumeleTau.accdb" si exporta cel putin un raport in format PDF.
Exercitiul 3 (Nivel performanta) - Compunere
Cerinta: Scrie un text de 10-12 randuri in care explici de ce bazele de date sunt esentiale in lumea moderna. Descrie cel putin 3 exemple concrete de aplicatii care folosesc baze de date (reteaua scolara, un magazin online, o retea sociala) si explica pentru fiecare ce tabele ar putea contine si ce relatii exista intre ele. Argumenteaza de ce o baza de date este mai eficienta decat un simplu fisier Excel.
Indicii pentru structurarea raspunsului:
- Incepe prin a defini ce este o baza de date si de ce e importanta
- Da cele 3 exemple concrete, explicand tabelele si relatiile
- Compara avantajele unei baze de date fata de Excel (multi-utilizator, integritate, relatii)
- Mentioneaza rolul SQL in interogarea datelor
- Incheie cu o concluzie despre importanta bazelor de date in viitor
Cuvinte cheie de folosit: tabel, cheie primara, cheie straina, relatie, interogare, SQL, formular, raport, normalizare, integritate
Format: Scrie raspunsul pe foaie sau intr-un document Word, folosind paragrafe coerente. Minim 10 randuri.