Определение проверочных ограничений

Определение уникального столбца

Ограничение UNIQUE предназначено для того, чтобы обеспечить уникальность значений в столбце (или нескольких столбцах). Если столбцу приписан атрибут UNIQUE, это означает, что в столбце не могут содержаться два одинаковых значения.

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

Ограничение целостности UNIQUE, в отличие от PRIMARY KEY, допускает существование единственного значения NULL. При этом к значению NULL также предъявляется требование уникальности, поэтому в столбце с ограничением целостности UNIQUE допускается существование единственного значения NULL.

Таким образом, ограничение UNIQUE используется в том случае, когда столбец не входит в состав первичного ключа, но, тем не менее, его значение всегда должно быть уникальным. Например, для таблицы «дисциплины» первичный ключ строится по номеру дисциплины ID_Дисциплина, введенному для сокращения объема первичного ключа и времени поиска по нему ( объем ключа по столбцу типа INTEGER много меньше объема ключа по символьному полю). Однако и название дисциплины (столбец Наименование) должно быть уникальным, для чего ему приписан атрибут UNIQUE:

CREATE TABLE Дисциплины

(ID_Дисциплина INTEGER NOT NULL PRIMARY KEY,

Наименование VARCHAR (20) NOT NULL UNIQUE)

 

Уникальность может быть определена на уровне таблицы:

 

CREATE TABLE Дисциплины

(ID_Дисциплина INTEGER NOT NULL,

Наименование VARCHAR (20) NOT NULL,

PRIMARY KEY (ID_Дисциплина),

UNIQUE (Наименование))

 

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

Преимуществом ограничения целостности CHEСK является возможность определения для одного столбца множества правил контроля значений.

В основе ограничения целостности CHEСK лежит проверка логического выражения, которое возвращает значение TRUE (истина) либо значение FALSE (ложь). Если возвращается значение TRUE, то ограничение целостности выполняется, и операция изменения или вставки данных разрешается. Когда же возвращается значение FALSE, то операция изменения или вставки данных отменяется.

Например, для обеспечения правильности задания значения для столбца Семестр в таблице «Учебный_план» ( оно должно находиться в диапазоне от1 до 10) можно использовать следующее логическое выражение:

((Семестр >= 1) OR (Семестр <=10 ))

Ограничение целостности при этом может быть задано на уровне столбца:

Семестр INTEGER NOT NULL CHEСK ((Семестр >=1) OR (Семестр <=10 ))

Или на уровне таблицы:

CHEСK ((Семестр >=1) OR (Семестр <=10 ))

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