пятница, 11 января 2019 г.

Ограничение UNIQUE

Ограничение UNIQUE

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

SQL Server / Oracle / Access

Пример создания таблицы SQL с ограничением UNIQUE:
CREATE TABLE Student
( Kod_stud   integer NOT NULL UNIQUE,
Fam   char (30) NOT NULL UNIQUE,
Adres    char (50),
Ball  decimal);
Когда обьявляется поле Fam уникальным, две Смирновых Марии могут быть введены различными способами — например,  Смирнова Мария и  Смирнова М. Столбцы (не  первичные  ключи), чьи значения требуют уникальности,  называются ключами-кандидатами или уникальными ключами. Можно определить группу полей как уникальную с помощью команды  ограничения таблицы — UNIQUE.  Объявление группы полей уникальной, отличается от объявления уникальными индивидуальных  полей,  так как это комбинация значений,  а не просто индивидуальное значение, которое обязано быть уникальным. Уникальность группы заключается в том, что пары строк со значениями столбцов «a», «b» и «b», «a» рассматривались отдельно одна от другой.
Если база данных определяет, что каждая специальность принадлежит одному и только одному факультету, то каждая комбинация кода факультета(Kod_f) и кода специальности(Kod_spec) в таблице Spec должна быть уникальной. Например:
CREATE TABLE Spec
( Kod_spec integer NOT NULL,
Kod_f integer NOT NULL,
Nazv_spec char (50) NOT NULL,
UNIQUE (Kod_spec, Kod_f));
Оба поля в ограничении таблицы UNIQUE все еще используют ограничение столбца — NOT NULL.  Если бы использовалось ограничение столбца UNIQUE для поля Kod_spec, такое ограничение таблицы было бы необязательным.  Если значения поля Kod_spec различно для каждой строки, то не может быть двух строк с идентичной комбинацией значений полей Kod_spec и Kod_f.  Ограничение таблицы UNIQUE наиболее полезно, когда индивидуальные поля не обязательно должны быть уникальными.

MySQL UNIQUE

Пример создания таблицы Persons в MySQL с ограничением UNIQUE:
CREATE TABLE Persons (
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
UNIQUE (P_Id)
);

Удалить ограничение UNIQUE

Если после создания ограничения UNIQUE и в том случае, когда ограничение UNIQUEне имеет смысла, UNIQUE можно удалить. Для этого используйте следующий SQL:
SQL Server / Oracle / MS Access:
ALTER TABLE table_name DROP CONSTRAINT uc_PersonID;
MySQL:
ALTER TABLE table_name DROP INDEX uc_PersonID;