Ключи и индексы баз данных Access 2010

Каждая таблица реляционной базы данных состоит из строк и столбцов и предназначена для хранения данных об объектах информационной системы (рис. 1.3.). В дальнейшем будем придерживаться терминов «поле» и «запись».

Поле может содержать данные только одного из допустимых типов (тип данных) для конкретно используемой базы данных, например MS Access, MS SQL Server, Oracle и т. д.

Рис. 1.3. Схема таблицы реляционной базы данных

Рис. 1.3. Схема таблицы реляционной базы данных

Значения некоторых терминов, применяемых в реляционной модели данных и приведенных выше, легко понять, изучив содержимое конкретной таблицы (рис. 1.4).

Рис. 1.4. Таблица Здания

Рис. 1.4. Таблица Здания

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

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

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

В реляционных базах данных ключ реализуется с помощью индекса.

Индекс — указатель на данные, размещенные в реляционной таблице. Он предоставляет информацию о точном физическом их расположении.

Одним из основных требований, предъявляемых к СУБД, является возможность быстрого поиска требуемых записей. В реляционных базах данных для реализации этого требования как раз и служат индексы. Индекс очень похож на алфавитный указатель в книге.

Например, у вас в руках книга по Microsoft Office Access 2010 и вы хотите узнать о том, что написано в ней об индексах. Загляните в конец книги и найдите в предметном указателе слово «индекс». Так как указатель отсортирован по алфавиту, вы без труда найдете нужное слово и ссылки на страницы, где оно встречается в книге. Индекс работает с таблицей по такому же принципу. Он содержит отсортированные значения указанного поля таблицы и ссылки на номера записей таблицы, где эти значения находятся. При поиске записи система управления базами данных сначала просматривает индекс, что занимает совсем немного времени, т. к. для этого используется специальный алгоритм, находит ссылку на номер записи и по ней — нужную строчку в таблице. Таким образом, отпадает необходимость последовательного просмотра всех записей в таблице. Аналогичный способ применяется при поиске по списку прокси-серверов на сайте proxy ua.

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

Рассмотрим работу индекса на конкретном примере. На рис. 1.5 показан фрагмент таблицы Телефоны и индекса, построенного по полю Номер. Требуется найти владельца телефонного номера 4983217. При поиске СУБД в первую очередь находит номер телефона, расположенный ровно в центре столбца (номера в индексе отсортированы по возрастанию). Это номер 4987312, который больше требуемого. Вывод: рассматривать нижнюю половину индексного файла для дальнейшего поиска не имеет смысла. Для десятимиллионного телефонизированного города это пять миллионов записей. Второй шаг — обращение точно в центр верхней половины. Там расположен абонент 2791519. Его номер меньше искомого. Долой еще два с половиной миллиона записей на этот раз из верхней четверти столбца. Третий шаг исключит из рассмотрения восьмую часть абонентов. Четвертый — шестнадцатую и т. д. Очень скоро работа алгоритма будет закончена. Нужный нам владелец телефонного номера будет найден. Его фамилия — Степанов.

Рис. 1.5. Поиск владельца телефона по его номеру при помощи индекса

Рис. 1.5. Поиск владельца телефона по его номеру при помощи индекса


Top