Lectia 3 din 6

Recapitulare Baze de Date

Tabele, Relatii, SQL si Microsoft Access

🎯

GOAL - Obiectivele Recapitularii

Bazele de date sunt esentiale pentru stocarea si organizarea informatiilor. In aceasta lectie recapitulam conceptele fundamentale de baze de date si limbajul SQL pe care le-ai invatat in clasa a VIII-a.

Concepte Fundamentale

  • Ce este o baza de date
  • Tabele si campuri
  • Inregistrari (randuri)
  • Tipuri de date

Chei si Relatii

  • Cheie primara (PK)
  • Cheie straina (FK)
  • Relatii 1:1, 1:N, N:M
  • Integritate referentiala

Limbajul SQL

  • SELECT - interogari
  • INSERT - adaugare date
  • UPDATE - modificare
  • DELETE - stergere
📚

LEARN - Sinteza Conceptelor

1. Structura unei Baze de Date

O baza de date este organizata in tabele. Fiecare tabel are campuri (coloane) si inregistrari (randuri).

Tabel: ELEVI

🔑ID_Elev Nume Prenume Clasa Data_Nastere
1 Popescu Ion 8A 2011-03-15
2 Ionescu Maria 8B 2011-07-22
3 Vasilescu Ana 8A 2011-01-08

2. Tipuri de Date in Baze de Date

Tip Descriere Exemple
INTEGER Numere intregi 1, 42, -5, 2024
REAL / FLOAT Numere cu zecimale 3.14, 9.99, -2.5
TEXT / VARCHAR Siruri de caractere "Ion", "Matematica"
DATE Date calendaristice 2024-03-15
BOOLEAN Valori logice TRUE, FALSE

3. Chei si Relatii

Cheie Primara (Primary Key)

Identifica unic fiecare inregistrare din tabel. Nu poate avea valori duplicate sau NULL. Exemplu: ID_Elev in tabelul ELEVI.

Cheie Straina (Foreign Key)

Face legatura intre doua tabele. Refera cheia primara din alt tabel. Exemplu: ID_Elev in tabelul NOTE refera ELEVI.

Relatie 1:N - Un elev poate avea mai multe note

ELEVI

🔑ID_ElevNume
1Popescu Ion
2Ionescu Maria

NOTE

🔑ID_NotaID_ElevNota
1110
219
328

4. Comenzi SQL Esentiale

SQL SELECT - Interogare date
-- Selecteaza toate coloanele din ELEVI
SELECT * FROM ELEVI;

-- Selecteaza doar anumite coloane
SELECT Nume, Prenume FROM ELEVI;

-- Cu conditie WHERE
SELECT * FROM ELEVI
WHERE Clasa = '8A';

-- Ordonare rezultate
SELECT * FROM ELEVI
ORDER BY Nume ASC;

-- Conditii multiple
SELECT * FROM ELEVI
WHERE Clasa = '8A' AND Nume LIKE 'P%';
SQL INSERT, UPDATE, DELETE
-- Adaugare inregistrare noua
INSERT INTO ELEVI (Nume, Prenume, Clasa)
VALUES ('Georgescu', 'Dan', '8B');

-- Modificare date existente
UPDATE ELEVI
SET Clasa = '8A'
WHERE ID_Elev = 2;

-- Stergere inregistrare
DELETE FROM ELEVI
WHERE ID_Elev = 3;
SQL Functii Agregat
-- Numarare inregistrari
SELECT COUNT(*) FROM ELEVI;

-- Suma valorilor
SELECT SUM(Nota) FROM NOTE;

-- Media aritmetica
SELECT AVG(Nota) FROM NOTE;

-- Valoare maxima si minima
SELECT MAX(Nota), MIN(Nota) FROM NOTE;

-- Grupare rezultate
SELECT ID_Elev, AVG(Nota) as Media
FROM NOTE
GROUP BY ID_Elev;

Microsoft Access - Sfaturi Rapide

Creare tabel: Create > Table Design
Definire cheie primara: Click dreapta pe camp > Primary Key
Creare relatie: Database Tools > Relationships
Interogare: Create > Query Design sau Query Wizard
Formular: Create > Form pentru introducere date
Raport: Create > Report pentru afisare date

💪

TRY - Exercitii Practice

Exercitiul 1: Interogari pe tabelul ELEVI

Scrie interogarile SQL pentru urmatoarele cerinte:

-- a) Afiseaza toti elevii din clasa 8A
SELECT * FROM ELEVI
WHERE Clasa = '8A';

-- b) Afiseaza elevii ordonati alfabetic dupa nume
SELECT * FROM ELEVI
ORDER BY Nume;

-- c) Numara cati elevi sunt in clasa 8B
SELECT COUNT(*) as Nr_Elevi
FROM ELEVI
WHERE Clasa = '8B';

-- d) Afiseaza elevii nascuti in 2011
SELECT * FROM ELEVI
WHERE Data_Nastere BETWEEN '2011-01-01' AND '2011-12-31';

Exercitiul 2: Interogari pe mai multe tabele (JOIN)

Afiseaza notele impreuna cu numele elevilor.

-- Combinam informatii din ELEVI si NOTE
SELECT ELEVI.Nume, ELEVI.Prenume, NOTE.Nota
FROM ELEVI
INNER JOIN NOTE ON ELEVI.ID_Elev = NOTE.ID_Elev;

-- Media notelor pentru fiecare elev
SELECT ELEVI.Nume, ELEVI.Prenume,
       AVG(NOTE.Nota) as Media
FROM ELEVI
INNER JOIN NOTE ON ELEVI.ID_Elev = NOTE.ID_Elev
GROUP BY ELEVI.ID_Elev, ELEVI.Nume, ELEVI.Prenume;

Exercitiul 3: Proiecteaza o Baza de Date

Pentru o biblioteca scolara, ce tabele ai crea?

-- Tabel CARTI
CREATE TABLE CARTI (
    ID_Carte INTEGER PRIMARY KEY,
    Titlu VARCHAR(100),
    Autor VARCHAR(50),
    An_Publicare INTEGER,
    Disponibila BOOLEAN
);

-- Tabel IMPRUMUTURI
CREATE TABLE IMPRUMUTURI (
    ID_Imprumut INTEGER PRIMARY KEY,
    ID_Carte INTEGER,
    ID_Elev INTEGER,
    Data_Imprumut DATE,
    Data_Returnare DATE,
    FOREIGN KEY (ID_Carte) REFERENCES CARTI(ID_Carte),
    FOREIGN KEY (ID_Elev) REFERENCES ELEVI(ID_Elev)
);

TEST - Verifica-ti Cunostintele

1. Ce este o cheie primara?

a) O parola pentru baza de date
b) Un camp care identifica unic fiecare inregistrare
c) Primul camp din tabel
d) O legatura intre tabele

2. Ce comanda SQL folosim pentru a extrage date?

a) GET
b) EXTRACT
c) SELECT
d) FETCH

3. Ce face clauza WHERE in SQL?

a) Ordoneaza rezultatele
b) Filtreaza inregistrarile dupa o conditie
c) Grupeaza datele
d) Combina tabele

4. Ce returneaza COUNT(*)?

a) Suma valorilor
b) Media valorilor
c) Numarul de inregistrari
d) Numarul de coloane

5. Ce tip de relatie exista cand un elev poate avea mai multe note?

a) 1:1 (unu la unu)
b) 1:N (unu la multi)
c) N:M (multi la multi)
d) N:1 (multi la unu)