Администрирование и разработка приложений баз данных
Программа-журнал для учёта происшествий на водных объектах, ее разработка. Осуществление государственного и технического надзора за маломерными судами и сооружениями для их стоянок, участие в мероприятиях по укреплению правопорядка, охрана жизни людей.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 06.06.2018 |
Размер файла | 2,3 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Содержание
Введение
1. Постановка задачи
1.1 Характеристика предметной области
2. Проектирование и разработка системы
2.1 Проектирование интерфейса
3. Описание разработанной системы
3.1 Общие сведения
Заключение
Список использованной литературы
Введение
Программа-журнал для учёта происшествий на водных объектах разрабатывалась для Государственной инспекции по маломерным судам (ГИМС), поэтому считаю немаловажным кратко описать, задачи и функции данной государственной структуры и существующие способы учёта происшествий. программа надзор водный
Основными задачами ГИМС России являются: осуществление государственного и технического надзора за маломерными судами и базами (сооружениями) для их стоянок, участие в мероприятиях по укреплению правопорядка, охрана жизни людей и окружающей среды во внутренних водах и в территориальном море Российской Федерации (водные объекты).
Центр ГИМС МЧС России по субъекту Российской Федерации в соответствии с возложенными на него задачами осуществляет следующие основные функции:
- осуществляет в пределах своей компетенции надзор и контроль за выполнением требований по обеспечению безопасности людей и охраны жизни людей на базах (сооружениях) для стоянок маломерных судов, пляжах, переправах и наплавных мостах;
- осуществляет контроль над соблюдением актов, регламентирующих порядок пользования маломерными судами, базами (сооружениями) для их стоянок, пляжами, переправами и наплавными мостами;
- осуществляет в установленном порядке в соответствии с законодательными и иными нормативными правовыми актами Российской Федерации классификацию маломерных судов, государственную регистрацию (в том числе регистрацию залога и других обременений), учет, освидетельствования и осмотры маломерных судов, присвоение им государственных (бортовых) номеров, выдачу судовых билетов и иных документов на зарегистрированные маломерные суда;
- проводит разъяснительную и профилактическую работу среди населения. В целях предупреждения аварийности маломерных судов и снижения травматизма на водных объектах;
- осуществляет в установленном порядке производство по делам об административных правонарушениях в пределах своей компетенции;
- участвует в реализации мероприятий по предупреждению и ликвидации чрезвычайных ситуаций на водных объектах, в поиске и спасании людей на водных объектах, в формировании соответствующих технических регламентов и технических требований;
- осуществляет учет аварий и происшествий с маломерными судами, несчастных случаев с людьми на воде, нарушений правил, технических требований и нормативов, обеспечивающих безопасность эксплуатации маломерных судов, баз (сооружений) для их стоянок, пляжей, переправ и наплавных мостов.
Актуальность выбранной темы выпускной работы обусловлена потребностью автоматизации учёта аварий и происшествий, передачи сведений руководству с места происшествия, а также автоматизации формирования аналитических данных о конкретном происшествии.
С учётом потребности ГИМС, целью данной работы является разработка приложения для Государственной инспекции по маломерным судам, которое предоставляет возможность оперативно вести работу при происшествиях связанных с людьми и происшествиях, связанных с маломерными судами.
В первой главе рассмотрен порядок работы Государственной инспекции по маломерным судам при происшествиях на водных объектах и функции, которые будут автоматизированы при разработке программы-журнала.
Во второй главе освещены преимущества DelphiXE, рассмотрены основные составные части данной среды, позволяющие осуществлять визуальное программирование, также рассмотрена утилита IBExpert, позволяющая создавать базу данных.
В третьей главе приведен процесс разработки системы. Приведено описание проектирования приложения и базы данных. Описаны общие принципы программирования прикладных объектов и процесс разработки интерфейса.
Приведено общее описание разработанной системы: версия платформы, рабочая среда, СУБД необходимая для работы и алгоритм установки недостающего компонента, необходимого для работы приложения. Описана работа прикладных объектов.
В заключении подведены основные итоги разработки.
В приложении представлен листинг программы.
1. Постановка задачи
1.1 Характеристика предметной области
В отделе ГИМС, поименный учет погибших на водных объектах, ведётся в Журнале учета погибших на водных объектах по специальной форме, в которой учитываются все случаи гибели людей на водных объектах. Еженедельно эти сведения представляются в отдел ГИМС, который обобщает полученную информацию и анализирует ее.
В отделе ГИМС отдельно ведется Книга учета происшествий с маломерными судами, в которой учитываются поступающие от руководителей инспекторских подразделений центра ГИМС сведения по специальной форме.
Передача сведений при происшествии, связанным с гибелью людей, руководителем инспекторского подразделения осуществляется письменно. Сведения передаются в отдел ГИМС, на территории которой произошло происшествие. Сведения включают в себя такую информацию, как: данные о погибшем, характеристику места происшествия, краткое описание обстоятельств и причин гибели с указанием принятых мер по спасению людей, в том числе, количества задействованных сил и средств (техники и личного состава) от территориальных органов РСЧС, в том числе от ГУ МЧС России по субъекту Российской Федерации.
В случае возникновения происшествия с маломерным судном руководитель инспекторского подразделения, в зоне ответственности которого оно возникло, выясняет обстоятельства и факторы, приведшие к происшествию с маломерным судном и повлекшие гибель людей, применительно к сведениям, предусмотренным для включения в Учетную карточку происшествия с маломерным судном. При происшествии связанном, с маломерным судном руководитель инспекторского подразделения заполняет Учетную карточку происшествия с маломерным судном и направляет её в отдел ГИМС в срок не позднее 3 суток с момента получения информации о происшествии.
Если происшествие с маломерным судном повлекло гибель двух и более человек, то доклад производится немедленно, с последующим представлением формы ГИМС-ПМС и подробного письменного донесения в отдел ГИМС с имеющимися материалами в течение 3 суток после происшествия. Аналитические сведения направляются отделом ГИМС регионального центра (на основе сведений отделов) к 17.00 московского времени каждый четверг по электронной почте в адрес управления ГИМС МЧС России в виде табличных данных. Сведения содержащиеся в учетных карточках происшествия с маломерным судном, в отделе ГИМС ежеквартально обобщаются и анализируются в виде таблиц. Анализ за квартал, полгода и год представляется в Отдел ГИМС РЦ.
Программа-журнал необходима для автоматизации учёта сведений о происшествии, ведущегося в настоящее время в Журнале учета погибших на водных объектах и Книге учета происшествий с маломерными судами, для возможности автоматизированного формирования аналитических сведений о конкретном происшествии руководителем инспекторского подразделения, а также передачи сведений для перечисленных учётных форм и аналитических сведений по сети "Internet" в отдел ГИМС, вместо существующей письменной передачи данных.
Программа-журнал будет работать по схеме клиент-серверного взаимодействия.
Клиентская часть будет представлять собой штатное приложение операционной системы Windows"Удалённый рабочий стол" на персональном компьютере, подключённом к сети "Internet". Руководитель инспекторского подразделения посредством "Удалённогго рабочего стола" будет подключаться к серверу отдела ГИМС с установленной программой-журналом для внесния сведений в базу сервера о происшествии связанном с гибелью людей и маломерными судами.
Формулировка задачи.
Целью данной работы является разработка программы-журнала для учёта происшествий на водных объектах, удовлетворяющей нужды руководителей инспекторских подразделений и сотрудников отделов ГИМС, для автоматизации учёта и формирования сведений для сравнительного анализа, а также для автоматизации передачи учётных и аналитических данных.
Разработка приложения включает следующие этапы:
1) Выбор средств разработки
2) Разработка структуры приложения и согласование с заказчиком
3) Реализация интерфейса
4) Создание базы данных
5) Разработка приложения
6) Тестирование
Задачами для реализации поставленной цели являются:
1. Создание унифицированного интерфейса приложения.
2. Автоматизация учета происшествий с маломерными судами и людьми на водных объектах.
3. Автоматизация формирования отчётов, содержащих аналитические данные
Основными функциями, выполнение которых должно обеспечивать приложение, являются:
· ведение справочников с данными ГИМС, редактирование атрибутов этих данных;
· ведение базы о происшествиях;
· возможность выборки происшествий за определённый период;
· возможность рассмотреть в выбранных сведениях основную информацию по происшествию, информацию по погибшим, по расследованиям, по привлечённым силам и средствам, по мероприятиям, документы, прилагаемые к происшествиям;
· возможность формирования аналитических отчётов.
СРЕДСТВА РАЗРАБОТКИ
Выор средств разработки
В качестве среды разработки была выбрана среда Delphi XE2, для быстрой визуальной разработки приложений, являющаяся частью пакета Embarcadero RAD Studio.
Для Delphi XE2 необходим сборник компонентов JEDI VisualComponentLibrary, в который включена объектно-ориентированная библиотека JVCL (англ. VisualComponentLibrary, VCL) для разработки программного обеспечения, предназначенная для создания традиционных приложений с графическим пользовательским интерфейсом на основе форм Win32. Здесь есть улучшенные стандартные компоненты, компоненты для работы с БД, графикой, системой, файлами, шифрование, компоненты для работы с интерфейсом. Также необходима библиотека JEDI CodeLibrary входящая в сборник компонентов, которая состоит из большого набора тщательно протестированных, отлаженных и полностью документированных полезных процедур и невизуальных классов, которые используются в Delphi проектах.
Перед установкой JVCL необходимо инсталлировать JCL (JEDI CodeLibrary). Использование Delphi XE обусловлено следующими факторами:
1. При приобретении последних версий появляется возможность
получить предыдущие бездополнительных вложений для заказчика.
Например, при выборе Delphi XE2 аказчик получает Delphi 7, Delphi2007, Delphi 2009 и Delphi 2010.
2. Delphi XE2 предоставляет возможность работать при помощи SQL с обычными файловыми СУБД типа dBase и Paradox, Firebird (Win32), данная среда предоставляет возможность прозрачного использования SQL, используя свои внутренние механизмы
3. Созданные программы не зависимы от стороннего программного обеспечения, как-то Microsoft .NET Framework, или JavaVirtualMachine
4. Выделение и освобождение памяти контролируется в основном пользовательским кодом, что с одной стороны, ужесточает требования
к качеству кода, а с другой - делает возможным создание сложных приложений, с высокими требованиями к отзывчивости (работа в реальном времени).
5. Поддержка платформы x64 (пока только для Windows)
6. Позволяет однократно создать приложение и затем компилировать его для Windows и Mac OS X.
7. Кросс-платформенная библиотека FireMonkey для создания современного пользовательского интерфейса. FireMonkey использует аппаратное ускорение если оно доступно, но не совместима с VCL.
Используется, чтобы создаваемое приложение можно было откомпилировать и собрать не только под Windows, но Mac OS и iOS.
8. Компоненты LiveBindings для подключения любого векторного или трехмерного элемента пользовательского интерфейса к любому источнику данных.
9. Значительные улучшения в технологии DataSnap. В частности, добавлены генераторы заготовок приложений с кодом взаимодействия с создаваемым DataSnap-сервером для большинства мобильных платформ, на разных, соответствующих платформам языках программирования.
Среда разработки Delphi XE2
Основными составными частями DelphiXE2 являются:
1. Главное окно
2. Дизайнер Форм (Form Designer)
3. Окно Редактора Исходного Текста (EditorWindow)
4. Палитра Компонент (ComponentPalette)
5. Инспектор Объектов (ObjectInspector)
6. Справочник (On-linehelp)
Главное окно управляет процессом разработки приложения, управляет файлами, включаемыми в приложение и выполняет всю работу, связанную с их сопровождением, компиляцию и отладкой. Главное окно имеет:
· Главное меню (MenuBar), располагается непосредственно под строкой заголовка главного окна и позволяет получить доступ ко всем функциях среды разработки.
· Панель инструментов (SpeedBar) предоставляет быстрый доступ к большинству команд главного меню. Располагается под главным меню.
· Палитра компонентов (Component Palette) предоставляет доступ к визуальным компонентам, которые можно помещать на форму.
Главное окно Delphi XE2 представлено на рисунке 2.1.1:
Рисунок 2.1.1 - Главное окно Delphi XE2
Дизайнер Форм в Delphi интуитивно понятен и прост в использовании. Окно формы представляет собой проект Windows-окна будущей программы. Вначале это окно пусто. Точнее, оно содержит стандартные для Windows интерфейсные элементы - кнопки вызова системного меню, максимизации, минимизации и закрытия окна, полосу заголовка и очерчивающую рамку. Вся рабочая область окна обычно заполнена точками координатной сетки, служащей для упорядочения размещаемых на форме компонентов. Работа с дизайнером форм заключается в извлечении из палитры компонентов нужного компонента и размещении его на "наборном поле" окна формы, постепенном заполнении формы интерфейсными элементами. Собственно, именно в этом процессе наполнения формы и заключается главная идея визуального программирования. Программист в любой момент времени контролирует содержание окна создаваемой программы и может внести в него необходимые изменения. Дизайнер форм Delphi XE2 представлен на рисунке 2.1.2:
Рисунок 2.1.2 - Дизайнер форм Delphi XE2
Палитра компонентов занимает правую часть главного окна и имеет закладки, обеспечивающие быстрый поиск нужного компонента. Под компонентом понимается некий функциональный элемент, содержащий определенные свойства и размещаемый программистом в окне формы. С помощью компонентов создается каркас программы, ее видимые на экране внешние проявления: окна, кнопки, списки выбора и т. д. Палитра компонентов позволяет выбрать нужные объекты для размещения их на дизайнере форм. Палитра компонентов использует постраничную группировку объектов. Внизу палитры находится набор закладок - Standard, Additional, Dialogs и т.д. Палитра компонентов DelphiXE2 представлена на рисунке 2.1.3.
Рисунок 2.1.3 -Палитра компонентов Delphi XE2
Слева от дизайнера форм находится инспектор объектов. Любой размещаемый на форме компонент характеризуется некоторым набором параметров: положением, размером, цветом и т. д. Часть этих параметров, например, положение и размеры компонента, программист может изменять, манипулируя с компонентом в окне формы. Для изменения других параметров предназначено окно инспектора объектов. Это окно содержит две страницы - Properties (Свойства) и Events (События). Страница properties служит для установки нужных свойств компонента, страница Events позволяет определить реакцию компонента на то или иное событие. Совокупность cвойств отображает видимую сторону компонента: положение относительно левого верхнего угла рабочей области формы, его размеры и цвет, шрифт и текст надписи на нем и т. п.; совокупность событий - его поведенческую сторону: будет ли компонент реагировать на щелчок мыши или на нажатие клавиш, как он будет вести себя в момент появления на экране или в момент изменения размеров окна и т. п. Каждая страница окна инспектора объектов представляет собой двухколончатую таблицу, левая колонка которой содержит название свойства или события, а правая - конкретное значение свойства или имя подпрограммы. В верхней части окна инспектора объектов располагается раскрывающийся список всех помещенных на форму компонентов. Поскольку форма сама по себе является компонентом, ее имя также присутствует в этом списке. Инспектор объектов Delphi XE2 представлен на рисунке 2.1.4:
Рисунок 2.1.4-Инспектор объектов Delphi XE2
Страница событий связана с Редактором; если дважды щелкнуть мышкой на правую сторону какого-нибудь пункта, то соответствующий данному событию код автоматически запишется в редактор, сам редактор немедленно получит фокус, и сразу же появляется возможность добавить код обработчика данного события. Окно кода предназначено для создания и редактирования текста программы. Этот текст составляется по специальным правилам и описывает алгоритм работы программы. Совокупность правил записи текста называется языком программирования. В системе Delphi используется язык программирования ObjectPascal, который представляет собой расширенную и усовершенствованную версию широко распространенного языка Паскаль, впервые предложенного швейцарским ученым Н. Виртом еще в 1970 г. и усовершенствованного сотрудниками корпорации Borland (созданные ими языки назывались TurboPascal, BorlandPascal и Object Pascal). Первоначально окно кода содержит минимальный исходный текст, обеспечивающий нормальное функционирование пустой формы, в качестве полноценного Windows-окна. В ходе работы над проектом программист вносит в него необходимые дополнения, чтобы придать программе нужную функциональность. Поскольку для создания даже простых программ вам понадобится создавать и изменять (редактировать) код программы, ниже описываются основные приемы работы с окном кода. Сразу после открытия нового проекта в нем будут минимально необходимые строки кода для описния формы. Последняя важная часть среды Delphi - справочник (on-linehelp). Для доступа к этому инструменту нужно просто выбрать в системном меню пункт Help и затем DelphiHelp. На экране появится справочник. Справочник является контекстно-зависимым; при нажатии клавиши F1, всплывает подсказка, соответствующая текущей ситуации. Например, находясь в инспекторе объектов, выбрав какое-нибудь свойство при нажатии F1 - появляется справка о назначении данного свойства. Справочник Delphi XE2 представлен на рисунке 2.1.5:
Рисунок 2.1.5 -Справочник Delphi XE2
Основная программа, которая использует написанные программистом модули, называется проектом. Проект может включать формы, модули, установки параметров проекта, ресурсы, графическую информацию и т.д. Вся эта информация хранится в различных файлах, которые используются в головной программе, т.е. в проекте.
Любой проект, имеет по-крайней мере шесть файлов, связанных с ним. Три из них относятся к управлению проектом из среды и напрямую программистом не меняются. Ниже приводится список файлов, которые обязательно содержатся в проекте.
· Главный файл проекта, изначально называется PROJECT1.DPR.
· Первый модуль программы (unit), который автоматически появляется в начале работы. Файл называется UNIT1.PAS по умолчанию, но его можно назвать любым другим именем, вроде MAIN.PAS.
· Файл главной формы, который по умолчанию называется UNIT1.DFM, используется для сохранения информации о внешнем виде главной формы.
· Файл PROJECT1.RES содержит иконку для проекта, создается автоматически.
· Файл PROJECT1.CFG содержит информацию о состоянии рабочего пространства.
В этих файлах хранятся опции текущего проекта (которые настраиваются в окне Project - Options). При отсутствии этих файлов будут использоваться стандартные параметры.
Ниже описываются пункты главного меню среды:
Пункт меню "File"
· New предлагает выбрать тип нового приложения
· Open открывает при необходимости любой модуль или просто текстовый файл. Если модуль описывает форму, то эта форма тоже появится на экране.
· OpenProject открывает существующий проект.
· OpenFromVersionControlпозволяет работать с репозитариями
других разработчиков
· Reopen открывает ранее открывавшийся проект
· Save сохраняет только редактируемый файл, но не весь проект.
· SaveAs сохраняет редактируемый файл под другим именем
· SaveProject As сохраняет проект
· Save All сохранить все файлы
· Save All сохранить все файлы
· Close удаляет текущий файл из окна редактора
· Close All закрывает все файлы проекта
Пункт меню "File" представлен на рисунке 2.1.6:
Рисунок 2.1.6 -пункт меню "File"
Пункт меню "Edit" содержит команды Undo и Redo, которые могут быть очень полезны при работе в редакторе для устранения последствий при неправильных действиях, например, если случайно удален нужный фрагмент текста.
Команды Cut, Copy, Paste и Delete - как во всех остальных приложениях Windows, но их можно применять не только к тексту, но и к визуальным компонентам.Bring To Front, Send To Back, Align и Size используются для выравнивания и управления внешним видом компонентов на форме.
В пункте меню "View"Project manager позволяет видеть содержимое проекта.Object Inspector показывает окно инспектора объектов.
В пункте меню "Project" Add to Project позволяет добавлять форму в проект. Remove from Project удаляет форму из проекта. View Source показывает содержимое файла проекта. SyntaxCheck только проверяет правильность кода программы, но не обновляет DCU файлы
Запуск процесса компиляции выполняется по команде Project | Compile<Project1> (Проект | Компилировать <проект>) или нажатием комбинации клавиш <Ctrl>+<F9>. В этой команде содержится имя проекта, разработка которого выполняется в настоящий момент, первоначально это Projectl. При сохранении проекта под другим именем соответственно должно измениться имя проекта в команде меню.
Компиляция проекта для получения приложения может быть выполнена на любой стадии разработки проекта. Это удобно для проверки вида и правильности функционирования отдельных компонентов формы, а также для проверки отдельных фрагментов создаваемого кода.
При компиляции проекта выполняются следующие действия:
компилируются файлы всех модулей, содержимое которых изменилось со времени последней компиляции. В результате для каждого файла с исходным текстом модуля создается файл с расширением DCU. Если исходный текст модуля по каким-либо причинам недоступен компилятору, то он не перекомпилируется;
если в модуль были внесены изменения, то перекомпилируется не только этот модуль, но и использующие его с помощью директивы uses модули;
перекомпиляция модуля происходит также при изменениях объектного файла или подключаемого файла (INC), используемых данным модулем;
после компиляции всех модулей проекта компилируется файл проекта и создается исполняемый файл приложения с именем файла проекта.
Кроме компиляции может быть выполнена сборка проекта. При сборке компилируются все файлы входящие в проект, независимо от того, были в них внесены изменения или нет. Для сборки проекта используется команда меню Project | Build<Project1> (Проект | Собрать <проект 1>).
Запустить проект на выполнение можно из среды Delphi и из среды Windows.
В пункте меню "Run"есть возможность запустить проект нажатием клавиши <F9>. При этом созданное приложение начинает свою работу. Если в файлы проекта вносились изменения, то предварительно выполняется компиляция проекта. Запущенное приложение работает так же, как и запущенное вне среды Delphi.
Среда разработки IBExpert
В своей работе для создания базы данных, я использовал утилиту IBExpert --оболочку, предназначенную для разработки и администрирования баз данных: InterBase, Firebird и Yaffil, которая обладает множеством облегчающих работу компонентов: визуальный редактор для всех объектов базы данных, редактор SQL и исполнитель скриптов, отладчик для хранимых процедур и триггеров, построитель области, собственный скриптовый язык, а также дизайнер баз данны.
Использование IBExpert для создания базы данных обусловлено следующими факторами:
· Поддержка InterBase версий 4.х, 5.х, 6.х, 7.х; Firebird 1.х Yaffil 1.х.
· Работа одновременно с несколькими базами данных.
· Отдельные редакторы для всех объектов БД с синтаксической
· подсветкой
· Мощный SQL редактор с историей запросов и возможностью
фонового выполнения запросов.
· Отладчик хранимых процедур и триггеров.
· Поиск в метаданных.
· Полное и частичное извлечение данных и метаданных.
· Анализатор зависимостей объектов баз данных.
· Отчеты по метаданным.
· Менеджеры пользователей и пользовательских привилегий.
· Экспорт данных в различные форматы.
IBExpert является одним из лучших инструментальных пакетов для работы с базамиданных Firebird. Он позволяет в визуальном режиме создавать и модифицировать все объекты, содержащиеся в БД. После работы в одном из визуальных редакторов (таблиц, доменов, скриптов и т.д.) выполняется компиляция произведенных действий. При этом IBExpert генерирует соответствующие операторы модификации базы, выполнение которых над БД подтверждается нажатием кнопки "Commit". IBExpert также содержит средства анализа производительности выполнения запросов. С его помощью можно решать подавляющее большинство задач, возникающих при проектировании и создании баз данных Firebird. На рисунке 2.2.1 представлено главное окно IBExpert
Рисунок 2.2.1 - главное окно IBExpert
SQL - язык структурированных запросов
Delphi XE2 предоставляет возможность работать при помощи SQL с обычными файловыми СУБД типа dBase и Paradox, Firebird (Win32), данная среда предоставляет возможность прозрачного использования SQL, используя свои внутренние механизмы.
Для работы с базой данных в палитре компонентов Delphi XE2 существует вкладка BDE представленная на рисунке 2.3.1
Рисунок 2.3.1-Вкладка BDE палитры компонентов
StructuredQueryLanguage (SQL) - формальный непроцедурный язык программирования, применяемый для создания, модификации и управления данными в произвольной реляционной базе данных, управляемой соответствующей системой управления базами данных. Выбор языка обусловлен необходимостью связи с базой данных, он популярен и довольно прост в использовании. В данном случае использовался диалект Transact-SQL.
Transact-SQL (T-SQL) - процедурное расширение языка SQL, созданное компанией Microsoft (для MicrosoftSQLServer) и Sybase (для SybaseASE). SQL был расширен такими дополнительными возможностями как:
· управляющие операторы,
· локальные и глобальные переменные,
· различные дополнительные функции для обработки строк, дат, математики и т. п.,
· поддержка аутентификации MicrosoftWindows.
Все SQL запросы делятся на четыре группы: инструкции или операторы для определения данных(DataDefinitionLanguage, DDL), для манипуляции данными (DataManipulationLanguage, DML), для определения параметров доступа к данным (DataControlLanguage, DCL) и для управления транзакциями (TransactionControlLanguage, TCL). Определение данных подразумевает создание, редактирование и удаление различныхобъектов базы данных, таких как таблицы (tables), табличные представления (views), синонимы (synonyms), хранимые процедуры, профили пользователя и т.п. Определение параметров доступа к данным - это процесс награждения или лишения объектов базы данных различного рода разрешениями, привилегиями и полномочиями, например, предоставление конкретному пользователю базы данных возможности осуществлять запросы к конкретной таблице. Управление транзакциями, в самом простом варианте, сводится к возможности сохранить текущие изменения, накопившиеся в результате выполнения последовательности запросов манипуляции данными, или целиком их все отменить.
СУБД поддерживает большой спектр данных. Их можно разделит на несколько категорий:
· символьные типы;
· числовые типы;
· типы дата/время;
· двоичные типы;
· пользовательские типы.
Символьные типы используются для представления как строк символов, так и отдельных символов. Перечень символьных типов представлен в таблице 2.3.1.
Таблица 2.3.1 - Перечень символьных типов
Тип данных |
Назначение |
Размер |
|
CHAR |
Строковый тип |
до 32767 байт.по умолчанию 1 байт |
|
CHARACTER |
Тоже, что и CHAR |
||
CHARACTER VARYING |
Тоже, что и CHAR |
||
VARCHAR |
Тоже, что и CHAR |
||
LONG VARCHAR |
Символьный тип произвольной длины. Аналог МЕМО-полям в dBase, FoxPro, Access |
Длина произвольная. Ограничена максимальным размером файлов базы данных (2 гигабайта) |
|
TEXT |
Тоже, что и LONG VARCHAR |
Числовые типы предназначены для обозначения целых, вещественных и денежных типов представлены в таблице 2.3.2:
Таблица 2.3.2 - Перечень числовых типов
Тип данных |
Диапазон значений |
Точность - число знаков после запятой |
Размер |
|
INTEGER |
от -2 147 483 648 до +2 147 483 647 |
0 |
4 байта |
|
INT |
Тоже, что и INTEGER |
|||
SMALLINT |
от -32 768 до +32 767 |
0 |
2 байта |
|
REAL |
от -3.4 e-38 до 3.4 e+38 |
до 6 |
4 байта |
|
FLOAT |
Тоже, что и REAL |
|||
DOUBLE |
от -1.797 e-308 до +1.797 e+308 |
до 15 |
8 байт |
|
TINYINT |
от 1 до 255 |
0 |
1 байт |
|
DECIMAL |
числа, состоящие из N цифр c M цифрами в дробной части. По умолчанию N=30, M=6 |
M |
сколько требуется |
|
NUMERIC |
Тоже, что и DECIMAL |
|||
MONEY |
Для хранения денежных величин. Допустимо значение NULL. Числа из 20 цифр, с 4 цифрами после запятой |
4 |
||
SMALLMONEY |
Для хранения денежных величин. Допустимо значение NULL. Числа из 10 цифр, с 4 цифрами после запятой |
4 |
Типы дата/время предназначены для хранения времени, дат и дат совместно со временем представлены в таблице 2.3.3:
Таблица 2.3.3 - Перечень типов дата/время
Тип данных |
Назначение |
Размер |
|
DATE |
Тип для представления даты в виде совокупности года, месяца и числа. Значение года может изменяться в диапазоне от 0001 до 9999 года |
4 байта |
|
TIME |
Тип для представления времени в виде совокупности часа, минут, секунд и долей секунд. Доли секунд хранятся с точностью до 6 знаков. |
8 байт |
|
TIMESTAMP |
Тип для представления момента времени конкретной даты. Данные хранятся в виде совокупности года, месяца, числа, часа, минут, секунд и долей секунд. Доли секунд хранятся с точностью до 6 знаков. |
8 байт |
|
DATETIME |
То же, что и TIMESTAMP |
||
SMALLDATETIME |
То же, что и TIMESTAMP |
Двоичные типы предназначены для представления двоичных данных, включая изображения и другую информацию, не обрабатываемую собственными средствами СУБД. Все двоичные типы приведены в таблице 2.3.4.
Таблица 2.3.4 - Двоичные типы SQL
Тип данных |
Назначение |
Размер |
|
BIT |
Тип для представления значений 0 и 1. Аналог полей типа Logical в dBase, FoxPro |
1 байт |
|
BINARY |
Тоже, что и CHAR, за исключением операций сравнения. В отличии от CHAR, данные этогопо умолчанию 1 байт типа сравниваются на полное совпадение двоичных кодов байтов |
до 32767 байт |
|
LONG BINARY |
Тип для представления двоичных данных произвольной длины |
Длина произвольная. Ограничена максимальным размером файлов базы данных (2 гигабайта) |
|
IMAGE |
Тоже, что и LONG BINARY |
Синтаксис запроса в общем виде представлен в листинге 2.3.1:
Листинг 2.3.1 - Описание синтаксиса SQL запроса
select ::=
select [ all | distinct ] список_выборки
[инструкция_into ::=
into [[база_данных.]владелец.]имя_таблицы
[ lock {datarows | datapages | allpages } ]
[ withпараметр_into[, параметр_into] ...]
параметр_into ::=
| max_rows_per_page = количество_строк
| exp_row_size = количество_байтов
| reservepagegap = количество_страниц
| identity_gap = шаг
[existing table имя_таблицы]
[[external тип] at "путь"
[column delimiter разделитель]]]
[инструкция_from ::=
fromссылка_на_таблицу [, ссылка_на_таблицу]...
ссылка_на_таблицу::=
имя_представления_или_таблицы | соединение_ANSI
имя_представления_или_таблицы::=
[[база_данных.]владелец.] {{имя_таблицы |
имя_представления}
[as] [псевдоним]
[index {имя_индекса | имя_таблицы }]
[parallel [степень_параллелизма]]
[prefetchsize ][lru | mru]}
[holdlock | noholdlock]
[readpast]
[shared]
соединение_ANSI ::=
ссылка_на_таблицутип_соединенияjoin
ссылка_на_таблицу
условия_соединения
тип_соединения::= inner | left [outer] | right [outer]
условия_соединения::= onусловия_поиска]
[инструкция_where ::=
whereусловия_поиска]
[инструкция_group_by ::=
groupby [all] выражение_без_агрегатов
[, выражение_без_агрегатов]...]
[инструкция_having ::=
whereусловия_поиска]
[инструкция_order_by ::=
orderbyинструкция_sort ::=
{
[[[база_данных.]владелец.]{имя_таблицы.|имя_представления.}]имя_ст
олбца
| номер_в_списке_выборки
| выражение }
[asc | desc] [, инструкция_sort]...]
[инструкция_compute ::=
computeстрока_агрегат(имя_столбца)
[, строка_агрегат(имя_столбца)]...
[byимя_столбца [, имя_столбца]...]]
[инструкция_read_only ::=
for {read only | update [of список_имен_столбцов]}]
[инструкция_isolation ::=
at isolation
{ read uncommitted | 0 }
| { read committed | 1 }
| { repeatable read | 2 }
| { serializable | 3 }]
[инструкция_browse ::=
for browse]
[инструкция_plan ::=
plan "абстрактныйплан"]
2. Проектирование и разработка системы
2.1 Проектирование интерфейса
На основе функциональных требований были определены необходимые элементы интерфейса, кнопки и меню. Окно приложения приведено на рисунке 3.1.1
Рисунок 3.1.1-Окно приложения
Интерфейс приложения будет представлять собой одно окно, включающее в себя следующие составные части:
1. Главное меню, расположенное под заголовком окна, состоящее из меню "Справочники", "Отчёты", "Смена пользователя".
а) Меню "Справочники" содержит пункты: "Реестр мест отдыха", "Реестр ледовых мест", "Реестр стоянок ММС". Каждый реестр, это отдельное окно, с кнопками под заголовком. Кнопка "Редактирование" для включения режима редактирования, кнопка "Добавить" и кнопка "Удалить" для добавления и удаления записи в справочнике и кнопка "Выход" для выхода из справочника. Под кнопками расположен фильтр, для выбора районов и видов мест происшествий. Ниже содержится таблица реестра, в которую можно добавлять записи, в режиме редактирования. Окно "Реестр мест отдыха" приведено на рисунке 3.1.2
Рисунок 3.1.2-Окно "Реестр мест отдыха"
б) Меню "Отчёты" вызывает окно "Формирование отчётов"
В данном окне предлагается выбрать отчёт "Анализ гибели людей на водоёмах", "Список всех погибших", также предлагается выбрать реестр, в соответствии с которым необходимо сформировать отчёт: мест массового неорганизованного отдыха - "ММНО", "Стоянок МС", "Ледовые переправы", мест массового выезда автомобильного транспорта и выхода людей на лед, на водных объектах - "МВЛ", а также путь для сохранения файла отчёта (рисунок 3.1.3).
Рисунок 3.1.3-Окно "Формирование отчётов"
Код процедуры для формирования отчёта "Анализ гибели людей на водоёмах", в формате приложения Microsoft Office Excel, приведён в листинге 3.1.1
Листинг 3.1.1 - отчёт "Анализ гибели людей на водоёмах"
procedure AnalizGibel;
var
y,i,j,n,vse, dety, nskV, nskD, nsoD,nsoV, clPrichV, clPrichD,id_reg: integer;
Vsego,VsegoDety,VsegoOBL,VsegoDetyOBL:integer;
SaveVse, saveDety:integer;
dt: TDateTime;
ChDir, nameReg, prich, year: string;
//year: word;
begin
ExFile:=CreateOLEObject('Excel.Application');
//путь к файлу, лежащему около.exe
DataModule1.IBQTemp.close;
DataModule1.IBQTemp.SQL.Clear;
DataModule1.IBQTemp.SQL.Text:='Select * from Template where ID=2';
DataModule1.IBQTemp.Open;
(DataModule1.IBQTemp.FieldByName('TEMPLATE') as TBlobField).SaveToFile(GetMyDoc+'\Анализ_Гибели.xls');
ExFile.WorkBooks.Open(GetMyDoc+'\Анализ_гибели.xls');
Sheet:=ExFile.ActiveWorkbook.ActiveSheet;
year:=otchety.CByear.Text;
Sheet.cells[3,3]:= year;
//по г. НСК
unDM.DataModule1.IBSQLreg.Close;
unDM.DataModule1.IBSQLreg.SQL.Clear;
unDM.DataModule1.IBSQLreg.SQL.Add('select * from REGIONS where CITY=1 order by ID');
unDM.DataModule1.IBSQLreg.GoToFirstRecordOnExecute:=true;
unDM.DataModule1.IBSQLreg.ExecQuery;
i:=0;
while not unDM.DataModule1.IBSQLreg.Eof do
begin
n:=0;
I:=i+1;
nameReg:=DataModule1.IBSQLreg.FieldByName('FULL_NAME').AsString;
id_reg:= DataModule1.IBSQLreg.FieldByName('ID').AsInteger;
vse:=0;
dety:=0;
DataModule1.IBSQLgibel.Close;
DataModule1.IBSQLgibel.SQL.Clear;
DataModule1.IBSQLgibel.SQL.Text:= 'select sum (chs.gibel) as vs from chs '+
'left join gibel on chs.id=gibel.id_chs where chs.id_region='+ intToStr(id_reg)+
'and extract (YEAR from chs.date_soob)='+year;
DataModule1.IBSQLgibel.ExecQuery;
vse:=DataModule1.IBSQLgibel.FieldByName('vs').AsInteger;
DataModule1.IBSQLgibel.Close;
DataModule1.IBSQLgibel.SQL.Clear;
DataModule1.IBSQLgibel.SQL.Text:='select sum (chs.gibel) as dety from chs '+
'left join gibel on chs.id=gibel.id_chs where chs.id_region='+ intToStr(id_reg)+
'and extract (YEAR from chs.date_soob)='+year+'and GIBEL.AGE<18';
DataModule1.IBSQLgibel.ExecQuery;
dety:=DataModule1.IBSQLgibel.FieldByName('dety').AsInteger;
///////учет общего числа погибшых по НСК
Vsego:=Vsego+vse;
VsegoDety:=VsegoDety+dety;
sheet.cells[i+17,2]:=nameReg;
sheet.cells[i+17,3]:= vse;
sheet.cells[i+17,4]:=dety;
unDM.DataModule1.IBSQLreg.Next;
end;
sheet.cells[17,3]:=Vsego;
sheet.cells[17,4]:=VsegoDety;
// по НСО
unDM.DataModule1.IBSQLreg.Close;
unDM.DataModule1.IBSQLreg.SQL.Clear;
unDM.DataModule1.IBSQLreg.SQL.Add('select * from REGIONS where CITY<>1 order by ID');
unDM.DataModule1.IBSQLreg.GoToFirstRecordOnExecute:=true;
unDM.DataModule1.IBSQLreg.ExecQuery;
i:=10;
while not unDM.DataModule1.IBSQLreg.Eof do
begin
id_reg:=DataModule1.IBSQLreg.FieldByName('ID').AsInteger;
nameReg:= DataModule1.IBSQLreg.FieldByName('FULL_NAME').AsString;
I:=i+1;
vse:=0;
dety:=0;
DataModule1.IBSQLgibel.Close;
DataModule1.IBSQLgibel.SQL.Clear;
DataModule1.IBSQLgibel.SQL.Text:='select sum (chs.gibel) as vs from chs '+
'where chs.id_region='+ intToStr(id_reg)+
'and extract (YEAR from chs.date_soob)='+year;
DataModule1.IBSQLgibel.ExecQuery;
vse:=DataModule1.IBSQLgibel.FieldByName('vs').AsInteger;
DataModule1.IBSQLgibel.Close;
DataModule1.IBSQLgibel.SQL.Clear;
DataModule1.IBSQLgibel.SQL.Text:='select sum (chs.gibel) as dety from chs '+
'left join gibel on chs.id=gibel.id_chs where chs.id_region='+ intToStr(id_reg)+
'and extract (YEAR from chs.date_soob)='+year+'and GIBEL.AGE<18';
DataModule1.IBSQLgibel.ExecQuery;
dety:=DataModule1.IBSQLgibel.FieldByName('dety').AsInteger;
/////////учет общего числа погибшых по НСO
VsegoOBL:=VsegoOBL+vse;
VsegoDetyOBL:=VsegoDetyOBL+dety;
sheet.cells[i+17,2]:=nameReg;
sheet.cells[i+17,3]:= vse;
sheet.cells[i+17,4]:=dety;
DataModule1.IBSQLreg.Next;
end;
sheet.cells[27,3]:= VsegoOBL;
sheet.cells[27,4]:=VsegoDetyOBL;
////////////////////////учет погибших по причинам///////////////////////////////
for I := 2 to 10 do begin
DataModule1.IBSQLchs.Close;
DataModule1.IBSQLchs.SQL.Clear;
DataModule1.IBSQLchs.SQL.Text:='select sum (CHS.GIBEL) as cnt from CHS '+
'where REASON='+intToStr(i)+' and CHS.GIBEL<>0'+
' and extract (YEAR from chs.date_soob)='+year;
DataModule1.IBSQLchs.ExecQuery;
ClprichV:=DataModule1.IBSQLchs.FieldByName('cnt').AsInteger;
DataModule1.IBSQLchs.Close;
DataModule1.IBSQLchs.SQL.Clear;
DataModule1.IBSQLchs.SQL.Text:='select sum (CHS.GIBEL) as cnt from CHS '+
'left join GIBEL on CHS.ID=GIBEL.ID_CHS'+
' where REASON='+intToStr(i)+' and CHS.GIBEL<>0'+'and GIBEL.AGE<18'+
' and extract (YEAR from chs.date_soob)='+year;
DataModule1.IBSQLchs.ExecQuery;
ClprichD:=DataModule1.IBSQLchs.FieldByName('cnt').AsInteger;
DataModule1.IBspr_reason.Close;
DataModule1.IBspr_reason.SQL.Clear;
DataModule1.IBspr_reason.SQL.Text:='select REASON from SPR_REASON '+
'where SPR_REASON.ID='+intToStr(i);
DataModule1.IBspr_reason.ExecQuery;
prich:=DataModule1.IBspr_reason.FieldByName('REASON').AsString;
sheet.cells[i+5,2]:=prich;
sheet.cells[i+5,3]:=ClprichV;
sheet.cells[i+5,4]:=ClprichD;
unDM.DataModule1.IBSQLreg.Next;
end;
/////Спасено
dataModule1.IBSQLchs.Close;
dataModule1.IBSQLchs.SQL.Clear;
dataModule1.IBSQLchs.SQL.Text:='select sum (CHS.save) as saveDety from CHS '+
'where chs.gibel<>0 and extract (YEAR from chs.date_soob)='+year;
dataModule1.IBSQLchs.ExecQuery;
// sheet.cells[5,3]:=;
dataModule1.IBSQLchs.Close;
dataModule1.IBSQLchs.SQL.Clear;
dataModule1.IBSQLchs.SQL.Text:='select sum (CHS.save) as saveDety from CHS '+
'inner join Gibel on CHS.ID=Gibel.id_chs where chs.gibel<>0 and'+
' Gibel.Age<18 and extract (YEAR from chs.date_soob)='+year;
dataModule1.IBSQLchs.ExecQuery;
sheet.cells[5,4]:=dataModule1.IBSQLchs.FieldByName('saveDety').AsInteger;
//////Утонуло на ВО
sheet.cells[6,3]:=VsegoOBL+Vsego;
sheet.cells[6,4]:=VsegoDetyOBL+VsegoDety;
////проверка на совпадение файла и сохранение копии
if way='' then begin
while FileExists(GetMyDoc+'\Анализ_Гибели_за_'+year+'год_'+intToStr(ind1)+'.xls') do begin
ind1:=ind1+1;
end;
sheet.SaveAs (GetMyDoc+'\Анализ_Гибели_за_'+year+'год_'+intToStr(ind1)+'.xls');
end else begin
while FileExists(way+'\Анализ_Гибели_за_'+year+'год_'+intToStr(ind1)+'.xls')do begin
ind1:=ind1+1;
end;
sheet.SaveAs(way+'\Анализ_Гибели_за_'+year+'год_'+intToStr(ind1)+'.xls') ;
end;
ExFile.visible:=true;
end;
Отчёт Анализ гибели людей на водоёмах Новосибирской области, после формирования представлен в таблице 3.1.1
Таблица 3.1.1 - Анализ гибели людей на водоёмах |
||||
Новосибирской области |
||||
№ п/п |
Показатель |
2015 |
||
всего |
дети |
|||
1 |
Спасено |
5 |
||
2 |
Утонуло на ВО |
5 |
3 |
|
2.1 |
Состояние алкогольного(наркотического) опьянения |
1 |
1 |
|
2.2 |
Гибель с маломерных судов |
2 |
0 |
|
2.3 |
Гибель во время рыбалки, охоты |
0 |
0 |
|
2.4 |
Гибель на льду |
0 |
0 |
|
2.5 |
Гибель на ММНО где выст. спас. пост и знаки |
0 |
0 |
|
2.6 |
Другая причина |
0 |
0 |
|
Район |
всего |
дети |
||
3 |
В г. Новосибирске: |
1 |
1 |
|
3.1 |
Центральный АО |
1 |
1 |
|
3.2 |
Железнодорожный |
0 |
0 |
|
3.3 |
Октябрьский |
0 |
0 |
|
3.4 |
Дзержинский |
0 |
0 |
|
4 |
Новосибирская обл.: |
4 |
2 |
|
4.1 |
рп Кольцово |
0 |
0 |
|
4.2 |
г. Бердск |
0 |
0 |
|
4.3 |
г. Искитим |
0 |
0 |
|
4.4 |
г. Куйбышев |
0 |
0 |
|
4.5 |
г. Обь |
0 |
0 |
|
4.6 |
Баганский |
0 |
0 |
|
4.7 |
Барабинский |
0 |
0 |
|
4.8 |
Болотнинский |
0 |
0 |
|
4.9 |
Венгеровский |
0 |
0 |
|
4.10 |
Доволенский |
0 |
0 |
|
4.11 |
Здвинский |
0 |
0 |
|
4.12 |
Искитимский |
0 |
0 |
|
4.13 |
Карасукский |
0 |
0 |
|
4.14 |
Каргатский |
0 |
0 |
|
4.15 |
Колыванский |
0 |
0 |
|
4.16 |
Коченевский |
0 |
0 |
|
4.17 |
Кочковский |
0 |
0 |
|
4.18 |
Краснозерский |
0 |
0 |
|
4.19 |
Куйбышевский |
0 |
0 |
|
4.20 |
Купинский |
0 |
0 |
|
4.21 |
Кыштовский |
0 |
0 |
|
4.22 |
Маслянинский |
0 |
0 |
|
4.23 |
Мошковский |
0 |
0 |
|
4.24 |
Новосибирский |
0 |
0 |
|
4.25 |
Ордынский |
4 |
2 |
|
4.26 |
Северный |
0 |
0 |
|
4.27 |
Сузунский |
0 |
0 |
|
4.28 |
Татарский |
0 |
0 |
|
4.29 |
Тогучинский |
0 |
0 |
|
4.30 |
Убинский |
0 |
0 |
|
4.31 |
Усть-Таркский |
0 |
0 |
|
4.32 |
Чановский |
0 |
0 |
|
4.33 |
Черепановский |
0 |
0 |
|
4.34 |
Чистоозерный |
0 |
0 |
|
4.35 |
Чулымский |
0 |
0 |
|
5 |
Нет района |
0 |
0 |
|
6 |
по ГОССТАТУ |
в) Меню "Смена пользователя" вызывает окно "Идентификация"
(рисунок 3.1.4).
2. Под главным меню расположены кнопки: "Добавить", "Удалить", "Отчёты", "Выход", "Редактирование":
Кнопка "Добавить" добавляет запись в таблицу выборки
Кнопка "Удалить" удаляет запись из таблицы выборки
Кнопка "Отчёты" вызывает окно "Формирование отчётов"
Кнопка "Выход", позволяет выйти из приложения
Кнопка "Редактирование", для редактирования
3. Под кнопками расположен фильтр, предоставляющий возможность сделать выборку из базы по трём критериям: периоду, району и виду происшествия.
4. Ниже фильтра расположена таблица выборки, предостовляющая выбранные сведения, содержащиеся в восьми полях таблицы.
5. Под таблицей расположены шесть кнопок: "Основные", "Погибшие",
"Расследование", "Силы и средства", "Мероприятия", "Документы", при нажатии на которые в правом относительно кнопок блоке, появляется информация, соответствующая выборке с применением фильтров.
По этому описанию дизайнером был подготовлен макет приложения для учёта происшествий на водных объектахт. На основе первоначального макета был разработан интерфейс приложения.
Создание базы данных
В своей работе я использовал базу данных, созданную при помощи утилиты IBExpert. В данном разделе представлено описание создания базы, её регистрации, а также создания пользовательских таблиц. База данных создавалась программно (пункт меню IBExpert "Создать базу" меню "База данных"). Окно диалога задания параметров создаваемой БД представлено на рисунке 3.2.1
Рисунок 3.2.1 - Окно диалога задания параметровсоздаваемой БД
В поле "Файл БД" указывается полный существующий путь и имя создаваемого файла БД. Путь к БД - это локальный путь размещения файла базы данных Firebird на сервере (локальном или удаленном). Параметр "Сервер" определяет режим доступа к БД. Значение "Локальный" следует выбирать, если файл БД будет располагаться на той же машине, на которой установлен сервер. Если база создается на удаленном сервере, то нужно выбрать параметр "Удаленный", затем выбрать соответствующий сетевой протокол и имя сервера (на рисунке не отображаются). Далее указывается имя пользователя и пароль, под которым будет осуществляться доступ к БД. Для системного администратора определены имя "SYSDBA" и пароль "masterkey". Пользователь, определенный как системный администратор, имеет полный доступ к БД и имеет право вносить любые изменения, атакже определять права доступа для всех пользователей. Нажатие кнопки "OK" приводит к созданию БД. Если выбран параметр "Зарегистрировать" после создания, то далее появится диалог регистрации псевдонима БД и установки параметров подключения. После этого будет создан псевдоним БД, используя который в IBExpert, в будущем можно будет подключаться к этой базе данных. Для регистрации уже существующей БД нужно выбрать пункт "Зарегистрировать базу "меню "База данных". На рисунке 3.2.2 представлена форма регистрации БД.
Рисунок 3.2.2-Форма регистрации БД.
Для подключения к существующей БД необходимо два раза щелкнуть левой кнопкой мыши по названию БД в окне DatabaseExplorer или щелкнуть левой кнопкой мыши по пиктограмме. После подключения к БД в окне Database Explorer появится список всех объектов базы, как показано на рисунке 3.2.3
Рисунок 3.2.3-Окно DatabaseExplorer после подключения к базе данных
При щелчке правой кнопкой мыши по какому-либо объекту появляется контекстное меню, содержащее список допустимых операций над выбранным объектом. Создать таблицу БД в IBExpert можно с помощью соответствующего визуального редактора, который вызывается при нажатии на пиктограмме в главном окне утилиты IBExpert, или при вызове "Новая таблица" пункта "База данных" (рисунок 3.2.4).
Рисунок 3.2.4 - Окно визуального редактора для создания таблиц
На рисунке изображено окно для создания новой таблицы, где в самом верхнем поле ввода нужно ввести имя создаваемой таблицы. После этого по одному ввести все поля таблицы. В поле "Название" вводится название столбца, в поле "Тип" указывается тип данных. Если поле таблицы планируется определить на каком-либо домене, то имя одного из созданных доменов нужно выбрать в поле "Домен". Для тех атрибутов таблицы, которые обязательно должны быть объявлены как NOT NULL, в поле "Нет пусто" следует поставить маркер, два раза щелкнув левой кнопкой мыши по этому полю. Чтобы какой-либо атрибут сделать первичным ключом, необходимо два раза щелкнутьлевой кнопкой мыши по полю "ПК". В таблице можно задавать несколько первичныхключей аналогичным образом. После того как заданы все поля новой таблицы, следуетщелкнуть мышью по пиктограмме для компиляции. После компиляции на экране появится окно, содержащее оператор создания таблицы. Для непосредственногосоздания таблицы следует нажать кнопку "Commit". Окно просмотра/редактирования уже созданной таблицы, которое появляется после ее создания, и вызывается из инспектора объектов при редактировании таблицы представлено на рисунке 3.2.4.
Рисунок 3.2.4- Окно просмотра/редактирования уже созданной таблицы
Закладка "Ограничения" позволяет задать первичные и внешние ключи. Длясоздания внешнего ключа необходимо выбрать закладку "Внешние ключи", нажатьклавишу "Insert" или щелкнуть правой кнопкой мыши по основному полю окна и выбратьпункт "Newforeignkey". В поле "Название" автоматически устанавливается уникальноеимя ключа. Атрибут "На поле" задает имя поля данной таблицы, которое нужно сделатьвнешним ключом. В поле "Внешняя таблица" задается имя таблицы, с которой данная данная таблица связана внешним ключом. (рисунок 3.2.5).
Рисунок 3.2.5-Закладка "Ограничения"
Атрибуты "Правило обновления" и "Правило удаления" могут принимать следующие значения, которые определяют действия, выполняемые автоматически над значениями внешних ключей при изменении соответствующих им первичных ключей:
· NO ACTION - запретить изменение внешнего ключа при изменении соответствующего первичного ключа;
· CASCADE - каскадное обновление/удаление значений внешнего ключа при соответствующем изменении первичного ключа;
· SET NULL - установить в NULL значения внешнего ключа при изменении соответствующего первичного ключа;
· SET DEFAULT-при изменении соответствующего первичного ключа установить для поля внешнего ключа значение по умолчанию, заданное для этого поля при его создании.
После задания всех параметров следует нажать пиктограмму компиляции и подтвердить выполнение транзакции кнопкой "Commit" в появившемся окне.
Для ввода данных в таблицу необходимо выбрать закладку "Данные", вид которой представлен на рис. 3.2.6.
Рис.3.2.6-Закладка "Данные"
Находясь на этой закладке, можно редактировать записи таблицы. Так, например добавление новой записи в таблицу осуществляется нажатием клавиши <Insert> или пиктограммы. После ввода или редактирования данных нужно с помощью соответствующих пиктограмм подтвердить транзакцию. Закладка "Зависимости" отображает те объекты, от которых зависит данная таблица, и те объекты, которые зависят от данной таблицы. Закладка "Скрипт" предназначена для просмотра текста всех операторов, использованных для создания таблицы, ее первичных и внешних ключей.
После создания база может переноситься с компьютера на компьютер и встраиваться в проект. Размер файла созданной базы данных BDPLJ.GDB - 4,31мБ.
ER-диаграмма базы данных представлена на рисунке 3.2.7
Реализация средств взаимодействия с базой данных
Взаимодействие с базой данных осуществляется посредством модулей проекта: mdm.dfm и UnDM.dfm, представленных в менеджере проектов на рисунке 3.3.1
Рисунок 3.3.1-Менеджер проектов
Для отображения SQL запросов, связывающих приложение с базой данных, необходимо выделить один из элементов IBDataSet1, IBDataSet2, IBDataSet3 в окне графического отображения модуля mdm.dfm, в Дизайнере форм Delphi XE2 (рисунок 3.3.2).
Рисунок 3.3.2- Окно графического отображения модуля mdm.dfm
При выделении элементов IBDataSet1, IBDataSet2, IBDataSet3в окне Дизайнера форм Delphi XE2, в окне инспектора объектов на вкладке Properties, при нажатии клавиши мыши на список SelectSQL, выводятся команды сохранённых SQLзапросов к базе данных (рисунок 3.3.3).
Рисунок 3.3.3 - Инспектор объектов
Данные запросы, в зависимости от выбранных параметров, выводят строки в основную таблицу приложения (элемент JvDBGird).
Запросы для данных элементов представлены на листинге 3.2.1
Листинг 3.2.1-Запросы к базе данных элементов в свойствах
(Properties) IBDataSet1, IBDataSet2, IBDataSet3
(Properties) IBDataSet1
select c.*, s.NAME, r.FULL_NAME, t.TYPE_SHORT, p.NAME
fromchs as c
left join spr_soob as s on c.fio_soob=s.id
left join regions as r on c.ID_REGION=r.id
left join spr_type_chs as t on c.TYPE_CHS=t.id
left join punkt as p on (c.ID_PUNKT=p.id and c.ID_REGION=p.COD_RAION)
where
(DATE_SOOB between coalesce((:DATE_SOOB_PARAM1), c.DATE_SOOB)
and coalesce((:DATE_SOOB_PARAM2), c.DATE_SOOB)) and
decode(coalesce((:ID_REGION_PARAM),0),0,0, c.ID_REGION)=coalesce((:ID_REGION_PARAM),0) and
decode(coalesce((:TYPE_CHS_PARAM),0),0,0, c.TYPE_CHS)=coalesce((:TYPE_CHS_PARAM),0)
order by c.ID
(Properties) IBDataSet2
Select *from PLJ as P
left join type_mo as T on P.id_type=T.id
left join regions as R on P.id_region=R.id
left join punkt as PU on (P.id_punkt=PU.id and P.id_region=PU.COD_RAION)
Подобные документы
Стадии разработки программного продукта "BaseSurvey ECC" с помощью Delphi 2010 и SQLite. Проектирование интерфейса пользователя и разработка алгоритмов работы электронного журнала учёта осмотра мест происшествий. Разработка руководства пользователя.
курсовая работа [1,9 M], добавлен 12.07.2012Общие сведения о проектировании базы данных и разборка приложений для взаимодействия с БД. Разработка проекта клиентского приложения "Электронный классный журнал" с помощью языка программирования Delphi 7. Просмотр и изменение информации базы данных.
курсовая работа [403,6 K], добавлен 24.06.2011Разработка базы данных и приложения для автоматизации ведения кадрового учёта предприятия. Формирование таблицы анкетных данных. Разработка графического интерфейса пользователя клиентских приложений. Возможность подключения к удаленной базе данных.
дипломная работа [47,6 K], добавлен 17.02.2009Определение базы данных и банков данных. Компоненты банка данных. Основные требования к технологии интегрированного хранения и обработки данных. Система управления и модели организации доступа к базам данных. Разработка приложений и администрирование.
презентация [17,1 K], добавлен 19.08.2013Администрирование баз данных. Проектирование баз данных, язык запросов к базе данных. Анализ средств разработки приложений. Планирование разработки программы "Электронный каталог" для библиотеки ОГАУ, предварительный проект и практическая реализация.
дипломная работа [1,2 M], добавлен 02.06.2015Проектирование базы данных системы принятия, обработки и учёта заявок в отдел информационных технологий; разработка инфологической и даталогической моделей, реализация физической модели. Создание приложений для визуализации работы с базой данных.
дипломная работа [2,8 M], добавлен 25.01.2013Разработка концептуальной модели базы данных. Реализация алгоритмов и разработка управляющей программы. Разработка структуры системы управления данными. Методика проведения и результаты тестирования. Функционирование разработанного программного модуля.
курсовая работа [550,5 K], добавлен 08.06.2023Возможности создания баз данных средствами программного продукта SQL. Изучение предметной области и разработка проекта базы данных по учету студентов "Журнал классного руководителя". Задачи реализации программного средства, его тестирование и отладка.
курсовая работа [3,7 M], добавлен 07.12.2012Назначение создания информационной системы "Электронный журнал" для автоматизации контроля учебного процесса. Построение логической и реляционной моделей данных. Разработка клиент-серверного приложения для работы с базой данных; программная реализация.
дипломная работа [5,9 M], добавлен 19.01.2017Выделение основных сущностей проектируемой системы, описание их взаимосвязи. Построение базы данных и приложений: разработка таблиц и связей между ними, локальных представлений данных, форм, запросов, меню. Инструкция для работы пользователя с программой.
курсовая работа [380,9 K], добавлен 06.04.2015