Пакет IBExpert и разработка базы данных FireBird в нем

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ

УРАЛЬСКИЙ ГУМАНИТАРНЫЙ ИНСТИТУТ

 Факультет экономический

Кафедра информатики и математики 
 
 
 
 

КУРСОВАЯ РАБОТА

По дисциплине: «Проектирование информационных систем»

На тему: «Пакет IBExpert и разработка базы данных FireBird в нем» 
 
 
 
 
 

                  Выполнена студентом:

                  Д.Г. Наговицыным 

                  группа ПИЭ-541 з

                  Проверил: Ждахин И.Л. 
                   
                   
                   
                   
                   

г. Екатеринбург

2012

Содержание:

  1. Вступление _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _  3
  2. O сервере для СУБД Firebird_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _3-7
  3. O пакете IBExpert_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _7-8
  4. Разработка базы данных FireBird в IBExpert_ _ _ _ _ _ _ _ _8-18
  5. Работа с базами данных Firebird на сервере через IBExpert_18-19
  6. Заключение_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _  20
  7. Иностранный источник_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 21-22
  8. Перевод иностранного источника_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _23-24
  9. Приложение 1_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _24-29
  10. Список использованной литературы_ _ _ _ _ _ _ _ _ _ _ _ _ _ _30
 
 
 
 
 
 
 
 
 
 
 
  1. Вступление

В наше время, информация принимает роль важного «компонента» в деятельности человека. С ростом технических и программных возможностей, пользователю необходимо заботиться о  правильной организации данных. С этим можно легко справиться, если применять на рабочем месте специализированные программы (как правило, применяется комплекс программ), позволяющие удобно, а главное безопасно и быстро вести организацию и ведение базы данных.

На данный момент, из специализированных программ, можно выделить - Firebird. В этой работе я подробно рассмотрю, принципы работы данной системы в пакете IBExpert, функциональные возможности, настройку, а также многое другое.

  1. О сервере для СУБД Firebird

Благодаря компании Borland, в августе 2000 года, состоялся релиз Firebird – это компактная, кроссплатформенная, свободная система управления базами данных (СУБД), работающая на GNU/Linux, Microsoft Windows и разнообразных Unix платформах. Данная система полностью бесплатна (Open Source) для использования и распространения, что уже придает ей некоторый интерес. Firebird являясь сервером баз данных (полностью основанный на исходном коде InterBase 6.0 ), может обрабатывать несколько независимых баз данных и каждую с множеством пользовательских соединений.

В качестве преимуществ Firebird можно отметить многоверсионную  архитектуру, обеспечивающую параллельную обработку оперативных и аналитических  запросов (это возможно потому, что  читающие пользователи не блокируют  пишущих), компактность (дистрибутив 5Mb), высокую эффективность и мощную языковую поддержку для хранимых процедур и триггеров.

Среди недостатков: отсутствие кеша результатов запросов, полнотекстовых индексов.

Возможностей  у данной системы достаточно много, но я приведу лишь некоторые: 
• Данная СУБД использует язык PSQL (процедурный SQL), с возможностью создавать сложные хранимые процедуры на стороне сервера. 
• Одно клиентское приложение может выполнять множество одновременных транзакций. 
• Резервное копирование может осуществляться без надобности остановки сервера. 
• Для каждой таблицы возможно назначение нескольких триггеров, срабатывающих до или после вставки, обновления или удаления записей. 
• Поддержка множества международных наборов символов (включая Unicode). 
• Возможность использовать библиотеки с UDF, расширяя возможности сервера. 
• Идея генераторов (последовательностей) делает возможной простую реализацию автоинкрементных полей, и не только их. Генераторы являются 64-битными хранимыми в базе данных счётчиками, работающими независимо от транзакций. Они могут быть использованы для различных целей, таких как генерация первичных ключей, управление длительными запросами в соседних транзакциях, и т. д.

На данный момент последней, доступной версией является: Firebird 2.5., стабильная версия Firebird 2.1.

Установка Firebird доступна в трех вариантах: 
• Firebird Super Server 
• Firebird Classic Server 
• Firebird Embedded.

Если вы не уверены  в выборе типа установки Firebird, то используйте Firebird Super Server; от Classic Server она выделяется своим быстродействием. Если вам нужна стабильная работа или вы хотите увидеть большую надежность в работе сервера, то смело выбирайте Classic Server. В дальнейшем, без труда сможете изменить архитектуру сервера на необходимую.

Вариант Superserver: 
• Один серверный процесс обслуживает все подключения, используя потоки для обработки запросов.  
• Разделяемое пространство кэша. Более эффективен (в плане потребления ресурсов) в случае роста числа одновременных соединений. 
• Полноценный Services Manager, позволяющий программно осуществлять операции по управлению (резервирование/восстановление, останов базы данных, управление пользователями, получение статистики и т.д.). Вы можете подключиться к Services Manager по сети и, соответственно, выполнять эти операции удаленно. 
• UDF выполняются в общем, адресном пространстве сервера.

Несколько слов о безопасности и пользователях:  
• Хранение учетных записей пользователей производится в одной служебной базе данных security.fdb. 
• Администраторы домена на уровне БД определяются как суперпользователи SYSDBA (для данного пользователя назначен пароль - masterkey). Данного пользователя и пароль, программа, при установке назначает самостоятельно. Поэтому рекомендуется изменить пароль или/и добавить нового пользователя (об этом чуть ниже). 
• В Firebird 3.0 планируется реализовать возможность хранения пользователей в клиентской базе данных.

В дистрибутив Firebird, не входит какой-либо инструмент администрирования, но разработчик не оставил этот момент без внимания, поэтому весь необходимый набор утилит командной строки (!), находятся в папке bin (смотрите директорию с установленной программой). Задействуем следующую предложенную программу: gsec. Она нам понадобится, если мы захотим, а мы захотим, добавить или изменить уже имеющуюся учетную запись пользователя. Сменим пароль пользователя SYSDBA:

C:\Program Files\Firebird\Firebird_2_1\bin>gsec

GSEC> modify SYSDBA -pw NEW_PASS

NEW_PASS – это  новый пароль, хочу отметить, что  пароль имеет ограничение в  8 символов, остальные символы будут игнорироваться. При установке Firebird, можно установить автоматический старт сервера при загрузке ОС, а также осуществлять запуск, как сервиса или приложения. Имеется небольшой апплет, позволяющий запускать или останавливать сервер, но стоит отметить, что средства администрирования в дистрибутив не входят, но сторонние разработчики не обошли стороной Firebird.

В своей работе, я использую, IB/FB Development Studio - визуальный дизайнер баз данных, встроенный MERGE, scheduler, Code auto completion, анализатор запросов, монитор производительности. Достаточно мощный продукт, простой в освоении и, что немаловажно, с русифицированным интерфейсом.

Итак, Firebird является сервером баз данных. Один сервер Firebird может обрабатывать несколько сотен независимых баз данных, каждую с множеством пользовательских соединений. 

  1. O пакете IBExpert

IBExpert — GUI-оболочка, предназначенная для разработки и администрирования баз данных InterBase и Firebird, а также для выбора и изменения данных, хранящихся в базах. 

Как основные достоинства IBExpert разработчики указывают: 

- поддержка InterBase версий 4.х, 5.х, 6.х, 7.х; Firebird 1.х, 2.x; Yaffil 1.х;

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

- отдельные редакторы для всех объектов БД с синтаксической подсветкой;

- мощный SQL редактор с историей запросов и возможностью фонового выполнения запросов;

- автозавершение кода SQL (название таблиц, полей, и т.п.)

- отладчик хранимых процедур и триггеров;

- поиск в метаданных;

- полное и частичное извлечение данных и метаданных;

- анализатор зависимостей объектов баз данных;

- отчеты по метаданным;

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

- экспорт данных в различные форматы. 

IBExpert обладает  множеством облегчающих работу  компонентов: визуальный редактор  для всех объектов базы данных, редактор SQL и исполнитель скриптов, отладчик для хранимых процедур  и триггеров, построитель области,  собственный скриптовый язык, а также дизайнер баз данных и т. д. 

  1. Разработка  базы данных FireBird в IBExpert

Установим и  запустим IBExpert

 

Для того чтобы  создать базу нажимаем:

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

 

У Firebird имя пользователя и пароль стандартные SYSDBA – это логин, а masterkey – пароль. Кодировка – win1251. Далее мы ничего не меняем, размер страницы, диалект и т.д. Нажимаем ОК. 

В следующем  окне выбираем наш сервер базы данных  Firebird 2.5

В описании базы данных напишем «Проект» и больше ничего не трогаем, нажимаем Register. В следующем окне открываем наш проект и вот она наша чистая база:

 

В качестве примера  для своей работы я буду создавать  простейший телефонный справочник. Наводим курсор на таблицы, правой кнопкой мыши нажимаем и выбираем Новая таблица

Самое главное  не забыть сразу переименовать нашу таблицу, иначе потом это будет  сложно сделать. Назовём нашу таблицу  LIST_PHONES. В названии прописываем ID, в разделе не пустой ставим галочку. Чем удобен IBExpert так это встроенным генератором, также переходим на вкладку Триггер и создаем триггер

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

 В таблицу  добавим поля фамилия, имя и  отчество и номер. Назовем поля, фамилия – SURNAME, имя – FNAME, отчество – PATRONYMIC и телефонный номер – TEL_NUM. 

Так будет выглядеть  таблица. 

Далее нам нужно  создать процедуру. Процедура будет нужна для вставки новой записи и для обновления существующей записи. Процедуру не переименовываем, ниже расскажу почему, и в процедуре пишем как в Delphi.

 

Так как я  никак не назвал процедуру, на данном этапе это можно исправить. Выключаем «ленивый режим» и в самом скрипте процедуры переименовываем NEW_PROCEDURE в PROC_LIST_PHONES

Далее запускаем  Delphi 2010 и создаем новый проект. В Firebird с базой данных можно работать как локально, так и удаленно, поэтому надо сделать ini файл в папке с проектом – Config.ini , в нем прописывем путь к base.fdb это нужно если придется сделать программу многопользовательской. В Delphi 2010 открываем вкладку InterBase . Также как и в IBExpert прописываем логин и пароль. 

 

Открываем код  формы добавляем все нужные кнопки для базы телефонных номеров. Полный код программы смотрите в приложении 1 

 

Далее получаем:

Теперь можно  ввести данные и всё редактируется  и удаляется

 

  1. Работа  с базами данных Firebird на сервере через IBExpert.
 

Ситуация следующая: база данных расположена на сервере, а IBExpert на вашем компьютере. Как правильно подключаться к Firebird используя IBExpert?

В зависимости  от версии сервера и настроек реализация строки соединения с БД под сетевым  протоколом может быть выполнена по-разному. Если у вас версия выше 1 , то оптимально использовать так называемые алиасы. На сервере, там где установлен Firebird (обычно это c:\Program Files\Firebird\Firebird_2_5\) файл aliases.conf В этом файле прописываются алиасы (псевдонимы БД) и полные пути к ним на сервере. Например MYDB = d:\DATABASE\DBB.FDB Это означает, что некоторой БД и именем файла DBB.FDB, расположенного в папке d:\DATABASE назначено условное имя MYDB Тогда в IBExpert и в приложениях строка коннекта 
SERVERNAME:MYDB Здесь SERVERNAME - имя сервера. Вместо имени можно указывать адрес IP 
Второй вариант  SERVERNAME:d:\DATABASE\DBB.FDB 
Но этот вариант может быть блокирован администратором. 
Учтите, что d:\DATABASE\DBB.FDB это путь к БД на сервере. d - это имя устройства на сервере, а не примэпленные диски.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

  1. Заключение
 

В данной работе мы рассмотрели созданме базы данных.

IBExpert - Поддерживает Firebird, Interbase, Yaffil. Редакторы DDL и DML. Визуальный построитель запросов. Автозавершение кода, Metadata Extractor, а так же множество других возможностей.

IBExpert это профессиональная интегрированная среда разработки (IDE) для разработки и администрирования InterBase и Firebird баз данных.

Базу данных можно создавать на локальном  компьютере или на любом компьютере в сети. Как первичный, так и вторичные файлы могут располагаться на дисках и в папках с закрытым доступом для других компьютеров локальной сети. Все файлы базы данных должны располагаться на одном компьютере. Допустимо их размещение на разных дисках одного компьютера.  Если встроенный сервер используется, то лучше скачать еще и обычный, чтобы программы проще было тестировать. В Embedded версии к одной и той же базе нельзя подключаться из разных процессов, т.е. в IBExpert отслеживать работу программы с БД не получится.

Уже давно не секрет, что работа с большими объемами данных стала обыденностью для большинства  людей. И понятное дело, что эти  данные необходимо где-то хранить, как-то извлекать из хранилища, фильтровать, как-то анализировать и т.д.  
Так вот весь необходимый инструментарий для работы с большими объемами данных имеют, так называемые, Сервера Управления БазамиДанных ( или кратко СУБД )

В этой работе мы разобрали работу с Базами Данных от простого к сложному (на примере абсолютно бесплатной СУБД Firebird 2.5) 
 
 

  1. Иностранный источник

Programming the Firebird server

Many developers shy away from coding directly on the database server. IDEs (Integrated Development Environments) such as Delphi or C++Builder may be easier to write and quicker and easier to debug. However, developing an efficient application with an intelligent database that offers the highest possible performance can only be achieved by a combination of the two, along with intelligent programming.

Reasons for server-side programming include:

Speed of execution: server-side programmíng does exactly what it says, the work is done on the server, and the results are sent out to the client (whether over a short internet line or worldwide). Client-side programming fetches all data and tables it might need, and then sorts and analyzes them on the client PC. So if you've got to perform computations on a large database or table, you've got to suck all the data back to the workstation to actually do the work. This can lead to time-consuming queries, traffic congestion and long wait times for the user.

It is possible to achieve up to 50,000 operations per second within a stored procedure. A Delphi or PHP application is considered efficient when it achieves just 3,000 operations a second. If you're skeptical, try migrating some of your code from your front-end to the server and test and compare the performance!

Consistency: database operations performed on the server are either completed successfully or rolled back (i.e. not executed at all). They are never partially completed. Another advantage of server-side programming is when you have different front-ends, e.g. Delphi and PHP, doing similar things, programming both to call a single procedure to perform a task is not just easier than programming the whole thing twice, it also ensures consistency. Both applications call the same procedure and are therefore guaranteed to provide the same result. Any alterations that may need to be made in the future only need to be made once, directly in the procedure.

Modularity: stored procedures can be written for singular tasks such as order taking, order processing and dispatch. They can then call each other. Modularity is clear/easy to comprehend, which also makes future adjustments easier. And in the example above (Delphi and PHP applications share the same database) modularity is achieved, as any alterations that may need to be made in the future only need to be made once, directly in the procedure.

Even though PSQL (Procedure SQL) is initially not so easy to write as IDEs, because the programming language is not as rich and not as user-friendly, if you want to develop efficient high-performance database applications, it is vital you take the time and effort to get to grips with this.

www.ibexpert.net 
 
 
 
 
 
 
 
 

  1. Перевод иностранного источника

Программирование  сервера Firebird

Многие разработчики уклоняются от кодирования непосредственно  на сервере базы данных. IDE (интегрированные среды разработки) , на таких как Delphi или C + + Builder можно легче писать, быстрее и проще отладить. Тем не менее, развитие эффективного применения в интеллектуальных базах данных, что обеспечивает максимально возможную производительность, может быть достигнута только путем комбинации двух способов, наряду с интеллектуальным программированием.

Причины для  программирования на стороне сервера  включают в себя:

Скорость исполнения: Серверное программирование это именно то, что он говорит, работа выполняется на сервере, а результаты будут отправлены клиенту (будь то короткая линия Интернет или по всему миру). Программирования на стороне клиента получает все данные и таблицы это может понадобиться, а затем сортирует и анализирует их на клиентский компьютер. Так что если у вас есть для выполнения вычислений на больших баз данных или таблицу, вы должны сосать все данные на рабочей станции, на самом деле делать свою работу. Это может привести к трудоемким запросам, пробки и долго время ожидания для пользователя.

Это можно достичь до 50000 операций в секунду в хранимые процедуры . Delphi или PHP заявка считается эффективной, когда она достигает всего 3000 операций в секунду. Если вы скептически, попробуйте перенос некоторых кода с переднего конца на сервер и тест и сравнить производительность!

Консистенция: база данных операций, выполняемых на сервере, либо успешно завершена или откат (т.е. не выполняется вообще). Они никогда не частично. Еще одно преимущество программирования на стороне сервера, когда у вас есть несколько пользовательских интерфейсов, например, Delphi и PHP, делает подобные вещи, как программирование, чтобы вызвать одну процедуру, чтобы выполнить задачу не только проще, чем программирование все это в два раза, он также обеспечивает последовательности. Оба приложения вызывают ту же процедуру, и, таким образом, гарантированно обеспечить тот же результат. Любые изменения, которые могут должны быть сделаны в будущем нужно только сделать один раз, непосредственно в порядке.

Модульность: хранимые процедуры могут быть написаны для особых задач, таких как порядок принятия, обработки заказов и отправки. Они могут звонить друг другу. Модульность ясно / легко понять, что также делает корректировок в будущем легче. И в приведенном выше примере (Delphi и PHP приложений одни и те же базы данных) модульности достигается, так как любые изменения, которые могут должны быть сделаны в будущем нужно только сделать один раз, непосредственно в порядке.

Хотя PSQL (Процедура SQL) изначально не так легко написать, как IDE, так как язык программирования не так богат, а не как удобно, если вы хотите, чтобы разработать эффективные высокопроизводительные приложения баз данных, важно взять времени и сил, чтобы справиться с этим.

www.ibexpert.net 
 
 
 
 
 
 
 

Приложение 1 

unit Unit1; 

interface 

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, IniFiles, DB, IBDatabase, IBCustomDataSet, IBQuery, Grids, DBGrids,

  StdCtrls, IBUpdateSQL; 

type

  TForm1 = class(TForm)

    IBDatabase1: TIBDatabase;

    IBTransaction1: TIBTransaction;

    IBQuery1: TIBQuery;

    DBGrid1: TDBGrid;

    DataSource1: TDataSource;

    Button1: TButton;

    IBTransaction2: TIBTransaction;

    IBQuery2: TIBQuery;

    Edit1: TEdit;

    Edit2: TEdit;

    Edit3: TEdit;

    Edit4: TEdit;

    Label1: TLabel;

    Label2: TLabel;

    Label3: TLabel;

    Label4: TLabel;

    Button2: TButton;

    Button3: TButton;

    Button4: TButton;

    Button5: TButton;

    procedure FormCreate(Sender: TObject);

    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);

    procedure Button1Click(Sender: TObject);

    procedure Button2Click(Sender: TObject);

    procedure Button3Click(Sender: TObject);

    procedure Button4Click(Sender: TObject);

    procedure Button5Click(Sender: TObject);

  private

    FNew: Boolean;

    procedure EnabledEdit(const AValue: Boolean);

  public

    { Public declarations }

  end;

Приложение 1 

var

  Form1: TForm1; 

implementation 

{$R *.dfm} 

procedure TForm1.Button1Click(Sender: TObject);

begin

  FNew := true;

  Edit1.Text := '';

  Edit2.Text := '';

  Edit3.Text := '';

  Edit4.Text := '';

  EnabledEdit(true);

  Edit1.SetFocus;

end; 

procedure TForm1.Button2Click(Sender: TObject);

begin

  try

    with IBQuery2 do

    begin

      if FNew then

        SQL.Text :=

          'execute procedure proc_tel_num(-1, ''' + Edit1.Text + ''',''' +

          Edit2.Text + ''', ''' + Edit3.Text + ''',' + Edit4.Text + ')'

      else

        SQL.Text := 'execute procedure proc_tel_num(' + IBQuery1.FieldByName

          ('ID').AsString + ', ''' + Edit1.Text + ''',''' + Edit2.Text +

          ''', ''' + Edit3.Text + ''',' + Edit4.Text + ')';

      Transaction.StartTransaction;

      ExecSQL;

      Transaction.Commit;

      Transaction.Active := false;

    end;

    IBQuery1.Close;

    IBQuery1.Open;

  except

    on E: Exception do

    begin

      if IBQuery2.Active then

        IBQuery2.Transaction.Rollback;

      Приложение 1 

Application.MessageBox(PChar(E.Message), 'Ошибка', MB_ICONERROR);

    end;

  end;

  EnabledEdit(false);

end; 

procedure TForm1.Button3Click(Sender: TObject);

begin

  EnabledEdit(false);

end; 

procedure TForm1.Button4Click(Sender: TObject);

begin

  FNew := false;

  with IBQuery1 do

  begin

    Edit1.Text := FieldByName('surname').AsString;

    Edit2.Text := FieldByName('fname').AsString;

    Edit3.Text := FieldByName('patronymic').AsString;

    Edit4.Text := FieldByName('tel_num').AsString;

  end;

  EnabledEdit(true);

  Edit1.SetFocus;

end; 

procedure TForm1.Button5Click(Sender: TObject);

begin

  if Application.MessageBox('Продолжить удаление?', 'Удаление',

    MB_ICONQUESTION + MB_YESNO) = IDNO then

    Exit;

  try

    with IBQuery2 do

    begin

      SQL.Text := 'delete from list_phones where id = ' + IBQuery1.FieldByName

        ('ID').AsString;

      Transaction.StartTransaction;

      ExecSQL;

      Transaction.Commit;

      Transaction.Active := false;

    end;

    IBQuery1.Close;

    IBQuery1.Open;

  except

 Приложение 1 

  on E: Exception do

    begin

      if IBQuery2.Active then

        IBQuery2.Transaction.Rollback;

      Application.MessageBox(PChar(E.Message), 'Ошибка', MB_ICONERROR);

    end;

  end;

end; 

procedure TForm1.EnabledEdit(const AValue: Boolean);

begin

  Edit1.Enabled := AValue;

Пакет IBExpert и разработка базы данных FireBird в нем