Создание многотабличной реляционной базы данных
Ограничения
В этой главе об ограничениях говорилось как о механизме, благодаря которому в табличный столбец могут быть введены только данные из домена этого столбца. Ограничение (constraint) – это правило, за исполнением которого следит СУБД. После определения базы данных можно создавать определения таблиц с заданными в этих определениях ограничениями (такими, например, как NOT NULL). Благодаря СУБД вы никогда не сможете успешно выполнить никакой транзакции, если она нарушает какое-либо ограничение.
Помни:
В вашем распоряжении имеются ограничения трех разных видов.
- Ограничение столбца накладывает определенное условие на столбец в таблице.
- Ограничение таблицы – это ограничение, относящееся ко всей таблице.
- Утверждением является ограничение, которое может относиться к более чем одной таблице.
Ограничения столбцов
Пример ограничения столбца показан в следующем операторе языка определения данных DDL:
CREATE TABLE CLIENT ( | ||
ClientName | CHARACTER (30), | NOT NULL,, |
Address1 | CHARACTER (30), | |
Address2 | CHARACTER (30), | |
City | CHARACTER (25), | |
State | CHARACTER (2), | |
PostalCode | CHARACTER (10), | |
Phone | CHARACTER (13), | |
Fax | CHARACTER (13), | |
ContactPerson | CHARACTER (30)); | |
); |
В этом операторе ограничение NOT NULL, примененное к столбцу ClientName, указывает на то, что этот столбец не может принимать неопределенное значение. Другое ограничение, которое можно применять к столбцу, – это UNIQUE. Оно указывает на то, что каждое значение, находящееся в столбце, должно быть уникальным. Ограничение CHECK (проверка) особенно полезно тем, что может принимать в качестве аргумента любое корректное выражение.
Рассмотрим следующий пример:
CREATE TABLE TESTS ( | ||
TestName | CHARACTER (30) | NOT NULL, |
StandardCharge | NUMBER (6.2) | |
CHECK (StandardCharge >= 0.0 | ||
AND StandardCharge <= 200.0) | ||
); |
В VetLab стандартная плата за проведение анализа всегда должна быть больше или равна нулю. Кроме того, ни один из стандартных анализов не стоит больше 200 долларов. Благодаря ограничению CHECK в столбец StandardCharge не попадет никакое значение, находящееся вне диапазона 0 <= STANDARD_CHARGE <= 200. А вот еще способ установить то же самое ограничение:
CHECK (StandardCharge BETWEEN 0.0 AND 2 00.0)