logo



Cheia primară

Cheia primară este constituită dintr-un câmp sau mai multe câmpuri și trebuie să îndeplinească simultan condițiile:

  • Valorile reținute de coloana care alcătuiește cheia primară trebuie să fie distincte. În cazul în care cheia este alcătuită din mai multe coloane, pentru a avea două chei distincte, este necesar ca acestea să fie diferite pentru cel puțin o coloană dintre ele. Tentativa de a înscrie în tabel o înregistrare care are cheia primară identică cu alta, existentă în tabel, este sancționată cu eroare.
  • Câmpul/câmpurile care alcătuiesc cheia primară trebuie să aibă o lungime fixă. De exemplu, nu poate fi cheie primară un câmp de tip TEXT.
  • În cheia primară nu avem voie cu null.

Cheia primară asigură accesul foarte rapid la înregistrarea de cheie dată. Înregistrările unui tabel se rețin în ordinea introducerii lor. Când un câmp este declarat cheie primară, se construiește un tabel auxiliar, invizibil pentru utilizator, în care pentru fiecare valoare din câmpul cheie primară se reține poziția rândului care are acea cheie. În acel tabel, cheile sunt în ordine crescătoare. Pentru a găsi o cheie, se folosește căutarea binară care are complexitatea O(log(n)). Căutarea clasică se efectuează în O(n).

Pentru a preciza că o anumită coloană este cheie primară se folosește, atunci când se descrie coloana, specificatorul PRIMARY KEY.

Dacă cheia primară este alcătuită din mai multe câmpuri, după descrierea coloanelor, se utilizează specificatorul PRIMARY KEY sub forma:

PRIMARY KEY (nume_coloană1, nume_coloană2, ...)

Cheia unică (UNIQUE KEY) poate fi pusă doar pe coloane separate. Coloana cu specificatorul UNIQUE KEY trebuie să conțină numai valori distincte. Dacă în coloana respectivă se va încerca o inserare cu o valoare care există deja, se va semnala eroare. Nu poate fi cheie unică o coloană de tip TEXT (tip de lungime variabilă).

Cheia primară poate fi multiplă, spre deosebire de constrângerea UNIQUE, care poate fi pusă doar pe coloane separate. Pentru a înțelege diferența, vom lua următorul exemplu. Cartea de Identitate este unic determinată de Serie și Număr.

Tabela folosind cheia primară compusă, Serie și Număr definește combinații unice de valori, precum mai jos :

PK_Serie PK_Numar
RT 111111
RT 111112
GN 111111

Deoarece constrângerea UNIQUE se referă la coloane separate și nu  la combinații de coloane precum cheile primare permit, în cazul în care am fi definit coloanele de mai sus folosind clauza UNIQUE, am fi obținut o eroare la inserarea datelor:

UQ_Serie UQ_Numar
RT 111111
RT – NOT UNIQUE ERROR 111112
GN 111111 – NOT UNIQUE ERROR



Copyright © 2016 Kalytheo