Теоретические сведения. Ограничения базы данных – это правила, которые проверяются при сохранении информации в базе данных

Ограничения базы данных – это правила, которые проверяются при сохранении информации в базе данных.

Главным преимуществом использования ограничений является возможность реализации проверки данных, а значит части бизнес-логики приложения, на уровне базы, т.е. централизовать ее. Это существенно упрощает разработку приложений баз данных.

В InterBase для обеспечения целостности базы данных используется четыре вида ограничений (CONSTRAINTS):

1. Ограничение первичного ключа (Primary key).

2. Ограничения уникальности (Unique).

3. Ограничения внешнего ключа (Foreign keys).

4. Контрольные ограничения (Checks).

Все четыре вида ограничений могут создаваться двумя способами:

1. На основе одного поля таблицы (одновременно при создании этого поля).

2. На основе нескольких полей (без одновременного создания поля).

Ограничения задаются либо при создании таблицы в операторе CREATE TABLE, либо добавляются позже в операторе ALTER TABLE.

Удалить ограничение можно в операторе ALTER TABLE.

Упрощенный синтаксис задания ограничений при создании поля приведен ниже.

<ограничение поля> = [CONSTRAINT Название_Ограничения]

<описание ограничения поля> [<ограничение поля>...]

<описание ограничения поля> = {

PRIMARY KEY |

UNIQUE |

REFERENCES Другая_Таблица[(Поле [, Поле...])] |

CHECK (Проверяемое_Условие)

}

Упрощенный синтаксис задания ограничений на основе нескольких полей таблицы или без одновременного создания поля имеет следующий вид:

<ограничение> = [CONSTRAINT Имя_Ограничения]

<описание ограничения> [<ограничение>...]

<Описание ограничения> = {

{PRIMARY KEY | UNIQUE} (Поле [, Поле...]) |

FOREIGN KEY (Поле [, Поле...])

REFERENCES Другая_Таблица[(Поле [, Поле...])] |

CHECK (Проверяемое_Условие)

}

Как видно из синтаксиса задания ограничений, каждое ограничение может иметь имя, записываемое после ключевого слова CONSTRAINT. Все ограничения в базе данных должны иметь уникальные имена. Если при задании ограничения не задать его имени, то оно будет назначено сервером СУБД автоматически. При выполнении лабораторных работ необходимо каждому ограничению обязательно давать имя.

1.2 Ограничение первичного ключа (Primary key)

Это ограничение обозначает, какие поля в таблице единственным образом идентифицируют каждую строку. Добавление ограничения первичного ключа заставляет сервер базы данных гарантировать, что значения, вставленные в поля первичного ключа, будут уникальны внутри таблицы. У таблицы может быть только одно такое ограничение.

Первичные ключи выполняют следующие функции:

1. Они служат средством различения отдельных записей.

2. Используются в ссылочной целостности.

3. При создании первичного ключа автоматически создается индекс, поэтому они ускоряют поиск и сортировку.

Обычно первичные ключи рекомендуется создавать для всех таблиц. Все поля первичного ключа должны быть объявлены NOT NULL.

Пример задания ограничения первичного ключа:

ALTER TABLE Customer

ADD CONSTRAINT PK_Customer PRIMARY KEY (Cust_No)2

1.2 Ограничения уникальности (Unique)

Используются для гарантии уникальности одного или нескольких полей записи. Единственное отличие от ограничения первичного ключа – возможность задания для таблицы нескольких таких ограничений.

Пример задания ограничения уникальности:

ALTER TABLE Employee

ADD CONSTRAINT Unique_Phone UNIQUE (Phone);

1.3 Ограничения внешнего ключа (Foreign keys)

Эти ограничения используются для определения связей между таблицами. Они гарантируют соответствие значений полей одной таблицы значениям ключевых полей в другой таблице. Такие ограничения могут предотвратить стирание данных из главной таблицы, на которые имеются ссылки в подчиненной таблице.

При определении внешнего ключа автоматически генерируется индекс.

Пример задания ограничения внешнего ключа:

ALTER TABLE Book ADD CONSTRAINT FK_Book

FOREIGN KEY (B_PubNo) REFERENCES Publisher (B_NO);

В отличие от полей первичных ключей, в полях, которые являются внешним ключом, могут допускаться пустые значения. Эта возможность необходима для разрешения взаимных ссылок и возможности хранить в таблице иерархические структуры, когда корневые узлы содержат NULL.

1.4 Контрольные ограничения (Checks)

Это условия, налагаемые на возможные значения полей. Контрольные ограничения гарантируют истинность заданного правила для каждой записи в таблице.

При использовании контрольных ограничений следует помнить, что сложные и очень большие условия проверки могут значительно замедлить операции вставки и обновления записей.

Пример контрольного ограничения, которое гарантирует, что значение поля "Num" будет иметь значение от 0 до 4:

ALTER TABLE Property

ADD CONSTRAINT Check_Invalid_Number

CHECK (Num >= 0 AND Num <= 4);

Контрольные ограничения реализованы при помощи системных триггеров.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: