Требования уникальности

Ключевые поля

Условия целостности

Условия целостности обеспечивают правильность и согласованность данных в реляционных базах данных. В основе целостности данных в реляционных базах данных лежит понятие ссылочной целостности. Ссылочная целостность складывается из целого ряда условий целостности, каждое из которых играет свою роль.

Ключевое полеили ключ (primary key) – это термин, используемый для обозначения столбца или нескольких столбцов, однозначно идентифицирующих каждую строку в таблице. Обычно ключ задается одним столбцом в таблице, но можно задать и сложный ключ на основе комбинации значений нескольких столбцов. Например, в таблице с информацией о служащих логично выбрать в качестве ключевых полей столбец с идентификационным кодом служащего или столбец с присвоенным служащему табельным номером. Целью является наличие для каждой записи в таблице уникального ключа, подобного персональному идентификационному коду. Поскольку в таблице с информацией о служащих, скорее всего не должно быть более одной записи для каждого из служащих, табельный номер служащего будет вполне подходящим ключом. Ключ таблице назначается при ее создании.

В следующем примере ключевым полем в таблице EMPLOYEE_TBL назначается поле EMP_ID:

CREATE TABLE EMPLOYEE_TBL (

EMP_ID CHAR(9) NOT NULL PRIMARY KEY,

EMPJSIAME VARCHAR(40) NOT NULL,

EMP_ST_ADDR VARCHAR(20) NOT NULL,

EMP_CITY VARCHAR(15) NOT NULL,

EMP_ST CHAR(2) NOT NULL,

EMP_ZIP NUMBER(5) NOT NULL,

EMP_PHONE NUMBER(10) NULL,

EMP_PAGER NUMBER(10) NULL);

В этом случае ключ задается при создании таблицы и является по своей сути ограничивающим условием. Можно задать ключ и непосредственно как ограничивающее условие, например, следующим образом.

CREATE TABLE EMPLOYEE_TBL

(EMP_ID CHAR(9) NOT NULL,

EMP_NAME VARCHAR2(40) NOT NULL,

EMP_ST_ADDR VARCHAR2(20) NOT NULL,

EMP_CITY VARCHAR2(15) NOT NULL,

EMP_ST CHAR(2) NOT NULL,

EMP_ZIP NUMBER(5) NOT NULL,

EMP_PHONE NUMBER(10) NULL,

EMP_PAGER NUMBER(10) NULL,

PRIMARY KEY (EMP_ID));

В этом примере ограничивающее условие ключа указано в операторе CREATE TABLE через запятую после определения всех столбцов таблицы.

Ключ, составленный из нескольких столбцов, можно задать одним из следующих способов.

  • CREATE TABLE PRODUCTS (

PROD_ID VARCHAR(10) NOT NULL,

VEND_ID VARCHAR(10) NOT NULL,

PRODUCT VARCHAR(30) NOT NULL,

COST NUMBER(8,2) NOT NULL,

PRIMARY KEY (PROD__ID, VEND_ID));

  • ALTER TABLE PRODUCTS

ADD CONSTRAINT PRODUCTS_PK PRIMARY KEY (PROD_ID, VEND_ID);

Ограничивающее требование уникальностидля столбца в таблице подобно ключу в том смысле, что значение в соответствующем столбце должно быть уникальным для каждой строки. Назначив один столбец ключевым, вы можете задать требование уникальности для другого, хотя последний и не будет использоваться в качестве ключа.

Рассмотрим следующий пример.

CREATE TABLE EMPLOYEE_TBL

(EMP_ID CHAR(9) NOT NULL PRIMARY KEY,

EMP_NAME VARCHAR(40) NOT NULL,

EMP_ST_ADDR VARCHAR(20) NOT NULL,

EMP_CITY VARCHAR(15) NOT NULL,

EMP_ST CHAR(2) NOT NULL,

EMP_ZIP NUMBER(5) NOT NULL,

EMP_PHONE NUMBER(10) NULL UNIQUE,

EMP_PAGER NUMBER(10) NULL);

Ключевым в данном примере является EMP_ID и это значит, что столбец с табельным номером служащего будет использоваться для того, чтобы обеспечить уникальность всех записей в таблице. Именно на ключевой столбец обычно ссылаются в запросах или при связывании таблиц. Столбцу EMP_PHONE назначен атрибут UNIQUE, и это значит, что никакие двое служащих не должны иметь одинаковые телефонные номера. Между этими двумя атрибутами нет большой разницы за исключением того, что ключ используется для упорядочения данных таблицы и для связывания таблиц.