Декларативное описание ссылочной целостности: Обеспечивает непротиворечивость и целостность многоуровневых отношений "master-detail" между таблицами
Наборы символов: Firebird поддерживает множество международных наборов символов (включая Unicod) с множеством вариантов сортировки.
1.3 Требования к аппаратному обеспечению
Firebird успешно работает на почти любом аппаратном обеспечении, и на широком спектре операционных систем. Может использоваться даже не очень мощное оборудование, особенно под GNU/Linux. И как в любой СУБД, на производительность влияют: количество памяти, скорость работы дисковой подсистемы, и т. д. Рекомендации для выбора аппаратного обеспечения зависят от требования к системе, прогнозируемого размера базы данных, количества пользователей, и т. д. Вы можете начать с минимальной конфигурации и далее расширять ее по мере надобности.
Firebird поддерживает большие базы данных. Базы данных могут быть расположены в нескольких файлах, предельный размер которых зависит от операционной системы. Теоретический предел в настоящее время составляет 64TB для одного файла базы данных, таким образом, главные ограничения накладываются файловой системой и местом на жестком диске.
1.4 Версии сервера
Существует три различных взаимозаменяемых версии сервера, имеющих каждая свои преимущества.
Классик сервер (один процесс на одно соединение; поддержка многопроцессорных машин).
Суперсервер (все соединения используют один процесс, меньшие требования к памяти при большем быстродействии; для однопроцессорных машин)
Встраиваемая (Embedded) версия (весь движок содержится в одной библиотеке с именем клиентской библиотеки сервера, идеально подходит для однопользовательских систем, не требует инсталляции)
Все версии используют одинаковый формат файла базы данных, таким образом в любой момент можно переключиться на другую версию.
1.5 Лицензирование
Firebird выпускается под условиями IPL(InterBase Public License) и IDPL (Initial Developer’s Public License), которые совпадают с условиями Mozilla Public License 1.1. Firebird полностью бесплатен для использования и распространения. Раскрытие исходного кода вашего продукта не требуется, вне зависимости от используемой модели лицензирования. Однако, в случае, если вы модифицировали исходный код сервера, то необходимо сделать доступным исходный код ваших модификаций.
Средства разработки и администрирования
Для Firebird доступно большое количество инструментальных средств, бесплатных и коммерческих. Существуют средства разработки, средства администрирования, библиотеки внешних функций(UDF), средства доступа.
Компания IBPhoenix(В России, например компания iBase) предлагают профессиональную поддержку, выполняемую людьми с многолетним опытом. На сайтах IBPhoenix и iBase.ru находится большое количество технической информации, инструкций и документации.
2. Конструкторская часть
Создание базы данных.
Для создания базы данных использовался Ibexpert:
Утилита администрации InterBase (поддерживет InterBase Firebird Yaffil) Работает одновременно с несколькими базами данных. Содержит редакторы для всех объектов БД с синтаксической подсветкой, SQL редактор с историей запросов и возможностью фонового выполнения запросов, отладчик хранимых процедур и триггеров, поиск в метаданных, полное и частичное извлечение данных и метаданных, анализатор зависимостей объектов баз данных, отчеты по метаданным, менеджеры пользователей и пользовательских привилегий, экспорт данных в различные форматы.
Таблица – основной объект для хранения информации в реляционной базе данных. Она состоит из содержащих данные строк и столбцов, занимает в базе данных физическое пространство и может быть постоянной или временной. Поле, также называемое в реляционной базе данных столбцом, является частью таблицы, за которой закреплен определенный тип данных. Каждая таблица базы данных должна содержать хотя бы один столбец. Строка данных – это запись в таблице базы данных, она включает поля, содержащие данные из одной записи таблицы.
Главное в команде создания таблицы – определение имени таблицы и описание набора имен полей, которые указываются в соответствующем порядке. Кроме того, этой командой оговариваются типы данных и размеры полей таблицы.
Ключевое слово NULL используется для указания того, что в данном столбце могут содержаться значения NULL. Значение NULL отличается от пробела или нуля – к нему прибегают, когда необходимо указать, что данные недоступны, опущены или недопустимы. Если указано ключевое слово NOT NULL, то будут отклонены любые попытки поместить значение NULL в данный столбец. Если указан параметр NULL, помещение значений NULL в столбец разрешено. По умолчанию стандарт SQL предполагает наличие ключевого слова NULL.
CREATE GENERATOR GEN_GORODA_ID;
CREATE TABLE GORODA (
ID_GOR INTEGER NOT NULL,
NAZVANIE VARCHAR(30) NOT NULL,
DOLGOTA INTEGER,
SHIROTA INTEGER,
ID_STR INTEGER NOT NULL);
с помощью этого кода создается таблица города, она состоит из следующих столбцов:
id_gor – индентефикатор города, данное поле не может быть пустым.
nazvanie- это поле содержит название города, оно не может превышать 30 символов.
id_str – индентификатор страны к которой принадлежит город.
dolgota- долгота на которой находится данный город.
shirota- широта на которой находится данный город.
CREATE GENERATOR GEN_STRANA_ID_STR;
CREATE TABLE STRANA (
ID_STR INTEGER NOT NULL,
NAZVANIE VARCHAR(30) NOT NULL,
STOLICA VARCHAR(30) NOT NULL,
NASELENIE INTEGER);
Таблица страны:
id_str – индентификатор страны
nazvanie- это поле содержит название страны
stolica – в данном поленаходится столица выбранной страны
naselenie- население данной страны(в млн).
CREATE TABLE LOG (
"WHEN" TIMESTAMP,
"USER" VARCHAR(20),
"ACTION" CHAR(3));
Таблица лог: данная таблица содержит информацию о том Кто? Когда? и что сделал(удалил,изменил,вставил)?
When- дата дейстивя;
User- кто совершает действия;
Action- показывает действие которое совершает пользователь
2.2 Создание триггеров
REATE TRIGGER TRIG_AI_GOR FOR GORODA
ACTIVE AFTER INSERT POSITION 0
AS
BEGIN
INSERT INTO log VALUES (current_timestamp, current_user, 'INS');
END
Данный триггер следит за действием вставка, если пользователь добавляет новое значение в таблицу goroda, триггер автоматически записывает в таблицу LOG имя пользователя и дату.
CREATE TRIGGER TR_AD_GOR FOR GORODA
ACTIVE AFTER DELETE POSITION 0
AS
BEGIN
INSERT INTO log VALUES (current_timestamp, current_user, 'DEL');
END
Данный триггер отвечает за удаление, если пользователь удалил значение из таблицы goroda, триггер автоматически записывает в таблицу LOG имя пользователя и дату.
CREATE TRIGGER TR_AU_GOR FOR GORODA
ACTIVE AFTER UPDATE POSITION 0
AS
BEGIN
INSERT INTO log VALUES (current_timestamp, current_user, 'UPD');
END
Данный триггер следит за изменением, если пользователь изменил любое поле из таблицы goroda, триггер автоматически записывает в таблицу LOG имя пользователя и дату.
2.3 Создание генераторов
CREATE GENERATOR GEN_GORODA_ID;
SET GENERATOR GEN_GORODA_ID TO 24;
CREATE GENERATOR GEN_STRANA_ID_STR;
SET GENERATOR GEN_STRANA_ID_STR TO 15;
Данные генераторы необходимы для создания триггеров на автоинкремент.
В них можно указать начальное значение автоинкремента.
CREATE TRIGGER TRIG_GORODA FOR GORODA
ACTIVE BEFORE INSERT POSITION 0
as
begin
if(new.id_gor is null) then new.id_gor = gen_id(gen_goroda_id,1);
end
Данный триггер автоматически создает индентификационный номер каждого нового города в таблице goroda.
CREATE TRIGGER TRIG_STRANA FOR STRANA
ACTIVE BEFORE INSERT POSITION 0
AS BEGIN
IF (NEW.Id_str IS NULL) THEN NEW.Id_str = GEN_ID(gen_strana_id_str,1);
END
Тоже самое делает и ‘тот триггер.только для таблицы strana,отметим что индентификационный номер каждой новй страны или города увеличивается на 1.
2.4 Создание Хранимых процедур
CREATE PROCEDURE STRANA_1
RETURNS (
STRANA_S VARCHAR(30),
GOROD_G VARCHAR(30),
NASELENIE_S INTEGER)
AS
begin
for select strana.nazvanie,goroda.nazvanie,strana.naselenie
from strana,goroda
where(strana.id_str=goroda.id_str)
into :strana_s,:gorod_g,:naselenie_s
do suspend;
end
Данная процедура осуществляет выборку из таблиц Strana и Goroda.
В данном варианте при выполнении хранимой процедуры будут показаны название стран,городов,а так же население стран. Выборка осуществляется по индентификатору страны.
2.5 Разработка приложения для базы данных с помощью Borland Delphi
Основыне компоненты которые использовались для создания приложения:
IBDatabase- Компонент TDatabase позволяет наиболее эффективно управлять подключениями к базам данных. Это управление включает:
- создание постоянного подключения к базе данных;
- отмену установленной по умолчанию регистрации на сервере;
- создание псевдонима BDE на уровне приложения;
- управление транзакциями и определение уровней их разграничения.
IBTransaction- компонент IBTransaction, который будет использоваться в качестве умолчательного для выполнения различных операций IBDatabase. Клиентская часть InterBase допускает выполнение любых действий только в контексте транзакции. Поэтому если вы смогли получить доступ к данным без явного вызова IBTransaction.StartTransaction, то значит где то в недрах IBX этот вызов произошел автоматически. Такое поведение крайне не рекомендуется использовать. Для корректной работы приложений с базой данных желательно управлять транзакциями вручную, то есть явно вызывать методы StartTransaction, Commit и Rollback компонента TIBTransaction.