Министерство образование и науки Российской Федерации
Южно-Российский государственный технический университет
(Новочеркасский политехнический институт)
ИНФОРМАЦИОННОЕ ОБЕСПЕЧЕНИЕ
СИСТЕМ УПРАВЛЕНИЯ
СУБД VISUAL FOXPRO
Методические указания к лабораторным работам
Новочеркасск
ЮРГТУ (НПИ)
УДК 681. 3. 07 (076.5)
Рецензент - канд. техн. наук Д.В.Гринченков
Фоменко Г.П.
Информационное обеспечение систем управления СУБД VISUAL FOXPRO: методические указания к лабораторным работам / Юж. – Рос. гос. техн. ун-т (НПИ). - Новочеркасск: ЮРГТУ (НПИ), 2012. - 58 с.
Рассматриваются вопросы использования возможностей СУБД VISUAL FOXPRO для построения фрагментов базы данных и для реализации типовых функций взаимодействия пользователей с подсистемой информационного обеспечения АСУ.
Предназначены для студентов специальности 22020165 «Управление и информатика в технических системах» и направления 22020062 «Автоматизация и управление».
ВВЕДЕНИЕ В VISUAL FOXPRO. УПРАВЛЕНИЕ РАБОТОЙ VISUAL FOXPRO
Программа занятия
Ознакомиться с составом и назначением Visual FoxPro.
Научиться оперировать основными командами Visual FoxPro.
Создать базу данных, соответствующую разработанной модели.
Указания к выполнению программы
К пункту 1.Visual FoxPro позволяет создавать базы данных по реляционной модели и выполнять основные функции: описывать структуру данных, вводить и проверять информацию, выдавать информацию на экран или печать. Система позволяет для быстрого поиска использовать индексные файлы (упорядоченный список указателей к основному файлу).
Visual FoxProиспользует таблицы для хранения данных, определяющих тот или иной тип файла. Существуют следующие типы файлов:
• Tabel (.DBF) - таблица;
• Database (.DBC) - база данных;
• Form (.SCX) - форма;
• Label (.LBX) - этикетка;
• Menu (.MNX) - меню;
• Project (.PJX) - проект;
• Report (.FRX) - отчет;
• Visual Class Library (.VCX) - библиотека визуальных классов.
Поскольку эти файлы фактически являются таблицами, можно использовать и просматривать их точно так же, как любой файл с расширением .DBF.
Visual FoxProпозволяет использовать различные ОС, имеет интерактивный режим разработки программ, можно использовать массивы переменных, есть возможность создавать и редактировать меню, отчеты и экраны, можно создавать ЕХЕ - файлы, есть функция, позволяющая получить значения системных параметров. Visual FoxProчастично совместим с СУБД FoxBASE, т. е. есть возможность использования файлов FoxBASE - .PRG (программные файлы), .DBF (базы данных), .IDX (индексные файлы), .MEM (файлы переменных памяти), .LBL (файлы меток).
К пункту 2. Основные команды системы и примеры их использования:
CREATE PROJECT (File\New\Project\New File) - создает новый проект.
Новый проект создается командой CREATE PROJECT или через меню -File\New\Project\New File. Результат приведен на рис. 1.1.
Рис 1.1
После этого появляется окно для сохранения нового проекта, нажимаем кнопку Сохранить.
В данном случае имя проекта LR5 (рис 1.2).
Рис. 1.2
После этого рабочая область примет вид, изображенный на рис. 1.3.
Рис. 1.3
Для создания новых таблиц необходимо выполнить следующую последовательность действий:
1. В диспетчере проектов (Project Manager) выбрать Data /Free Tables/New (рис. 1.4);
Рис. 1.4
2. Затем выбрать New Table в появившемся окне (рис. 1.5);
Рис. 1.5
3. В появившемся окне Create ввести имя создаваемой таблицы и выбрать Сохранить.
В данном случае имя таблицы – table1 (рис 1.6);
Рис. 1.6
4. После чего появляется окно, в котором необходимо заполнить поля (рис. 1.7);
Рис. 1.7
5. В конструкторе таблиц в поле Name ввести имя первого поля таблицы, а также в поле Туре выбрать тип поля таблицы из списка (рис. 1.8).
Рис. 1.8
Имена полей - это идентификаторы, состоящие не более чем из 6 латинских букв или цифр, начиная с буквы.
В СУБД Visual FoxPro возможны следующие типы полей:
- Character - символьное поле; длина его определяется количеством символов (до 254); Numeric - числовое поле; длина определяется общим числом цифр и числом цифр поля десятичной точки;
-Date - поле даты (американский формат: мм/дд/гг; германский: дд.мм.гг; британский: дд/мм/гт; итальянский: дд-мм-гт; японский: гт/мм/дд4 и т.д.); Memo - поле примечаний; Logical - логическое поле; может содержать одно из двух значений F (false) или Т (trye).
6. В поле Width установить ширину столбца в символах (см. рис. 1.8).
7. Если поле типа Numeric или Float, установить число десятичных знаков, отображаемое в поле Decimal (см. рис. 1.8).
8. Если требуется, чтобы поле могло принимать значение NULL, выделить NULL.
9. После нажатия кнопки ОК появится окно с вопросом: "Input data record now?" (вводить данные сейчас?). Yes - чтобы ввести данные в таблицу сейчас, No – чтобы сделать это позднее. Нажимаем Yes.
В том случае, если окно с вопросом "Input data record now?" не появляется, информацию в таблицу можно ввести при помощи команды APPEND (см. ниже).
Появляется окно ввода записей (рис. 1.9), заполняем таблицу. В поле Data данные водим в американском формате: мм/дд/гг.
Рис. 1.9
USE – команда, открывающая таблицу, т.е. над этой таблицей будут выполняться команды пользователя.
Набираем в командном окне (окно Command) команду, приведенную на рис. 1.10, причем указываем полный путь к файлу.
Рис 1.10
В результате таблица table1 стала активной.
Это можно проверить командой LIST. Если файл с расширением *.dbf находится в рабочих папках самой программы, то указывать путь необязательно.
BROWSE – команда просмотра таблицы.
После ввода этой команды появляется окно просмотра и редактирования записей (рис. 1.11).
Рис. 1.11
APPEND [BLANK] – команда, добавляющая новую запись в активную таблицу.
После ввода этой команды появляется пустое окно ввода записей (рис. 1.12), необязательный параметр BLANK означает, что новая запись останется пустой и не будет отражена на экране.
После ввода этой команды появляется окно ввода записей без возможности добавить новую запись (рис. 1.13).
Рис. 1.13
AVERAGE – команда, которая ищет среднее арифметическое числовых полей, то есть полей типа Numeric.
В данном случае это поле телефон. Вводим команду в командное окно (рис. 1.14).
Рис. 1.14
Получили следующий результат (рис. 1.15).
Рис. 1.15
COUNT – команда, подсчитывающая число записей таблицы
Результат ввода команды указан на рис. 1.16.
Рис. 1.16
LOCATE FOR – команда, осуществляющая поиск записей.
Команда поиска записи по полю имяимеет вид:
LOCATE FOR имя=’Александр’
Результат её действия указан на рис. 1.17.
Рис 1.17
SORT – команда, сортирующая таблицу.
INDEX ON – команда индексации, необходимая для той же цели, что и сортировка - упорядочивание файла данных в порядке возрастания. Различие между ними заключается в том, что при сортировке по команде SORT ON создаётся полностью новый файл, в котором нумеруются все записи в отсортированном порядке. При индексации по команде INDEX ON создаётся индексный файл, который не содержит все информации отсортированного файла. Он включает только перечень номеров записей в той последовательности, какую они бы имели, если бы были отсортированы. Таким образом, сортировка с использованием команды INDEX ON экономит время, необходимое для перезаписи всей информации из БД и значительный объём дисковой памяти.
Индексирование информации производится для ускорения поиска информации в БД при связывании реляционных баз данных.
Команда сортировки по полю телефон имеет вид:
SORT ON телефон TO "c:\Documents and Settings\Я\Мои документы\Visual FoxPro Projects\LR № 5\sorttable.dbf"
Результат её действия указан на рис. 1.18.
Рис. 1.18
COPY TO – команда, копирующая данные из активной таблицы в другую таблицу
В данном случае мы скопировали данные из таблицы Table 1 .dbf в таблицу A.dbf , введя в окне Command текст:
COPY TO "c:\Documents and Settings\Я\Мои документы\Visual FoxPro Projects\LR № 5\a.dbf"
Результат её действия указан на рис. 1.19.
Рис. 1.19
Для просмотра скопированной таблицы Tablel.dbf в таблицу A.dbf воспользуемся командой USE для открытия таблицы A.dbf(рис. 1.20) и BROWSE для ее непосредственного просмотра (рис. 1.21).
Рис. 1.20
Рис. 1.21
COPY STRUCTURE – команда, копирующая структуру таблицы
Копируем структуру таблицы А.dbf в таблицу Sid.dbf, производим просмотр и открываем новую таблицу. Текст, введённый в окно Command, имеет вид:
COPY STRUCTURE TO "c:\Documents and Settings\Я\Мои документы\Visual FoxPro Projects\LR № 5\sid.dbt"
Результат её действия указан на рис. 1.22.
Рис. 1.22
COPY FIELDS – команда, которая даёт возможность копировать только необходимые поля таблицы (если не указывать этот параметр будут скопированы все поля таблицы). Перед этим необходимо выбрать (сделать активной) таблицу, из которой происходит копирование.
Мы скопировали поля имя и телефон из таблицы Table1.dbfв таблицу Ser.dbf . Текст, введённый в окно Command, имеет вид:
COPY fields имя, телефон to "c:\Documents and Settings\Я\Мои документы\Visual FoxPro Projects\LR № 5\ser.dbt"
Результат её действия указан на рис. 1.23.
Рис. 1.23
Для просмотра скопированных полей из таблицы Table1.dbf в таблицу Ser. dbf воспользуемся командой USE для открытия таблицы Ser.dbf и BROWSE для ее непосредственного просмотра (рис. 1.24).
Рис. 1.24
DIR – команда, которая показывает листинг файлов
DISPLAY – команда, которая показывает записи текущей таблицы
DISPLAY STRUCTURE – команда, которая отображает информацию о структуре таблицы
DISPLAY STATUS – команда, которая предоставляет информацию о статусе
DISPLAY MEMORY – команда, которая отображает текущее состояние памяти
К пункту 3. Модель данных представляет собой ряд взаимосвязанных таблиц данных, построенных таким образом, что исключается дублирование информации. Согласно задания реляционная модель будет состоять из двух взаимосвязанных таблиц БД. Связь между таблицами БД осуществляется через ключевое поле, общее для обоих файлов. Построение модели данных начинают с определения полей в каждой таблице БД. Осуществляется это следующим образом:
- каждому полю таблиц присваивают имя - идентификатор;
- определяют тип и размер каждого поля;
- определяют ключевое поле, которое является общим для обеих таблиц.
Рассмотрим пример:
Построим БД, содержащую информацию о телефонных абонентах. Поля БД следующие: ФИО, адрес, номер телефона, дата рождения. В БД могут указываться родственники, имеющие общий адрес, а значит возможно его дублирование. Для исключения этого родственники выделяются в другую таблицу с полями: ФИО, номер телефона, дата рождения, - которая через номер телефона связана с таблицей абонентов. Данная связь позволяет в БД считывать адрес родственников из таблицы абонентов, используя тот факт, что номера их телефонов совпадают. Поле номеров телефонов называется ключевым, обеспечивающим связь таблиц.
Покажем данную реляционную модель в виде таблиц рис. 1.25.
Рис. 1.25
Для создания БД, согласно построенной реляционной модели в Visual FoxPro, необходимо создать новый проект командой CREATE PROJECT или через меню - File\New\Project\New File(см. выше).
Далее необходимо создать новые таблицы как было описано выше.
Для связывания таблиц по полю телефон, необходимо последовательно ввести в окно Commandследующие команды:
USE "c:\documents and settings\я\мои документы\visual foxpro projects\table1.dbf" ALIAS r1
INDEX on телефон TO "c:\documents and settings\я\мои документы\visual foxpro projects\table1-1.dbf"
SELECT 2
USE "c:\documents and settings\я\мои документы\visual foxpro projects\table2.dbf" ALIAS r2
INDEX on телефон TO "c:\documents and settings\я\мои документы\visual foxpro projects\table2-1.dbf"
SET RELATION TO телефон INTO r1
Для того чтобы просмотреть результат, необходимо ввести следующие команды:
LIST FIELDS фамилия, имя, отчество, телефон, r1.адрес
Результат вышеуказанных действий показан на рис. 1.26
Рис. 1.26
Осуществить связывание таблиц можно более простым и более быстрым способом, если использовать меню Window/Data Session. При этом появится рабочее окно, с помощью которого можно открывать, закрывать и просматривать таблицы, изменять их структуры, а также осуществлять связывание (рис. 1.27).
Рис. 1.27
Для нашего примера откроем сначала таблицу table1, нажав кнопку Open в данном окне (рис. 1.28).
Рис. 1.28
После нажатия Ок получим (рис. 1.29).
Рис. 1.29
Аналогичным образом откроем таблицу table2 (рис. 1.29, 1.30).
Рис. 1.29
Рис. 1.30
Перед установкой связи базы данных необходимо индексировать по ключевому полю (Properties/Modify) (рис. 1.31).
Рис. 1.31
После этого появляется окно (рис. 1.32). В строке с именем телефон в столбце Indexнеобходимо установить стрелку вверх и нажать Ок.
Рис. 1.32
После индексации делаем активной таблицу table2 и указываем на значок Relation (рис 1.33).
Рис. 1.33
Затем необходимо сделать активной таблицу, с которой будет осуществляться связь, т.е. таблицу table1. После этой операции автоматически вызывается диалоговое окно, в котором необходимо указать ключевое поле связи (поле телефон) (риc. 1.34). Нажимаем Ок.
Рис. 1.34
На рис. 1.35 показан результат.
Рис. 1.35
Осуществить поиск в таблице table2 записей соответствующих тому или иному значению поля. Продолжить поиск командой CONTINUE и вывести найденную запись (рис. 1.36).