Описание примера и используемого для учебных целей сервера БД
На Рис. 71 приведена модель БД, которая далее будет использоваться в примерах для данного раздела.
Рис. 71. IDEF1X-диаграмма базы данных примера
В дальнейшем, все примеры SQL-операторов будут приводиться для сервера БД Borland InterBase.
InterBase представляет собой очень мощную СУБД. С самого начала InterBase создавался на основе современной и надежной архитектуры. Первоначальный автор, Джим Старки (Jim Starkey), спроектировал архитектуру для обработки параллельности и транзакций, не накладывая физические блокировки на части таблиц, что все еще недоступно многим известным серверам баз данных и сегодня. Архитектура InterBase носит название Multi-Generational Architecture (MGA, архитектура нескольких поколений), она обрабатывает параллельный доступ нескольких пользователей к одним и тем же данным, позволяя им изменять записи, не затрагивая ту часть данных, которая видна в базе данных пользователям, имеющим параллельный доступ.
Этот подход основан на уровне изоляции транзакций Repeatable Read (повторяющееся чтение), который позволяет пользователю в рамках транзакции видеть одни и те же данные, независимо от изменений, сделанных и подтвержденных остальными пользователями. Технически сервер реализует это, поддерживая различные версии каждой записи, к которой было обращение, для всех открытых транзакций.
Хотя такой подход (также носящий название «создание версий», versioning) может потребовать больших затрат памяти, при этом практически не накладываются физические блокировки на таблицы и система в целом становится значительно более надежной в случае сбоя.
Кроме того, архитектура MGA поддерживает очень удобную программную модель, повторяющееся чтение, что во многих других известных SQL-серверах не поддерживается без потери значительной доли производительности.
InterBase был выбран несколькими весьма значительными организациями, например, фирмой Ericsson, министерством обороны США, он также нашел применение на фондовых биржах и в банковских системах удаленного доступа.
Помимо архитектуры нескольких поколений, сердца InterBase, сервер обладает и другими техническими преимуществами:
§ нетребовательность к ресурсам (в минимальной установке для InterBase требуется менее 10 Мбайт дискового пространства, требования к памяти также невелики)
§ хорошая производительность для большого количества данных
§ реализация на многих платформах (среди которых 32‑разрядные версии Windows, Solaris и Linux) с поддержкой полной совместимости, что позволяет без особых изменений масштабировать сервер от небольших до очень объемных систем
§ прекрасный послужной список – InterBase находится в эксплуатации более 15 лет, практически не вызывая проблем
§ внутренний язык сервера очень близок к стандарту SQL
§ на сервере реализованы специальные программные возможности – позиционные триггеры, возможность выбора хранимых процедур, обновляемые представления, исключения, события, генераторы и многое другое
§ простая установка и управление с небольшими затратами на администрирование
Создание БД
CREATE { DATABASE | SHEMA } “<имя_файла>”
{ USER “имя_пользователя” [PASSWORD “пароль”] ]
[ PAGE_SIZE [=] целое ]
[ LENGTH [=] целое [PAGE [S] ] ]
[ DEFAULT CHARASTER SET набор_символов ]
[ <вторичный_файл> ];
<вторичный файл> = FILE “<имя_файла>” [<файлов_информ>] [<вторичный файл>]
<файлов_информ> = LENGTH [ = ] целое [ PAGE [S] ] | STARTING
[AT [PAGE]] целое <файлов_информ>
----------------------------------------------------------
“<имя_файла>” – спецификация файла, в котором будет храниться создаваемая БД.
USER “имя_пользователя” – имя пользователя
PASSWORD “пароль” – пароль пользователя
PAGE_SIZE [=] целое – размер страницы БД в байтах
DEFAULT CHARASTER SET набор_символов – определяет используемый в БД набор символов
FILE “<имя_файла>” – имя одного или нескольких файлов, в которых располагается БД
STARTING [AT [PAGE]] – если БД занимает несколько файлов, предложение определяет с какой страницы располагается БД в указанном файле
LENGTH [ = ] целое [ PAGE [S] ] – длина файла в страницах. По умолчанию 50. Минимум 50.
Пример:
CREATE DATABASE “D:\BD\SKLAD.GDB”
FILE “D:\BD\SKLAD.GD1” STARTING AT PAGE 1001
LENGTH 500
FILE “D:\BD\SKLAD.GD\2”
Здесь определяется БД D:\BD\SKLAD.GDB, состоящая из 3 файлов: первичного длиной 1000 страниц, второго длиной 500 страниц и третьего неопределенной длины.
Типы данных и домены
Типы данных:
· Символьные (CHAR, VARCHAR)
· Целочисленные (INTEGER, SMALLINT)
· Вещественные (FLOAT, DOUBLE PRECISION)
· Фиксированно-десятичные значения (DECIMAL, NUMERIC)
· Значения типа даты (DATE)
· Двоичные (BLOB)
Понятие домена:
CREATE DOMAIN домен [AS] <тип данных>
[DEFAULT {литерал} | NULL | USER]
[NOT NULL] [CHECK (<Ограничение домена>) ]
Пример:
CREATE DOMAIN ID_TYPE AS INTEGER
CHECK (VALUE >= 100);
< Ограничение домена >= {
VALUE <оператор> <значение>
| VALUE [NOT] BETWEEN <значение1> AND <значение2>
| VALUE [NOT] LIKE <значение1> [ESCAPE <значение2>]
| VALUE [NOT] IN <значение1> [, <значение2> …])
| VALUE IS [NOT] NULL
| VALUE [NOT] CONTAINING <значение>
| < Ограничение домена >
| NOT < Ограничение домена >
| < Ограничение домена > OR | < Ограничение домена >
| < Ограничение домена > AND < Ограничение домена >
};
где
<оператор> = { = | < | > | <= | >= | != | !< | !> | <> }