Primary Key
Baze de DatePrimary key (cheie primară) este o coloană sau un set de coloane dintr-un tabel de bază de date care identifică unic fiecare rând. Cheia primară nu permite valori NULL sau duplicate. De obicei este un câmp auto-increment de tip integer (id) sau un UUID. Cheia primară creează automat un index clustered, fiind esențială pentru performanța și integritatea datelor.
Cheia primară (primary key) este conceptul fundamental al designului bazelor de date relaționale. Fiecare tabel ar trebui să aibă o cheie primară care identifică unic fiecare înregistrare, asigurând integritatea și organizarea datelor.
Există două abordări principale pentru alegerea cheii primare. Cheile surogat sunt valori generate artificial, fără semnificație de business — cel mai comun exemplu fiind coloana „id" cu auto-increment. Cheile naturale folosesc date existente cu semnificație (de exemplu, CNP-ul pentru persoane sau codul EAN pentru produse). În practică, cheile surogat sunt preferate deoarece sunt stabile, compacte și nu depind de regulile de business.
Tipurile de date folosite pentru chei primare influențează performanța. INTEGER auto-increment este cea mai eficientă opțiune pentru majoritatea cazurilor: ocupă puțin spațiu, se indexează rapid și se generează secvențial. BIGINT este necesar pentru tabele foarte mari (peste 2 miliarde de rânduri). UUID (CHAR(36) sau BINARY(16)) este util în sisteme distribuite unde mai multe servere generează înregistrări simultan, dar ocupă mai mult spațiu și fragmentează indexul.
În MySQL și MariaDB, cheia primară creează automat un index clustered, ceea ce înseamnă că datele fizice ale tabelului sunt organizate în ordinea cheii primare. Acest lucru face interogările după cheia primară extrem de rapide (lookup direct), dar inserările cu chei non-secvențiale (precum UUID-uri random) pot cauza fragmentare și degradare a performanței.
Cheile primare compuse (composite keys) utilizează mai multe coloane împreună pentru a identifica un rând. Sunt utile în tabele de legătură many-to-many (de exemplu, un tabel user_roles cu cheia primară pe user_id + role_id). Deși funcționale, cheile compuse pot complica join-urile și sunt mai greu de utilizat în API-uri și URL-uri.