Создание базы данных
Разработка любой информационной системы начинается с создания базы данных. Рассмотрим процесс создания базы данных, модель которой описана в предыдущей лекции, в системе VFP.
Для создания новой базы данных можно воспользоваться кнопкой New стандартной панели инструментов (рис. 4.3) или пунктом меню "File - New:".
Рис. 4.3. Стандартная панель инструментов системы Visual FoxPro
Рис. 4.4. Выбор типа файла в диалоге New
Особенность этой команды - возможность создания большого количества различных типов файлов, соответствующих различным типам объектов системы, которые мы видим в окне New, появляющемся после этой команды (рис. 4.4).
В окне New в данном случае нужно выбрать тип файла Database.
Далее можно использовать кнопки New file или Wizard. Если выбрать кнопку Wizard - будут предложены готовые американские образцы баз данных - Address Book, Book Collection, Contact Management, Event Management, Music Collection, Picture Library, Students and Classes, Video Collection и прочие, всего более двух десятков.
Для примера на рис. 4.5 приведена схема базы данных, полученная с помощью Wizard для образца Students and Classes.
Как видно из примера, база данных слишком специфична, не совсем соответствует структуре нашего высшего учебного заведения, используется слишком много не совсем привычных для нас английских терминов, очень много индексов (каждый индекс дублирует информацию полей таблиц, при чрезмерно большом их количестве размер индексного файла может получиться больше, чем размер таблицы, что нерационально). Проще создать новую базу данных, соответствующую разработанной нами ранее модели.
увеличить изображение
Рис. 4.5. Образец базы данных, полученный с использованием Wizard
Выберем кнопку New file для создания собственной базы данных. После этого нужно задать папку на диске, где мы будем сохранять все компоненты, относящиеся к разрабатываемому проекту, и задать название базы данных (расширение файла указывать не надо - система допишет его сама).
Пусть папка и имя базы данных будут Students (рис. 4.6).
Рис. 4.6. Диалог для сохранения базы данных на диске
После нажатия на кнопку Save (Сохранить) будут созданы файлы базы данных (students.dbc, students.dct и students.dcx) и откроется пустое окно модификации структуры базы данных (Database Designer), показанное на рис. 4.7. Следует отметить, что очень многие команды, задаваемые нами с использованием меню системы, отображаются в виде текстовых команд в окне Command (создается протокол команд, который сохраняется), и это может быть использовано для повторного выполнения использованных команд или для включения их в текст программы, а также может быть полезно начинающим пользователям для изучения языка системы VFP. После команды Save в окне Command появятся 2 строки команд: CREATE DATABASE и MODIFY DATABASE, как показано на рис. 4.8.
Поместив курсор мыши в окно Database Designer, щелкнем в нем правой кнопкой мыши и в контекстном меню выберем команду New table:.
Далее выбираем New table, а не Wizard, который нам опять предложил бы американские образцы таблиц за основу, выбираем папку и задаем имя главной таблицы базы - Spisok, после чего открывается окно описания структуры таблицы базы данных (Table Designer) (рис. 4.9).
Рис. 4.7. Окно Конструктора базы данных
Рис. 4.8. Окно Command системы VFP
увеличить изображение
Рис. 4.9. Окно Конструктора таблиц
В окне Table Designer описываем все поля таблицы Spisok.dbf- имя поля (Name), тип (Type), ширину (Width), количество десятичных знаков для действительных чисел (Decimal), наличие простого индекса (Index) и задаем заголовок поля таблицы (Caption). Имена полей лучше писать латинскими буквами.
Для индекса NZ на странице Indexes окна Table Designer следует задать тип индекса - Primary (первичный), т.к. номер зачетки - уникальный для каждого студента, однозначно его идентифицирует и поэтому может служить первичным ключом (в таблице обозначения A (Ascending) - индекс в порядке возрастания, P (Primary).
Структура главной таблицы базы данных приведена в табл. 4.3.
Для таблицы, входящей в состав базы данных, в окне Table Designer присутствуют разделы Display, Map field type to classes, Field validation, Field comment, эта информация сохраняется в файле базы данных и поэтому отсутствует при описании структуры свободных таблиц (файлы *.dbf, не входящие в состав базы данных). Таблицу можно удалить из базы, но оставить в виде свободной таблицы на диске; в таком случае информация этих разделов теряется.
Задание заголовков (Caption) для полей при описании структуры таблицы облегчает разработку экранных форм и отчетов - эти названия появятся как подписи для полей (если Caption отсутствует, подписью будет имя поля).
Nz | C | 7 | A,P | Номер зачетки | |
Fio | C | 45 | Фамилия, имя, отчество | ||
data_p | D | 8 | Дата поступления | ||
n_fclt | N | 2 | A | Факультет | |
n_spect | C | 7 | A | Специальность | |
kurs | N | 1 | Курс | ||
n_grup | С | 10 | Группа | ||
n_pasp | С | 10 | Номер паспорта |
табл. 4.4
n_fclt | N | 2 | A,P | Номер факультета | |
name_f | C | 120 | Название факультета |
Точно так же создаем в базе данных следующие таблицы и индексы для табл. 4.5, табл. 4.6, табл. 4.7.
n_spect | C | 7 | A,P | Код специальности | |
name_s | C | 120 | Название специальности |
nz | C | 7 | A | Номер зачетки | |
semestr | N | 1 | Семестр | ||
n_predm | N | 2 | A | Предмет | |
ball | С | 1 | Оценка | ||
data_b | D | 8 | Дата | ||
prepod | C | 45 | Преподаватель |
n_predm | N | 2 | A,P | Номер предмета | |
name_p | С | 120 | Название предмета |
Далее в окне Database Designer задаем постоянные связи между таблицами в базе, перетаскивая мышкой название первичного индекса к обычному (Regular) индексу (внешний ключ). В результате получаем схему базы данных (рис. 4.10).
Рис. 4.10. Окно базы данных STUDENTS
Для связей можно задать условия соблюдения ссылочной целостности: каскадное обновление в операциях удаления и вставки и контроль с запретом ввода записей с неверными ключевыми значениями в операциях вставки (см. рис. 4.11). Для заданных условий будет сгенерирован программный код, занесенный в базу данных как хранимые процедуры - триггеры. Эти программы при желании можно просмотреть, изучить механизм их действия или модифицировать, если такая необходимость возникнет. Текст триггеров может представлять значительный интерес для программистов, т.к. он написан в наиболее универсальном виде для работы с различными режимами и базами с использованием стиля оформления, принятого в фирме-разработчике системы VFP.
Рис. 4.11. Задание условий соблюдения ссылочной целостности