Создание и использование индексов
С целью ускорения поиска и сортировки данных в любой БД используются индексы. Индекс является средством, которое обеспечивает быстрый доступ к данным в таблице на основе значений одного или нескольких столбцов. Индекс представляет собой упорядоченный список значений и ссылок на записи, в которых хранятся эти значения. Чтобы найти нужные записи, БД сначала ищет требуемое значение в индексе, а затем по ссылкам быстро отбирает соответствующие записи.
Индекс бывает двух типов:
§ простой – представляет собой индекс, созданный по одному столбцу;
§ составной – индекс, построенный по нескольким столбцам. Например, индекс, построенный по полям Фамилия и Имя. В составном индексе может быть использовано до 10 полей.
Однако применение индексов приносит не только преимущества, но и недостатки. Главным среди них является тот, что при добавлении и удалении записей или при обновлении значений в индексном столбце требуется обновлять индекс, что при большом количестве индексов в таблице может замедлять работу. Поэтому индексы обычно создаются только для тех столбцов таблицы, по которым наиболее часто выполняется поиск записей. Индексировать можно любые поля, кроме МЕМО-полей, полей типа Гиперссылка и объектов OLE.
24. В таблице Конфеты создайте простой индекс, построенный на основе поля Название. Для этого:
§ откройте таблицу Конфеты в режиме Конструктора;
§ щелкните по полю Название и в нижней части Конструктора (в таблице Свойства поля) на вкладке Общие выберите для свойства Индексированное полезначение Да (Совпадения не допускаются);
§ закройте таблицу Конфеты, сохранив изменения.
25. В таблице Заказчики создайте составной индекс, построенный на основе полей Фамилия и Имя. Для этого:
§ откройте таблицу Заказчики в режиме Конструктора;
§ на вкладке Конструктор в группе Показать или скрыть щелкните по кнопке Индексы. Откроется одноименное диалоговое окно;
§ в окне Индексы: Заказчики уже существует два индекса: Postal Code (созданный на основе поля Почтовый индекс) и PrimaryKey (основанный на ключевом поле Код Заказчика). В первой пустой строке столбца Индекс ввести имя индекса SurnameName;
§ в поле Имя полянажмите на стрелку и выберите первое поле, для которого необходимо создать индекс: Фамилия;
§ в следующей строке поля Имя поля укажите второе индексируемое поле – Имя. Для данной строки поле Индексдолжно оставаться пустым;
§ проверьте, чтобы в столбце Порядок сортировки для полей Фамилия и Имя была указана сортировка по возрастанию;
§ в таблице Свойства индекса установите следующие параметры: в строке Ключевое поле – значение Нет; в строке Уникальный индекс – Нет (т.к. среди заказчиков могут встретиться полные однофамильцы); в строке Пропуск пустых полей – значение Нет;
§ закройте диалоговое окно, щелкнув по кнопке Закрыть;
§ закройте конструктор таблицы Заказчики, сохранив изменения.
Удаление индекса выполняется точно так же, как удаление поля в Конструкторе таблиц. Для этого необходимо выделить строку с нужным индексом и нажать клавишу <Delete> или воспользоваться контекстным меню.
Если индекс создается на основе ключевого поля таблицы, то это поле автоматически индексируется и свойству Индексированное поле присваивается значение Да (Совпадения не допускаются).
Обеспечение целостности данных в таблицах
В Microsoft Access обеспечивается возможность автоматической проверки целостности данных в связанных полях. Целостность данных означает систему правил, используемых для поддержания связей между записями в связанных таблицах, а также для обеспечения защиты от случайного удаления или изменения связанных данных.
Установить проверку целостности данных можно, если выполнены следующие условия:
§ связанное поле главной таблицы является ключевым полем или имеет уникальный индекс;
§ связанные поля имеют один тип данных. Здесь существует два исключения:
§ поле счетчика может быть связано с числовым полем, если в последнем поле в свойстве Размер поля указано значение Длинное целое;
§ в обоих полях свойство Размер поля имеет значение Код репликации.
§ обе таблицы принадлежат одной базе данных Microsoft Access.
Чтобы обеспечить целостность, работа с данными должна производиться с учетом нижеперечисленных правил:
§ невозможно ввести в связанное поле подчиненной таблицы значение, отсутствующее в связанном поле главной таблицы. Однако можно ввести пустое значение, показывающее, что для данной записи связь отсутствует;
§ не допускается удаление записи из главной таблицы, если существуют связанные с ней записи в подчиненной таблице;
§ невозможно изменить значение ключевого поля в главной таблице, если существуют записи в подчиненной таблице, связанные с данной таблицей.
Чтобы эти правила контролировались для конкретной связи, при ее создании следует установить флажок Обеспечение целостности данных. Тогда любая попытка выполнить действие, нарушающее одно из перечисленных выше правил, приведет к выводу на экран предупреждения, а само действие выполнено не будет.
26. Проверьте, как работает возможность автоматической проверки целостности данных в связанных полях Код таблиц Конфеты и Подробности наборов. Для этого:
§ откройте Схему данных (вкладка Работа с базами данных, группа Показать или скрыть);
§ дважды щелкните по линии связи между таблицами Конфеты и Подробности наборов. Откроется диалоговое окно Изменение связей, в котором установлен только один флажок Обеспечение целостности данных;
§ закройте окно Изменение связей;
§ сверните Схему данных;
§ откройте таблицу Конфеты и попробуйте удалить запись, поле Код которой имеет значение B02 (вкладка Главная, группа Записи, кнопка Удалить). В результате откроется диалоговое окно MS Access с сообщением: Удаление или изменение записи невозможно. В таблице «Подробности наборов» имеются связанные записи.Щелкните по кнопке <Ok>;
§ закройте таблицу Конфеты.
Чтобы преодолеть ограничения на удаление или изменение связанных записей, сохраняя при этом целостность данных, следует установить флажки Каскадное обновление связанных полей и Каскадное удаление связанных записей. Если установлен флажок Каскадное обновление связанных полей, то при изменении ключевого поля главной таблицы автоматически будут изменены и соответствующие значения поля связанных записей. Если установлен флажок Каскадное удаление связанных записей, то при удалении записи в главной таблице удаляются и все связанные записи в подчиненной таблице.
27. Разверните Схему данных и для связи между таблицами Конфеты и Подробности наборов установите флажки Каскадное обновление связанных полей и Каскадное удаление связанных записей. Закройте окно Схема данных.
28. Откройте таблицу Конфеты и выполните сортировку по полю Код по возрастанию. Обратите внимание, в этой таблице содержится одна запись, в которой поле Код имеет значение B02.
29. Откройте таблицу Подробности наборов и выполните сортировку по полю Код по возрастанию. Обратите внимание, в этой таблице содержится четыре записи, в которой поле Код имеет значение B02. Закройте таблицу, сохранив изменения.
30. Перейдите в таблицу Конфеты и снова попробуйте удалить запись, поле Код которой имеет значение B02. В результате откроется диалоговое окно, в котором подтвердите необходимость удаления записей, щелкнув по кнопке Да. Закройте таблицу Конфеты, сохранив изменения.
31. Откройте таблицу Подробности наборов и просмотрите полученные результаты: четыре записи, в которых поле Код имеет значение B02, также будут удалены. Закройте таблицу, сохранив изменения.
Навигация по таблице
Для перемещения по записям используются кнопки, расположенные на нижней границе окна таблицы. Кроме этих кнопок в нижней части окна таблицы расположено поле номера записи, в котором отображается номер текущей записи.
32. Используя поле номера записи в нижней части окна таблицы Подробности наборов перейдите на запись с номером 45. Для этого откройте таблицу Подробности наборов, в поле номера записи введите число 45 и нажмите клавишу <Enter>.
Поиск конкретной записи можно осуществлять и с помощью вертикальной полосы прокрутки.
Для перемещения по полям и между записями в режиме Таблицы можно использовать также сочетания клавиш, приведенные в таблице 11.
Таблица 11. Сочетания клавиш, используемые для навигации по таблице.
Сочетания клавиш | Действие |
<Tab> или <Enter> | Переход к следующему полю текущей записи |
<Shift>, <Tab> | Переход к предыдущему полю текущей записи |
<Ctrl>, <Page Up> | Переход на первое поле текущей записи |
<Ctrl>, <Page Down > | Переход на последнее поле текущей записи |
<^> | Переход к предыдущей записи текущего поля |
<v> | Переход к следующей записи текущего поля |
<Ctrl>, <^> | Переход к первой записи текущего поля |
<Ctrl>, <v> | Переход к последней записи текущего поля |
<Ctrl>, <Home> | Переход в первую запись первого поля |
<Ctrl>, <End> | Переход в последнюю запись последнего поля |
<Page Down> | Переход на один экран вниз |
<Page Up> | Переход на один экран вверх |
33. Используя сочетания клавиш, приведенные в таблице 11, выполните перемещения по полям и записям таблицы Подробности наборов. Закройте таблицу.