Delphi 3 и создание приложений баз данных

         

Понятие домена


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

Например, создать домен POL_TYPE и затем использовать его при создании таблицы SOTR как тип столбца POL:

CREATE DOMAIN POL_TYPE AS

CHAR(3) COLLATE PXW_CYRL;

CREATE TABLE SOTR(

FIO CHAR(20) NOT NULL,

POL POL_TYPE,

OTDEL CHAR(10),

DOLJ CHAR(20),

PRIMARY KEY(FIO)

) ;

Как можно заметить, домен есть описание какого-либо столбца, то есть абстрактное понятие; как такового домена физически не существует. В языке Object Pascal сходным по назначению с определением домена является определение типа в блоке type; фактически определение типа не приводит к выделению памяти под переменную, но может использоваться при объявлении переменных в блоке var. Для приведенного выше примера, домена POL_TYPE как структуры данных физически нет, поскольку им невозможно воспользоваться для хранения данных и доступа к ним. Однако физически существует и доступен для хранения и доступа к данным столбец POL в таблице SOTR, при создании которого было использовано описание домена POL_TYPE.

Домен определяется оператором CREATE DOMAIN. Его формат:

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

[DEFAULT {литерал| NULL | USER}]

[NOT NULL] [CHECK (<усл_поиска_домена>)]

[COLLATE collation] ;

Предложение COLLATE позволяет указать порядок сортировки символов, например:

CREATE DOMAIN POL_TYPE AS

CHAR(3) COLLATE PXW_CYRL;

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

• литерал- значение (числовое, строковое или дата);

• NULL - специфицирует пустое значение;

• USER - имя текущего пользователя.

Заметим, что значения по умолчанию, присваиваемые данному столбцу и объявленные в операторах CREATE TABLE или ALTER TABLE, переопределяют значения, присваиваемые по умолчанию тому же столбцу согласно директивам, содержащимся в CREATE DOMAIN.

Предложение NOT NULL указывает, что столбцы, ассоциированные с доменом, обязательно должны содержать какое-либо значение, отличное от пустого. Нужно следить за тем, чтобы в объявлении домена не было противоречий, например, в описании значения по умолчанию как NULL и объявлении директивы NOT NULL.



Содержание раздела