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