Выбор компонентной базы для доступа к СУБД 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 | Число | Ссылка на форму оплаты |
Строка | ||
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 Структура базы данных