Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Метод_пособие_СУБД_для_Москвы.doc
Скачиваний:
17
Добавлен:
31.07.2019
Размер:
9.45 Mб
Скачать
      1. Индексирование

По заданным в таблицах ключам СУБД автоматически строит индексы, которые представляют собой механизмы быстрого доступа к хранящимся в таблицах данных. Индексирование записей файла позволяет заменить физическую реорганизацию файла (перестановки записей и др.) изменением индексов. Используя индекс, можно реорганизовывать индекс без реорганизации самого файла. Это значительно увеличивает скорость обработки больших объемов информации.

Чтобы создать индекс, вначале задается массив целых чисел, в котором каждый элемент содержит один (свой) номер записи файла прямого доступа. Этот массив используется для определения номера записи, к которой нужно обратиться. Такая организация хранения записи файла называется индексированием записи. Записи одного файла могут иметь несколько разных индексов для организации различных алгоритмов работы с одним и тем же файлом. Сущность индексов состоит в том, что они хранят отсортированные значения индексных полей и указатель на запись в таблице.

Пример:

Порядковый номер записи

Товар

Дата

Кол-во (ед)

1

Сахар

10.01.03

10

2

Картофель

15.01.03

20

3

Свекла

12.02.03

50

4

Сахар

20.02.03

10

5

Свекла

10.03.03

50

6

Сливы

19.03.03

4

С логической точки зрения ее индексы выглядят так:

Индекс по дате прихода товара

Индекс по наименованию товара

Индекс по количеству

Дата

Порядко-вый номер записи

Товар

Порядко-вый номер записи

Кол-во (ед)

Порядко-вый номер записи

10.01.03

1

Картофель

2

50

3

15.01.03

2

Сахар

1

50

5

12.02.03

3

Сахар

4

20

2

20.02.03

4

Свекла

3

10

1

10.03.03

5

Свекла

5

10

4

19.03.03

6

Сливы

6

4

6

Индекс по наименованию товара будет выглядеть следующим образом

Индекс по количеству будет выглядеть следующим образом

Index(1)=2

Index(2)=1

Index(3)=4

Index(4)=3

Index(5)=5

Index(6)=6

Index(1)=3

Index(2)=5

Index(3)=2

Index(4)=1

Index(5)=4

Index(6)=6

Рассмотрим правила индексирования.

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

  • Существует следующее правило - поля, по которым часто приходится искать, должны быть проиндексированы

  • При каждом обновлении таблицы индексы также модифицируются. Если их слишком много, это займет много времени. Понятие "слишком" сильно зависит от СУБД, но обычно считается, что 5 индексов на таблицу - нормально. Правило - не загромождайте таблицу лишними индексами

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

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

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

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