Работа с базой данных

Что такое база данных? В начале книги было дано определение базы данных, так сказать, с “обывательской” точки зрения. А вообще под базой данных в Visual FoxPro подразумевается совокупность таблиц, которые могут каким-то образом быть связанными между собой. А могут быть и не связанными. А можно вообще обойтись без использования баз данных, успешно применяя для решения поставленных задач свободные таблицы.

Так для чего тогда усложнять себе жизнь? Все дело в том, что использование баз данных не усложняет, а, наоборот, значительно упрощает работу с данными. Это происходит потому, что именно в базе данных реализованы мощные и полезные функции, используемые при работе с таблицами.

Создать новую базу данных можно так же, как и любой другой файл Visual FoxPro. Мы уже подробно рассматривали процесс создания новых файлов, повторяться не будем. Действия полностью аналогичны, за исключением того, что в открывающихся диалоговых окнах необходимо указать опцию Database (База данных). При использовании командного окна применяется следующая команда:

1
CREATE DATABASE <имя_файла>

При работе с использованием окна диспетчера проекта (Project Manager) Для создания новой (кнопка New) или модификации существующей базы Данных (кнопка Modify) применяется конструктор базы данных — Database Designer.

Конструктор базы данных

В окне конструктора базы данных расположена панель управления Database Designer. Назначение кнопок данной панели описано ниже на рисунке.

Окно конструктора базы данных с панелью инструментов Database Designer

Кнопки панели Database Designer

Сейчас мы начнем создавать новое приложение, в котором рассмотрим аспекты работы с базой данных. Назовем его отель Старый Лис. Вряд ли это приложение (по крайней мере, именно в таком виде) найдет применение в практической жизни, но это и не особо важно. Наша цель — познакомиться с принципами работы с базой данных, с остальными элементами управления экранных форм и т. д.

Но, прежде чем приступить к работе, поговорим о следующем: как нам организовать файлы? Когда мы делали наше самое первое приложение, мы располагали все файлы в одной папке. Так можно делать, если файлов не очень много. А если их сотни, тысячи? Тут необходимо их как-то рассортировать по типам: формы в одной папке, отчеты в другой и т. д.

Уловил мысль? Обычно в основном каталоге (папке), где “лежит” твое приложение, создается несколько подкаталогов, например: Database, Forms, Menus, Progs, Images, Others и т. д. И теперь всем, а тебе в первую очередь, ясно, где какой файл находится. Все это не догма, можешь делать, как хочешь, но предложенный способ, несомненно, поможет придать твоему приложению более стройный вид.

Начнем с того, что создадим новую таблицу базы данных. Нажав кнопку New (Новая) на панели инструментов Database Designer и указав в открывшемся диалоговом окне Create (Создать) имя новой таблицы, мы увидим уже знакомое окно Table Designer (Конструктор таблицы).

Окно вроде как бы знакомое, да что-то не то, не правда ли? Мы видим, что Данный инструмент “обзавелся” дополнительными возможностями.

– Формат данных и маска ввода (поля ввода Format и Input mask) позволяют задать формат представления значений поля и маску ввода.

– Заголовок поля (поле ввода Caption). По умолчанию при просмотре таблиц в режиме BROWSE в качестве заголовка поля FoxPro использует имя поля. Теперь мы можем изменить эту ситуацию, вводя для каждого поля его заголовок в поле ввода Caption.

– Контроль данных на уровне поля. Условие или правило можно как ввести непосредственно в поле ввода Rule (Правило), так и используя уже знакомое нам диалоговое окно Expression Builder (Построитель выражения), нажав для его вызова расположенную справа от поля кнопку с тремя точками.

– В поле ввода Message (Сообщение) можно задать сообщение, которое будет отображаться на экране при несоблюдении условия, указанного в поле Rule.

– Для любого поля можно задать значение по умолчанию, например, системную дату (Default value).

Поле Field comment (Комментарий для поля) используется для ввода комментария для данного поля. Длина комментария может быть произвольной, т.к. этот элемент представлен в виде поля Memo.

Индексы

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

Индексы в Visual FoxPro хранятся в файлах, имеющих расширение cdx — это так называемые составные индексные файлы.

В ранних версиях использовалось расширение idx, или простой индексный файл, который мог содержать только одно индексное выражение.

Простые индексы

Простые индексы, состоящие из одного индексного выражения, использовались в FoxBase — предшественнике Visual FoxPro.

В те древние времена для каждого индексного выражения использовался отдельный индексный файл. Вот и приходилось почти всегда при открытии таблиц специально открывать вместе с таблицей и все ее индексы.

Для чего это делалось? Все просто — если не открыть необходимый индексный файл, Лис не сможет его модифицировать при добавлении или удалении записей из таблицы — он просто его не “увидит”, ведь не могут все индексные файлы иметь имена, совпадающие с именем таблицы!

В настоящее время уже как бы принято за правило использовать составные или структурные индексы.

Составные индексы

Никто не запрещает использовать в приложениях простые индексы с расширением idx, но применение составных индексов кажется более предпочтительным и вот почему:

• в один индексный файл можно включить несколько индексных выражений;
• если индексному файлу присвоить имя таблицы, то он всегда будет открываться вместе с таблицей — потерять такой файл невозможно;
• структурный индекс всегда автоматически привязывается к “своей” таблице.

Из чего состоит индексный файл? Файлы данного типа могут содержать один или несколько тегов. Тег (Tag) — это и есть индексное выражение. Чтобы узнать, какие именно теги используются в индексе, можно воспользоваться функцией TAG о, которая возвращает имя тега. А вот сколько этих самых тегов — подскажет функция TAGCOUNT (). Узнать имя самого индексного файла можно, применив функцию CDX () или аналогичную ей MDX ().

В Visual FoxPro имеется четыре типа индексов:

• Primary (Первичный). В таблице может быть только один первичный индекс (иногда его называют первичным ключом), который позволяет вводить только уникальные значения данного поля;
• Candidat (Кандидат или потенциальный). Также позволяет вводить только уникальные значения поля, но в отличие от индекса Primary таблица может иметь несколько индексов такого типа;
• Regular (Регулярный или простой). Данный индекс может быть создан для любого значения поля;
• Unique (Уникальный). Может быть создан только для неповторяющихся значений поля. Как и Regular, данный индекс широко применялся в ранних версиях FoxPro.

Теперь перейдем к практике и создадим в нашей базе данных три таблицы. Для этого откроем окно конструктора базы данных и, воспользовавшись кнопкой New Table (Новая таблица) панели Database Designer, создадим таблицу Countries.dbf и Cities.dbf, Streets.dbf.

Рассмотрим подробно процесс индексации на примере создания индексов для таблицы Countries.dbf. В окне конструктора таблиц (Table Designer) перейдем на вкладку Indexes (Индексы). В поле Name вводим имя индекса, а из раскрывающегося списка Туре (Тип) выберем необходимый тип. Затем, нажав кнопку справа от поля ввода Expression (Выражение), вводим значение индексного выражения в окне построителя выражений. Но в данном примере мы не будем применять сложные выражения и просто зададим имена полей.

Вот теперь, когда созданы таблицы и соответствующие индексные файлы, можно перейти к следующему шагу.

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете оставить ответ, или trackback с вашего собственного сайта.

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100