În lucru: lecțiile se refac de la capăt. Lecțiile noi ale clasei: lecțiile noi ale clasei a VII-a →

Înregistrări și chei primare

Vreau să înțeleg cum identific unic fiecare înregistrare!

Obiectivul lectiei

Dupa aceasta lectie vei putea:

Incearca!

Imaginează-ți că ești profesorul clasei și trebuie să pui notă unui elev. Privește acest tabel:

Nume Prenume Clasa Nota
Popescu Ion 7A 9
Ionescu Maria 7A 8
Ionescu Maria 7A ?
Marin Elena 7B 10

❌ Problema:

Sunt două eleve "Ionescu Maria" din clasa 7A! Cum știi cărei Maria îi pui nota?

În viața reală, acest lucru se întâmplă des - oameni cu același nume există!

✅ Soluția - Cheia primară:

Adăugăm un ID unic pentru fiecare elev. Chiar dacă au același nume, ID-ul lor va fi diferit!

Atom 1

Inregistrare si cheie primara

📌 Ce este o înregistrare?

O înregistrare (record) este un rând complet dintr-un tabel care conține toate informațiile despre o singură entitate (un elev, un produs, o carte, etc.).

🔑 Ce este cheia primară?

Cheia primară (Primary Key) este un câmp special care identifică unic fiecare înregistrare. Valorile din acest câmp trebuie să fie:

  • Unice - nu se pot repeta
  • Non-nule - nu pot fi goale
  • Stabile - nu se schimbă în timp
Atom 2

Exemplu cu cheie primară:

🔑 ID_Elev Nume Prenume Clasa Nota
1 Popescu Ion 7A 9
2 Ionescu Maria 7A 8
3 Ionescu Maria 7A 10
4 Marin Elena 7B 10

Acum, deși avem două "Ionescu Maria", le putem distinge: eleva cu 🔑 ID 2 are nota 8, iar eleva cu 🔑 ID 3 are nota 10.

🌍 Exemple din viața reală:

  • Număr matricol - Identifică unic fiecare elev în școală
  • Cod de bare - Identifică unic fiecare produs
  • Număr de înmatriculare - Identifică unic fiecare mașină
  • ISBN - Identifică unic fiecare carte publicată
  • ID generat automat - Număr unic creat de baza de date (ex: 1, 2, 3...)

⚠️ Atenție: Coduri care conțin date personale reale (CNP, număr de pașaport etc.) sunt informații sensibile protejate de lege. Nu le colectați și nu le stocați în proiectele voastre — folosiți ID-uri generate automat de baza de date!

🧪 Simulare: Ce se întâmplă dacă încerci să adaugi un ID duplicat?

💡 AutoNumber - Cel mai folosit tip de cheie primară

În Access și alte baze de date, poți seta câmpul ID ca AutoNumber. Aceasta înseamnă că:

  • Baza de date generează automat un număr unic pentru fiecare înregistrare nouă
  • Nu trebuie să-ți faci griji că vei introduce un ID duplicat
  • Numerele cresc in ordine, dar nu sunt neaparat consecutive: dupa stergeri, secventa poate arata 1, 2, 5, 9... — comportament normal; important e ca sunt unice

Practica

Nivel Minim

Priveste tabelul urmator si raspunde: care dintre coloane ar putea fi cheie primara? De ce?

ID_ElevNumePrenumeClasa
1PopescuIon7A
2IonescuMaria7B
3PopescuAna7A

Scrie raspunsul in caiet: de ce ID_Elev este potrivit ca cheie primara, iar Nume sau Clasa nu sunt?

Vezi rezolvarea

Raspuns: Coloana ID_Elev este cheia primara.

  1. De ce ID_Elev merge: valorile 1, 2, 3 sunt unice (nu se repeta) si nenule (fiecare elev are un numar). Respecta exact cele 3 conditii din lectie: unic, non-nul, stabil.
  2. De ce Nume nu merge: in tabel apare de doua ori "Popescu" (la Ion si la Ana) — nu e unic, deci nu poate identifica singur o inregistrare.
  3. De ce Clasa nu merge: "7A" apare de doua ori (Popescu Ion si Popescu Ana) — multi elevi pot fi in aceeasi clasa, deci nu e unic.

Concluzie: doar un camp cu valori garantat unice (ca un numar de identificare) poate fi cheie primara.

Nivel Standard

Creaza in caiet un tabel pentru o biblioteca cu 4 carti. Tabelul trebuie sa aiba:

  • Un camp ID_Carte (cheie primara, AutoNumber — numere unice generate automat; in exemplu poti folosi 1, 2, 3, 4 daca nu ai sters inregistrari)
  • Campurile: Titlu, Autor, An_Publicare
  • Cel putin doua carti cu acelasi autor (demonstrand ca ID-ul le diferentiaza)

Verifica: toate valorile din ID_Carte sunt unice si nenule?

Vezi rezolvarea

Tabel Carti cu cheia primara ID_Carte (AutoNumber):

  1. ID_Carte=1, Titlu="Harry Potter si Piatra Filozofala", Autor="J.K. Rowling", An_Publicare=1997
  2. ID_Carte=2, Titlu="Harry Potter si Camera Secretelor", Autor="J.K. Rowling", An_Publicare=1998
  3. ID_Carte=3, Titlu="Ion", Autor="Liviu Rebreanu", An_Publicare=1920
  4. ID_Carte=4, Titlu="Padurea Spanzuratilor", Autor="Liviu Rebreanu", An_Publicare=1922

Observa: primele doua carti au acelasi autor (J.K. Rowling), ultimele doua tot acelasi autor (Liviu Rebreanu) — dar ID_Carte le diferentiaza perfect, fiindca fiecare numar (1, 2, 3, 4) apare o singura data si niciunul nu e gol.

Verificare: toate valorile ID_Carte (1,2,3,4) sunt unice si nenule — cerinta indeplinita.

Nivel Performanta

Analizeaza situatia: un magazin online stocheaza comenzile clientilor. Propune un tabel Comenzi cu:

  • Campul cheie primara potrivit si justificarea alegerii
  • Minim 5 campuri relevante (cu tipurile de date corecte: Text, Numar, Data, Da/Nu)
  • Un exemplu de 3 inregistrari completate corect

Bonus: De ce nu se poate folosi Nume_Client ca cheie primara?

Vezi rezolvarea

Schita de rezolvare (nu raspunsul complet — completeaza tu detaliile):

  1. Cheia primara: ID_Comanda, tip AutoNumber. Justificare: un numar de comanda generat automat e mereu unic si nenul, spre deosebire de orice data despre client.
  2. Cel putin 5 campuri de gandit (foloseste doar tipurile predate — Text, Numar, Data/Ora, Da/Nu): un camp pentru numele clientului (Text), unul pentru produsul comandat (Text), unul pentru cantitate sau pret (Numar), unul pentru data comenzii (Data/Ora), unul pentru statusul "livrat?" (Da/Nu).
  3. 3 inregistrari exemplu: construieste-le tu, cu ID-uri 1, 2, 3 diferite, si verifica ca niciun ID nu se repeta.
  4. Capcana de evitat: nu pune adresa clientului ca Numar (e Text, poate contine litere/cod postal cu zero in fata) — aceeasi regula ca la NumarTelefon din lectia 3.

Bonus — de ce NU Nume_Client ca cheie: pentru ca doi clienti diferiti pot avea acelasi nume (ex: doi "Popescu Ion"), deci valoarea s-ar repeta si nu ar mai identifica unic o comanda — exact problema din exemplul cu cele doua "Ionescu Maria" din lectie.

Criterii de evaluare: cheia justificata corect (2p), minim 5 campuri cu tipuri corecte (3p), 3 inregistrari coerente cu campurile alese (3p), raspuns corect la bonus (2p).

Recapitulare

Ce am invatat:

  • O inregistrare (record) este un rand complet dintr-un tabel — toate datele despre o singura entitate (elev, produs, carte etc.)
  • Cheia primara (Primary Key) identifica unic fiecare inregistrare din tabel
  • Valorile cheii primare trebuie sa fie unice, non-nule si stabile in timp
  • AutoNumber este cel mai comun tip de cheie primara: baza de date genereaza automat numere unice — nu neaparat consecutive (dupa stergeri pot sari: 1, 2, 5, 9... — normal; important e ca sunt unice)
  • Exemple din viata reala de chei unice: numar matricol, cod de bare, ISBN, ID generat automat

Vrei mai mult?

In tabelul cu chei primare din lectie, adauga in caiet o a 5-a inregistrare cu ID_Elev = 2 (acelasi ID ca Ionescu Maria), dar cu alte date: Popescu Ana, 7A. Acum incearca sa raspunzi: daca cineva cauta "elevul cu ID 2", pe care il gaseste? Ce s-a stricat?

  • De gandit: In tabelul nostru mic, niciun Nume nu se repeta acum. De ce, totusi, nu e o idee buna sa folosim Numele ca si cheie primara in loc de ID_Elev?
  • Deschidere: CNP-ul romanesc este o cheie primara reala: 13 cifre unice pentru fiecare cetatean, care codifica si sexul, si data nasterii. Codul de bare de pe orice produs (EAN) functioneaza la fel - un numar unic care nu se repeta niciodata pe alt produs.