U dizajnu relacionih baza podataka, jedinstveni ključ ili primarni ključ je kandidat za ključ koji jedinstveno identifikuje svaku vrstu u tabeli. Jedinstveni ili primarni ključ može da se sastoji od jedne ili više kolona. Dve različite vrste u tabeli ne mogu da imaju istu vrednost u tim kolonama. U zavisnosti od dizajna, tabela može da ima proizvoljan broj jedinstvenih ključeva, ali i samo jedan primarni ključ.

Jedinstveni ključ mora da jedinstveno identifikuje sve moguće vrste koje mogu da se jave u tabeli, a ne samo trenutno postojeće. Primeri jedinstvenih ključeva su JMBG (koji identifikuje osobu) ili ISBN (koji identifikuje knjigu). Ime i prezime ne predstavljaju jedinstveni ključ osobe jer ne identifikuju osobu jedinstveno.

Primarni ključ je specijalni slučaj jedinstvenog ključa. Glavna razlika je što kod jedinstvenih ključeva implicitno NOT NULL ograničenje nije automatski osigurano dok kod primarnih ključeva jeste. Stoga vrednosti u kolonama jedinstvenog ključa mogu da imaju vrednost NULL. Još jedna razlika je u tome da se primarni ključ definiše posebnom sintaksom.

Relacioni model, izražen relacionom algebrom i relacionim računom ne pravi razliku između primarnih ključeva i ostalih tipova ključeva. Primarni ključevi su dodati u standard SQL prvenstveno da bi olakšali posao programerima.

Na jedinstvene ključeve kao i na primarne ključeve mogu da referenciraju strani ključ evi.

Definisanje primarnih ključeva uredi

Primarni ključevi su definisani u ANSI SQL стандарду, preko ograničenja PRIMARY KEY. Sintaksa za dodavanje takvog ograničenja u postojeću tabelu je u SQL:2003 definisana na sledeći način:

  ALTER TABLE <table identifier> 
      ADD [ CONSTRAINT <constraint identifier>] 
      PRIMARY KEY (<column expression> {, <column expression>}... )

Primarni ključ može da bude određen i prilikom definisanja same tabele. U SQL standardu, primarni ključ može da se sastoji od jedne ili više kolona. Svaka kolona koja učestvuje u primarnom ključu implicitno je definisana kao NOT NULL. Neki sistemi za upravljanje bazama podataka zahtevaju da kolone primarnog ključa budu i eksplicitno označene kao NOT NULL.

  CREATE TABLE table_name (
     id_col  INT,
     col2    CHARACTER VARYING(20),
     ...
     CONSTRAINT tab_pk PRIMARY KEY(id_col),
     ...
  )

If the primary key consists only of a single column, the column can be marked as such using the following syntax:

  CREATE TABLE table_name (
     id_col  INT  PRIMARY KEY,
     col2    CHARACTER VARYING(20),
     ...
  )

Definisanje jedinstvenih ključevva uredi

Definisanje jedinstvenih ključeva je sintaksno vrlo slično definisanju primarnih ključeva.

  ALTER TABLE <table identifier> 
      ADD [ CONSTRAINT <constraint identifier>] 
      UNIQUE (<column expression> {, <column expression>}... )

Likewise, unique keys can be defined as part of the CREATE TABLE SQL statement.

  CREATE TABLE table_name (
     id_col   INT,
     col2     CHARACTER VARYING(20),
     key_col  SMALLINT,
     ...
     CONSTRAINT key_unique UNIQUE(key_col),
     ...
  )
  CREATE TABLE table_name (
     id_col  INT  PRIMARY KEY,
     col2    CHARACTER VARYING(20),
     ...
     key_col  SMALLINT UNIQUE,
     ...
  )

Vidi još uredi