![](/user_photo/2706_HbeT2.jpg)
- •Лабораторная работа №1. Операции с базой данных
- •Ход работы
- •Создание базы данных
- •Регистрация базы данных
- •Подключение к базе данных
- •Удаление базы данных
- •Извлечение метаданных
- •Резервное копирование и восстановление
- •Отчет о выполнении работы
- •Лабораторная работа №2. Домены
- •Домены (Domains)
- •Задание
- •Ход работы
- •Отчет о выполнении работы
- •Лабораторная работа №4. Ограничения
- •Ограничение первичного ключа (Primarykey)
- •Ограничения уникальности (Unique)
- •Ограничения внешнего ключа (Foreignkeys)
- •Ограничения атрибутов (Checks)
- •Задание
- •Ход работы
- •Отчет о выполнении работы
- •Лабораторная работа №5. Триггеры, генераторы, исключения
- •Бизнес-правила
- •Триггеры (Triggers)
- •Исключения (Exceptions) и обработка ошибок
- •Операторы языка хранимых процедур и триггеров
- •If … then … else
- •Задание
- •Ход работы
- •Отчет о выполнении работы
- •Организация доступа к данным
- •TibDatabase
- •Подсоединение к бд
- •TibTransaction
- •Датасеты
- •IbDataSet
- •Буферизация записей
- •Обновление данных
- •Перебор записей
- •Master-Detail
- •Locate (поиск)
- •Работа с blob
- •Jpeg в Blob
- •Blob и dbGrid
- •IbTable
- •Почему компонент ibTable не рекомендуют?
- •IbQuery
- •Параметризированные запросы
- •Фильтрация
- •IbTable
- •IbDataSet, ibQuery
- •OnFilterRecord
- •IbUpdateSql
- •IbUpdateSqlw
- •IbStoredProc
- •EibError
- •IbDatabaseInfo
- •IbsqlMonitor
- •IbEvents
- •IbExtract
- •IbConnectionBroker
- •IbScript
- •IbsqlParser
- •IbDatabaseIni
Ограничения уникальности (Unique)
Используются для гарантии уникальности одного или нескольких полей записи. Единственное отличие от ограничения первичного ключа – возможность задания для таблицы нескольких таких ограничений.
Пример задания ограничения уникальности:
ALTER TABLE Employee
ADD CONSTRAINT Unique_Phone UNIQUE (Phone);
Ограничения внешнего ключа (Foreignkeys)
Эти ограничения используются для определения связей между таблицами. Они гарантируют соответствие значений полей одной таблицы значениям ключевых полей в другой таблице. Такие ограничения могут предотвратить стирание данных из главной таблицы, на которые имеются ссылки в подчиненной таблице.
При определении внешнего ключа автоматически генерируется индекс.
Пример задания ограничения внешнего ключа при создании таблицы:
CREATE TABLE REFREG
(
CODCTR INTEGER NOT NULL,
CODREG INTEGER NOT NULL,
NAMEREG CHAR(40),
CENTER CHAR(25),
DESCR BLOB,
CONSTRAINT PK_REFREG PRIMARY KEY (CODCTR, CODREG),
CONSTRAINT FK_REFREG
FOREIGN KEY (CODCTR) REFERENCES REFCTR (CODCTR)
ON DELETE CASCADE
ON UPDATE CASCADE
);
Пример задания ограничения внешнего ключа при изменении таблицы:
ALTER TABLE Book
ADD CONSTRAINT FK_Book
FOREIGN KEY (B_PubNo) REFERENCES Publisher (B_NO);
В отличие от полей первичных ключей, в полях, которые являются внешним ключом, могут допускаться пустые значения. Эта возможность необходима для разрешения взаимных ссылок и возможности хранить в таблице иерархические структуры, когда корневые узлы содержат NULL.
Важный момент— таблица, на которую ссылается внешний ключ, уже должна быть описана в базе данных.
Для внешнего ключа система также создает индекс.
Необязательные фразы ON DELETE и ON UPDATE задают, что должно выполняться, если удаляется или обновляется соответствующая строка родительской таблицы. Можно указать один из следующих вариантов:
- NO ACTION — ничего не происходит. Это вариант по умолчанию, т. е., если вы для внешнего ключа не укажете предложение ON DELETE и ON UPDATE, никаких действий выполняться не будет. Это хорошее основание получать исключения базы данных практически на пустом месте. Вам самим придется как-то приводить в соответствие состояние строк дочерней таблицы после удаления (а точнее, перед удалением) строки родительской таблицы;
- CASCADE — все строки дочерней таблицы, содержащие внешние ключи, имеющие те же значения, что и первичный (уникальный) ключ удаленной или измененной строки родительской таблицы, будут автоматически удалены или изменены в базе данных. Чаще всего при проектировании баз данных используется именно этот вариант;
- SET DEFAULT— значения столбцов внешнего ключа в соответствующих строках дочерней таблицы устанавливаются в заданные для них значения по умолчанию;
- SET NULL — значения столбцов внешнего ключа в соответствующих строках дочерней таблицы устанавливаются в null. Тоже не самое плохое решение, хотя, скорее всего потом нужно будет как-то наводить порядок в базе данных.
Ограничения атрибутов (Checks)
Это условия, налагаемые на возможные значения полей. Ограничения атрибутов гарантируют истинность заданного правила для каждой записи в таблице.
В ограничениях атрибутов можно использовать большой набор операторов для проверки вставляемых и изменяемых значений. Полный синтаксис создания ограничения атрибутов здесь не приводится из-за своего большого размера.
При использовании ограничений атрибутов следует помнить, что сложные и очень большие условия проверки могут значительно замедлить операции вставки и обновления записей.
Пример ограничения атрибутов, которое гарантирует, что поле "Num" будет иметь значение от 0 до 4:
ALTER TABLE Property
ADD CONSTRAINT
Check_Invalid_Number CHECK (Num >= 0 AND Num <= 4);
Ограничения атрибутов реализованы при помощи системных триггеров.