Поделиться через


Структура CDaoIndexInfo

Структура CDaoIndexInfo содержит сведения об объекте индекса, определенном для объектов доступа к данным (DAO).

Синтаксис

struct CDaoIndexInfo {
    CDaoIndexInfo();                    // Constructor
    CString m_strName;                  // Primary
    CDaoIndexFieldInfo* m_pFieldInfos;  // Primary
    short m_nFields;                    // Primary
    BOOL m_bPrimary;                    // Secondary
    BOOL m_bUnique;                     // Secondary
    BOOL m_bClustered;                  // Secondary
    BOOL m_bIgnoreNulls;                // Secondary
    BOOL m_bRequired;                   // Secondary
    BOOL m_bForeign;                    // Secondary
    long m_lDistinctCount;              // All

    // Below the // Implementation comment:
    // Destructor, not otherwise documented
};

Параметры

m_strName
Определяет уникальное имя для объекта поля. Дополнительные сведения см. в разделе "Свойство имени" в справке по DAO.

m_pFieldInfos
Указатель на массив объектов CDaoIndexFieldInfo, указывающий, какие поля объекта tabledef или recordset являются ключевыми полями в индексе. Каждый объект определяет одно поле в индексе. Порядок индексов по умолчанию — по возрастанию. Объект индекса может иметь одно или несколько полей, представляющих ключи индекса для каждой записи. Они могут быть расположены по возрастанию, по убыванию или с комбинацией двух подходов.

m_nFields
Число полей, хранящихся в m_pFieldInfos.

m_bPrimary
Если свойство Primary имеет значение TRUE, объект индекса представляет первичный индекс. Первичный индекс состоит из одного или нескольких полей, которые однозначно идентифицируют все записи в таблице в стандартном порядке. Поскольку поле индекса должно быть уникальным, свойство Unique объекта index также имеет значение TRUE в DAO. Если первичный индекс состоит более чем из одного поля, каждое поле может содержать повторяющиеся значения, но каждое сочетание значений из всех индексированных полей должно быть уникальным. Первичный индекс состоит из ключа таблицы и обычно содержит те же поля, что и первичный ключ.

При задании первичного ключа для таблицы первичный ключ автоматически определяется в качестве первичного индекса для таблицы. Дополнительные сведения см. в темах "Свойство Primary" и "Свойство Unique" в справке по DAO.

Примечание.

В таблице может быть не более одного первичного индекса.

m_bUnique
Указывает, представляет ли объект индекса уникальный индекс для таблицы. Если это свойство имеет значение TRUE, то объект index представляет уникальный индекс. Уникальный индекс состоит из одного или нескольких полей, которые логически упорядочивают все записи в таблице в уникальном предопределенном порядке. Если индекс состоит из одного поля, то значения в этом поле должны быть уникальными для всей таблицы. Если индекс состоит более чем из одного поля, каждое поле может содержать повторяющиеся значения, но каждое сочетание значений из всех индексированных полей должно быть уникальным.

Если для свойств Unique и Primary объекта index задано значение TRUE, индекс является уникальным и первичным. Он уникально определяет все записи в таблице в предопределенном логическом порядке. Если свойство Primary имеет значение FALSE, это вторичный индекс. Вторичные индексы (ключевые и неключевые) логически упорядочивают записи в предопределенном порядке, не выполняя функции идентификатора для записей в таблице.

Дополнительные сведения см. в темах "Свойство Primary" и "Свойство Unique" в справке по DAO.

m_bClustered
Указывает, представляет ли объект индекса кластеризованный индекс для таблицы. Если это свойство имеет значение TRUE, то объект index представляет кластеризованный индекс. В противном случае — нет. Кластеризованный индекс состоит из одного или нескольких неключевых полей, которые, в совокупности, упорядочивают все записи в таблице в предопределенном порядке. При использовании кластеризованного индекса данные в таблице буквально хранятся в порядке, указанном кластеризованным индексом. Кластеризованный индекс обеспечивает эффективный доступ к записям в таблице. Дополнительные сведения см. в разделе "Свойство Clustered" в справке по DAO.

Примечание.

Свойство Clustered не учитывается для баз данных, которые используют ядро СУБД Microsoft Jet, так как оно не поддерживает кластеризованные индексы.

m_bIgnoreNulls
Указывает, существуют ли записи индекса для записей, имеющих значения NULL в своих полях индекса. Если это свойство имеет значение TRUE, то поля со значениями NULL не имеют записи индекса. Чтобы быстрее выполнять поиск записей с помощью поля, можно определить индекс для поля. Если в индексированном поле разрешены записи со значением NULL и предполагается, что многие из записей будут иметь значение NULL, можно задать для свойства IgnoreNulls объекта index значение TRUE, чтобы уменьшить объем хранилища, используемый индексом. Если настроить свойство IgnoreNulls и свойство Required вместе, они определяют, содержит ли запись со значением индекса NULL запись индекса, как показано в следующей таблице.

IgnoreNulls Обязательное поле Значение NULL в поле индекса
Истина False Значение NULL разрешено; запись индекса не добавлена.
False False Значение разрешено NULL; запись индекса добавлена.
True или False Истина Значение NULL запрещено; запись индекса не добавлена.

Дополнительные сведения см. в разделе "Свойство IgnoreNulls" в справке по DAO.

m_bRequired
Указывает, требуется ли для объекта индекса DAO значение, отличное от NULL. Если это свойство имеет значение TRUE, объект индекса не допускает значение NULL. Дополнительные сведения см. в разделе "Свойство Required" в справке по DAO.

Совет

Если это свойство можно задать либо для объекта индекса DAO, либо для объекта field (содержащегося в объекте tabledef, recordset или querydef), установите его для объекта field. Допустимость значения свойства для объекта field проверяется перед объектом index.

m_bForeign
Указывает, представляет ли объект index внешний ключ в таблице. Если это свойство имеет значение TRUE, индекс представляет внешний ключ в таблице. Внешний ключ состоит из одного или нескольких полей во внешней таблице, которые однозначно идентифицируют строку в основной таблице. Ядро СУБД Microsoft Jet создает объект index для внешней таблицы и задает свойство Foreign при создании связи, которая обеспечивает целостность данных. Дополнительные сведения см. в разделе "Свойство Foreign" в справке по DAO.

m_lDistinctCount
Указывает количество уникальных значений для объекта index, которые включены в связанную таблицу. Проверьте свойство DistinctCount, чтобы определить количество уникальных значений, или ключей, в индексе. Любой ключ подсчитывается только один раз, даже если встречается там несколько раз, если в индексе разрешены дублирующиеся значения. Эта информация полезна в приложениях, пытающихся оптимизировать доступ к данным путем оценки сведений об индексах. Число уникальных значений также называется кратностью объекта index. Свойство DistinctCount не всегда отражает фактическое количество ключей в определенное время. Например, изменение, вызванное откатом транзакции, не будет немедленно отражено в свойстве DistinctCount. Дополнительные сведения см. в разделе "Свойство DistinctCount" в справке по DAO.

Замечания

Значения Primary, Secondary и All указывают, как информация возвращается функцией-членом GetIndexInfo в классах CDaoTableDef и CDaoRecordset.

Объекты индекса не представлены классом MFC. Вместо этого объекты DAO базовых объектов MFC класса CDaoTableDef или CDaoRecordset содержат коллекцию объектов index, называемую коллекцией индексов. Эти классы предоставляют функции-члены для доступа к отдельным элементам сведений об индексах или для одновременного доступа сразу ко всем элементам с помощью объекта CDaoIndexInfo путем вызова функции-члена GetIndexInfo содержащего объекта.

CDaoIndexInfo имеет конструктор и деструктор, чтобы корректно выделять и отменять выделение информации о поле индекса в m_pFieldInfos.

Сведения, полученные функцией-членом GetIndexInfo объекта tabledef, хранятся в структуре CDaoIndexInfo. Вызовите функцию-член GetIndexInfo содержащего объекта tabledef, в коллекции индексов которого хранится объект index. CDaoIndexInfo также определяет функцию-член Dump в отладочных сборках. Можно использовать Dump для дампа содержимого объекта CDaoIndexInfo.

Требования

Header: afxdao.h

См. также

Структуры, стили, обратные вызовы и схемы сообщений
CDaoTableDef::GetIndexInfo