В начало

 

Работа с БД в FoxPro (Лабораторная работа)

 

1. Цель работы

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

 

2. Общие теоретические сведения

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

В FoxPro допустимы следующие типы данных:

- Character       – символьное выражение;

- Currency        – денежное выражение для числовой величины;

- Date              – выражение для даты;

- DateTime       – выражение дата и время;

- Logical           булевое выражение;

- Numeric         числовое выражение;

- Integer           – целое число;

- Double           – числа с плавающей точкой двойной точности;

- Float              – то же, что числовое выражение (Оставлено для совместимости);

- General          – поле для ссылки на объект OLE;

- Memo            поле примечаний для ссылки на блок данных;

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

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

 

3 Порядок выполнения работы

3.1 Проектирование баз данных

Создание новой базы данных в FoxPro v 5.0 начинается с создания нового проекта. Создайте новый проект (директива New из File-меню). В открывшемся окне выберите Project и нажмите кнопку New File. Сохраните созданный проект под любым именем.

Автоматически появляется окно диспетчера проектов. Диспетчер проектов удобно использовать, если привести его к виду панели инструментов и встроить в главное окно Visual FoxPro. Для этого достаточно перетащить окно Диспетчера проектов к верхней рамке окна Visual FoxPro.

Создайте новую базу данных. Для этого в окне проекта выберите вкладку Data , выделите заголовок Database и нажмите кнопку New. Сохраните новую базу данных под любым именем.

Вам необходимо создать базу данных со следующей структурой :

Рис. 1. Структура базы данных

Создайте таблицу документов в Диспетчере проектов. Для этого в вашей новой базе данных выберите заголовок Tables, нажмите кнопку New. В открывшемся окне New Table нажмите кнопку New Table, затем сохраните таблицу.

После того, как вы сохранили таблицу автоматически открывается окно Конструктора таблиц - Table Designer, в котором можно выполнить определение структуры таблицы. В центральной части окна расположен список полей. В нем определяются имена полей (Name), типы полей (Type), размеры полей (Width), количество десятичных разрядов после запятой для числовых полей (Decimal). В столбце Index можно указать необходимость создания индекса обычного типа с возрастающей (Ascending) или убывающей (Descending) последовательностью значений. В столбце NULL можно отметить допустимость использования значений NULL в данном поле. Значения NULL позволяют выполнять следующие специфические задачи:

определять отсутствие знамений в поле;

иметь значения, отличные от пустой строки или цифры 0;

–эти значения располагаются впереди других значений;

используются при вычислениях и в большом количестве функции.

При вводе первой же литеры имени диалоговое окно изменяет свой внешний вид -обнаруживаются средства указания остальных характеристик поля: размера, типа, ключа. Порядок строк определений полей в окне Table Designer соответствует порядку полей в записи (порядку столбцов в ее табличной форме).

После того, как вы создали поля записей во вкладке Fields Конструктора таблиц, перейдите во вкладку Indexes и внесите данные о ключах (индексах), называемых тегами.

В столбец Name заносится имя тега. Оно должно начинаться с буквы или знака подчеркивания и не может включать более 10 букв, цифр или знаков подчеркивания. В столбце Type указывается тип индекса, например, primary (первичный), regular (обычный). В столбце Expression в качестве выражения для индексного ключа обычно используется имя поля, по которому создается тег. В столбце Filter вы можете наложить ограничения на записи, которые будут доступны при активизации индекса. Просматривать и редактировать можно будет лишь те записи, которые будут удовлетворять указанному выражению. В столбце Order можно установить возрастающий или убывающий порядок расположения данных в индексе.

До тех пор, пока не нажата кнопка ОК в диалоговом окне Table Designer, структура таблицы не зафиксирована, и в нее можно вносить любые изменения.

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

1) выделить заголовок таблицы мышкой в Диспетчере проектов и нажать кнопку Modify;

2) в меню View главного окна Visual FoxPro выбрать пункт Database Designer, при условии наличия в меню View пункта типа Browse " <Название вашей таблицы> (<Название вашей базы данных>!<Название вашей таблицы>)".

Аналогичным образом создайте таблицы исполнителей и контроля исполнения.

3.2 Проверка правильности, триггеры

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

Validation Rule - правило проверки (логическое выражение);

Validation Text - сообщение при проверке (выводится при ложном значении логического выражения);

Default Value - значение по умолчанию;

Caption - заголовок столбца.

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

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

3.3 Заполнение баз данных

Для заполнения таблицы необходимо выделить заголовок таблицы мышкой в Диспетчере проектов и нажать кнопку Browse. Для ввода записи FoxPro включает окно, в котором все поля одной записи таблицы расположены друг под другом в отдельных строках. Курсор находится в первой строке, где FoxPro ожидает ввода номера первого документа. Введите данные в соответствующие поля. После завершения ввода данных в одно поле с помощью [Tab] переходите к следующему. Чтобы добавить новую запись в таблицу, выберите пункт Append Mode в меню View.

Для заполнения Memo-поля необходимо выполнить на нем двойной щелчок мышью. Откроется окно с именем типа Имя_таблицымя_поля в строке заголовка. В это окно следует ввести содержание документа или характеристику исполнителя.

Для заполнения ноля фотографии, дважды щелкните по нему мышью. Откроется окно с именем типа Имя_таблицымя_поля. Для встраивания объекта вызовите директиву Insert Object из Edit-меию и выберите тип объекта. Вы можете создать новый объект или создать объект из файла, поставив соответствующий флажок в окне. Вставка объекта и выбрать файл, нажав кнопку Обзор.

3.4 Связывание баз данных и целостность ссылочной системы

Выполните связывание баз данных документов и исполнений. Убедитесь, что по полю "номер документа" создан первичный индекс для таблицы Документы В таблице Исполнение создайте обычный (тип Regular) индекс по полю "номер документа". Для работы с элементами базы данных существует Конструктор Базы Данных. Чтобы войти в него, выберите пункт Database Designer меню View. В Конструкторе БД каждая таблица представлена отдельным окном с именем таблицы в строке заголовка. Окно содержит список полей таблицы и список индексов таблицы, располагающийся под списком полей. Изображение ключа перед индексом обозначает, что данный индекс является первичным.

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

Точно также надо связать таблицы Исполнитель и Контроль исполнения.

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

В левом поле Aliases окна Data Session содержатся имена таблиц вашей визы данных. Если оно пусто, нажмите кнопку Open и выберите нужные таблицы. Справа в расположено поле Relations, которое предназначено для отображения связей между таблицами. В окне Data Session постоянные связи не наследуются, и отношения между таблицами надо устанавливать вручную. Для этого следует использовать кнопку Relations. Выберите из списка открытых таблиц ту, которая будет родительской в устанавливаемом отношении. Нажмите кнопку Relations, a затем выберите в списке Aliases таблицу, которая должна быть подчинена первой таблице (дочернюю). Появится диалоговое окно Set Index Order. В этом окне необходимо выбрать индекс в дочерней таблице, по которому будет установлено отношение. После этого появится окно построителя выражений Expression Builder, в котором надо указать поле в родительской таблице, которое должно быть связано с индексом, выбранным в дочерней таблице. По умолчанию создается отношение 1:1. Создайте отношение 1:М. Для этого выделите мышкой родительскую таблицу в правой части окна Data Session (где изображена связь таблиц) и нажмите кнопку 1_to_many. В открывшемся окне Create One-To-Many Relationships выберите имя дочерней таблицы. Закройте окно. Вы увидите, что в поле связей установлена связь "1 ко многому".

Аналогичным образом установите отношение 1:М для баз данных исполнителей и контроля исполнения.

После установления связей между таблицами может быть произведена проверка целостности ссылочной системы (referential integrity), которая задается с помощью специального построителя, вызываемого из Database Designer нажатием правой кнопки мыши. Задайте каскадную модификацию для базы данных документов. Связь между базами данных существует лишь до конца текущего сеанса работы с FoxPro. Для связывания в начале каждого сеанса работы сохраните в отдельном файле последовательность команд связывания баз данных из окна команд. Для этого выделите нужные директивы в окне команд и скопируйте их в буфер (Edit/Copy). Затем откройте новый файл для программы (File/New/Program) и вставьте туда выделенный блок (Edit/Paste). Сохраните файл.

3.5 Просмотр содержимого баз данных

Структура базы данных изображена в Диспетчере проектов. Структуру элементов базы данных и связи между ними можно посмотреть в окне. Содержимое конкретной таблицы можно просмотреть:

1) из Конструктора таблиц, щелкнув по строке заголовка окна этой таблицы;

2) из Диспетчера проектов, выделив ее имя и нажав кнопку Browse.

Обычно данные представляются в виде последовательности записей для удобства редактирования (режим Edit). Однако можно представить данные и в обычной табличной форме. Для этого необходимо войти в меню View и выбрать режим Browse.

Установите в одном окне оба варианта просмотра. Откройте дополнительные окна для просмотра данных из подчиненных баз данных и разместите их на экране таким образом, чтобы были видны все три окна.

Дополните командный файл установления отношений директивами создания русифицированного Browse-окна. В этой программе должны быть поля из всех трех баз данных: номер документа, тип документа (база данных документов), исполнитель документа (база данных исполнителей), дата исполнения документа (база данных контроль исполнения). Каждая колонка должна иметь русский заголовок. Фамилии исполнителей должны выводиться русскими буквами с автоматическим преобразованием строчных букв в прописные. Формат команды BOWSE приведен в приложении 1.

4 Форма отчетности

1. Заполненные и связанные  между  собой   файлы  таблицы документов, исполнителей и контроля исполнения.

2. Файл установления отношений.

З. Отчет по лабораторной работе содержащий распечатку файла установления отношений с создания BROWSE–окна.

5 Контрольные вопросы

1.Какие типы данных для полей различает Visual FoxPro?

2.Что такое индексное поле и для чего оно нужно? Для чего создается мультииндексный файл?

3.Как организуется связь между базами данных, и какие преимущества это дает?

4. В чем заключается различие между связыванием и встраиванием объектов?

5. Формат команды BROWSE

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

1. Горев A. Visual FoxPro 5.0. Книга для программистов. - М: Журнал "FoxTalk" TOO "Эдэль",1997 - 552 с.: ил