Выбор компонентной базы для доступа к СУБД FireBird 2.1

 

Широкое распространение Interbase и его клонов по всему миру и использование в самых различных ипостасях привело к тому, чтобы было создано множество библиотек доступа к InterBase/FireBird, ориентированных на самые различные среды программирования.

Наиболее популярные из них: IBProvider, InterBase Express (IBX), Devrace FIBPlus.

IBProvider (OLE DB for InterBase) – большой выбор средств разработки, универсальных с точки зрения языка программирования. IBProvider предоставляет мощный объектно-ориентированный низкоуровневый клиентский API для работы с InterBase. Встраиваясь в приложения баз данных, OLE DB-провайдер способен взять на себя всю работу по организации взаимодействия с сервером базы данных. OLE DB является общепризнанным промышленным стандартом доступа к данным, что позволяет легко разворачивать и управлять приложениями, разработанными с использованием IBProvider.

Достоинствами компонентов IBPrоvider являются:

- возможность работы со всей линейкой СУБД InterBase, начиная с версии 4.х и заканчивая клонами InterBase 6 – FireBird и Yaffil. Минимальным условием работы является наличие на компьютере клиента динамической библиотеки gds32.dll от InterBase 4;

- поддержка всех типов данных InterBase;

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

- оптимизация работы с результирующим множеством SQL-запросов. Для поддержки большого количества данных автоматически применяются временные файлы, причём для доступа к ним используется 64-битовая адресация;

- полная поддержка синтаксиса SQL, параметризованных запросов;

- работа с базой данных в режиме автоматического запуска и подтверждения транзакций, вложенные транзакции, распределённые транзакции.

InterBase Express (IBX) – набор компонент для Delphi и C++ Builder, позволяющий работать с серверами InterBase. Продукт основан на коде FreeIBComponents и входит в стандартную поставку Borlabd Delphi/C++ Builder Enterprise Edition.

К особенностям IBX можно отнести:

- явное управление транзакциями;

- поддержка стандартных и сторонних визуальных компонентов отображения данных;

- поддержка встроенных и сторонних генераторов отчёта;

- использование генераторов для значений ключевых полей.

Devrace FIBPlus – библиотека гибких высокопроизводительных компонентов для Borland Delphi 5-7, C++ Builder 5-6, Kylix 3, предназначенных для работы с InterBase и FireBird с использованием прямого InterBase API. FIBPlus объединяет в себе простую архитектуры с удобством разработки, что позволяет создавать мощные и эффективные приложения.

Преимущества FIBPlus:

- поддержка всех версий InterBase, начиная с InterDase 4.0 и FireBird 1.0;

- совместимость со всеми стандартными и сторонними визуальными db-компонентами и генераторами отчётов;

- полный контроль транзакций;

- улучшенная производительность в сравнении с аналогами. В частности TpFIBDataSet работает на 30-40% быстрее TIBDataSet в IBX, использует на 60-70% меньше памяти;

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

При использовании Delphi 7 можно было бы использовать встроенные компоненты IBX, но серьёзным недостатком является вопрос последующей совместимости с СУБД FireBird. Хотя сегодня многие всё ещё успешно используют IBX вместе с FireBird, вполне возможно, что в будущем всё изменится. IBX не тестируется с FireBird и Borland не планирует поддерживать совместимость с будущими версиями FireBird, т.к. разработчики FireBird и InterBase развивают продукты в разных направлениях.

Функциональность IBProvider и FIBPlus аналогична, но стоимость первого продукта намного выше другого.

Для работы с базой данных FireBird 2.1 логично использовать Devrace FIBPlus – библиотеку-компонент, обладающую полной совместимостью с Delphi 3-7 и FireBird всех версий.

Компоненты FIBPlus представлены на двух закладках палитры компонентов. В таблице 1 перечислены все компоненты на закладке FIBPlus. На закладке нет компонентов для миграции с BDE. Нет компонентов со свойствами и методами аналогичными Table или Query. Вместо этого FIBPlus предоставляет только два компонента для доступа к данным - pFIBDataSet и pFIBQuery, оба основанные на работе с SQL.

В таблице 2 перечислены компоненты на закладке FIBPlus Services. Эти компоненты предоставляют доступ к Services API, появившемся в InterBase 6. Используя эти компоненты вы фактически можете реализовывать все функции, которые представлены в утилитах командной строки InterBase и Firebird.

Таблица 1. Компоненты на закладке FibPlus

Компонент Описание
pFIBDatabase Подключение к базе данных
pFIBDataSet dataset в базе данных.
pFIBTransaction Транзакция.
pFIBQuery Облегченный компонент для выполнения SQL.
pFIBStoredProc Вызов неселективных хранимых процедур.
pFIBUpdateObject Позволяет вам выполнять серии дополнительных SQL-команд при вставке, изменении и удалении записи в pFIBDataSet.
DataSetsContainer Централизует обработку событий dataset.
pFIBErrorHandler Централизует обработку ошибок.
pFIBStatistic Собирает статистику о выполнении запросов в рамках приложения.
SibFIBEventAlerter Принимает событие с сервера InterBase.
FIBSQLMonitor Показывает команды SQL-команды, выполненные приложениями.

 

Таблица 2. Компоненты на закладке FibPlus Services

Компонент Описание
pFIBServerProperties Возвращает информацию о конфигурации сервера.
pFIBConfigService Возвращает наборы параметров сервера, включая sweep-интервал, режим работы базы данных, размер страницы и режим доступа. Позволяет отключать и перезапускать базу данных и тень (shadow).
pFIBLicensingService Вводит сертификаты лицензий и ключи.
pFIBLogService Читает лог-файл сервера.
pFIBStatisticalService Показывает статистику базы данных, включая OIT, OAT, и следующую транзакцию.
pFIBBackupService Делает резервную копию базы данных .
pFIBRestoreService Восстанавливает базу данных из резервной копии.
pFIBValidationService Проверяет или восстанавливает поврежденную базу данных.
pFIBSecurityService Добавляет, удаляет и модифицирует пользователей.
pFIBInstall Устанавливает InterBase или Firebird.
pFIBUninstall Удаляет InterBase или Firebird.

FIBPlus - это прекрасный выбор, если предстоит работать с InterBase и/или Firebird. Компоненты позволяют легко использовать все свойства обеих СУБД в ваших приложениях. FIBPlus делает использование полей-массивов простым делом, рассматривая их как массивы вариантов. Макросы упрощают модификацию SQL-команд в коде. А возможность сортировки результата запроса в памяти без переоткрытия запроса дают вам гибкость в просмотре данных с минимальным сетевым трафиком и загрузкой сервера. FIBPlus делает разработку приложений для InterBase и Firebird проще, чем когда либо.

FIBPlus - набор нативных компонентов Delphi, C++ Builder и Kylix, которые представляют доступ ко всем возможностям InterBase и Firebird. Компоненты FIBPlus используют непосредственные вызовы API для получения максимальной производительности, а pFIBDataSet является потомком стандартного класса TDataSet для совместимости со стандартными и сторонними визуальными компонентами Delphi, C++Builder и Kylix.

Компоненты FIBPlus построены таким образом, чтобы их можно было использовать со всеми стандартными визуальными db-компонентами и сторонними продуктами, поддерживающими стандарт TDataSet-TDataSourse. Таким образом, разработчик, выбравший FIBPlus для доступа к базе данных FireBird, не ограничен в выборе сторонних компонент для отображения данных или печати отчётов.

Для решения поставленной задачи на дипломное проектирование выбрана среда программирования Delphi 7 с установленной библиотекой компонент FIBPlus.

 


Структура базы данных

 

 

База данных логически разделена на части:

· Пользователь

· Сообщение

· Абитуриент

Пользовательская часть состоит из двух таблиц: SYS$USERS (персональные данные пользователя), FST_MAILLOGIN (параметры авторизации на почте). Пользователями разрабатываемой системы могут быть сотрудники ЦПК, которые занимаются работой по проведению мероприятий, направленных на ознакомление с МГОУ, для возможных абитуриентов. Информация о пользователе системы необходима для разграничения доступа к приложению, ведения статистики, например, когда и кем были зарегистрированы возможные абитуриенты. А также для реализации функционала отправки сообщения зарегистрированным абитуриентам.

Логическая часть – сообщение – состоит из двух таблиц: FST_MESSAGE (параметры сообщения), FST_L_PERSDATA_MESSAGE (таблица-связка сообщения с адресатами). Эти таблицы хранят информацию об отправленных сообщениях и информацию о том кому они были отправлены.

Абитуриентская часть состоит из 8 таблиц, назначение которых можно разделить на 3 уровня по временной шкале их заполнения на форме во время регистрации:

1. Мероприятие, во время которого происходит регистрация;

2. Данные по возможному абитуриенту;

3. Интересы регистрируемого.

Первый уровень включает в себя следующие таблицы: X_SOURCE (мероприятие). Второй уровень: FST_PERS_DATA (персональные данные возможного абитуриента), FST_FROM (параметры источника), X_EDUCATION (учебное заведение). Уровень интересов включает в себя следующие таблицы: STU_KL_SPECIALIZATION (специальность), STU_KL_FACULTY (факультет), FST_FPROF (таблица-связка абитуриента со специальностью и факультетом) STU_KL_PAY_FORM (Форма оплаты). Данные таблицы хранят информацию об интересах возможного абитуриента, например, на какой факультет и специальность он хотел бы поступить и какая форма оплаты для него приемлема.

В следующих подпунктах более подробно рассмотрена структура каждой таблицы.

Таблица персональных данных пользователя

 

Таблица хранит данные о пользователе, сохраненные в базе данных. Это имя пользователя (логин), полное имя пользователя, пароль пользователя для входа в систему. Перечень и тип атрибутов с их описанием отражены в таблице 3.

Таблица 3. Таблица персональных данных пользователя.

Имя атрибута Тип Описание
ID_USER Число Уникальный идентификатор пользователя
NAME_USER Строка Имя пользователя
FULL_NAME Строка Полное имя пользователя
PASSWORD_NAME Строка Пароль

Таблица параметров авторизации пользователя на почтовом сервере

 

Таблица хранит данные о параметрах авторизации пользователей на почте. Это адрес почтового сервера, имя пользователя на почтовом сервере, имя учетной записи, порт сервера SMTP, ссылка на пользователя, пароль на почтовом сервере. Перечень и тип атрибутов с их описанием отражены в таблице 4.

Таблица 4. Таблица параметров авторизации.

Имя атрибута Тип Описание
ID Число Уникальный идентификатор
AUTHENTICATIONTYPE Число Тип авторизации
HOST Строка Адрес почтового сервера
USERNAME Строка Имя пользователя на почтовом сервере
MAILLOGIN Строка Имя учетной записи
PORT Число Порт сервера SMTP
USER_ID Число Уникальный идентификатор пользователя
PASS Строка Пароль на почтовом сервере

 

 

4.3. Таблица параметров сообщения

Таблица хранит информацию о параметрах сообщения. Это тема, текст сообщения, пути прикрепленных файлов к сообщению, дата создания сообщения, ссылка на пользователя, который создал сообщение. Перечень и тип атрибутов с их описанием отражены в таблице 5.

Таблица 5. Таблица параметров сообщения.

Имя атрибута Тип Описание
ID Число Уникальный идентификатор
THEME Строка Тема сообщения
TEXT Строка Текст сообщения
ENCLOSURE Строка Вложения
USER_ID Число Ссылка на пользователя
DATE_CREATE Дата Дата создания

 

4.4. Таблица-связка сообщения с адресатами

Таблица-связка хранит ссылки на сообщение и возможного абитуриента. А также дату отправки сообщения. Перечень и тип атрибутов с их описанием отражены в таблице 6.

Таблица 6. Таблица-связка сообщения с адресатами.

Имя атрибута Тип Описание
PERS_DATA_ID Число Ссылка на возможного абитуриента
MESSAGE_ID Число Ссылка на сообщение
DATE_SEND Дата Дата отправки сообщения

 

4.5. Таблица, хранящая информацию по мероприятиям

Таблица хранит информацию о проводимых мероприятиях. Это название мероприятия, дата создания. Перечень и тип атрибутов с их описанием отражены в таблице 7.

Таблица 7. Таблица, хранящая информацию по мероприятиям.

Имя атрибута Тип Описание
ID Число Уникальный идентификатор
SOURCE Строка Название мероприятия
DATE_CREATE Дата Дата создания

 

 

4.6. Таблица персональных данных возможного абитуриента

Таблица хранит информацию о персональных данных возможного абитуриента. Это фамилия, имя, отчество, пол, требуется ли общежитие, ссылка на мероприятие, ссылка на учебное заведение, адрес учебного заведения, название учебного заведения, ссылка на форму оплаты, email, домашний телефон, мобильный телефон, дата регистрации, ссылка на пользователя, ссылка на источник, от которого абитуриент узнал об Университете, дата рождения, интересы. Перечень и тип атрибутов с их описанием отражены в таблице 8.

Таблица 8. Таблица персональных данных возможного абитуриента.

Имя атрибута Тип Описание
ID Число Уникальный идентификатор
SURNAME Строка Фамилия
NAME Строка Имя
SECOND_NAME Строка Отчество
SEX Число Пол
HOSTEL Число Требуется ли общежитие
SOURCE_ID Число Ссылка на мероприятие
EDUCATION_ID Число Ссылка на учебное заведение
EDUCATION_LIVING Строка Адрес учебного заведения
PAY_FORM_ID Число Ссылка на форму оплаты
EMAIL Строка Email
HOME_PHONE Строка Домашний телефон
MOBILE_PHONE Строка Мобильный телефон
DATE_REG Дата Дата регистрации
NAME_EDUCATION Строка Название учебного заведения
USER_ADD Число Ссылка на пользователя
FROM_ID Число Ссылка на источник
BERTHDAY Дата День рождения
DIRECTING Число Направленность
REPEAT Число Повторное посещение

 

4.7. Таблица параметров источника

Таблица хранит информацию об источнике, от которого возможный абитуриент узнал об Университете. Это название источника, дата занесения в базу данных. Перечень и тип атрибутов с их описанием отражены в таблице 9.

 

 

Таблица 9. Таблица персональных данных возможного абитуриента.

Имя атрибута Тип Описание
ID Число Уникальный идентификатор
GFROM Строка Источник
SYS$DATE Строка Дата создания
SYS$USERS_ID Строка Ссылка на пользователя

 

4.8. Таблица по учебным заведениям

Таблица хранит информацию о учебных заведениях, в которых учатся или учились возможные абитуриенты. Перечень и тип атрибутов с их описанием отражены в таблице 10.

Таблица 10. Таблица по учебным заведениям

Имя атрибута Тип Описание
ID Число Уникальный идентификатор
EDUCATION Строка Название учебного заведения

 

4.9. Таблица со списком факультетов

Таблица хранит список факультетов Университета. Перечень и тип атрибутов с их описанием отражены в таблице 11.

Таблица 11. Таблица со списком факультетов

Имя атрибута Тип Описание
ID Число Уникальный идентификатор
NAME Строка Название факультета

 

4.10. Таблица со списком специальностей

Таблица хранит список специальностей Университета. Это название специальности и ссылка на факультет этой специальности. Перечень и тип атрибутов с их описанием отражены в таблице 12.

Таблица 12. Таблица со списком специальностей

Имя атрибута Тип Описание
ID Число Уникальный идентификатор
FACULT_ID Число Ссылка на факультет
NAME Строка Название специальности
CODE Строка Код специальности

 

4.11. Таблица-связка абитуриента со специальностью и факультетом

Таблица-связка хранит ссылки на абитуриента, специальность и факультет. Эта таблица хранит информацию об интересах возможного абитуриента. Перечень и тип атрибутов с их описанием отражены в таблице 13.

Таблица 13. Таблица-связка

Имя атрибута Тип Описание
SPEC_ID Число Ссылка на специальность
FST_PD_ID Число Ссылка на абитуриента
FACULT_ID Число Ссылка на факультет
ID Число Уникальный идентификатор

 

4.12. Таблица со списком возможных форм оплаты

Таблица хранит список возможных форм оплаты за обучение в Университете. Перечень и тип атрибутов с их описанием отражены в таблице 14.

Таблица 14. Таблица со списком возможных форм оплаты

Имя атрибута Тип Описание
ID Число Уникальный идентификатор
DESCRIPTION Строка Форма оплаты

 

Связь таблицы с другими таблицами отражена на рисунке 1.

 

Рис.1 Структура базы данных