Реферат Проектирование реляционной базы данных инфологическая модель работы строительной компании
Работа добавлена на сайт bukvasha.net: 2015-10-28Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
от 25%
договор
Министерство образованию и науки РФ
Хакасский технический институт — Филиал ФГАОУ ВПО
“Сибирский федеральный университет”
кафедра «Прикладная информатика
и экономика»
Расчетно-пояснительная записка
к курсовой работе по дисциплине:
«Базы данных»
Тема: «Проектирование реляционной базы данных
«инфологическая модель работы строительной компании»
Вариант 13
Выполнил: студент гр. 58-1
Ромашкин И.С
Проверил: Кокова В.И.
Абакан 2010
Введение
Использование баз данных (БД) в настоящее время является неотъемлемой частью функционирования большинства предприятий и деловой деятельности математика и системного программиста. В связи с этим все большую актуальность приобретает освоение студентами основных принципов построения и эффективного применения соответствующих технологий и программных продуктов - систем управления базами данных (СУБД).
Целью изучения дисциплины "Базы данных" является ознакомление студентов с теоретическими основами построения БД, в первую очередь реляционных, возможностями современных СУБД, современными тенденциями развития СУБД, а также овладение технологиями и практическими навыками их применения в своей будущей профессиональной деятельности.
Целью данной курсовой работы является закрепление полученных знаний в построение реляционной базы данных с использованием нормализации по средствам Visual FoxPro. В курсовой работе будет представлена работа с формами, запросами и отчетами в разработке инфологической модели работы строительной компании.
1.
Microsoft
Visual
FoxPro
. Основные характеристики
В настоящее время имеется более десяти популярных СУБД для персональных компьютеров. Традиционно одной из них является СУБД Visual FoxPro, новая версия которой Visual FoxPro 9.0 содержит дополнения и улучшения, расширяющие возможности системы.
Visual FoxPro состоит из отдельных компонентов, которые используются для хранения информации, ее отображения и редактирования.
В Visual FoxPro вся информация хранится в базе данных, которая состоит из таблиц, отношений между таблицами, индексов, триггеров и хранимых процедур. Каждая таблица имеет уникальное имя и хранится в отдельном файле, наименование которого совпадает с именем таблицы. Созданный файл имеет расширение DBF.[5]
Каждая создаваемая таблица может иметь связанные с ней индексы, используемые для упорядочения данных и быстрого поиска необходимых записей, причем одна таблица может иметь несколько индексов.
Для хранения значений полей типа Memo и General применяются отдельные файлы. Memo-поля таблиц содержат текстовую информацию, а поля типа General используются, как правило, для хранения двоичной информации и данных других приложений, работающих в среде Windows.
В Visual FoxPro реализованы триггеры, которые позволяют централизованно обрабатывать события, возникающие при любых изменениях в базе данных. Вы также можете создавать хранимые процедуры, которые являются частью базы данных и могут использоваться при описании таблиц, для проверки введенных данных, определения значения по умолчанию и т. п.
Чрезвычайно удобным и полезным средством доступа к базе данных являются представления данных. Представления данных позволяют объединять данные таблиц и отображать их в более удобном виде. Вы можете выбрать только интересующие вас поля таблиц, объединить несколько полей в одно поле, вычислить итоговые значения и задать новые имена полей таблицы. Как правило, количество представлений в базе данных намного превосходит количество таблиц. По мере эксплуатации базы данных их количество непрерывно растет. Во многих информационных системах доступ к данным, включая просмотр, добавление и редактирование, осуществляется только с помощью представлений данных. Этот подход позволяет осуществить гибкое управление доступом к информации. При использовании представлений для выборки данных в формах, отчетах, при создании запросов и в программах применяются те же правила, что и для таблиц. Редактирование данных, включенных в представление, возможно только при определенных условиях. Например, в том случае, если оно создано на основе только одной таблицы. Для отображения и редактирования данных используются формы, отчеты, запросы и программы. При создании форм, отчетов и запросов применяются конструкторы. Поэтому эти компоненты часто называют конструкторскими объектами. Формы и отчеты являются составными объектами, так как они состоят из более мелких объектов (таких как поля, кнопки, диаграммы, рамки, OLE-компоненты и т. п.), которые называются объектами интерфейса.[3]
Формы используются для просмотра или ввода данных в таблицы. Данные можно вводить непосредственно в таблицы, но использование формы является более быстрым и более эффективным способом ввода. Форма содержит некоторые или все поля таблиц, в которые вы вводите информацию. Для создания форм вы можете использовать мастер создания форм или конструктор форм. Мастер форм содержит целый ряд шаблонов, которые определяют соотношение между помещаемыми в форму таблицами, вид отображения данных и порядок размещения полей. Для создания сложных форм применяется конструктор форм.[3]
Отчеты используются для печати содержащейся в базе данных информации. Примерами отчетов являются прайс-лист товаров, список покупателей, оборотная складская ведомость. Как правило, отчеты создаются в том случае, если информацию необходимо передавать кому-либо в печатном виде. Для создания отчетов в Visual FoxPro, как и для форм, используются мастер и конструктор отчетов. С помощью мастера отчетов вы можете быстро создать собственный отчет на основе имеющихся шаблонов. Применение конструктора отчетов позволяет создавать отчеты произвольной сложности, включая многоуровневую группировку данных и размещение вычисляемых полей.
Запросы являются средством выборки данных из одной или нескольких таблиц. В Visual FoxPro для создания запроса вы можете использовать как конструктор запросов, так и специализированный язык Structured Query Language (SQL). Результаты выполнения запроса могут отображаться в форме, выводиться в виде отчетов и диаграмм или сохраняться в указанной вами таблице.[5]
Программы, написанные на языке Visual FoxPro, являются объектно-ориентированными. С помощью них вы обрабатываете события в форме, создаете объекты, осуществляете различные вычисления, управляете базой данных. Для удобства работы вы можете объединить программы в библиотеки.
Для создания форм в Visual FoxPro можно использовать не только базовые классы, но и создавать собственные. Например, вы можете определить класс форм, в котором задан определенный цвет фона и стандартный набор кнопок для управления данными. Чтобы стандартизировать разработку, полезно иметь один или несколько пользовательских классов для каждого базового класса. Классы, созданные в Visual FoxPro, хранятся в библиотеках классов.[2]
Для объединения компонентов создаваемого приложения используется проект, в который включаются все перечисленные компоненты. Использование проекта упрощает разработку приложения и его сопровождение. Каждый компонент хранится в отдельном файле, причем имена файлов, содержащих основные компоненты, вы задаете самостоятельно, а наименования файлов, содержащих объекты, связанные с таблицей, совпадают с именем таблицы. [2]
2. Основная часть
2.1
Нормализация
На начальном этапе разработки базы данных определяется структура и вид таблиц, а так же отношения между представленными в них записями. Далее следует нормализация, которая необходима для исключения возможной противоречивости хранимых данных, т.е исключить повторяемые записи в нескольких таблицах.
Нормализация таблиц базы данных - первый шаг на пути проектирования структуры реляционной базы данных. Строго говоря, конечно, не самый первый - сначала надо решить, что же мы вообще будем хранить в базе, то есть определиться со структурой полей, их типами и размерностью, смыслом хранимой в них информации. Окончательная цель нормализации сводится к получению такого проекта базы данных, в котором каждый факт появляется лишь в одном месте, т.е. исключена избыточность информации.
Ниже представлены этапы приведения БД, к третьей нормальной форме.
Первая нормальная форма:
- запрещает повторяющиеся столбцы (содержащие одинаковую по смыслу информацию)
- запрещает множественные столбцы (содержащие значения типа списка и т.п.)
- требует определить первичный ключ для таблицы, то есть тот столбец или комбинацию столбцов, которые однозначно определяют каждую строку
Тут мы видим следующую таблицу (табл. 2.1.1).
Бригада | Материалы | Рабочие | Тип Здания | Уровень сложности | Адрес здания |
Каменщики | Керамзит | Фридман | Жилые_помещения | Низкий | Ул_Космонавтов_22 |
Электрики | Цемент | Ладонин | Жилые_помещения | Низкий | Ул_Космонавтов_22 |
Крановщики | Керамзит | Шестакович | Жилые_помещения | Низкий | Ул_Космонавтов_22 |
Электрики | Стекло | Чебышев | Производственные_помещения | Высокий | Ул_Гоголя_3 |
Таблица 2.1.1
Вторая нормальная форма требует, чтобы неключевые столбцы таблиц зависили от первичного ключа в целом, но не от его части. Маленькая ремарочка: если таблица находится в первой нормальной форме и первичный ключ у нее состоит из одного столбца, то она автоматически находится и во второй нормальной форме.
Выявим все группы функциональных зависимостей. Затем создадим отдельные таблицы данных для каждой группы.
Таблица 2.1.2
Бригада | Код бригады |
Каменщики | 1 |
Электрики | 2 |
Крановщики | 3 |
Таблица 2.1.3
Материалы | Код Материалы |
Керамзит | 1 |
Цемент | 2 |
Стекло | 3 |
Рабочие | Код рабочие | |
Фридман | 1 | |
Ладонин | 2 | |
Чебышев | 3 | |
Шестакович | 4 | |
Таблица 2.1.4
Таблица 2.1.5
Уровень | Код уровня |
Низкий | 1 |
высокий | 2 |
Таблица 2.1.6
Тип здания | Код типа |
Жилые_помещения | 1 |
Производственные_помещения | 2 |
Общественные помещения | 3 |
Чтобы таблица находилась в третьей нормальной форме, необходимо, чтобы неключевые столбцы в ней не зависели от других неключевых столбцов, а зависели только от первичного ключа. Самая распространенная ситуация в данном контексте - это расчетные столбцы, значения которых можно получить путем каких-либо манипуляций с другими столбцами таблицы. Для приведения таблицы в третью нормальную форму такие столбцы из таблиц надо удалить (табл. 2.1.1) создать новые (табл. 2.1.7).
Таблица 2.1.7
Код бригады | Код Материалы | Код рабочие | Код типа здания | Код уровня сложности | Адрес здания |
1 | 1 | 1 | 1 | 1 | Ул_Космонавтов_22 |
2 | 2 | 2 | 1 | 1 | Ул_Космонавтов_22 |
3 | 1 | 4 | 1 | 1 | Ул_Космонавтов_22 |
2 | 3 | 3 | 3 | 2 | Ул_Гоголя_3 |
Спроектирована реляционная база данных, состоящая из шести таблиц: табл. 2.1.2, 2.1.3, 2.1.4, 2.1.5, 2.1.6, 2.1.7.
После определения структуры таблиц, связей между ними и совпадающих полей, которые будут использованы для связывания отдельных таблиц, можно создавать реляционную базу данных в СУБД.
На рисунке 2.1.1 показана схема данных спроецированной БД.
Рисунок - 2.1.1. «Структура таблиц базы данных инфологической модели работы строительной компании».
2.2 Создание проекта и базы данных
Приступая к разработке нового приложения, прежде всего создаем проект приложения. В дальнейшем мы будем добавлять в него созданные элементы приложения. Для создания нового проекта можно использовать мастер Application Wizard (Мастер приложения) или команду New (Новый) из меню File (Файл).
При выполнении команды New (Новый) на экране открывается соответствующее диалоговое окно с перечислением всех типов элементов приложения, которые возможны в Visual FoxPro (рисунок 2.2.1). По умолчанию установлена опция Project (Проект).
Рисунок - 2.2.1 «Окно создания проекта»
Для создания базы данных необходимо в окне проекта (рисунок - 2.2.2) выделить пункт «Database», нажать «New/New Database» и в открывшемся диалоговом окне сохранить файл базы.
Рисунок - 2.2.2 «Окно проекта»
Для создания таблиц необходимо выделить появившуюся вкладку «Tables» в окне проекта и нажать кнопку «New». На рисунке - 2.2.3 представлены поля таблицы «Бригада», в таблице 2.2.1 представлены типы полей, использованных при создании всех таблиц.
Рисунок - 2.2.3 Поля таблицы «Бригада»
Таблица 2.2.1
Типы полей Visual FoxPro, использованных при создании таблиц
Тип | Наименование | Отображаемые данные |
Текстовый | Character | Текстовые поля могут содержать буквы, цифры и специальные символы. Максимальная ширина поля составляет 254 символа. |
Числовой | Integer | Integer отображает целые числа от -2147483647 до +2147483647. |
Поле «Kod_autor» (код исполнителя) имеет целочисленный тип, длиной в четыре символа. Так как все имена полей названы английскими символами во избежание возможных ошибок при работе с базой, в поле «Caption» пишется пояснение на русском языке. Поле «код_бриг» является ключевым, поэтому в строке «Index» это помечается, затем на вкладке «Indexes» тип ключевого поля устанавливается, как «Primary» (первичный ключ, не допускающий пустых значений) (рисунок - 2.2.4).
Поле «наим_бриг» (наименование бригады) имеет текстовый тип, и, так же, как и предыдущее поле имеет пояснение на русском языке.
Рисунок - 2.2.4 Ключевые поля таблицы «Бригада»
Аналогично создаются остальные таблицы, указываются имена, типы полей, типы ключевых полей и даются пояснения на русском языке. Отличие имеется только для таблицы «Здания». Так как таблица имеет более одного ключевого поля невозможно использовать тип «Primary», поэтому тип всех ключевых полей устанавливается, как «Regular».
Поля таблицы «Материалы» представлены на рисунке - 2.2.5, поля таблицы «Рабочие» представлены на рисунке - 2.2.6, поля таблицы «Здания» представлены на рисунке - 2.2.7, поля таблицы «Тип здания» представлены на рисунке - 2.2.8, поля таблицы «Уровень сложности» представлены на рисунке - 2.2.9, ключевые поля таблицы «Материалы» представлены на рисунке - 2.2.10, ключевые поля таблицы «Уровень сложности» представлены на рисунке - 2.2.11, ключевые поля таблицы «Здания» представлены на рисунке - 2.2.12 Ключевые поля таблицы «Тип здания» представлены на рисунке - 2.2.13 Ключевые поля таблицы «Рабочие» представлены на рисунке - 2.2.14
.
Рисунок - 2.2.5 Поля таблицы «Материалы»
Рисунок - 2.2.6 Поля таблицы «Рабочие»
Рисунок - 2.2.7 Поля таблицы «Здания»
Рисунок - 2.2.8 Поля таблицы «Тип здания»
Рисунок - 2.2.9 Поля таблицы «Уровень сложности»
Рисунок - 2.2.10 Ключевые поля таблицы «Материалы»
Рисунок - 2.2.11Ключевые поля таблицы «Уровень сложности»
Рисунок - 2.2.12 Ключевые поля таблицы «Здания»
Рисунок - 2.2.13 Ключевые поля таблицы «Тип здания»
Рисунок - 2.2.14 Ключевые поля таблицы «Рабочие»
Для установления связей между таблицами необходимо в окне проекта выделить базу и нажать «View/Database Designer», в открывшемся окне перетаскиванием ключевых полей устанавливаются связи между таблицами (Рисунок - 2.2.15).
Рисунок - 2.2.15 «Связи между таблицами»
Для сохранения целостности данных устанавливаются разрешения на определенные события. Чтобы открыть окно редактирования разрешений необходимо в главном меню выбрать «Database/Edit Referential Integrity».
Для того, чтобы при изменении ключевых данных в родительской таблице так же изменялись данные и в дочерней таблице в поле «Update» устанавливается значение «Cascade»[3] (Рисунок - 2.2.16). Для запрета удаления данных в дочерней таблице при удалении данных в родительской в поле «Update» устанавливается значение «Restrict»[3] (Рисунок - 2.2.16). Для запрета вставления новой записи или обновления текущей в родительскую таблицу, при отсутствии соответствующего ключевого поля родительской таблицы в поле «Insert» устанавливается значение «Restrict»[3] (Рисунок - 2.2.16).
Рисунок - 2.2.1.6 «Целостность данных»
2.3 Создание форм редактирования таблиц
Все формы редактирования таблиц создаются с помощью мастера форм. Для запуска мастера форм необходимо в окне проекта выделить вкладку «Forms» и нажать «Form Wizard».
На первом шаге создания формы выбираются поля, которые будут отображены в будущей форме (Рисунок - 2.3.1).
Рисунок - 2.3.1 Первый шаг «Мастера форм»
Следующим шагом выбирается внешний вид формы (Рисунок - 2.3.2).
Рисунок - 2.3.2 Второй шаг «Мастера форм»
Третьим шагом выбирается по какому полю будет производиться сортировка данных в форме (Рисунок - 2.3.3).
Рисунок - 2.3.3 Третий шаг «Мастера форм»
В заключительном четвертом шаге выбирается что произойдет по выходу из мастера. Для сохранения и запуска формы выбирается «Save and run form» (Рисунок - 2.3.4).
Рисунок - 2.3.4 Четвертый шаг «Мастера форм»
Внешний вид формы для редактирования таблицы «Бригада» представлен на Рисунке - 2.3.5, для таблицы «Здания» на Рисунке - 2.3.6, для таблицы «Материалы» на Рисунке - 2.3.7, для таблицы «Рабочие» на Рисунке - 2.3.8, для таблицы «Тип здания» на Рисунке - 2.3.9 и на Рисунке - 2.3.10 «Уровень сложности».
Рисунок - 2.3.5 Форма редактирования таблицы «Бригада»
Рисунок - 2.3.6 Форма редактирования таблицы «Здания»
Рисунок - 2.3.7 Форма редактирования таблицы «Материалы»
Рисунок - 2.3.8 Форма редактирования таблицы «Рабочие»
Рисунок - 2.3.9 Форма редактирования таблицы «Тип здания»
Рисунок - 2.3.10 Форма редактирования таблицы «Уровень сложности»
2.4 Создание запросов
Все запросы создаются в режиме конструктора.
Для создания запроса, позволяющего узнать, сколько бригад работает на строительстве зданий повышенной сложности, необходимо выбрать таблицы, поля которых будут отображаться в запросе (также необходимо учитывать связи между таблицами), затем на вкладке «Fields» выбрать поля, отображаемые в запросе (Рисунке - 2.4.1).
Рисунок - 2.4.1 «Конструктор запроса»
Устанавливается условие для поля, отображающего уровень сложности здания на вкладке «Filter» (Рисунок - 2.4.2).
Рисунок - 2.4.2 «Конструктор запроса»
Выполненный запрос представлен на Рисунке - 2.4.3.
Рисунок - 2.4.3 «Выполненный запрос»
Создание запроса, позволяющего просмотреть информацию о материалах для строительства здания «В», а также кто, когда и какой период времени должен работать на строительстве здания «А» аналогично предыдущему. Выполненный запрос представлен на Рисунках - 2.4.4 - 2.4.5
Рисунок - 2.4.4 «Выполненный запрос»
Рисунок - 2.4.5 «Выполненный запрос»
Для создания запроса, позволяющего узнать кто из рабочих в какую бригаду, на строительство какого здании назначен и какой у него оклад, необходимо сначала выбрать таблицы, поля которых будут отображаться в запросе, затем на вкладке «Fields» выбрать поля, отображаемые в запросе. Для удобства отображения применяется сортировка данных по имени Рабочего. Для этого на вкладке «Order by» выбирается поле по которому будет осуществляться сортировка (Рисунок - 2.4.6).
Рисунок - 2.4.6 «Конструктор запроса»
Выполненный запрос представлен на Рисунке - 2.4.7
Рисунок - 2.4.7 «Выполненный запрос»
2.5 Создание отчетов
Для создания отчета, отображающего количество композиций на страну необходимо запустить мастер отчетов.
На первом шаге выбираются родительские поля отчета (Рисунок - 2.5.1)
Рисунок - 2.5.1 Первый шаг «мастера отчетов»
Следующим шагом выбираются дочерние поля отчета (Рисунок - 2.5.2).
Рисунок - 2.5.2 Второй шаг «мастера отчетов»
Третьим шагом устанавливается связь между таблицами (Рисунок - 2.5.3)
Рисунок - 2.5.3 Третий шаг «мастера отчетов»
Четвертым шагом выбирается по какому полю будет осуществляться сортировка данных в отчете (Рисунок - 2.5.4)
Рисунок - 2.5.4 Четвертый шаг «мастера отчетов»
Пятым шагом выбирается тип отчета и итоговые значения отчета (Рисунок - 2.5.5).
Рисунок - 2.5.5 Пятый шаг «мастера отчетов»
На шестом шаге выбирается что произойдет по выходу из мастера. Для сохранения отчета выбирается «Save report for later use» (Рисунок - 2.5.6).
Рисунок - 2.5.6 Шестой шаг «мастера отчетов»
Создание всех отчетов аналогично.
Готовый отчет, позволяющий просмотреть итоговое количество композиций на страну представлен на Рисунке - 2.5.7. Готовый отчет, позволяющий просмотреть количество дисков по типу представлен на Рисунке - 2.5.8. Готовый отчет, позволяющий просмотреть общую информацию о дисках представлен на Рисунке - 2.5.9. Готовый отчет, позволяющий просмотреть информацию о композициях на музыкальные стили представлен на Рисунке - 2.5.10.
Рисунок - 2.5.7 «Готовый отчет»
Рисунок - 2.5.8 «Готовый отчет»
Рисунок - 2.5.9 «Готовый отчет»
2.6 Создание главного меню
Для демонстрации работы СУБД хорошо подходит главная кнопочная форма, но для повседневной работы наиболее эффективным является главное меню.
Для создания меню необходимо в окне проекта выделить вкладку «Menus» и нажать «New/Menu».
Сначала создаются все подменю, для этого в строке «Result» устанавливается значение «Submenu» (Рисунок - 2.6.1).
Рисунок - 2.6.1 «Конструктор меню»
Для создания пунктов меню, выполняющих определенные действия (процедур), необходимо выделить пункт подменю и нажать «Create» (Рисунки -. 2.6.2, 2.6.3, 2.6.4).
Для создания процедуры необходимо установить значение «Procedure» в строке «Result». Для создания кода процедуры, необходимо ее выделить и нажать «Create».
Рисунок - 2.6.2 «Конструктор меню»
Рисунок - 2.6.3 «Конструктор меню»
Рисунок - 2.6.4 «Конструктор меню»
Готовое меню представлено на Рисунках - 2.6.5, 2.6.6, 2.6.7
Рисунок - 2.6.5 «Главное меню»
Рисунок - 2.6.6 «Главное меню»
Рисунок - 2.6.7 «Главное меню»
2.6 Создание главной формы
Создание главной формы осуществляется в режиме конструктора. Для удобства навигации и для низкой загруженности формы кнопками на форме присутствует компонент «Page Frame». На компоненте присутствует три страницы, на каждой из которых находятся кнопки, выполняющие определенную операцию (Рисунок - 2.6.1)
Рисунок - 2.6.1 «Главная форма»
На главной странице находятся кнопки, запускающие формы редактирования таблиц.
На странице «Запросы» находятся кнопки, содержащие команды выполнения запросов.
На странице «Отчеты» находятся кнопки, содержащие команды просмотра отчетов.
Заключение
В результате выполнения курсового проекта была создана система управления базами данных, которая показала легкость и эффективность работы в среде Visual FoxPro.
Реляционные СУБД, такие как FoxPro действительно являются мощным средством управления большим объемом данных. СУБД этого типа позволяют производить быструю сортировку большого массива данных, осуществлять быстрый переход по записям в произвольном порядке, производить быструю выборку большого количества данных из всего массива данных по заданным критериям. В таких реляционных СУБД каждый файл данных рассматривается как двумерная таблица, столбцы которой соответствуют полям записей, а строки соответствуют отдельным записям файла и обращение к данным идет через указание номера записи имени поля. При этом работа с отдельным полем таблицы данных напоминает работу с переменными – обращение к данным максимально упрощено, и пользователю не нужно знать всю иерархическую структуру данных. СУБД имеет малый размер и откомпилированная база имеет возможность запуска на любом компьютере, имеющим некоторые библиотеки Visual FoxPro.
Список использованной литературы
1. Мусина, Т.В. Visual FoxPro 7.0: учебный курс. / Т.В. Мусина, В.А. Пушенко. – К.: ВЕК+; Bookstar, 2001. – 400 с.
2. Пэддок, Р. Visual FoxPro 6.0. Разработка корпоративных приложений. / Р. Пэддок. [и др.]. – М.: ДМК, 2000. – 592 с.
3. Муравьев, А.И. Системы управления базами данных: учебное пособие. / А.И. Муравьев. – Томск: Томский государственный университет систем управления и радиоэлектроники, 1999. – 93 с.
4. Карпова, Т. Базы данных: модели, разработка, реализация. / Т. Карпова. - СПб.: Питер, 2001. – 304 с.
5. Ульман, Д.Д. Введение в системы баз данных. / Д.Д. Ульман. – М.: Лори, 2000. – 374 с.
6. Лемашко Е.В., Романчуков В.Г. Программирование в системе команд СУБД семейства Fox: учебное пособие / ГАУ, М., 1998.