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

Јединствени кључ мора да јединствено идентификује све могуће врсте које могу да се јаве у табели, а не само тренутно постојеће. Примери јединствених кључева су ЈМБГ (који идентификује особу) или 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, ... )

Види још Глобални јединствени идентификатор Природни кључ

Категорија:База података