Хелен Борри - Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ
- Название:Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ
- Автор:
- Жанр:
- Издательство:БХВ-Петербург
- Год:2006
- Город:Санкт-Петербург
- ISBN:5-94157-609-9
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Хелен Борри - Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ краткое содержание
Рассмотрены вопросы, необходимые разработчику для создания клиент-серверных приложений с использованием СУБД Firebird, явившейся развитием СУБД Borland Interbase 6. Содержится обзор концепций и моделей архитектуры клиент/сервер, а также практические рекомендации по работе с клиентскими библиотеками Firebird. Детально описаны особенности типов данных SQL, язык манипулирования данными (Data Manipulation Language, DML), а также синтаксис и операторы языка определения данных ( Data Definition Language, DDL). Большое внимание уделено описанию транзакций и приведены советы по их использованию при разработке приложений. Описано программирование на стороне клиента и сервера написание триггеров и хранимых процедур, создание и использование событий базы данных, обработка ошибок в коде на сервере и многое другое. Материал сопровождается многочисленными примерами, советами и практическими рекомендациями.
Для разработчиков баз данных
Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
. ! .
Условие поиска может:
* проверять, что вводимое значение находится в указанном диапазоне;
* проверять, что значение присутствует в списке допустимых значений;
* сравнивать значение с константой, выражением или со значением данных другого столбца из этой же строки.
Существуют определенные условия использования ограничений CHECK.
* Столбец может иметь только одно ограничение CHECK, хотя его логика может быть представлена как сложное условие поиска - одно ограничение, много условий.
* Ограничение CHECK для столбца, основанного на домене, не может перекрывать наследуемую от домена проверку. Определение столбца может использовать обычное предложение CHECK, чтобы добавить дополнительную логику ограничения в наследуемое ограничение. Оно будет соединено с наследуемым ограничением конъюнкцией (логической операцией И).
* Ограничение CHECK не может ссылаться на домен. Синтаксис ограничения CHECK:
CHECK (<���условие-поиска>);
<���условие-поиска> =
{ | {<���выбор-одного>) }
| [NOT] BETWEEN AND
| [NOT] LIKE [ESCAPE ]
| [NOT] IN ( [, ...] | <���список-выбора>)
| IS [NOT] NULL
| { [NOT] { = | < | > } |>=|<=}
{ ALL | SOME | ANY }(<���список-выбора>)
| EXISTS (<���выражение-выбора>)
| SINGULAR (<���выражение-выбора>)
| [NOT] CONTAINING
| [NOT] STARTING [WITH]
| (<���условие-поиска>)
| NOT <���условие-поиска>
| <���условие-поиска> OR <���условие-поиска>
l <���условие-поиска> AND <���условие-поиска>
Диапазон возможностей при определении ограничений CHECK действительно весьма широк - теоретически в нем может быть использовано почти любое условие поиска. Для разработчика важно выбрать разумные и безопасные условия, т. к. они действуют для каждой операции INSERT и UPDATE для таблицы.
В части V данной книги описывается синтаксис установки различных стилей условия поиска.
Пример. Следующее ограничение проверяет значения двух столбцов для гарантии, что одно больше другого. Хотя оно также предполагает условия NOT NULL для обоих столбцов - проверка будет ошибочной, если хотя бы один столбец будет иметь пустое значение, - оно не устанавливает ограничение NOT NULL для столбца:
CHECK (COL_1 > COL_2);
Проверка даст ошибку, если арифметическая проверка будет ошибочной или если любой из столбцов COL_1 или COL_2 имеет значение NULL. Следующая операция будет успешной:
INSERT INTO TABLE_1 (COL_1, COL_2) VALUES (6,5);
Ограничения UNIQUE
Ограничение UNIQUE, как и ограничение первичного ключа, гарантирует, что никакие две строки не будут иметь то же значение указанного столбца или группы столбцов. Вы можете объявить для таблицы более одного ограничения UNIQUE, но оно не может использовать тот же набор столбцов, который был использован для ограничения PRIMARY KEY или другого UNIQUE.
Ограничение UNIQUE фактически создает уникальный ключ, который виртуально имеет те же возможности, что и первичный ключ. Он может быть выбран как управляющий ключ для ограничения ссылочной целостности. Это делает его полезным в ситуациях, когда вы определяете небольшой суррогатный первичный ключ для его атомарности и улучшения производительности в соединениях и операциях поиска, но при этом хотите сохранить режим формирования альтернативной связи внешнего ключа с уникальным ключом для нерегулярного использования.
В Firebird 1.0.x атрибут NOT NULL должен быть применен для всех столбцов, с которыми оперирует ограничение UNIQUE.
Как и ограничение PRIMARY KEY, UNIQUE создает свой постоянный уникальный индекс для поддержания его правил. Правила именования ограничения и индекса соответствует тем же правилам поведения, применимым к другим ключам. Следующий пример isql иллюстрирует именование в Firebird 1.5:
SQL> CREATE TABLE TEST_UQ (
CON> ID BIGINT NOT NULL,
CON> DATA VARCHAR(10),
CON> DATA_ID BIGINT NOT NULL);
SQL> COMMIT;
SQL> ALTER TABLE TEST_UQ
CON>ADD CONSTRAINT PK_TEST_UQ PRIMARY KEY(ID),
CQN>ADD CONSTRAINT UQ1_DATA UNIQUE(DATA_ID) ;
SQL> COMMIT;
SQL> SHOW TABLE TEST_UQ;
ID BIGINT NOT NULL
DATA VARCHAR(10) NULLABLE
DATA_ID BIGINT NOT NULL
CONSTRAINT PK_TEST_UQ:
Primary key (ID)
CONSTRAINT UQ1_DATA:
Unique key (DATA_ID)
SQL> SHOW INDICES TEST_UQ;
PK_TEST_UQ UNIQUE INDEX ON TEST_UQ(ID)
UQ1_DATA UNIQUE INDEX ON TEST_UQ(DATA_ID)
SQL>
! ! !
ПРИМЕЧАНИЕ. Запомните следующее заклинание: индекс не является ключом. Вы можете создавать уникальные индексы (подробности см. в главе 18), но создание уникального индекса не создает уникального ключа. Если существует вероятность, что вам может понадобиться для использования уникально индексированный столбец или структура в качестве ключа, создайте вместо индекса ограничение.
. ! .
Использование внешних файлов в качестве таблиц
В текущем жаргоне SQL Firebird поддерживает внешние виртуальные таблицы (External Virtual Table, EVT). Файлы файловой системы в текстовом формате ASCII могут быть использованы в Firebird для чтения и манипулирования, как если бы они были таблицами, хотя и со значительными ограничениями, связанными с тем фактом, что они не являются внутренними объектами базы данных. Другие приложения могут обмениваться данными с базой данных Firebird, независимо от любых специальных механизмов преобразования. Внешние таблицы могут быть конвертированы во внутренние.
Предложение EXTERNAL FILE позволяет определять таблицы со структурой строки, отображаемой в "поля" фиксированной длины в "записях" (обычно разделенных символом перевода строки), которые размещаются во внешнем файле. Firebird может выбирать данные из файла и помещать данные в файл, как если бы это было обычной таблицей. При этом он не может выполнять операции изменения и удаления с внешними таблицами.
Текстовый файл, содержащий эти данные, должен быть создан или скопирован на устройство хранения, физически находящееся под управлением сервера - как обычно, это не должно быть устройство NFS, совместно используемый диск или отображаемый диск. Совместный доступ Firebird и других приложений на уровне файла невозможен. Firebird требует исключительного доступа в течение всего времени, когда файл открыт в транзакции. В остальное время этот файл может изменяться другими приложениями.
Синтаксис для CREATE TABLE...EXTERNAL FILE
Оператор CREATE TABLE для внешнего файла определяет как спецификацию внешнего файла (размещение и имя файла), так и характеристики столбцов Firebird, представляющих структуру хранимых записей.
CREATE TABLE внешняя-таблица
EXTERNAL FILE спецификация-файла (определение-столбца [, определение-столбца, ...], [разделитель-строки-1 CHAR(l) [,разделитель-строки-2 CHAR(l)]]);
спецификация-файла - полный путь и имя файла для внешнего файла данных. Файл не должен существовать во время создания таблицы. При этом в Firebird 1.5 и выше оператор CREATE будет неудачным, если спецификация ссылается на несконфигуриро- ванное размещение внешнего файла. См. раздел "Организация защиты внешних файлов" далее в этой главе и разд. "Конфигурирование внешних размещений" главы 36.
Читать дальшеИнтервал:
Закладка: