Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные работы БД.doc
Скачиваний:
149
Добавлен:
18.05.2015
Размер:
5.33 Mб
Скачать
  1. Лабораторная работа №4. Ограничения

Цель работы

Изучить используемые в Firebird типы ограничений. Получить навыки использования программы "IBExpert" для создания, изменения и удаления ограничений. Изучить SQL-операторы для работы с ограничениями.

Исходные данные

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

Используемые программы

Все операции выполняются с помощью приложения "IBExpert". Отчет создается в редакторе " Microsoft Word".

Теоретические сведения

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

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

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

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

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

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

  4. Ограничения атрибутов (Checks).

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

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

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

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

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

Упрощенный синтаксис задания ограничений при создании поля приведен ниже (использование элемента <ограничение поля>).

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

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

{{PRIMARY KEY | UNIQUE } (<столбец> [, <столбец>]…)

| FOREIGN KEY (<столбец> [, <столбец>]…)

REFERENCES <Другая_Таблица> (<столбец> [, <столбец>]…)

[ON DELETE {NO ACTION | CASCADE | SET DEFAULT | SET NULL}]

[ON UPDATE {NO ACTION | CASCADE | SET DEFAULT | SET NULL}]

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

}

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

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

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

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

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

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

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

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

Пример задания ограничения первичного ключа при создании таблицы:

CREATE TABLE REFCTR

(

CODCTR INTEGER NOT NULL,

NAME CHAR(30),

FULLNAME CHAR(60),

CAPITAL CHAR(15),

DESCR BLOB,

CONSTRAINT PK_REPCTR PRIMARY KEY (CODCTR)

);

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

ALTER TABLE Customer

ADD CONSTRAINT PK_Customer PRIMARY KEY (Cust_No);