Для ботаников и лентяев

aa1
aa2
aa3

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ АВТОМАТИЗИРОВАННОГО РАБОЧЕГО МЕСТА

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА К КУРСОВОМУ ПРОЕКТУ ПО ДИСЦИПЛПНЕ “ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ АВТОМАТИЗИРОВАННОГО РАБОЧЕГО МЕСТА”

ВВЕДЕНИЕ

С момента, когда Е. Ф. Кодд предложил реляционную модель данных, пройден большой путь. Такая модель освобождает пользователя от знания файловой структуры, где хранятся табличные данные. Вместе с тем реляционная модель основывается на теории множеств, хорошо разработанной в математике. Ещё одна причина того, что реляционная модель является в настоящее время самой используемой – она более всего соответствует физическому способу представления файла в большинстве современных файловых систем.

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

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

Задачами данного курсового проекта являются:

• Реализация базы данных с использованием сетевой СУБД. При этом предусмотреть значения по умолчанию, ограничения на значения, связи целостности данных, хранимые процедуры;

• Создание триггеров для поддержания целостности данных;

• Создание шести хранимых процедур с параметрами для защиты информации;

• Создание двух транзакций с блокировкой данных;

• Создание клиентского приложения для тестирования задач.

Исходной информацией для курсовой работы является модель входных данных в виде логической модели и перечень реализуемых задач. Поэтому разработка структуры базы данных будет начинаться с создания физической модели. После этого необходимо сформулировать детальные алгоритмы решения поставленных задач серверного приложения и обосновать выбранные методы решения. На стадии реализации сервера нужно выбрать наиболее подходящую среду программирования, описать методы реализации задач в ней. Далее необходимо заполнить таблицы информацией. Следующий этап - создание корректно работающего клиентского приложения. Здесь необходимо сформулировать детальные алгоритмы решения поставленных задач клиентского приложения и обосновать выбранные методы решения. На стадии реализации клиента нужно выбрать наиболее подходящую среду программирования, описать методы реализации задач в ней. Правильность работы системы будет проверяться тестированием всех её возможностей при помощи клиентского приложения.

1 ПРОЕКТИРОВАНИЕ ЛОГИЧЕСКОЙ СТРУКТУРЫ БАЗЫ ДАННЫХ

1.1 Структура таблиц

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

1.2 Связи целостности данных

Связь ссылочной целостности, называемая также внешним ключом, предназначена для автоматического контроля над сохранением целостности информации в таблицах базы данных. Она устанавливается при помощи редактора таблиц от дочерней (младшей) таблицы к родительской (старшей), имеет собственное имя и несколько параметров. Самыми важными из них являются те, которые отвечают за каскадное изменение и удаление записей подчинённых таблиц, -.Cascade Update Related Fields и Cascade Delete Related Fields. Запретить изменение поля связи и удаление записи в родительской таблице, если в дочерней есть записи с таким же значением поля связи, можно, если не устанавливать их. Каскадирование используется для связывания межсущностных таблиц с ключевыми таблицами сущностей, а также связывания последних с таблицами, образованными вследствие нормализации вертикальной неатомарности описательных атрибутов. В первом случае ключевые таблицы являются младшими, во втором - старшими. Межсущностные таблицы – это таблицы, полученные в результате нормализации неполной функциональной зависимости описательных атрибутов от ключевых. Каскадирование не используется в таблицах, образованных вследствие нормализации транзитивных зависимостей описательных атрибутов от ключевых. Причём в этом случае они являются старшими. Внешний ключ устанавливается только по уникальным полям или группам полей родительской таблицы, однако использовать все из них не обязательно.

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

1.3 Триггеры

Триггеры – это специальные хранимые процедуры, служащие для реализации ограничений целостности данных, для каскадных изменений в таблицах. Триггеры привязаны к определённой таблице. Они запускаются автоматически при выполнении тех или иных действий с данными в таблице. Все производимые триггером действия рассматриваются как одна транзакция, которая может быть откатана при обнаружении ошибки или нарушении целостности данных. Триггеры делятся по видам замещаемых операций на INSERT, UPDATE и DELETE, и по типу замещения на AFTER и INSTEAD OF. AFTER запускаются после успешного завершения программы, вызвавшей их. Если команда по каким-либо причинам не завершается успешно, то не запускается и триггер. Их нельзя использовать в представлениях. INSTEAD OF выполняются вместо операций INSERT, UPDATE и DELETE, и могут создаваться для представлений. Программирование текста триггера сводится, в основном, к работе с таблицами inserted и deleted. Поскольку нам необходимо реализовать с помощью триггеров связи ссылочной целостности данных, то количество триггеров напрямую зависит от количества этих связей. Начнём их проектирование с анализа структуры базы данных. В разрабатываемой базе данных “Library” есть три таблицы, взаимосвязанных таким образом, что имеются две родительские и одна дочерняя. Поскольку триггер INSTEAD OF DELETE контролирует (по определению) нисходящее удаление информации, то нам необходимо создать их для всех родительских таблиц. Так как триггер INSTEAD OF INSERT контролирует (опять же по определению) восходящее добавление информации, то нам нужно создать его и для дочерней таблицы. Триггеры INSTEAD OF UPDATE являются совмещёнными, то есть представляют собой и удаление и добавление одновременно. Поэтому они будут создаваться для всех родительских и дочерних таблиц. Однако если таблица принадлежит к обеим группам, то, само собой, функциональность нисходящего удаления и восходящего добавления должны быть реализованы в одном и том же триггере. Так как мы работаем в системе Microsoft SQL Server, то для написания триггеров будет использоваться язык Transact-SQL. Некоторые триггеры должны использовать механизм явных транзакций для обеспечения атомарности своего кода и уровень полной изоляции их друг от друга – SERIALIZABLE.

К особенностям реализации данных объектов следует также отнести:

• Обязательное использование курсоров при работе с наборами данных inserted и deleted. Для решения поставленной задачи достаточно статических курсоров с однонаправленным механизмом перемещения.

• Если в результате работы триггер не возвращает значений, то будет выведена надпись свидетельствующая об этом .

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

1.4 Хранимые процедуры

Хранимая процедура – это именованный объект базы данных, состоящий из последовательности команд Transact-SQL. Необходимость их существования на сервере SQL диктуется тем фактом, что не всякий результат можно получить одним запросом. Последовательность нескольких запросов предпочтительно хранить именно на сервере, а не воспроизводить её каждый раз на клиентской стороне. Наконец, может возникнуть необходимость реализации логики, плохо укладывающейся в рамки языка запросов. Для этой цели лучше могут подойти структуры обычного алгоритмического языка программирования. Именно такими возможностями и дополняется язык запросов в Transact-SQL. Хранимые процедуры могут содержать огромное количество команд, а вызываться из клиентской программы всего одной строкой. Это, естественно, снижает сетевой трафик. Ещё один важный момент - модификация хранимой процедуры мгновенно приведёт к тому, что все клиентские приложения будут работать согласно уже изменённой процедуре. С использованием хранимых процедур очевиден такой подход построения приложений, при котором на клиентской стороне будет реализован только интерфейс пользователя. Поскольку по заданию нам необходимо создать шесть хранимых процедур с параметрами для защиты информации, мы создадим не только процедуры-запросы, но и добавляющие процедуры с параметрами, а затем определим различные их наборы для различных ролей пользователей.

1.5 Транзакции

При создании систем на основе технологии “клиент-сервер” возникает ряд технических проблем, в частности, - получение на стороне клиента достоверной информации. Один из способов решения этой задачи основывается на применении механизма транзакций. Смысл использования транзакций прост: несколько команд, связанных логикой выполнения. Объединяется в одну операцию. Невыполнение какой-либо из них может привести к общему неверному результату, исправить который будет достаточно сложно. Итак, транзакция состоит из некоторого набора (блока) команд. Если хотя бы одна инструкция была выполнена с ошибкой, то происходит откат транзакции, то есть отменяется выполнения всех её операторов. Такой откат возможен, только если все операции транзакции будут запоминаться в некотором журнале, который и называется журналом транзакций. Именно благодаря этому документу и возможен откат (rollback), то есть восстановление системы на момент начала транзакции. С точки зрения правил выполнения транзакции можно разделить на явные, автоматические, неявные и распределённые. При параллельной работе нескольких пользователей может возникнуть рассогласование информации вследствие одновременного доступа клиентов к одним и тем же данным. Для решения этих проблем используются блокировки: коллективная, обновления, монопольная и массивного обновления. В данном курсовом проекте необходимо создать две транзакции с блокировкой данных на выбор. Для их реализации необходимо создать ещё две хранимые процедуры. А для того, чтобы наличие транзакций было оправданным, процедуры должны состоять из нескольких инструкций. Для большей надёжности мы будем использовать явные транзакции и уровень полной изоляции их друг от друга – SERIALIZABLE. На этом проектирование физической структуры базы данных завершается.

2 ОПИСАНИЕ ФИЗИЧЕСКОЙ РЕАЛИЗАЦИИ БАЗЫ ДАННЫХ С ПОМОЩЬЮ СУБД SQL SERVER 7.0

Для реализации базы данных данного курсового проекта, а точнее его серверной части, будем использовать продукт MS SQL Server , так как он является мощным средством разработки приложений типа “клиент-сервер”. Основными возможностями данного продукта являются:

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

• Все действия с базами данных можно осуществлять либо используя программу SQL Server Enterprise Manager, либо посредством команд-запросов языка Transact-SQL. Язык Transact-SQL является расширением языка SQL и позволяет создавать сколь угодно сложные программные конструкции по управлению базами данных.

• Кроме таблиц ,база данных содержит и другие объекты:

o Индексы, которые используются сервером для быстрого доступа к записям таблицы;

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

o Хранимые процедуры – это именованный код, написанный на языке Transact-SQL. Хранимые процедуры являются основой приложений “клиент-сервер”. Они могут запускаться с клиентского приложения, а также передавать данные обратно в клиентское приложение. Сервер предоставляет большой набор системных хранимых процедур, которые иногда оказываются просто незаменимыми при выполнении некоторых специфических действий;

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

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

o Объекты типа курсор, расширяющие возможности доступа к отдельным записям таблиц за счёт использования программных структур циклического типа.

• Сервер MS SQL осуществляет контроль над правами пользователя. Каждый пользователь получает доступ к той или иной базе данных. Но в пределах базы данных могут существовать также свои права доступа к отдельным её объектам. Такой подход позволяет организовать гибкую систему безопасности данных так, чтобы она соответствовала существующим реалиям.

• Резервное копирование – важнейшая функция сервера, позволяющая не только свести к минимуму вероятность потери данных, но и обеспечивающая возможность переноса данных на другие серверы в отсутствие связи через локальную сеть. Можно реализовать резервное копирование в виде отдельного задания, которое будет осуществляться с заданной периодичностью.

• Ещё одним мощным средством поддержания целостности и непротиворечивости баз данных является использование транзакций, которые позволяют в случае сбоя в системе восстановить все данные, задействованные в этой операции, в состояние до начала транзакции. SQL Server поддерживает и так называемые распределённые транзакции, когда в работе участвуют сразу несколько серверов, взаимодействующих друг с другом по локальной сети.

• В сервере MS SQL реализован весьма эффективный способ обмена информацией между базами данных, принадлежащими различным серверам, - репликация. Он позволяет, в частности автоматизировать процесс синхронизации данных, находящихся в различных базах данных.

• Сервер MS SQL содержит большое количество утилит. Среди них есть как утилиты командной строки, так и диалоговые программы. Среди диалоговых утилит особо хочется отметить такую программу, как Query Analyzer. Она позволяет анализировать результаты запросов, в том числе представляя их в графическом виде.

• MS SQL Server обладает встроенной поддержкой языка разметки XML, что значительно упрощает интегрирование сервера в Интернет. Посредством мастера Web Assistant Wizard можно организовать автоматическое создание HTML-страниц на основе информации, хранящейся в базе данных.

• В последнюю версию MS SQL Server включена поддержка Active Directory – службы активного каталога, которая была реализована в Windows 2000. Эта служба позволяет увеличить управляемость сервера в масштабах предприятия.

• Набор служб DTS (Data Transformation Services – службы преобразования данных) обеспечивает передачу данных между SQL Server и данными, имеющими иную структуру (MS Access, Oracle, Excel, FoxPro и даже текстовый формат). Существенно, что службы (пакеты) DTS могут быть запрограммированы практически на любое действие с преобразуемыми данными.

• Полнотекстовый поиск (Full-Text Search) предоставляет пользователям возможность осуществлять эффективный поиск данных, как в форматированных, так и в неформатированных документах.

• Для программного управления SQL Server с помощью COM-совместимых языков может быть использована библиотека объектов SQL Objects – DMO (Distributed Management Objects – объекты распределённого управления), позволяющая программным путём производить любые операции на сервере, то есть осуществлять полный перечень операций его администрирования.

• Мощным средством автоматизации администрирования является компонент SQL Server Agent, который посредством заданий, выполняющихся согласно расписанию, может взять часть работы администратора на себя.

• Приложение, обращающееся к SQL Server, может быть написано на Visual C++, Visual Basic, Delphi, Visual FoxPro и в других системах разработки приложений. Доступ к базам данных SQL Server можно осуществлять с помощью различных технологий, в том числе ODBC, OLE DB, ADO, DAO и других.

Как мы уже упоминали, создавать объекты и работать с ними в SQL Server можно двумя путями: с помощью утилиты Enterprise Manager, либо посредством команд-запросов языка Transact-SQL. Для создания, настройки свойств, заполнения начальным (тестовым) типом данных предпочтительно использовать утилиту Enterprise Manager, так как она является графической надстройкой над системными процедурами. Enterprise Manager поддерживает интерфейс MMC (Microsoft Management Console). MMC – расщеплённое на две части окно: область имён и область объектов. Область имён представляет все объекты в виде иерархического дерева. В связи с этим работа по созданию системы сводится, в основном, к выбору закладок всплывающих меню и вводу необходимых параметров. Для тестирования работы системы на различных этапах её создания удобно использовать не только Enterprise Manager, но и утилиту Query Analyzer, содержащую всю информацию о выполняющихся запросах и также поддерживающую иерархическое дерево объектов. Здесь можно отладить сложные составные конструкции запросов, а затем перенести их непосредственно в необходимую базу данных в виде хранимой процедуры или триггера.

2.1 Создание базы данных

База данных была создана с помощью метода New Database объекта Databases. При этом необходимость в задании конкретных настроек не возникла вследствие приемлемости настроек по умолчанию.

2.2 Создание таблиц

Таблицы база данных были созданы с помощью метода New Table объекта Tables. Далее, в дизайнере таблиц, определили все поля и их свойства, такие как имя, тип, длина, способность содержать значения NULL, наличие вычислений, принадлежность к первичному ключу и так далее. Все данные о свойствах полей были взяты из пункта 1.1.

2.3 Создание связей ссылочной целостности, индексов и ограничений на столбцы

Связи ссылочной целостности, индексы и ограничения на столбцы были созданы в соответствующих закладках дизайнера таблиц в полном соответствии с их описанием в пункте 1.2.

3 ОПИСАНИЕ РЕАЛИЗАЦИИ РАЗРАБОТАННОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ АВТОМАТИЗИРОВАННОГО РАБОЧЕГО МЕСТА

Среди разработчиков программных продуктов под Windows особой популярностью пользуется среда быстрой разработки приложений Delphi. Эта популярность завоевана, прежде всего, её простотой, лёгкостью в изучении и использовании.

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

Среда Delphi обладает практически всеми возможностями современных систем управления базами данных. Она имеет встроенную поддержку языка структурированных запросов (SQL). С помощью Delphi можно разрабатывать как локальные, так и удалённые базы данных.

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

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

При написании клиентского приложения были использованы следующие объекты:

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

TADOConnection – используется для подключения к SQL серверу и к используемой БД;

TADOStoredProc – используется для получения списка хранимых процедур и отправки их серверу на выполнение;

TDataSource – источник данных. Обеспечивает хранение данных, полученных от SQL сервера через TADOStoredProc, а также передачу этих данных другим компонентам;

TDBGrid – используется для представления набора выходных данных в табличной форме, полученных от TDataSource в результате выполнения хранимых процедур;

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

TGroupBox – используется для выделения некоторой области формы приложения;

TButton - используются для запуска хранимой процедуры на выполнение, а также для выхода из приложения.

Текст программы клиентского приложения приведен в приложении Б.

4 ТЕСТИРОВАНИЕ СИСТЕМЫ

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

При запуске исполняемого файла Project1.exe на экране появилась форма, приведенная на рисунке 4.1.

После выбора пункта «Подключиться к SQL Server» на экране появилось окно для ввода имени пользователя БД и соответствующего пароля, приведенное на рисунке 4.2.

Таким образом, в результате подключения к сетевой БД REEST клиент получает возможность выбирать из списка необходимую хранимую процедуру и выполнять ее по выбору пункта «Выполнить StoredProcedure». Выход из приложения осуществляется при выборе пункта «Завершить работу».

Распечатка результатов тестирования хранимых процедур приведена в приложении В.

ЛИТЕРАТУРА

1. Пономарёв В. А. Базы данных в Delphi 7. Самоучитель. – СПб.: Питер, 2003.

2. Бобровский С. И. Delphi 7. Учебный курс. – СПб.: Питер, 2003.

3. Пирогов В. Ю. MS SQL Server: управление и программирование. СПб.: БХВ-Петербург, 2005

bbb
bb1
bb2
bb3
1

На главную

1
1

вверх

2
Используются технологии uCoz