методичка. методичка АИС2. Архитектура информационных систем
![]()
|
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 Если вы исключите таблицу из базы данных через меню, вы можете использовать кнопку исключения таблицы на панели инструментов управления базами данных или щелкнуть правой кнопкой мыши по таблице внутри конструктора баз данных и выбрать пункт меню «Удалить». 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 не удаляет все таблицы, включенные в базу данных, одновременно с базой данных, а только удаляет соединение с базой данных в этих таблицах и оставляет их на диске в виде бесплатных таблиц. КОНТРОЛЬНЫЕ ВОПРОСЫ: Как происходит создание таблиц в СУБД Visual FoxPro? Как происходит создание таблиц через командное окно в СУБД Visual FoxPro? Как происходит изменение структуры таблиц в СУБД Visual FoxPro? Как происходит копирование таблиц в СУБД Visual FoxPro? Как происходит удаление таблиц в СУБД Visual FoxPro? Как происходит использование рабочих областей в СУБД 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 и в открывшемся окне записать следующий программный код:
После написания программного кода необходимо сохранить файл программы с помощью команды File / Saveasи закрыть окно редактора. Для запуска программы требуется выполнить команду DO my_sort_program из командного окна. Если ошибок в программе нет, то после ее запуска пользователю будет предложено ввести имя поля, по которому нужно произвести сортировку данных в таблице goods. Результатом работы программы будет являться упорядоченная таблица, приведенная на рис. 3.2. В данном примере данные таблицы Goods упорядочиваются по полю price. При наличии ошибки в программе или в случае некорректного ввода данных на экран будет выведено сообщение об ошибке. ![]() Рис. 3.2. Результат выполнения программы сортировки Пример 2. Написать программу для поиска данных. Входными данными являются имя таблицы, имя поля этой таблицы и значение атрибута для поиска. Результатом поиска является выделенная строка, содержащая указанное значение атрибута. Текст программы приведен ниже.
При корректном вводе данных программа выводит на экран содержимое указанной таблицы, причем курсор будет установлен на строке, содержащей искомое значение атрибута (рис. 3.3). ![]() Рис. 3.3. Результат выполнения программы поиска Пример 3. Написать программу для подсчета количества товаров выбранной фирмы-поставщика в базе данных. После запуска программы на экран выводится список всех товаров. Далее пользователь выбирает наименование товара, и программа определяет наименование поставщика, его адрес, телефон, а также подсчитывает общее количество товаров этого поставщика.
Результат выполнения программы приведен на рис. 3.6. ![]() Рис. 3.6. Результат выполнения программы calculate Пример 4.Написать программу для построения гистограммы, показывающей количество товаров различных фирм в магазине (количество фирм задается пользователем). Для построения гистограммы требуются данные одной таблицы goods, так как она содержит и названия фирм, и названия товаров. Гистограмма строится не по всем различным фирмам, а по заданному пользователем количеству. Текст программы показан ниже:
Результат работы программы «Гистограмма 1» приведен на рис. 3.7. ![]() Рис. 3.7. Результат работы программы для построения гистограммы по одной таблице Пример 5.Написать программу для построения гистограммы, показывающей количество товаров в магазине из различных городов (адресов). Для построения гистограммы необходимы данные из двух таблиц: из таблицы firms берутся названия городов фирм, в таблице goods подсчитывается количество наименований товаров. Текст программы показан ниже:
Результат работы программы «Гистограмма 1» приведен на рис. 3.8. ![]() Рис. 3.8. Результат работы программы построения гистограммы по двум таблицам |