Ограничение целостности 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 (Наименование))
Ограничение целостности check задает диапазон возможных значений для столбца. Например, если в столбце хранится процентное значение, необходимо гарантировать, что оно будет лежать в пределах от 0 до 100. Для этого можно использовать тип данных, допускающий хранение целых значений в диапазоне от 0 до 255, совместно с ограничением целостности CHECK, которое будет обеспечивать соответствующую проверку значений.
Преимуществом ограничения целостности CHECK является возможность определения для одного столбца множества правил контроля значений.
В основе ограничения целостности check лежит проверка логического выражения, которое возвращает значение true (ИСТИНА) либо значение false (ЛОЖЬ). ЕСЛИ возвращается значение true, то ограничение целостности выполняется и операция изменения или вставки данных разрешается. Когда же возвращается значение false, то операция изменения или вставки данных отменяется.
Например, для обеспечения правильности задания значения для столбца Семестр в таблице Учебный_план (оно должно находиться в диапазоне от 1 до 10) можно использовать следующее логическое выражение:
((Семестр >= 1) OR (Семестр <= 10))
Ограничение целостности при этом может быть задано на уровне столбца:
Семестр INTEGER NOT NULL CHECK ((Семестр >= 1) OR (Семестр <= 10))
или на уровне таблицы:
CHECK ((Семестр >= 1) OR (Семестр <= 10))
Как уже было сказано, допускается применение нескольких ограничений check к одному и тому же столбцу. В этом случае они будут применены в той последовательности, в какой указаны в инструкции.
Определение значения по умолчанию
При вводе записи (строки) в таблицу каждый столбец должен содержать какое-либо значение. Если значение для столбца не указано, то столбец заполняется значениями null (конечно, если для него разрешено хранение значений null). Однако это нежелательно. Наилучшим решением в подобных ситуациях может быть определение для столбца значений по умолчанию. Например, часто «ноль» определяется как значение по умолчанию для числовых столбцов, а «п/а» (не определено) — как значение по умолчанию для символьных столбцов. Таким образом, определение для столбца значения по умолчанию гарантирует автоматическую подстановку этого значения, если при вставке новых строк значение для столбца не указано.
Использование значений по умолчанию довольно удобно, поскольку позволяет ускорить процесс ввода информации. Значительно расширяет область применения значений по умолчанию возможность вызова встроенных функций. Например, если в столбце необходимо указать дату поступления на работу, по умолчанию можно воспользоваться функцией getdate (). В этом случае, если не указана другая дата, при вводе строки в столбец дат поступления на работу будет помещаться текущая дата.
Достарыңызбен бөлісу: |