Каждая из полученных сущностей должна быть представлена базовой таблицей:
Таблица Authors – информация об авторах источников, состоящая из следующих полей:
1) NumAut – числовое автоинкрементное поле, содержащее номер автора и являющееся ключевым полем отношения;
2) Author – строковое поле, содержащее фамилию и инициалы автора (группы авторов), являющееся уникальным.
Таблица Titles – информация об названиях источников состоящая из следующих полей:
1) NumTit – числовое автоинкрементное поле, содержащее номер заглавия и являющееся ключевым полем отношения;
2) Titles – строковое поле, содержащее название источника и являющееся уникальным.
Таблица Languages – языки источников, состоящая из следующих полей:
1) NumLan – числовое автоинкрементное поле, содержащее номер языка и являющееся ключевым полем отношения;
2) Language - строковое поле, содержащее язык источника и являющееся уникальным полем.
Таблица Books – информация об источниках литературы, состоящая из следующих полей:
1) NumBook – числовое автоинкрементное поле, содержащее номер книги и являющееся ключевым полем отношения;
2) NumAut – числовое поле, содержащее код (номер) автора в таблице Authors;
3) NumTit - числовое поле, содержащее код (номер) названия в таблице Titles;
4) NumLan - числовое поле, содержащее код (номер) языка в таблице Languages;
5) Sections – текстовое (мемо) поле, содержащее список тем, связанных с источником;
6) Atchive – строковое поле, содержащее полное файловое имя архива источника;
7) MainFile – строковое поле, содержащее имя главного файла источника.
Таблица Books связана с таблицами Authors, Titles, Languages типом связи “один-ко-многим” посредством внешних ключей NumAut, NumTit и NumLan.
Создаём таблицу Authors с непустыми полями NumAut типа INTEGER и Author типа VARCHAR длиной 50 символов, поле NumAut является первичным ключом, а Author уникальным полем. Аналагично создаём таблицу Titles с непустыми полями NumTit типа INTEGER и Title типа VARCHAR длиной 200 символов, поле NumTit является первичным ключом, а Title уникальным полем. Также создаём таблицу Languages с непустыми полями NumLan типа INTEGER и Language типа VARCHAR длиной 20 символов, поле NumLan является первичным ключом, а Language уникальным полем. Наконец создаём таблицу Books с полями NumLan – непустое поле типа INTEGER, являющееся первичным ключом таблицы; NumAut - поле типа INTEGER; NumTit - поле типа INTEGER; NumLan - поле типа SMALLINT; Sections – поле типа BLOB подтипа TEXT; Archive – непустое поле типа VARCHAR длиной 32765 байт и MainFile – непустое поле типа VARCHAR длиной 255 байт. Также на таблицу Books накладываются ограничения, посредством задания внешних ключей NumAut, NumTit и NumLan, которые связаны с аналогичными полями в таблицах Authors, Titles и Languages.
Для того, чтобы поля таблиц NumBook, NumAut, NumTit и NumLan автоматически увеличивались при добавлении новой записи необходимо задать создать генераторы. Назовём их GenBook, GenAut, GenTit и GenLan для соответственно. Для их увеличения созданы триггеры InsBook, InsAut, InsTit и InsLan, которые активизируются перед занесением новой записи в соответствующую таблицу и выполняют увеличение генераторов на единицу посредством вызова встроенной процедуры GEN_ID.
Создадим представление (VIEW), которое состоит из следующих полей Number, Author, Title, Language, Sections, Archive и File. Они являются результатом выборки следующих полей таблиц Books.NumBook, Authors.Author, Titles.Title, Languages.Language, Books.Sections, Books.Archive, Books.MainFile, при условии
Books.NumAut=Authors.NumAut AND
Books.NumTit=Titles.NumTit AND
Books.NumLan=Languages.NumLan.
Это представление предназначено для скрытия реальной структуры БД от пользователя и облегчения использования БД прикладными программистами.
Для добавления, изменения и удаления записей из таблиц БД и других целей предусмотрены ряд хранимых процедур:
· DeleteAll – очистка всей БД (удаление всех записей во всех таблицах) и обнуление генераторов;
· DeleteBook – удаление заданного источника;
· InsertBook – вставка нового источника;
· SearchBook – поиск источника по заданным атрибутам с учётом регистра символов;
· SearchUpBook - поиск источника по заданным атрибутам без учёта регистра символов;
· UpdateAuthor – изменение автора источника;
· UpdateBook – изменение атрибутов источника;
· UpdateTilte – изменение названия источника;
· UpdateLanguage – изменение языка источника;
· IsWriter – проверка прав пользователя на изменение БД.
Для управления безопасностью БД созданы три роли:
· Admin – имеет права на любые действия с БД (чтение, изменение структуры и данных);
· Writer – имеет права на чтение и изменение данных БД, но не имеет прав на изменение структуры БД;
· Reader – имеет права только на чтение данных БД.
Эти роли, исходя из выше сказанного, наделены соответствующими правами на соответствующие таблицы и хранимые процедуры.
5. РАЗРАБОТКА ПРИЛОЖЕНИЯ-КЛИЕНТА
5.1 Обоснование выбора среды программирования
Разработка клиентского приложения осуществлялось на языке Delphi (ранее ObjectPascal) в среде программирования BorlandDelphi 7.0 EnterpriseEdition.
Сформулируем основные критерии, по которым производился выбор среды программирования для создания приложения.
1) Создание максимально возможного удобства в работе. Для этого программа должна иметь удобный и современный интерфейс пользователя.
2) Работа модуля должна выполняться с максимально возможной скоростью. Нежелательны ситуации, в которых пользователю длительное время придется ожидать окончания работы модуля.
3) Поддержка длинных имен файлов.
4) Минимальные затраты на разработку модуля.
5) Максимальная переносимость исходного кода программы для платформы Linux.
В ходе последующего анализа имеющихся средств программирования на основании перечисленных критериев был выбран вариант написания данного модуля с использованием системы визуального программирования BorlandDelphi 7.0. Данное заключение основывалось на следующем.
Среда визуального программирования Delphi 7.0 работает в среде Windows 9x/NT/2000/XP и предоставляет программисту возможность реализации всех достоинств графического интерфейса этой системы. Так как подавляющее большинство пользователей персональных компьютеров работают сегодня в среде операционных систем семейства Windows, то этот интерфейс является для них наиболее привычным и удобным.
Многие системы разработки приложений для ОС Windows генерируют код-полуфабрикат, который не может быть выполнен процессором без дополнительной трансляции во время работы самой программы, что существенно снижает производительность компьютера. Delphi же использует настоящий компилятор и компоновщик и генерирует стопроцентный машинный код. Такая реализация лишена непроизводительных затрат, что делает программы, написанные на Delphi, максимально эффективными.
Так как Delphi 7.0 является средой программирования для Windows, то, как и сама операционная система Delphi поддерживает длинные имена файлов и папок.
Для запуска программ, написанных на Delphi, не требуются никакие дополнительные библиотеки, интерпретаторы кода и прочее. Достаточно взять один-единственный сгенерированный исполняемый файл и запустить его там, где нужно. Для установки программы на другой компьютер не требуется создание каких-либо дистрибутивов, не нужен процесс инсталляции, достаточно переписать исполняемый файл программы.
Среда визуального программирования Delphi 7.0 является мощным средством для быстрой и качественной разработки программ для операционной системы Windows 95. Имеющаяся библиотека визуальных компонентов позволяет создать интерфейс с пользователем за считанные минуты. Объектно-ориентированный язык ObjectPascal, положенный в основу Delphi, является расширением языков TurboPascal и BorlandPascal фирмы Borland и нашел в себе отражение новых веяний в программировании. Компонентный принцип, используемый в Delphi, позволяет создавать полноценные Windows-приложения, написав минимальное количество строк кода. Delphi представляет собой открытую систему, позволяя добавлять свои компоненты в систему, модифицировать уже имеющиеся стандартные компоненты благодаря тому, что предоставлены их исходные тексты. Благодаря всему этому разработка программ в среде Delphi становится легкой и приятной.
Также, вследствие того, что большинство компонентов Delphi 7.0 идентично компонентам Kylix, то переход под платформу Linux будет занимать минимально возможное время.
Таким образом, выбранная платформа, как было показано выше, удовлетворяет поставленным требованиям, поэтому выбор был остановлен на данной системе программирования.
5.2 Средства Delphi для работы с базами данных
Хотя Delphi не имеет своего формата таблиц БД, она тем не мене обеспечивает мощную поддержку различных СУБД – как локальных (например, dBase или Paradox), так и промышленных (например, Sybase или InterBase). Средства Delphi для работы с БД можно разделить на три вида:
1) инструментальные средства;
2) компоненты.
К инструментальным средствам относятся специальные программы и пакеты, обеспечивающие обслуживание БД вне разрабатываемых приложений. Компоненты предназначены для создания приложений, осуществляющих операции с БД.
Для операций с БД система Delphi предлагает следующий набор инструментальных средств.
1) BorlandDatabaseEngine (BDE) – процессор баз данных, который представляет собой набор динамических библиотек и драйверов, предназначенных для организации доступа к БД из Delphi-приложений. BDE является центральным звеном при организации доступа к данным.
2) BDEAdministrator – утилита для настройки различных параметров BDE.
3) DatabaseDesktop – программа создания и редактирования таблиц, SQL- запросов и запросов QBE.
4) SQLExplorer – проводник БД, позволяющий просматривать и редактировать БД и словари данных.
5) SQLBuilder – программа визуального конструирования SQL-запросов.
6) SQLMonitor – программа отслеживания порядка выполнения SQL-запросов к удалённым БД.
7) DataPump – программа для переноса данных между БД.