Biblioteca
Tutora
BibliotecaInformatică și TIC › clasa a VIII-a

Baze de date

Elevii descoperă noțiunile de bază privind organizarea și gestionarea datelor în baze de date.

Ce este o bază de date și de ce avem nevoie de ea

Gândește-te la catalogul școlii, la lista de utilizatori ai unui joc online sau la stocul unui magazin: mii de informații care trebuie păstrate ordonat, căutate rapid și modificate fără greșeli. O bază de date este o colecție organizată de date, memorată electronic astfel încât informațiile să poată fi ușor adăugate, căutate, modificate și șterse.

De ce nu ajunge un simplu fișier text sau un tabel într-o foaie de calcul? Pentru că baza de date oferă în plus:

Programul care administrează baza de date se numește SGBD — Sistem de Gestiune a Bazelor de Date. El este intermediarul: utilizatorii și aplicațiile nu umblă direct la fișierele cu date, ci îi cer SGBD-ului ce au nevoie, iar acesta execută. Exemple cunoscute: MySQL, SQLite, PostgreSQL, Microsoft Access.

Distincția care se cere: baza de date este colecția de date; SGBD-ul este programul care o gestionează. E ca diferența dintre bibliotecă (rafturile cu cărți) și bibliotecar (cel care știe unde e fiecare carte și ține ordinea).

Tabele, câmpuri și înregistrări

În bazele de date relaționale — modelul studiat — datele stau în tabele. Un tabel arată ca un tabel obișnuit, dar cu reguli stricte:

Regula de aur a proiectării: pe coloană — același fel de informație pentru toți; pe rând — toate informațiile despre unul singur.

Cheia primară este câmpul (sau grupul de câmpuri) care identifică în mod unic fiecare înregistrare: numărul matricol al elevului, CNP-ul unei persoane, codul unui produs. Două înregistrări nu pot avea aceeași valoare a cheii primare, iar cheia nu poate lipsi (nu poate fi vidă).

De ce nu e bun numele ca cheie primară? Pentru că doi elevi se pot numi identic — „Popescu Andrei” din 8A și „Popescu Andrei” din 8B. Cheia trebuie să fie garantat unică, de aceea în practică se folosește adesea un cod numeric generat automat (id).

Un exemplu complet: tabelul ELEVI cu câmpurile id (cheie primară, număr), nume (text), clasa (text), media (număr real). Înregistrarea (103, „Ionescu Maria”, „8B”, 9.50) descrie un elev concret.

Operațiile de bază cu datele

Orice bază de date trăiește prin patru operații fundamentale, indiferent de SGBD:

Interogarea NU modifică datele — doar le citește și le afișează filtrat sau ordonat. E o confuzie frecventă: după o interogare care afișează elevii sortați după medie, tabelul rămâne exact cum era; sortarea există doar în rezultat.

Rezultatul unei interogări este el însuși un tabel — de obicei mai mic: mai puține rânduri (doar cele care trec de filtru) și, dacă vrem, mai puține coloane (doar cele cerute).

Introducere în SQL

SQL (Structured Query Language) este limbajul standard în care „vorbim” cu bazele de date relaționale. Nu e limbaj de programare cu bucle și condiții — e un limbaj de cereri: descrii CE date vrei, iar SGBD-ul se ocupă de CUM le găsește.

Interogarea fundamentală are trei părți, în această ordine fixă:

Exemple pe tabelul ELEVI(id, nume, clasa, media):

Pentru ordonarea rezultatului se adaugă ORDER BY: SELECT nume, media FROM elevi ORDER BY media DESC — sortare descrescătoare după medie (DESC = descrescător, implicit e crescător).

Celelalte operații au și ele comenzi dedicate: INSERT (adăugare), UPDATE (modificare), DELETE (ștergere) — la acest nivel e suficient să le recunoști rolul.

Capcana de început: WHERE filtrează RÂNDURI, SELECT alege COLOANE. „Afișează doar numele” se rezolvă în SELECT; „doar elevii din 8B” se rezolvă în WHERE. Cine le încurcă scrie interogări care nu au sens.

Relații între tabele

Puterea reală a bazelor de date relaționale apare când datele stau în mai multe tabele legate între ele.

De ce mai multe tabele? Imaginează-ți un singur tabel uriaș cu împrumuturile bibliotecii: la fiecare împrumut ai rescrie numele elevului, clasa lui, titlul cărții, autorul... Aceleași informații s-ar repeta de zeci de ori — risipă de spațiu și pericol de nepotriviri (numele scris ușor diferit în rânduri diferite). Soluția: desparte datele pe entități:

În IMPRUMUTURI nu se repetă numele și titlurile — doar codurile lor. Câmpul id_elev din IMPRUMUTURI, care arată spre cheia primară a tabelului ELEVI, se numește cheie externă (străină). Ea realizează legătura dintre tabele.

Tipurile de relații de recunoscut:

Cheia externă are voie să se repete (mulți împrumuți ai aceluiași elev), spre deosebire de cheia primară — diferență care se cere explicit.

De reținut

bază de date
colecție organizată de date memorată electronic, care permite adăugarea, căutarea, modificarea și ștergerea eficientă a informațiilor
SGBD
Sistem de Gestiune a Bazelor de Date — programul care administrează baza de date și prin care utilizatorii și aplicațiile lucrează cu datele
tabel
structura de bază a modelului relațional, organizată pe coloane (câmpuri) și rânduri (înregistrări)
câmp
coloană a unui tabel, care descrie un tip de informație (nume, medie) și are un tip de date fixat
înregistrare
rând al unui tabel, care conține toate informațiile despre un singur obiect: un elev, un produs, o carte
cheie primară
câmpul sau grupul de câmpuri care identifică în mod unic fiecare înregistrare; nu se poate repeta și nu poate lipsi
cheie externă
câmp dintr-un tabel care face referire la cheia primară a altui tabel, realizând legătura dintre ele; valorile ei se pot repeta
interogare
cerere adresată bazei de date care returnează, fără a modifica datele, înregistrările ce îndeplinesc o condiție
SQL
limbajul standard de lucru cu bazele de date relaționale, în care interogarea de bază are forma SELECT ... FROM ... WHERE ...
relație unu la mulți
legătura în care unei înregistrări dintr-un tabel îi corespund mai multe înregistrări din alt tabel: o clasă are mulți elevi

Greșeli frecvente

Greșit: Confundarea bazei de date cu SGBD-ul
Corect: Baza de date este colecția de date; SGBD-ul este PROGRAMUL care o gestionează (MySQL, Access) — biblioteca versus bibliotecarul
Greșit: Alegerea numelui persoanei drept cheie primară
Corect: Numele se poate repeta, deci nu identifică unic; cheia primară trebuie garantat unică — un cod numeric sau numărul matricol
Greșit: Încurcarea rolurilor: filtrarea rândurilor pusă în SELECT și alegerea coloanelor în WHERE
Corect: SELECT alege COLOANELE afișate; WHERE filtrează RÂNDURILE după condiție — „doar numele” merge în SELECT, „doar cei din 8B” în WHERE
Greșit: Credința că o interogare cu ORDER BY sortează definitiv tabelul
Corect: Interogarea nu modifică datele: sortarea și filtrarea există doar în rezultatul afișat, tabelul rămânând neschimbat
Greșit: Adăugarea unei înregistrări noi în loc de modificarea celei existente când o dată se schimbă
Corect: Schimbarea unei valori (elevul se mută în altă clasă) se face prin actualizarea înregistrării lui, altfel aceeași persoană apare de două ori în bază

Test — 6 întrebări ca la examen

1. Programul care administrează o bază de date și prin care aplicațiile lucrează cu datele se numește:
  1. sistem de operare
  2. SGBD
  3. compilator
  4. motor de căutare
Vezi răspunsul
SGBD. SGBD — Sistemul de Gestiune a Bazelor de Date — este intermediarul dintre utilizatori și datele stocate. Motorul de căutare, distractorul tentant prin asemănarea cu „a căuta date”, caută pagini pe web, nu gestionează tabele și înregistrări.
2. Într-un tabel ELEVI, informațiile complete despre un singur elev formează:
  1. un câmp
  2. o coloană
  3. o înregistrare
  4. o cheie externă
Vezi răspunsul
o înregistrare. Un rând (o înregistrare) descrie complet un obiect — aici, un elev. Câmpul, distractorul clasic, este exact pe dos: o COLOANĂ, adică același tip de informație (de exemplu media) pentru TOȚI elevii.
3. Care câmp este cea mai potrivită cheie primară pentru tabelul ELEVI?
  1. numele elevului
  2. clasa
  3. numărul matricol
  4. media generală
Vezi răspunsul
numărul matricol. Numărul matricol este unic pentru fiecare elev și nu lipsește niciodată — exact cerințele cheii primare. Numele, varianta tentantă, se poate repeta (doi elevi cu același nume), iar clasa și media se repetă masiv.
4. Ce returnează interogarea SELECT nume FROM elevi WHERE media > 9 ?
  1. toate datele elevilor cu media peste 9
  2. numele tuturor elevilor din tabel
  3. doar numele elevilor cu media peste 9
  4. mediile mai mari decât 9, fără nume
Vezi răspunsul
doar numele elevilor cu media peste 9. WHERE filtrează rândurile (doar media peste 9), iar SELECT alege coloanele afișate (doar numele). Prima variantă ignoră SELECT-ul — ar corespunde lui SELECT * — iar a doua ignoră filtrul WHERE; itemul testează exact separarea celor două roluri.
5. După executarea unei interogări cu ORDER BY media DESC, tabelul ELEVI din baza de date:
  1. rămâne neschimbat
  2. este sortat definitiv descrescător după medie
  3. păstrează doar elevii cu medii mari
  4. pierde coloana media
Vezi răspunsul
rămâne neschimbat. Interogarea doar CITEȘTE datele: ordonarea există numai în rezultatul afișat. Varianta a doua e confuzia standard între rezultatul interogării și conținutul real al tabelului — pentru modificări reale ar fi nevoie de UPDATE sau DELETE.
6. O bibliotecă are tabelele ELEVI, CARTI și IMPRUMUTURI(id_elev, id_carte, data). Câmpul id_elev din IMPRUMUTURI este:
  1. cheia primară a tabelului IMPRUMUTURI
  2. o cheie externă către tabelul ELEVI
  3. un câmp de tip text
  4. cheia primară a tabelului ELEVI
Vezi răspunsul
o cheie externă către tabelul ELEVI. id_elev din IMPRUMUTURI face referire la cheia primară a tabelului ELEVI — definiția cheii externe; valorile lui se pot repeta, căci un elev împrumută mai multe cărți. Distractorul ultimul încurcă locul: în ELEVI, id_elev e cheie primară, dar în IMPRUMUTURI același câmp joacă rol de cheie externă.
Deschide varianta interactivă — cu AI care îți explică
← Tehnici de programareRețele de calculatoare și Internet →
BiologieChimieEconomieFilosofieFizicăGeografieInformatică și TICIstorieLogică și argumentareMatematicăPsihologieLimba și literatura română