Определение проверочных ограничений
Определение уникального столбца
Ограничение 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 к одному и тому же столбцу. В этом случае они будут применены в той последовательности, в какой они указаны в инструкции.