🚀 Web hosting ultra-rapid de la doar 1€/lună!
HostPedia

Foreign Key

Baze de Date
Definiție

Foreign key (cheie externă) este o coloană dintr-un tabel care referențiază cheia primară a altui tabel, stabilind o relație între cele două tabele. Cheile externe asigură integritatea referențială a datelor, împiedicând existența înregistrărilor orfane. Sunt esențiale pentru modelarea relațiilor one-to-many și many-to-many în bazele de date relaționale.

Cheia externă (foreign key) este mecanismul principal prin care bazele de date relaționale implementează relațiile între tabele și mențin integritatea referențială a datelor. Fără chei externe, consistența datelor ar depinde exclusiv de logica aplicației.

Conceptul de cheie externă este simplu: o coloană dintr-un tabel (tabelul copil) conține valori care trebuie să existe în coloana cheii primare a altui tabel (tabelul părinte). De exemplu, într-un tabel „comenzi", coloana „client_id" este o cheie externă care referențiază coloana „id" din tabelul „clienți". Aceasta garantează că fiecare comandă aparține unui client existent.

Comportamentul la ștergere sau actualizare este configurabil prin acțiuni referențiale. CASCADE propagă modificarea: dacă un client este șters, toate comenzile sale sunt șterse automat. SET NULL setează cheia externă la NULL. RESTRICT (sau NO ACTION) împiedică ștergerea părintelui dacă există copii. Alegerea acțiunii corecte depinde de logica de business.

Relațiile între tabele se clasifică în trei tipuri. One-to-many (unu-la-mulți) este cea mai comună: un client are multe comenzi. One-to-one (unu-la-unu): un utilizator are un singur profil detaliat. Many-to-many (mulți-la-mulți) se implementează printr-un tabel intermediar: un student poate fi înscris la mai multe cursuri, iar un curs are mai mulți studenți.

În MySQL/MariaDB, cheile externe funcționează doar cu motorul InnoDB. Definirea lor se face cu CONSTRAINT FOREIGN KEY la crearea tabelului sau prin ALTER TABLE. Este important să creezi indexuri pe coloanele cu chei externe pentru a accelera JOIN-urile. În aplicații PHP, validarea la nivel de bază de date prin chei externe este un strat suplimentar de protecție pe lângă validarea din cod.