Шаг 201 - Объект Index

Описание
Объект Index (индекс) описывает отношения упорядочивания и однозначности значений, с помощью которых обеспечивается эффективный доступ к записям в таблицах. При работе с внешними базами данных объекты Index содержат описания индексов, определенных во внешних таблицах (только в рабочей области Microsoft Jet).

Замечания
Индексы используются ядром базы данных Microsoft Jet при объединении таблиц и при создании объектов Recordset. Индексы определяют порядок записей в возвращаемых объектах Recordset типа таблицы, однако, индексы не влияют на порядок записей, в котором ядро базы данных Microsoft Jet сохраняет записи в основной таблице, а также на порядок записей, возвращаемых в объектах Recordset других типов.

Объект Index позволяет:

  1. Определить с помощью свойства Required, обязательно ли объекты Field индекса должны содержать непустые значения (не Null), после чего вызвать метод IgnoreNulls, а с помощью свойства Null определить, имеются ли в индексе записи с пустыми значениями.
  2. С помощью свойств Primary и Unique определить отношения упорядочивания и однозначности в объекте Index.

Ядро базы данных Microsoft Jet автоматически осуществляет управление всеми индексами в основной таблице. Индексы обновляются при добавлении, изменении или удалении записей из основной таблицы. После создания базы данных следует регулярно вызывать метод CompactDatabase для обновления индексов.

При доступе к объекту Recordset типа таблицы пользователь задает порядок записей с помощью свойства Index объекта. В значении этого свойства следует указывать значение свойства Name существующего объекта Index из семейства Indexes. Это семейство содержится в объекте TableDef, который представляет базовую таблицу заполняемого объекта Recordset.

Создавать индексы для таблицы не обязательно, однако, в больших неиндексированных таблицах доступ к конкретной записи или обработка объединений может занимать много времени. С другой стороны, избыточные индексы могут замедлить обновление базы данных, поскольку при этом обновляется каждый индекс.
Порядок записей и, как следствие, методика доступа к данным для данного индекса определяется свойством Attributes каждого из объектов Field в индексе.
Каждый объект Field из семейства Fields объекта Index является составной частью индекса. При создании нового индекса необходимо задать значения его свойств до добавления индекса в семейство, чтобы сделать объект Index доступным для последующего использования.
Изменение значения свойства Name существующего объекта Index возможно только в том случае, если свойство Updatable содержащего индексы объекта TableDef имеет значение True.
При создании ключа таблицы ядро Microsoft Jet автоматически определяет данный ключ как первичный индекс. Первичный индекс состоит из одного или нескольких полей, однозначно определяющих каждую запись и ее положение в таблице. Поскольку первичный индекс по определению является уникальным, ядро Microsoft Jet автоматически задает значение True для свойства Unique объекта Index, представляющего первичный индекс. Если первичный индекс включает несколько полей, то в каждом из этих полей могут содержаться повторяющиеся значения, но комбинация значений полей индекса должна быть уникальной. Первичным индексом является ключ таблицы, а поля его образующие, совпадают с полями ключа.
Пользователь должен обеспечить совместимость данных с атрибутами создаваемого индекса. Если индекс требует уникальности значений, то повторения не допускаются. При наличии повторений ядро Microsoft Jet не сможет создать индекс, результатом чего будет возникновение перехватываемой ошибки при попытке вызвать метод Append для нового индекса.
При создании связи, обеспечивающей целостность данных, ядро базы данных Microsoft Jet автоматически создает индекс и устанавливает значение свойства Foreign таким образом, чтобы индекс являлся внешним ключом адресующей таблицы. После определения связи ядро Microsoft Jet запрещает все изменения и добавления в базе данных, противоречащие условиям связи. Если значения свойства Attributes объекта Relation допускают операции каскадного обновления и каскадного удаления, то ядро Microsoft Jet автоматически обновляет или удаляет записи в связанных таблицах.

Создание нового объекта Index:

  1. Вызовите метод CreateIndex для объекта TableDef.
  2. Вызовите метод CreateField для объекта Index и создайте объект Field для каждого поля (столбца), включаемого в объект Index.
  3. Задайте свойства объекта Index.
  4. Добавьте объекты Field в семейство Fields.
  5. Добавьте объект Index в семейство Indexes.

Значение свойства ClusteredMicrosoft Jet, поскольку это ядро базы данных не поддерживает кластерные индексы.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 15.04.2002