Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Локальные базы данных

Читайте также:
  1. II. 12-24. Причина страданий преданных
  2. II. Ввод и редактирование данных
  3. V. Форматирование данных
  4. X. Оператора манипулирования данными. Вставка данных
  5. Адресация данных в процессоре
  6. Анализ и обобщение опыта передовой практики и литературных данных
  7. Архивирование данных об источниках информации

 

 

Методические указания по выполнению лабораторных работ

по дисциплине «Проектирование алгоритмов и программного обеспечения»

 

 


1. ВВЕДЕНИЕ

 

Тема лабораторных работ: создание локальных баз данных и разработка их приложений в среде программирования Delphi.

Требования к оборудованию. Для выполнения лабораторных работ рекомендуется использовать компьютеры уровня не ниже, чем Pentium (Celeron) / RAM 128 MB/ HDD 1 GB, с операционной системой Windows версии 2000 или выше, с установленной (типовой вариант установки) средой программирования Delphi версии 5.0 или выше.

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

Содержание лабораторных работы:

1. Изучение теоретических положений.

2. Освоение приемов работы с локальными базами данных в среде Delphi.

3. Освоение средств и приемов разработки приложений локальных баз данных.

4. Выполнение заданий в рамках учебной постановки задачи.

5. Формулировка собственной постановки задачи.

6. Разработка собственного приложения для сформулированной постановки задачи.

7. Оформление отчетов.

 

1.1. ПОСТАНОВКА УЧЕБНОЙ ЗАДАЧИ

 

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

 

Учет движения материальных средств на предприятии

 

Предприятие состоит из нескольких подразделений (например, склад1, склад2, … или цех1, цех2, … и т.п.). В каждом подразделении есть одно или несколько материально ответственных (подотчетных) лиц, которые отвечают за получение, хранение и расходование материальных средств (товары, детали и т.п.). Для единообразия в дальнейшем изложении эти средства именуются предметами.

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

Каждый предмет в любой момент пребывания на предприятии должен быть закреплен за конкретным подотчетным лицом.

По мере потребления (использования, продажи, и т.п.) предметы списываются. В этих целях используются различные направления списания. Например, счет 21 (основное производство), счет 22 (вспомогательное производство) и т.п.

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

 

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

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

 


2. ЛАБОРАТОРНАЯ РАБОТА №1

 

Тема работы: средства среды программирования Delphi для работы с базами данных.

Длительность работы: 8 академических часов.

 

2.1. ОБЩАЯ СТРУКТУРА СРЕДСТВ DELPHI ДЛЯ РАБОТЫ С БАЗАМИ ДАННЫХ

 

Рис. 1. Общая структура средств Delphi для работы с БД

 

Центральное место в структуре средств Delphi, используемых для приложений баз данных, занимает BDE (Borland Database Engine – машина баз данных компании Borland) - набор библиотек, которые обеспечивают единообразный доступ (интерфейс) приложений к базам данных различных типов. Его основное назначение – максимально изолировать приложение от особенностей тех или иных баз данных. Благодаря BDE, разработчик приложений не нуждается в детальном знании работы внутренних механизмов различных СУБД.

BDE должен быть установлен и сконфигурирован на каждом компьютере, где предполагается запускать приложения БД, использующие средства BDE.

Конфигурирование BDE (настройка параметров доступа к конкретным БД) осуществляется с помощью утилиты BDE Administrator. В процессе конфигурирования задаются:

общие параметры для всех драйверов;

частные параметры отдельных драйверов;

параметры конкретных БД.

Окно BDE Administrator разделено на две части (рис. 2): слева, в виде дерева, изображены конфигурируемые элементы; справа, в виде списка, настраиваемые параметры для выбранного слева элемента.

Левая часть имеет две закладки:

Configuration - для задания параметров различных драйверов,

Databases - для задания параметров конкретных баз данных.

 

 

Рис. 2. Задание общих параметров драйверов

На странице Configuration обычно используются следующие настройки.

System INIT - стартовые системные установки. Среди них следует указать драйвер языка LANGDRIVER. Для русскоязычных приложений БД, работающих под Windows, рекомендуется использовать Pdox ANSI Cyrillic.

В System Formats указываются настройки форматов даты, времени и чисел. В частности: параметр FOURDIGITYEAR указывает, сколько цифр (2 или 4) используется для отображения года; параметр MODE может иметь три значения: 0 - формат даты MM.DD.YY, 1 - DD.MM.YY, 2 - YY.MM.DD.

Для драйвера PARADOX обычно указывают необходимость отслеживания ссылочной целостности (параметр STRICTINTEGRITY) и драйвер языка (Pdox ANSI Cyrillic).

На странице Databases (рис. 3) устанавливаются параметры конкретных баз данных. Для этого каждой БД присваивается псевдоним (alias). Это общее имя для всей БД (в том числе, и состоящей из нескольких файлов), по которому BDE различает – к какой именно базе идет обращение.

 

 

Рис. 3. Задание параметров базы данных

Для создания нового псевдонима необходимо выбрать пункт меню Object | New. При этом появляется окно выбора драйвера. Для PARADOX и DBASE используется драйвер STANDARD. После этого слева на дереве указывается псевдоним (alias) базы данных (по умолчанию - STANDARDx), а справа – ее параметры. В частности: DEFAULT DRIVER – драйвер БД (в данных лабораторных работах следует использовать PARADOX); PATH – путь к каталогу, в котором находится БД (если указать несуществующий каталог, то он будет создан).

После выполнения всех настроек следует выйти из утилиты. При выходе будет запрошено подтверждение на сохранение всех внесенных изменений. Вся конфигурационная информация BDE обычно хранится в файле idapi.cfg или idapi32.cfg в каталоге размещения BDE (имя файла и путь к нему отображаются в заголовке окна BDE Administrator).

Для непосредственной работы с БД (помимо приложений) обычно используется утилита Database Desktop. С ее помощью создаются таблицы БД, определяются их взаимосвязи, таблицы заполняются конкретной информацией.

Для корректного отображения в утилите русскоязычной информации необходимо в качестве шрифта по умолчанию (Default system font на странице General в окне, вызываемом из меню Edit | Preferenses) указать любой TrueType шрифт с поддержкой кириллицы и перезапустить утилиту.

База данных, с которой предполагается работа, указывается посредством своего псевдонима (alias) в меню File | Working Directory.

Для создания таблиц используется пункт меню File | New | Table … В появившемся окне необходимо указать тип создаваемой таблицы (в данных лабораторных работах – это Paradox 7). Далее появляется окно определения структуры таблицы (рис. 4). Каждая строка в этом окне соответствует одному полю таблицы, для которого задается:

FieldName - имя поля;

Type - тип поля (при нажатии клавиши пробела появляется полный список типов). Наиболее часто используемые типы полей перечислены ниже в таблице 1;

Size – размер (указывается для строковых полей);

Key – принадлежность поля первичному ключу (помечается * при нажатии клавиши пробела).

 

Рис. 4. Определение структуры таблиц

 

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

 

Таблица 1.

Типы полей

Тип Знак Описание
Alpha A Символьное значение до 255 символов
Number N Число с плавающей запятой до 15 значащих цифр
BCD # Число в двоично-десятичном формате
Money $ Число с плавающей запятой до 15 значащих цифр (два знака после запятой) и символ ден. единицы
Short S Целое число 4 байта (-32 768 ÷ 32 767)
LongInteger I Целое число 8 байт(-2 147 483 648 ÷ 2 147 483 647)
Date D Дата
Time T Время
Logical L Логическая переменная
Autoincrement ± Автоинкрементное поле

 

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

Порядок полей можно менять, для чего их перетаскивают за номер поля.

При определении полей можно также задавать некоторые ограничения (бизнес-правила). Для этого в окне определения структуры справа в выпадающем списке Table Properties выбирают пункт Validity Checks. Здесь можно указать для выбранного слева поля:

Required Field – обязательный ввод значения в поле;

Minimum value – минимально допустимое значение;

Maximum value – максимально допустимое значение;

Default Value – значение, подставляемое по умолчанию;

Picture – формат ввода и отображения значений.

После того, как структура таблицы определена, ее следует сохранить (кнопка Save As …). При сохранении таблице присваивается имя. Впоследствии структуру таблицы можно изменить. Для этого она открывается через меню File | Open | Table …, а после открытия – Table | Restructure …

По окончании определения всех таблиц, следует задать ограничения ссылочной целостности (взаимосвязь таблиц). Для этого каждую дочернюю таблицу открывают в режиме изменения структуры и в выпадающем списке Table Properties выбирают пункт Referential Integrity. По нажатию кнопки Define… появляется окно (рис. 5), в котором справа перечисляются все доступные таблицы. Среди них необходимо выбрать родительскую таблицу и нажать кнопку со стрелкой влево. После этого под заголовком Parent’s key будут перечислены поля первичного ключа выбранной таблицы. В левом окне перечисляются все поля дочерней таблицы.

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

 

 

Рис. 5. Определение ограничений ссылочной целостности

 

Замечание: естественно, что соединяемые поля должны совпадать по типу. В частности, автоинкрементным полям ПК родительской таблицы должны соответствовать поля типа LongInteger во ВК дочерней таблицы.

Далее указывается режим работы механизма каскадных изменений при поддержке ссылочной целостности (Update rule). В PARADOX возможны два варианта: Cascade – каскадное изменение/удаление; Prohibit – запрет на изменение/удаление.

При сохранении вновь созданному ограничению целостности присваивается имя.

Замечание: имена ограничениям следует давать осмысленные с тем, чтобы при нарушении ограничений по сообщению об ошибке можно было судить о том, какое конкретно ограничение было нарушено (пример имен см. на рис. 6).

Для каждой дочерней таблицы можно указать несколько ограничений. Наложенные ограничения впоследствии могут быть изменены или удалены (кнопки Modify и Erase на рис. 6).

Если после задания ограничений ссылочной целостности любую родительскую таблицу открыть в режиме изменения структуры, то в списке Table Properties под пунктом Dependent Tables можно будет увидеть перечисление всех ее дочерних таблиц. А для дочерних таблиц под пунктом Secondary Indexes будут указаны индексы, созданные по определениям внешних ключей. Имена этих индексов образуются путем перечисления имен, входящих в них полей. Здесь можно также создать дополнительные индексы (Secondary Indexes), например, для ускорения поиска. Но при задании их имен следует избегать простого перечисления полей, поскольку этот прием используется СУБД для именования индексов, построенных по ВК.

 

 

Рис. 6. Список ограничений ссылочной целостности

 

Для удобства ввода значений в поля дочерних таблиц в Table Properties под пунктом Table Lookup можно определить Lookup таблицы. Для этого нажимается кнопка Define, после чего появляется окно (рис. 7), в котором справа под заголовком Lookup Table необходимо выбрать родительскую таблицу. Далее с помощью кнопки с изображением левой стрелки выбирается поле ПК этой таблицы, значение которого будет подставляться в соответствующее поле ВК дочерней таблицы (это поле выбирается с помощью кнопки с изображением правой стрелки).

Если выбран режим (Lookup Type) All corresponding fields, то помимо значения указанного поля в дочернюю таблицу будут переноситься значения всех полей, совпадающих в родительской и дочерней по наименованию и типу.

 

 

Рис. 7. Определение Lookup-таблиц

 

Тип доступа Lookup access:

Help and fill - при редактировании полей, входящих в состав ВК дочерней таблицы, после нажатия Ctrl + пробел будет открываться родительская таблица для выбора в ней соответствующей строки;

Fill no help - родительская таблица не показывается, но вводимое значение проверяется на соответствие ей.

После выполнения всех перечисленных действий в таблицы можно вводить информацию. Вначале заполняются родительские таблицы, а затем дочерние. Для ввода информации таблица открывается в пункте меню File | Open | Table …, и переводится в режим редактирования нажатием F9 или Table | Edit. Для выхода из режима редактирования используется повторное нажатие F9.

Для рассмотренной выше постановки учебной задачи будем использовать следующую схему базы данных (таблицы 2-7):

 

Таблица 2.

Таблица «Типы лиц» (TipyLic)

Поле Имя Тип
Условный номер типа лица NTip ±
Наименование Name A(20)

Индексы:

Primary - построен по полю NTip при определении первичного ключа.

 

Таблица 3.

Таблица «Подразделения» (Podr)

Поле Имя Тип
Условный номер подразделения NPodr ±
Наименование Name A(20)

Индексы:

Primary - построен по полю NPodr при определении первичного ключа.

 

Таблица 4.

Таблица «Лица» (Lica)

Поле Имя Тип
Условный номер лица NLic ±
Наименование Name A(30)
Тип лица Tip I
Подразделение Podr I

Индексы:

Primary - построен по полю NLic при определении первичного ключа;

Tip - построен по полю Tip при определении внешнего ключа для связи с таблицей типов лиц;

Podr - построен по полю Podr при определении внешнего ключа для связи с таблицей подразделений.

 

Таблица 5.

Таблица «Предметы» (Predmety)

Поле Имя Тип
Условный номер предмета NPredm ±
Наименование Name A(30)
Единица измерения EdIzm A(4)
Цена Cena $

Индекс:

Primary - построен по полю NPredm при определении первичного ключа.

 

Таблица 6.

Таблица «Наличие» (Nalichie)

Поле Имя Тип
Лицо Lico I
Предмет Predmet I
Количество Kolvo N

Индексы:

Primary - построен по полям Lico и Predmet при определении первичного ключа;

Lico - построен по полю Lico при определении внешнего ключа для связи с таблицей лиц;

Predmet - построен по полю Predmet при определении внешнего ключа для связи с таблицей предметов.

 

Таблица 7.

Таблица «Проводки» (Provodki)

Поле Имя Тип
Дата Data D
Лицо расхода Rashod I
Лицо прихода Prihod I
Предмет Predmet I
Количество Kolvo N

Индексы:

Primary - построен по всем полям при определении первичного ключа;

Rashod - построен по полю Rashod при определении внешнего ключа для связи поля Rashod с таблицей лиц;

Prihod - построен по полю Prihod при определении внешнего ключа для связи поля Prihod с таблицей лиц;

Predmet - построен по полю Predmet при определении внешнего ключа для связи с таблицей предметов.

 

Задание.

1. Сформулируйте свою постановку задачи. Обсудите неясные моменты с преподавателем.

2. Определите состав и структуру таблиц разрабатываемой базы данных. Продумайте вопросы обеспечения ссылочной целостности. Нарисуйте структурную схему БД с указанием связей таблиц, первичных и внешних ключей.

3. Определите типы полей для всех таблиц. Продумайте бизнес-правила БД. Объясните свой выбор.

4. Настройте BDE с помощью BDE Administrator. Создайте псевдоним для своей БД.

5. Подготовьте к работе Database Desktop.

6. Создайте таблицы. Укажите ограничения для конкретных полей.

7. Задайте ограничения ссылочной целостности. Определитесь с режимом работы механизма каскадных изменений.

8. Задайте, для тех полей, где это необходимо, Lookup-таблицы.

9. Заполните таблицы информацией, не забывая о ее семантической целостности (т.е. о смысловых связях вводимой информации). Количество записей в таблицах должно быть достаточно большим для последующей работы.


2.2. СТРУКТУРА ПРИЛОЖЕНИЙ ДЛЯ РАБОТЫ С БД

 

При разработке в среде Delphi приложений, предназначенных для работы с локальными БД, используют невизуальные компоненты, расположенные на страницах BDE и Data Access, и визуальные компоненты – на странице Data Controls (рис. 8).

 

Рис. 8. Структура приложений для работы с БД

 

Замечание: такое распределение компонентов по страницам характерно для 7-ой версии Delphi. В других версиях оно может отличаться.

Невизуальные компоненты TDatabase, TTable, TQuery и др. обеспечивают доступ к информации, содержащейся в БД с использованием механизмов BDE. Среди них выделяется компонент TDataSource, который является посредником между невизуальными и визуальными компонентами.

Визуальные компоненты обеспечивают отображение информации, получаемой от невизуальных компонентов, как в виде множества записей (TDBGrid, TDBCtrlGrid, …), так и в виде отдельных полей (TDBEdit, TDBText, …).

Взаимодействие компонентов осуществляется с помощью их свойств. Рассмотрим это взаимодействие на примере приложения, которое должно отображать содержимое таблицы «Предметы».

Перед тем, как приступить к реализации приложения, создадим в BDE Administrator псевдоним (alias) для нашей базы данных и присвоим ему имя Sklad. Далее с помощью Database Desktop сформируем все перечисленные в предыдущем параграфе таблицы и заполним их информацией. Теперь можно перейти к разработке приложения в среде Delphi.

Разместим на форме приложения следующие компоненты (рис. 9):

 

 

Рис. 9. Компоненты на форме приложения

 

TTable (страница BDE) – определяет свойства и методы работы с конкретной таблицей БД;

TDataSource (страница Data Access) – обеспечивает связь между TTable и визуальными компонентами;

TDBGrid (страница Data Controls) – обеспечивает отображение и редактирование отдельной таблицы БД;

TDBEdit (страница Data Controls) – обеспечивает отображение и редактирование отдельного поля таблицы БД.

Далее обеспечим взаимодействие этих компонентов и подключение их к базе данных путем установки следующих их свойств.

Для TTable:

DatabaseName:= Sklad – псевдоним используемой БД;

TableName:= Predmety.db – имя файла с данными таблицы Predmety;

Name:= PredmetyT – имя для самого компонента TTable (по умолчанию он будет назван Table1).

Для TDataSource:

DataSet:= PredmetyT – ссылка на TTable, который является источником данных для TDataSource;

Name:= PredmetyDS – имя самого компонента TDataSource.

Для TDBGrid:

DataSource:= PredmetyDS – ссылка на TDataSource, который является источником данных для TDBGrid;

Name:= PredmetyGr – имя для самого компонента TDBGrid.

Для TDBEdit:

DataSource:= PredmetyDS – ссылка на TDataSource, который является источником данных для TDBEdit;

DataField:= Name – имя редактируемого поля (здесь наименование предмета);

Name:= NameEdit – имя для самого компонента TDBEdit.

Теперь можно активизировать связь компонентов с БД (рис. 10).

Для этого свойству Active компонента TTable необходимо присвоить значение True.

Таким образом, взаимодействие с базой данных возможно уже на этапе проектирования приложения. Для выяснения других возможностей спроектированной формы откомпилируйте и запустите приложение.

Схематически взаимосвязи компонентов представлена на рис. 11.

 

Задание.

10. Создайте приложение, на форме которого одновременно будут отображены две-три таблицы из проектируемой БД. Экранную форму работающего приложения включите в отчет.

 

 

Рис. 10. Активизация связи с базой данных

 

 

Рис. 11. Взаимосвязи компонентов

При визуализации содержимого пары связанных (родительской и дочерней) таблиц БД может быть реализована связь Master-Detail. В этом случае в дочерней таблице будут показываться только те записи, которые соответствуют текущей (выбранной) в родительской таблице записи. Например, если это таблицы подразделений (родительская - Master) и лиц (дочерняя - Detail), то в таблице лиц будут отображаться только те лица, которые работают в подразделении, выбранном в таблице подразделений.

Для реализации связи Master-Detail необходимо следующим образом установить свойства компонентов (рис. 12).

 

Рис. 12. Связь Master-Detail

 

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

MasterSource – имя источника данных TDataSource родительской таблицы;

MasterFields – имена полей первичного ключа родительской таблицы, по которым связаны таблицы;

IndexName – имя индекса, построенного по внешнему ключу дочерней таблицы.

Для установки значений этих свойств следует вначале для дочернего TTable (LicaT) в свойстве MasterSource указать имя источника данных, соответствующего родительской таблице (PodrDS). Далее по нажатию кнопки в поле значения свойства MasterFields вызывается редактор связей (Field Link Designer). В нем (рис. 13) среди возможных индексов (Available Indexes) выбирается индекс, построенный по внешнему ключу для связи этих таблиц (здесь индекс, построенный по полю Podr).

 

 

Рис. 13. Редактор связей

 

Затем в окнах Detail Fields и Master Fields выбирается пара полей эквивалентных по значению в первичном и внешнем ключах и нажимается кнопка Add, после чего в окне Joined Fields показывается сформированная связка. Последнюю операцию следует повторить для всех связываемых полей. По окончании нажать кнопку OK.

В результате описанных действий между таблицами будет установлена связь Master-Detail. Ниже на рисунках 14 и 15 приведены экранные формы до и после связывания таблиц.

 

 

Рис. 14. Таблицы подразделений и лиц не связаны

 

 

Рис. 15. Таблицы подразделений и лиц связаны, как Master-Detail

 

Замечание: если в дочерней таблице поля внешнего ключа по составу и порядку совпадают с первыми по порядку полями ее первичного ключа, то индекс по внешнему ключу не строится, а используется индекс, построенный по первичному ключу. Соответственно, в Available Indexes следует указывать первичный ключ. При этом свойство IndexName останется незаполненным.

Такая ситуация, например, будет иметь место в таблице Nalichie, при определении внешнего ключа по отношению к таблице Lica, если первичный ключ в таблице наличия был построен по полям Lica и Predmety (Lica – первое поле).

 

Задание.

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

 


Дата добавления: 2015-07-07; просмотров: 148 | Нарушение авторских прав


Читайте в этой же книге: Требования к отчету по лабораторной работе №2. | Требования к отчету по лабораторной работе №3. | Требования к отчету по лабораторной работе №4. |
<== предыдущая страница | следующая страница ==>
Поиск по каталогам| Требования к отчету по лабораторной работе №1.

mybiblioteka.su - 2015-2024 год. (0.042 сек.)