У дизајну релационих база података, јединствени кључ или примарни кључ је кандидат за кључ који јединствено идентификује сваку врсту у табели. Јединствени или примарни кључ може да се састоји од једне или више колона. Две различите врсте у табели не могу да имају исту вредност у тим колонама. У зависности од дизајна, табела може да има произвољан број јединствених кључева, али и само један примарни кључ.

Јединствени кључ мора да јединствено идентификује све могуће врсте које могу да се јаве у табели, а не само тренутно постојеће. Примери јединствених кључева су ЈМБГ (који идентификује особу) или ISBN (који идентификује књигу). Име и презиме не представљају јединствени кључ особе јер не идентификују особу јединствено.

Примарни кључ је специјални случај јединственог кључа. Главна разлика је што код јединствених кључева имплицитно NOT NULL ограничење није аутоматски осигурано док код примарних кључева јесте. Стога вредности у колонама јединственог кључа могу да имају вредност NULL. Још једна разлика је у томе да се примарни кључ дефинише посебном синтаксом.

Релациони модел, изражен релационом алгебром и релационим рачуном не прави разлику између примарних кључева и осталих типова кључева. Примарни кључеви су додати у стандард SQL првенствено да би олакшали посао програмерима.

На јединствене кључеве као и на примарне кључеве могу да референцирају страни кључ еви.

Дефинисање примарних кључева

уреди

Примарни кључеви су дефинисани у ANSI SQL стандарду, преко ограничења PRIMARY KEY. Синтакса за додавање таквог ограничења у постојећу табелу је у SQL:2003 дефинисана на следећи начин:

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

Примарни кључ може да буде одређен и приликом дефинисања саме табеле. У SQL стандарду, примарни кључ може да се састоји од једне или више колона. Свака колона која учествује у примарном кључу имплицитно је дефинисана као NOT NULL. Неки системи за управљање базама података захтевају да колоне примарног кључа буду и експлицитно означене као 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),
     ...
  )

Дефинисање јединствених кључевва

уреди

Дефинисање јединствених кључева је синтаксно врло слично дефинисању примарних кључева.

  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,
     ...
  )

Види још

уреди