Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СУБД (Лазицкас Екатерина Александровна).docx
Скачиваний:
30
Добавлен:
25.02.2016
Размер:
104.02 Кб
Скачать

InterBase

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

Столбцы, базирующиеся на доменах, наследуют все характеристики домена, некоторые из них, кроме определения типа данных, могут быть переопределены в локальных описаниях столбцов.

CREATE DOMAIN <имя_домена> [as] <тип_данных>

[DEFAULT {literal|NULL|USER}]

[NOT NULL] [CHECK (<dom_condition>)] – задает ограничение (описание контроля данных при вводе и изменении);

Для задания условий используются следующие ключевые слова:

VALUE – подразумевает значение, вводимое в поле (IS NULL, IS NOT NULL, BETWEEN AND, LIKE, OR, IN и т.д.)

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

Пример:

CREATEDOMAINUSERNAMEASVARCHAR(20)DEFAULTUSER;

CREATE DOMAIN MONTH AS SMALLINT CHECK (VALUE BETWEEN 1 AND 2);

CREATE DOMAIN PVEIGHT AS NUMERIC (12, 2) DEFAULT NULL CHECK ((VALUE IS NULL) OR (VALUSE>1.25));

ALTER DOMAIN– для изменения команд домена. С помощью её можно изменять характеристики домена, кроме типа данных и установокNOTNULL. Сделанные изменения воздействуют на атрибуты всех таблиц, где использовался измененный домен.

ALTER DOMAIN <имя_домена> {[SET DEFAULT {literal|NULL|USER}]

[DROP DEFAULT] [ADD [CONSTRAINT] CHECK (<dom_condition>)] [DROP CONSTRAINT]};

Пример:

ALTER DOMAIN USERNAME SET DEFAULT ‘***’;

DROP DOMAIN– для удаления команды домена.

CREATE TABLE– создание таблицы. Упрощенный синтаксис:

CREATETABLE<имя_таблицы> (описание полей:NAME{<тип_данных>|COMPUTEDBY(выражение)|<имя_домена>} [DEFAULT{literal|NULL|USER}] [NOTNULL] [<ограничение столбца>]);

COMPUTEDBY(выражение) – выражение для вычисляемого столбца. Значения вычисляемых столбцов рассчитывается всякий раз при обращении к ним. Выражение может быть любым допустимым вInterBaseвыражением, возвращающим чототам простого типа. Например, допустимо выражение с предложениемSELECT

Ограничение столбца - описывает ограничение логической целостности столбца. Конструкция ограничения столбца имеет следующий синтаксис:

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

{UNIQUE|PRIMARYKEY|CHECK(<условие>) |REFERENCES<имя_другой_таблицы> [(список атрибутов)] [ONDELETE{NOACTION|CASCADE|SETDEFAULT|SETNULL}] [ONUPDATE{NOACTION|CASCADE|SETDEFAULT|SETNULL}]}

Пример:

[CONSTRAINT<имя>]

{{PRIMARYKEY|UNIQUE} (<имя_атрибута>) |FOREIGNKEY(имя атрибута)REFERENCE<имя_другой_таблицы> (список атрибутов) [ONDELETE{NOACTION|CASCADE|SETDEFAULT|SETNULL}] [ONUPDATE{NOACTION|CASCADE|SETDEFAULT|SETNULL}]}

Индексы

При выполнении запроса InterBaseопределяет список индексов, связанных с данной таблицей. Затем устанавливает, что является более эффективным, просмотреть всю таблицу или для обработки запросов использует существующий индекс. ЕслиInterBaseрешает использовать индекс, то поиск ведется сначала по ключевым значениям в индексе, а затем по указателям переходит к необходимой строке.

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

Использование индексов для небольших по объему таблиц ваааще не оправдано. Если имеется индекс по группе полей, то поиск по первому полю из группы может прямо использовать этот индекс и нет смысла по нему делать отдельный индекс. Если поиск по каким-либо полям редок, то построение по ним индексов не оправдано.

Команды создания индексов:

CREATE [UNIQUE] [ASC|DESC] INDEX <имя_индекса> ON <имя_таблицы> (список полей);

InterBaseавтоматически генерирует индексы системного уровня по столбцам или набору столбцов, когда таблицы определяются с конструкцией ограниченияPRIMARYKEY,FOREIGNKEY,UNIQUE.

Пример:

CREATE UNIQUE ASC INDEX id ON Student (student_id);

Команда изменения индекса:

ALTER INDEX <имя_индекса> {ACTIVE|INACTIVE};

Восстановление индекса:

SET STATISTICS INDEX <имя_индекса>;

Удаление индекса:

DROP INDEX <имя_индекса>;

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

Команда создания исключения:

CREATE EXCEPTION <имя> ‘<текст сообщения>’;

Команда изменения исключения:

ALTER EXCEPTION <имя> ‘<новое сообщение>’;

Удаление исключения:

DROP EXCEPTION <имя>;