Пример:
ALTTER TABLE CITY ADD CONSTRAINT CITY_uniq
UNIQUE (CITYNAME);
Названия городов, только уникальные значения.
Ограничения на вторичный ключ
Подобный вид ограничений мы уже рассматривали, когда изучали первичные и вторичные ключи. Смысл данного ограничения в том, что в колонке некоторой таблицы (вторичный ключ) могут находится только значения, которые есть в другой, основной таблице в колонке первичного ключа.
Синтаксис
ALTER TABLE for_TABLE
ADD CONSTRAINT fk_const_NAME
FOREIGN KEY (fk_column)
REFERENCES primary_talbe (pk_column);
Здесь for_TABLE, fk_column – таблица, колонка, куда устанавливается ограничение. Проверка значений происходит в таблице primary_talbe и колонке pk_column.
Пример
Здесь для таблицы MAN колонки CITYCODE устанавливается ссылочное ограничение по колонке CITYCODE с таблицей CITY, где CITY является главной таблицей.
ALTER TABLE MAN
ADD CONSTRAINT fk_MAN_CITY_CODE
FOREIGN KEY (CITYCODE)
REFERENCES CITY (CITYCODE);
Ограничение CHECK на вставку и изменение данных
– вычитание;
Синтаксис
ALTER TABLE TABLENAME ADD CONSTRAINT CHECK_NAME
CHECK (condition);
Здесь condition – условие, CHECK_NAME – наименование ограничения, TABLENAME – имя таблицы.
Пример
Ограничение в таблице MAN на возраст (YEAROLD) больше 16 лет:
ALTER TABLE MAN ADD CONSTRAINT CHECK_YEAROLD_MAN
CHECK (YEAROLD> 16);
Важные замечания
Ограничение уникальности можно также создавать для нескольких колонок таблицы, это делается следующим образом:
ALTTER TABLE CITY ADD CONSTRAINT CITY_uniq
UNIQUE (CITYNAME, CITYCODE);
При этом отдельно необходимо контролировать вставку пустых значений для соответствующих полей таблицы.
Существуют дополнительные опции для создания ограничений ссылочной целостности:
• On delete cAScade – автоматическое удаление связанных строк по внешнему ключу;
• On delete NULL – значение внешнего ключа устанавливается в NULL.
При создании множества ограничений CHECK необходимо, чтобы между ними не было конфликтов, то есть чтобы правила не противоречили друг другу.
Условие в ограничении CHECK может ссылаться на любой столбец таблицы, но не может ссылаться на столбцы другой таблицы.
Вопросы учеников
Первичный ключ в таблице может быть только один, ограничений на уникальность может быть много. В таблице в поле с ограничением уникальности допускается вставка пустых значений. Также для первичного ключа создается специальный индекс (pk).
Вы получите сообщение об ошибке, и ограничение не будет добавлено.
Нет, некоторые виды ограничений можно создавать только для простых типов полей.
Контрольные вопросы и задания для самостоятельного выполнения
1. Добавьте ограничение для уникальных значений на колонки PHONENUM таблицы AUTO.
2. Добавьте ограничение на вставку пустых значений для колонки YEAROLD в таблице MAN.
3. Добавьте ограничение CHECK для колонки YEAROLD в таблице MAN, чтобы YEAROLD было меньше 100.
4. Добавьте ограничение ссылочной целостности для двух таблиц – AUTO и MAN.
Шаг 10. Индексы
Введение
Индексы – это специальные ссылочные массивы в базах данных. Назначение индексов – ускорение поиска данных, процессов сортировки данных. Обычно индексы увеличивают производительность запросов к базе данных.
Теория и практика
Индексы работают по принципу b-tree, то есть сбалансированной древовидной структуры.