Ключевой поле может иметь определенный смысл, как например ключ ISBN в таблице TITLES. Однако, очень часто ключевое поле не несет никакой смысловой нагрузки и является просто идентификатором объекта в таблице. Во многих случаях удобно использовать в качестве ключа поле счетчика (Counter field). При этом вся ответственность по поддержанию уникальности ключевого поля снимается с пользователя и перекладывается на процессор баз данных. Поле счетчика представляет собой четырехбайтовое целое число (Long) и автоматически увеличивается на единицу при добавлении пользователем новой записи в таблицу.
Данные запоминаются в таблице в том порядке, в котором они вводятся пользователем. Это, так называемый, физический порядок следования записей. Однако, часто требуется представить данные в другом, отличном от физического, порядке. Например может потребоваться просмотреть данные об авторах книг, упорядоченные по алфавиту. Кроме того, часто необходимо найти в большом объеме информации запись, удовлетворяющую определенному критерию. Простой перебор записей при поиске в большой таблице может потребовать достаточно много времени и поэтому будет неэффективным.
Одними из основных требований, предъявляемым к системам управления базами данных, являются возможность представления данных в определенном, отличном от физического, порядке и возможность быстрого поиска определенной записи. Эффективным средством решения этих задач является использование индексов.
Индекс представляет собой таблицу, которая содержит ключевые значения для каждой записи в таблице данных и записанные в порядке, требуемом для пользователя. Ключевые значения определяются на основе одного или нескольких полей таблицы. Кроме того, индекс содержит уникальные ссылки на соответствующие записи в таблице. На рис. 1.12 показан фрагмент таблицы CUSTOMERS, содержащей информацию о покупателях, и индекс IDXNAME, построенный на основе поля Name таблицы CUSTOMERS. Индекс IDX NAME содержит значения ключевого поля Name, упорядоченные в алфавитном порядке, и ссылки на соответствующие записи в таблице CUSTOMERS.
Рис. 1.12. Связь между таблицей и индексом.
Каждая таблица может иметь несколько различных индексов, каждый из которых определяет свой собственный порядок следования записей. Например, таблица AUTHORS может иметь индексы для представления данных об авторах, упорядоченные по дате рождения или по алфавиту. Таким образом, каждый индекс используется для представления одних и тех же данных, но упорядоченных различным образом.
Вообще говоря, таблицы в базе данных могут и не иметь индексов. В этом случае для большой таблицы время поиска определенной записи может быть весьма значительным и использование индекса становиться необходимым. С другой стороны, не следует увлекаться созданием слишком большого количества индексов, так как это может заметно увеличить время необходимое для обновления базы данных и значительно увеличить размер файла базы данных.
При разработке приложений, работающих с базами данных, наиболее широко используются простые индексы. Простые индексы используют значения одного поля таблицы. Примером простого индекса в базе данных BIBLIO.MDB может служить код ISBN, идентификатор автора Au ID или идентификатор издательства PubID.
Хотя в большинстве случаев для представления данных в определенном порядке достаточно использовать простой индекс, часто возникают ситуации, где не обойтись без использования составных индексов. Составной индекс строится на основе значений двух или более полей таблицы. Хорошей иллюстрацией использования составных индексов может служить база данных родственников при генеалогических исследованиях какой-либо фамилии. Понятно, что использование в качестве простого индекса фамилии человека в данном случае недопустимо. Даже использование составного индекса, основанного на полях имени, фамилии и отчества может быть неэффективным, так как и в этом случае все равно возможно существование достаточно большого числа однофамильцев. Выходом из положения может быть использование составного индекса, основанного, например, на следующих полях таблицы: имя, фамилия, отчество, город и номер телефона.
Урок 2
Приложение VisData
Чтобы создать приложение для обработки информации из базы данных необходимо для начала иметь собственно базу данных. Базу данных в формате MS Access можно создать несколькими способами, например:
С помощью системы управления базами данных MS Access;
С использованием объектов доступа к данным Visual Basic;
С использованием приложения VisData, входящего в комплект поставки Visual Basic.
О том, как создать базу данных с помощью системы управления базами данных MS Access, можно узнать из любого соответствующего руководства. Так как эти уроки посвящены работе с Visual Basic, то все наше внимание будет уделено последним двум способам. Создание базы данных с помощью объектов доступа к данным, или другими словами, программным способом, будет описано ниже, в соответствующих уроках (про DAO).
В поставку Visual Basic входит приложение для управления базами данных VisData. Это приложение позволяет создавать и модифицировать базы данных как в формате MS Access, так и в других популярных форматах. Запустить его можно из меню Add-Ins интегрированной среды разработки Visual Basic. Кроме того, исходные тексты этого очень полезного приложения поставляются в комплекте с Visual Basic в качестве одного из примеров. Для тех, кто хочет детально разобраться во всех тонкостях работы с базами данных с помощью Visual Basic, исходные тексты приложения VisData являются просто находкой. Пожалуй, не существует таких приемов работы, которые не были бы продемонстрированы в этом приложении.
С помощью VisData создадим базу данных FRIENDS.MDB, в которой можно хранить персональные данные о ваших знакомых. Эта база данных может в дальнейшем служить основой для создания электронной записной книжки. Предположив заранее, что многие из ваших друзей и/или подруг могут работать или учиться в одном и том же месте, во избежание повторов разобьем данные на две группы — собственно персональную информацию о человеке (имя, фамилия, домашний телефон, домашний адрес, день рождения и т. д.) и информацию о месте работы/учебы (название, адрес, рабочий телефон, электронная почта). Таким образом FRIENDS.MDB будет включать в себя таблицу PERSON, содержащую следующие поля:
Name — имя,
LastName — фамилия,
Adress — домашний адрес,
HomePhone — домашний телефон,
Idwork — идентификатор места работы/учебы,
HomeWWW — адрес домашней страницы в сети Интернет,
Email — адрес электронной почты,
Note — примечание и таблицу COMPANY, содержащую поля:
Id work — уникальный идентификатор места работы/учебы,
Office — название места работы/учебы,
Adress — адрес места работы/учебы,
WorkPhone1 — рабочий телефон 1,
WorkPhone2 — рабочий телефон 2,
Email — адрес электронной почты,
Note — примечание.
Создание базы данных
Запустите приложение VisData и выполните команду меню File->New->Microsoft Access->Version 7.0 MDB (см. рис. 2.1). В появившемся диалоговом окне введите имя файла FRIENDS.MDB и, если необходимо, измените путь к файлу. После этого, сохраните файл базы данных нажатием командной кнопки Save (рис. 2.2). Дальше, в окне DataBase Window (Окно базы данных) вы можете посмотреть свойства созданной базы данных (рис. 2.3).