Читаем Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ полностью

ПРИМЕЧАНИЕ. Вы не можете использовать ограничения ссылочной целостности данных в домене.

. ! .

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

Все это требует создания двух доменов.

* Домен для указателя будет CHAR(3) с двумя дополнительными атрибутами: ограничение NOT NULL, поскольку вы собираетесь его использовать в качестве первичного ключа и ключа поиска, и ограничение CHECK для проверки наличия прописных букв. Например:

CREATE DOMAIN Туре_Кеу AS CHAR(3) NOT NULL

CHECK(VALUE = UPPER(VALUE));

* Домен описания будет VARCHAR(25). Вы хотите запретить для него пустые значения, поскольку таблицы, в которых вы собираетесь его использовать, являются управляющими:

CREATE DOMAIN Type_Description AS VARCHAR(25) NOT NULL;

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

<p>Создание домена</p>

Синтаксис языка определения данных (DDL) для создания домена:

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

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

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

[CHARSET набор-символов| NONE]

[COLLATE порядок-сортировки];

<p>Идентификатор домена</p>

При создании в базе данных домена вы должны задать идентификатор домена, который является глобально уникальным в базе данных. Разработчики часто используют префикс или суффикс в идентификаторах доменов для улучшения документирования. Например:

CREATE DOMAIN D_TYPE_IDENTIFIER...

CREATE DOMAIN DESCRIPTION_D. . .

<p>Тип данных домена</p>

Tun данных является единственным обязательным атрибутом, который должен быть установлен для домена - все другие атрибуты необязательны. Он задает тип данных SQL, который будет применен для столбца, определенного с использованием этого домена. Может быть применен любой тип данных Firebird. Нельзя использовать домен как тип данных для другого домена.

Следующий оператор создает домен, определяющий массив символьного типа:

CREATE DOMAIN DEPTARRAY AS CHAR(31) [4:5];

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

CREATE DOMAIN DESCRIPT_JP AS BLOB SUB_TYPE TEXT

CHARACTER SET SJIS;

<p>Атрибут DEFAULT</p>

Домен может определять значение по умолчанию, которое сервер будет использовать при добавлении новой строки, если оператор INSERT не содержит этот столбец в списке столбцов. Значения по умолчанию могут сэкономить время и избавить от ошибок в процессе ввода данных. Например, для столбца DATE возможным значением по умолчанию может быть текущая дата, а для столбца userName (имя пользователя) можно указать контекстную переменную CURRENT_USER.

Значение по умолчанию может быть:

* константой. Значением по умолчанию является заданная пользователем строка, числовое значение или значение даты - часто используется для помещения "нулевого значения" в столбец, куда не могут помещаться пустые значения (NULL);

* CURRENT_TIMESTAMP, CURRENT_DATE, CURRENT_TIME или предварительно определенный литерал даты Firebird (см. главу 10);

* USER, CURRENT_USER или CURRENT_ROLE (если применяются роли);

* CURRENT_CONNECTION или CURRENT_TRANSACTION.

! ! !

ПРИМЕЧАНИЕ. Возможно указание в качестве значения по умолчанию NULL. Хотя это излишне, поскольку столбцы, допускающие пустое значение, в любом случае инициализируются по умолчанию значением NULL. Более того, явное указание значения по умолчанию NULL может привести к конфликтам, если столбец, использующий домен, должен быть определен с ограничением NOT NULL (CM. разд. "Атрибут NOT NULL" далее в этой главе).

. ! .

Следующий оператор создает домен, который должен иметь положительное значение больше 1000. Если в операторе INSERT не указан столбец, созданный на основе этого домена, столбцу будет назначено значение по умолчанию 9999:

CREATE DOMAIN CUSTNO

AS INTEGER

DEFAULT 9999

CHECK(VALUE > 1000);

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

Когда значения по умолчанию не работают
Перейти на страницу:

Похожие книги

Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript
Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript

Данная книга посвящена программированию игр с помощью ActionScript. Здесь вы найдете подробные указания, необходимые для создания самых разных игр – аркад, головоломок, загадок и даже игровых автоматов. В тексте приведены исходные коды программ и детальные, доступно изложенные инструкции. Базовые принципы программирования ActionScript рассматриваются на примере игр, однако вы без труда сможете применить полученные знания и для разработки неигровых проектов, таких как Web-дизайн и реклама. Рекомендации Гэри Розенцвейга помогут вам не только придумывать занимательные игры и размещать их на Web-сайте, но и оптимизировать скорость их работы, а также защищать свои творения от несанкционированного копирования. Представленный в книге код несложно изменить для использования в других программах.Книга предназначена для широкого круга читателей – создателей анимационных роликов, художников-оформителей, программистов и разработчиков Web-сайтов. Издание может также выступать в качестве практического пособия по изучению ActionScript.

Гэри Розенцвейг

Программирование, программы, базы данных / Программирование / Книги по IT
Эффективное использование C++. 55 верных способов улучшить структуру и код ваших программ
Эффективное использование C++. 55 верных способов улучшить структуру и код ваших программ

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

Скотт Майерс , Скотт Мейерс

Программирование, программы, базы данных / Программирование / Книги по IT