Главная страница
Навигация по странице:

  • КОНТРОЛЬНЫЕ ВОПРОСЫ

  • 3. ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ FOXPRO Время выполнения – 4 часа.Цель работы

  • 3.1. Создание, редактирование удаление и выполнение программ

  • 3.2. Примеры программ Пример 1.

  • методичка. методичка АИС2. Архитектура информационных систем


    Скачать 4.53 Mb.
    НазваниеАрхитектура информационных систем
    Анкорметодичка
    Дата23.02.2022
    Размер4.53 Mb.
    Формат файлаdoc
    Имя файламетодичка АИС2.doc
    ТипМетодические рекомендации
    #371079
    страница4 из 7
    1   2   3   4   5   6   7

    2.4. Реструктуризация базы данных
    Использование базы данных значительно упрощает работу с данными, поскольку оно реализует мощные и полезные функции, используемые при работе с таблицами. Например, в файле с расширением DBF вы не можете указать поле, содержащее более 10 символов, но если таблица включена в базу данных, имя поля таблицы может содержать до 128 символов. Никакие правила, значения по умолчанию (DEFAULT) и триггеры просто невозможны в DBF-файле вне файла базы данных, а так же автоматическое их выполнение невозможно [4]. Использование файла базы данных позволяет выполнять операции, которые чрезвычайно сложно организовать другими способами. Например, операция, такая как «транзакция», может быть реализована только среди таблиц, включенных в базу данных. В принципе, этот процесс может быть организован со свободными таблицами, но это потребует значительных усилий от программиста [4]. Поэтому в большинстве случаев рекомендуется создавать базу данных, включая таблицы и ссылки между ними. Базы данных, такие как таблицы, могут быть созданы двумя способами: через меню среды Visual FoxPro и через окно команд.

    Если база данных создается через меню, выберите «Файл» → «Создать» и в открывшемся диалоговом окне «Создать» (см. Рис. 2.2) выберите переключатель «База данных» и нажмите кнопку «Создать файл». Появится диалоговое окно «Создать» (аналогично рис. 2.9). Он должен выбрать папку (если ранее у вас не было папки по умолчанию, например, с помощью команды SET DEFAULT TO <имя_папки>, открывается папка, в которой установлена ​​Visual FoxPro) и введите имя файла базы данных в поле «Ввод» поле базы данных. При создании базы данных вы должны указать ей имя, которое отражает суть хранимой информации, но в рамках правил операционной системы Windows [2, 4]. В нашем примере создайте базу данных магазин. После сохранения имени базы данных открывается окно «Конструктор базы данных - конструктор баз данных» (рисунок 2.26). В то же время для каждой используемой базы данных можно открыть несколько окон конструктора баз данных.


    Рис. 2.26. Окно для конструктора базы данных
    Набор панели инструментов Database Controls, содержит следующие команды (слева направо) [3]:

    New table – создание новой таблицы базы данных;

    Add table – добавление в базу данных свободной таблицы;

    Remove table – удаление таблицы из базы данных;

    New remote view создание нового удаленного вида;

    New local view – создание нового локального вида;

    Modify table – изменение структуры таблицы;

    Browse table – просмотр содержимого таблицы;

    Edit stored procedures – вызов окна редактирования текстов хранимых процедур;

    Connections – вызов окна определения соединения.

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

    MODIFY DATABASE <имя_базы_базы>.

    Если база данных указана в окне команд (см. Рис. 2.1), вы должны запустить команду CREATE DATABASE. Появится диалоговое окно «Создать» (аналогично рис. 2.9).

    При выполнении команды

    CREATE DATABASE <имя_базы_данных>

    База данных будет сохранена на диске в текущей папке, и окно конструктора базы данных будет открыто немедленно.

    Если таблицы создаются раньше, чем база данных, вы можете включить их в базу данных после ее открытия командой ADD TABLE или с помощью мыши в окне конструктора базы данных Database Designer (щелкните правой кнопкой мыши в раскрывающемся меню, чтобы выбрать Add Таблица или нажмите кнопку соответствующего средства управления базой данных). В открывшемся окне выберите файл таблицы, который вы хотите включить в базу данных (см. Рисунок 2.27).


    Рис. 2.27. Выбор таблицы
    Если база данных создается раньше, чем таблицы, вы можете создавать таблицы в базе данных либо с помощью мыши в окне конструктора базы данных Database Designer (щелкните правой кнопкой мыши в раскрывающемся меню, чтобы выбрать пункт меню «Новая таблица»), либо создайте таблицу с открытой базой данных, как описано в пункте 2.1.1.

    Вы можете изменить структуру базы данных с помощью команды MODIFY DATABASE. После его ввода откроется окно конструктора базы данных (см. Рис. 2.17), в котором вы можете внести необходимые изменения. В нашем примере давайте добавим ранее созданные таблицы компаний и товаров в магазин базы данных (рисунок 2.28).



    Рис. 2.28. Окно конструктора базы данных
    с добавленными таблицами firms и goods
    Редактирование структуры таблиц, включенных в базу данных, выполняется так же, как и редактирование свободных. не включены в таблицы базы данных.

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

    Таблицы могут быть удалены из базы данных либо через окно команд, либо через меню; и таблица может быть исключена из базы данных или удалена с диска. Чтобы исключить таблицу из базы данных (но не удалять ее с диска), в командном окне выполните команду REMOVE TABLE .

    Если вам необходимо не только исключить таблицу из базы данных, но и удалить ее с диска, вы должны выполнить команду REMOVE TABLE DELETE в окне команд.

    Если вы исключите таблицу из базы данных через меню, вы можете использовать кнопку исключения таблицы на панели инструментов управления базами данных или щелкнуть правой кнопкой мыши по таблице внутри конструктора баз данных и выбрать пункт меню «Удалить». Visual FoxPro откроет окно, показанное на рисунке 2.20. Когда вы нажимаете кнопку «Удалить», таблица исключается из базы данных, когда вы нажимаете кнопку «Удалить», она удаляется с диска. Кнопка отмены - отмените операцию.



    Рис. 2.20. Подтверждение удаления таблицы

    Структура реляционной базы данных всегда сконструирована таким образом, что каждая содержащаяся в ней таблица не содержит избыточной информации. Например, в базе данных хранилища вам необходимо хранить данные о товарах, которые продаются в этом магазине. Как следствие, вам также нужно как-то сохранить имена фирм, которые производят эти товары. Если для этих целей используется одна таблица, становится очевидным, что память компьютера неэффективно используется, поскольку для каждого продукта необходимо будет хранить имена и другие атрибуты фирм в соответствующей записи, которые будут повторяться много раз. Поэтому вам нужно создать две таблицы, которые будут связаны между собой. В этом случае для созданных таблиц необходимо установить ссылки так, чтобы, например, по названию фирмы в таблице компании, все записи с товарами этой фирмы из таблицы товаров можно определить [5]. Ссылки бывают «один к одному» (1:1), «один ко многим» (1:М) и «многие ко многим» (M:N) (последние не поддерживаются в реляционных СУБД).

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

    Временное соединение создается командой SET RELATION с большим количеством дополнительных параметров. Постоянная связь создается в окне конструктора базы данных. Поля, по которым будут связаны эти таблицы, должны иметь один и тот же тип данных, но их имена не обязательно должны совпадать. Для нашего примера это поле является фирменным именем таблицы товаров и фирменным полем таблицы фирма. Чтобы создать ссылку, щелкните по имени индекса (первичный ключ) родительской таблицы и, не отпуская кнопку мыши, перетащите его в индекс в дочерней таблице. Установим отношение на полях таблиц фирм и товаров, содержащих название фирмы. Чтобы сделать это, мы нажимаем левую кнопку мыши в индексе (первичный ключ) в таблице фирм и перетаскиваем его в индекс firm_name в таблице товаров (см. Рисунок 2.21). Строка означает, что соединение было создано.

    Чтобы отредактировать ссылку, дважды щелкните ссылку между таблицами и выберите «Изменить отношения» в появившемся меню. Откроется окно редактирования ссылок, в котором для каждой таблицы в раскрывающемся списке под его именем указываются его индексы, и необходимо выбрать и указать индексы, по которым выполняется соединение (рисунок 2.22).


    Рис. 2.21. Установка связи между таблицами


    Рис. 2.22. Редактирование связи
    Чтобы удалить ссылку, дважды щелкните ссылку связи между таблицами и выберите параметр «Удалить связь» в появившемся меню или выберите ссылку и нажмите клавишу «Удалить».

    Вы можете удалить базу данных с помощью команды DELETE DATABASE <имя_базы_данных> DELETETABLES. Когда эта команда будет выполнена, база данных и все таблицы, включенные в нее, будут удалены.

    Команда DELETE DATABASE без предложения DELETETABLES не удаляет все таблицы, включенные в базу данных, одновременно с базой данных, а только удаляет соединение с базой данных в этих таблицах и оставляет их на диске в виде бесплатных таблиц.
    КОНТРОЛЬНЫЕ ВОПРОСЫ:


    1. Как происходит создание таблиц в СУБД Visual FoxPro?

    2. Как происходит создание таблиц через командное окно в СУБД Visual FoxPro?

    3. Как происходит изменение структуры таблиц в СУБД Visual FoxPro?

    4. Как происходит копирование таблиц в СУБД Visual FoxPro?

    5. Как происходит удаление таблиц в СУБД Visual FoxPro?

    6. Как происходит использование рабочих областей в СУБД Visual FoxPro?

    7. Как происходит манипулирование данными в таблице?

    8. Как происходит удаление записей в СУБД Visual FoxPro?

    9. Как происходит редактирование данных в СУБД Visual FoxPro?

    10. Как происходит фильтрация данных в СУБД Visual FoxPro?

    3. ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ FOXPRO
    Время выполнения – 4 часа.
    Цель работы: получить навык создания программ в среде Visual FoxPro для обработки и вывода данных.
    3.1. Создание, редактирование удаление и выполнение программ
    Программное обеспечение Microsoft Visual FoxPro позволяет сохранять последовательность команд (программу) в командном файле с расширением *.PRG и в дальнейшем вызывать их на выполнение.

    Для создания новой программы необходимо выбрать пункт меню File / New, в открывшемся диалоговом окне New поставить переключатель в положение Programm (см. рис. 2.2) и нажать на кнопку New. В результате будет открыто пустое окно редактора программ (рис. 3.1). Также открыть это окно можно с помощью команды MODIFY COMMAND в командномокне.


    Окно редактора программного кода

    Рис. 3.1. Создание программ в среде Visual FoxPro
    Программа представляет собой последовательность команд, которые пишутся построчно. В программе могут быть использованы комментарии – текст, не интерпретируемый как команда FoxPro. Такой текст может служить для пояснения или экранирования (выключения) команд программы. Начало комментария обозначают символом «*», если он стоит в начале строки или символом «&&» в произвольной позиции. Для переноса команд на следующую строку используется символ «;».

    При сохранении программы пользователю предлагается присвоить ей имя. Отредактировать ранее сохраненную программу можно, вызвав команду MODIFY COMMAND <имя_программы> в командном окне Visual FoxPro. После вызова указанной команды откроется окно редактирования программы, показанное на рис. 3.1.

    Удалить файл программы с диска можно с помощью команды DELETE FILE <имя_программы>.prg. Выполнить сохраненную в файле программу можно, выбрав пункт главного меню Program / Run или из командного окна командой DO <имя_программы>.
    3.2. Примеры программ
    Пример 1.Написать программу для упорядочивания строк таблицы goods по полю, указанному пользователем. Входными данными является имя поля, по которому будет проводиться сортировка, выходными данными – упорядоченная таблица.

    Для создания программы в командном окне необходимо ввести команду: MODIFY COMMAND my_sort_program и в открывшемся окне записать следующий программный код:


    clear && очистка экрана

    close data && закрыть все открытые таблицы

    use goods && открыть таблицу Goods

    browse && просмотр таблицы Goods

    *переменной pole присвоить значение « »

    pole=« »

    *вывод приглашения для ввода имени поля сортировки

    @5,1 say «Введите имя поля для сортировки» get pole

    read && считывание значения переменной

    *упорядочивание таблицы по полю, указанному в переменной pole

    index on &pole to ind

    browse && просмотр содержимого таблицы

    close data && закрыть все открытые таблицы


    После написания программного кода необходимо сохранить файл программы с помощью команды File / Saveasи закрыть окно редактора.

    Для запуска программы требуется выполнить команду DO my_sort_program из командного окна. Если ошибок в программе нет, то после ее запуска пользователю будет предложено ввести имя поля, по которому нужно произвести сортировку данных в таблице goods. Результатом работы программы будет являться упорядоченная таблица, приведенная на рис. 3.2. В данном примере данные таблицы Goods упорядочиваются по полю price.

    При наличии ошибки в программе или в случае некорректного ввода данных на экран будет выведено сообщение об ошибке.


    Рис. 3.2. Результат выполнения программы сортировки


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


    clear close all

    *инициализация переменной для хранения имени таблицы

    table_name=« »

    @3,1 say «Введите имя таблицы» get table_name

    read

    use &table_name && просмотр содержимого таблицы

    *инициализация переменной для хранения имени поля

    field_name=« »

    @5,1 say «Введите имя поля для поиска» get field_name

    read

    *сортировка таблицы по указанному полю

    index on &field_name to res_table

    *инициализация переменной для хранения искомого значения

    shablon=« »

    @6,1 say «Введите шаблон для поиска» get shablon

    read

    *поиск значения атрибута. Функция alltrim() отсекает пробелы слева и

    *справа от значения

    seek alltrim(shablon)

    browse && отображение результата поиска


    При корректном вводе данных программа выводит на экран содержимое указанной таблицы, причем курсор будет установлен на строке, содержащей искомое значение атрибута (рис. 3.3).


    Рис. 3.3. Результат выполнения программы поиска
    Пример 3. Написать программу для подсчета количества товаров выбранной фирмы-поставщика в базе данных. После запуска программы на экран выводится список всех товаров. Далее пользователь выбирает наименование товара, и программа определяет наименование поставщика, его адрес, телефон, а также подсчитывает общее количество товаров этого поставщика.


    Clear

    select 1

    use goods && просмотр содержимого таблицы goods

    @2,2 say «ВЫБЕРИТЕ ТОВАР И НАЖМИТЕ ESC»

    browse fields good_name

    @4,2 say «ВЫ ВЫБРАЛИ »+good_name+« ОТ ФИРМЫ »+firm

    fchoice=firm && запоминаем название фирмы

    select 2

    use firms && просмотр содержимого таблицы firms

    index on firm_name to sort_firm && сортировка таблицы firms

    seek fchoice && поиск фирмы

    @6,2 say «АДРЕС ПОСТАВЩИКА »+address

    @7,2 say «ТЕЛЕФОН »+str(telephone,14)

    select 1

    count for firm=fchoice to num_goods && подсчет количества

    @9,2 say «ВСЕГО ТОВАРОВ ПОСТАВЩИКА »+str(num_goods,2)


    Результат выполнения программы приведен на рис. 3.6.


    Рис. 3.6. Результат выполнения программы calculate
    Пример 4.Написать программу для построения гистограммы, показывающей количество товаров различных фирм в магазине (количество фирм задается пользователем).

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


    *программа «Гистограмма 1»

    clear &&очистить экран

    close data && закрыть все таблицы

    num_col=1 &&значение количества фирм по умолчанию

    @ 1,1 say «Введите количество фирм» get num_col

    && задается количество фирм (столбцов гистограммы)

    read &&считывание введенного значения

    @ 20,3 to 20,100 &&рисование оси абсцисс

    @ 1,3 to 20,3 &&рисование оси ординат

    @ 10,4 say «Количество товаров различных фирм»

    &&вывод названия гистограммы

    i=1 &&инициализация счетчика цикла и

    use goods &&обращение к таблице goods

    do while i<=num_col && цикл от 1 до num_col (кол-во столбцов)

    * включение режима отсеивания повторений

    set unique on

    index on firm to f_ind && сортировка по полю названия фирм

    browse fields firm && вывод на экран поля с названиями фирм

    choice=firm && запомним выбранное значение

    set unique off && выключение режима отсеивания повторений

    index on firm to f_ind && сортировка по полю названия фирм

    * подсчет количества строк в таблице (товаров указанной фирмы)

    count for firm=choice to num_goods

    * рисуем прямоугольник с высотой, зависящей от num_goods

    @ 20-num_goods,i*10-5 to 20,i*10

    * внизу прямоугольника подписываем название соответствующей фирмы

    @20+i,10*(i-1)+5 say choice

    * над прямоугольником подписываем, сколько товаров фирмы есть в БД

    @ 20-num_goods-2,i*10-3 say str(num_goods,2)

    i=i+1 && увеличиваем значение счетчика на единицу

    * и переходим к следующей фирме

    enddo && окончание цикла


    Результат работы программы «Гистограмма 1» приведен на рис. 3.7.


    Рис. 3.7. Результат работы программы для построения гистограммы по одной таблице
    Пример 5.Написать программу для построения гистограммы, показывающей количество товаров в магазине из различных городов (адресов).

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


    * программа «Гистограмма 2»

    clear close all

    num_col=5 && количество столбцов гистограммы

    select 1

    use firms && в раб.области 1 открываем таблицу firms

    set uniq off && выключение режима отсеивания повторений

    index on address to adr_non_uniq &&сортировка по полю address

    set uniq on && включение режима отсеивания повторений

    index on address to adr_uniq && сортировка по полю address

    * подсчет количества непустых значений адреса (столбиков гистограммы)

    count for address!=« » to num_col

    go top && переход на первую строку таблицы firms

    select 2 && рабочая область 2

    use goods && в раб.области 2 открываем таблицу goods

    @10,2 say «Количество товаров из городов»

    @2,1 to 20,1 && вертикальная ось

    @20,1 to 20,70 && горизонтальная ось

    i=1 &&инициализация счетчика цикла

    do while i<=num_col && цикл «А» по столбикам

    select 1

    set index to adr_uniq

    browse field address && показать все уникальные адреса для выбора

    choice=address && запоминаем адрес

    x=0

    set index to adr_non_uniq && сортировка

    set filter to address=choice &&применить фильтр по значению

    go top && начиная с первой записи

    do while !EOF() && цикл «Б» по фирмам с одинаковыми адресами

    y=0 && товаров у конкретной фирмы

    firma=firm_name && запоминаем название фирмы

    select 2

    count for firm=firma to y

    && считаем количество товаров этой фирмы

    x=x+y && подсчет количества товаров

    select 1

    if !EOF() && если еще не дошли до конца файла

    skip 1 && переходим на следующую запись

    endif

    enddo && конец цикла «Б» (по фирмам с одинаковыми адресами)

    @20-x,10*(i-1)+5 to 20,i*10 && рисуем столбик

    20+i,10*(i-1)+5 say choice && подписываем адрес (город)

    @20-x-1,10*(i-1)+6 say str(x,5,0) && пишем число

    i=i+1 && увеличиваем переменную цикла

    set filter to

    enddo && конец цикла «А» (по различным адресам)


    Результат работы программы «Гистограмма 1» приведен на рис. 3.8.


    Рис. 3.8. Результат работы программы построения гистограммы по двум таблицам

    1   2   3   4   5   6   7


    написать администратору сайта