O bază de date relațională stochează date în tabele interconectate prin chei, iar SQL este limbajul standard pentru interogarea și manipularea acestor date. Normalizarea este procesul de proiectare a tabelelor pentru a reduce redundanța și a evita anomaliile la actualizare, urmând formele normale 1NF, 2NF și 3NF. Pentru Bacalaureat, se cere rezolvarea de interogări SQL cu JOIN-uri, funcții de grup și subinterogări, precum și identificarea formelor normale.
Interogările pot fi simple (SELECT * FROM tabel) sau complexe, utilizând:
Exemplul 1: Tabele: *Elevi (id_elev, nume, clasa)* și *Note (id_nota, id_elev, materie, nota)*. Se cere lista elevilor din clasa '10A' cu media notelor > 8.
``sql
SELECT e.nume, AVG(n.nota) AS medie
FROM Elevi e
JOIN Note n ON e.id_elev = n.id_elev
WHERE e.clasa = '10A'
GROUP BY e.id_elev, e.nume
HAVING AVG(n.nota) > 8;
`
Se folosește GROUP BY pentru agregare și HAVING pentru filtrarea grupelor.
Exemplul 2: Se cere numele elevilor care au luat nota maximă la o materie dată (de ex. 'Matematica').
`sql
SELECT e.nume
FROM Elevi e
JOIN Note n ON e.id_elev = n.id_elev
WHERE n.materie = 'Matematica'
AND n.nota = (SELECT MAX(nota) FROM Note WHERE materie = 'Matematica');
`
Aceasta este o subinterogare necorelată. Alternativ, se poate folosi ORDER BY și LIMIT 1, dar subinterogarea este mai didactică.
Normalizarea este procesul de proiectare a tabelelor pentru a reduce redundanța și a evita anomalii la actualizare.
Formele normale principale:
Exemplul 3: Tabel inițial: *Vanzari (id_vanzare, nume_client, telefon, produs, cantitate, pret_unitar)*. Observăm că *nume_client* și *telefon* se repetă pentru același client.
Dependențe funcționale: id_vanzare → toate, nume_client → telefon` (dar nu invers).
Atenție la greșeli frecvente:
Vrei exerciții pe lecția asta + AI care te ajută pas cu pas?
Cont gratuit — 20 întrebări AI/zi, exerciții nelimitate.