Домены
Перед тем как создавать таблицы, которые ссылаются на домены необходимо задать описание доменов при помощи команды create domain. В результате ее выполнения создается, на который можно ссылаться в командах создания и модификации таблиц. Столбцы базирующиеся на доменах наследуют все его характеристики, причем часть из них может быть переопределена в локальных описаниях столбцов.
Замечание: тип данных не может быть переопределен при использовании домена в описании таблицы.
Синтаксис описания домена:
create domain <name_domain> as <data_type>
[Default {literal | Null | User}]
[Not null] [Check (<dom_condition>)];
Name_ domain - имя создаваемого домена; data_type – тип данных;
[Default {literal | Null | User}] – задание значения по умолчанию – значение по умолчанию присваивается соответствующему атрибуту при создании новой строки в таблице, если его значение не указано явно. Параметр literal указывает значение явно, Null – оставляет значение пустым, User – имя пользователя создавшего запись.
Для полей типа Data можно указывать now, тогда будет вводиться текущая дата.
[Not null] – запрещает ввод пустых значений.
[Check (<domain_condition)] – задает ограничения (описание контроля данных при вводе и изменении). Для задания условия используются следующие ключевые слова:
1. value – подразумевает значение вводимое в поле.
2. Is null, is not null
3. Between … and…, like, in.
4. А также все арифметические и логические операторы.
Замечание: домены создаются независимо друг от друга и тем более, от каких либо таблиц, следовательно, Check в домене не может ссылаться ни на какой другой домен или столбец в таблице.
Замечание: домен может иметь только одну конструкцию Check.
Замечание: конструкция Check не может быть переопределена при описании атрибута таблицы. Если при описании поля таблицы, ссылающегося на домен, имеющий Check, указано свое ограничение, то действовать будут оба ограничения.
|
Пример:
Create domain username as varchar(20)
Default user;
Create domain month as smallint
Check (value between 1 and 12);
Create domain d_elem as char(2)
Check (value in (‘Au’, ‘Ag’, ‘Pt’, ‘Pd’, ‘Os‘));
Create domain pweight as numeric(122)
Default null check ((value is null) or (value > 1.25));
Изменение доменов
Изменение доменов осуществляется командой alter domain. С помощью данной команды можно изменить любые характеристики домена, кроме типа данных и установок not null. Сделанные изменения воздействуют на атрибуты всех таблиц, где использовался измененный домен. Команду alter domain может вызвать либо создатель домена, либо пользователь с правами системного администратора.
Для изменения типа поля или установки not null необходимо удалить домен, если это возможно (если домен используется для описания столбцов каких либо таблиц то удалить его нельзя), а затем создать его снова с требуемыми характеристиками.
Синтаксис команды изменения домена:
Alter domain name_domain {
[Set default {literal | Null | User}]
[Drop default]
[Add [Constraint] Check (<dom_condition>)]
[Drop constraint]};
[Drop default] – удаляет значение по умолчанию.
[Add [Constraint] Check (<dom_condition>)] – добавить ограничение.
[Drop constraint] – удалить ограничение.
Замечание: изменить ограничение одной командой нельзя. Сначала ограничение нужно удалить, а потом добавить.
Пример:
Alter domain d_elem drop constraint;
Alter domain d_elem add check (value in (‘H’, ‘Li’, ‘K’, ‘Na’);
Alter domain username set default ‘***’;
Удаление доменов
|
Удаление доменов осуществляется командой drop domain. Если домен используется в какой-либо таблице, то удалить его нельзя.
Синтаксис:
Drop domain <name_domain>
Таблицы
Прежде чем перейти к созданию таблицы необходимо провести проектирование БД, далее следует создать комплект необходимых доменов и только затем переходить к созданию таблицы.
Создание таблицы
Создание таблицы осуществляется командой create table, которая создает структуру таблицы и в самом простом случае определяет название таблицы, перечень полей с указанием типов данных, а также контрольными ограничениями. Кроме того при создании таблицы можно задать первичный ключ, внешние ключи, дополнительные виды контроля на уровне записей.
Упрощенный синтаксис команды:
Create table <name_table>
(Описание полей таблицы);
Описание полей таблицы:
Name {<тип_данных> | Computed [by](<выражение>) | <имя домена>}
[Default { literal | Null | User}]
[not null]
[<ограничение столбца>];
Name – заголовок столбца
Computed [by] – выражение для вычисляемого столбца. Значения вычисляемых столбцов рассчитываются всякий раз при обращении к ним. Выражение может быть любым допустимым в InterBase выражением, возвращающим единственное значение простого типа. Допустимы выражения с предложением SELECT.
Ограничения столбца – описывает ограничения логической целостности столбца.
InterBase позволяет задавать ограничения на отдельные столбцы и на таблицу в целом называемые ограничением логической целостности, которые задают порядок управления зависимостями между столбцом и таблицей, а также между таблицей и таблицей. Они воздействуют на все выполняемые с таблицей действия, автоматически поддерживаясь системой. Конструкция ограничения столбца имеет следующий синтаксис:
[Constraint <имя ограничения>]
{ Unique
| Primary key
| Check (<условие>)
| References <имя другой таблицы> [(список атрибутов)]
[On delete {No action | Cascade | Set default | Set null}]
[On update {No action | Cascade | Set default | Set null}]
}