다음을 통해 공유


CDaoIndexInfo 구조체

CDaoIndexInfo 구조체에는 DAO(데이터 액세스 개체)에 대해 정의된 인덱스 개체에 관한 정보가 포함됩니다.

참고 항목

DAO는 Office 2013까지 지원됩니다. DAO 3.6은 최종 버전이며 사용되지 않는 것으로 간주됩니다.

구문

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
인덱스의 키 필드인 tabledef 또는 recordset 필드를 나타내는 CDaoIndexFieldInfo 개체 배열에 대한 포인터입니다. 각 개체는 인덱스에서 하나의 필드를 식별합니다. 기본 인덱스 순서는 오름차순입니다. index 개체에는 각 레코드의 인덱스 키를 나타내는 하나 이상의 필드가 있을 수 있습니다. 해당 필드는 오름차순, 내림차순 또는 조합일 수 있습니다.

m_nFields
m_pFieldInfos에 저장된 필드 수입니다.

m_bPrimary
Primary 속성이 TRUE이면 index 개체는 기본 인덱스를 나타냅니다. 기본 인덱스는 미리 정의된 순서로 테이블의 모든 레코드를 고유하게 식별하는 하나 이상의 필드로 구성됩니다. 인덱스 필드는 고유해야 하므로 index 개체의 Unique 속성도 DAO에서 TRUE로 설정됩니다. 기본 인덱스가 둘 이상의 필드로 구성된 경우 각 필드에는 중복 값이 포함될 수 있지만 인덱싱된 모든 필드의 각 값 조합은 고유해야 합니다. 기본 인덱스는 테이블의 키로 구성되며 일반적으로 기본 키와 동일한 필드를 포함합니다.

테이블의 기본 키를 설정하면 기본 키는 테이블의 기본 인덱스로 자동으로 정의됩니다. 자세한 내용은 DAO 도움말의 “Primary 속성” 및 “Unique 속성” 항목을 참조하세요.

참고 항목

테이블에는 기본 인덱스 하나만 있을 수 있습니다.

m_bUnique
index 개체가 테이블의 고유 인덱스를 나타내는지 여부를 나타냅니다. 이 속성이 TRUE이면 index 개체는 고유한 인덱스를 나타냅니다. 고유 인덱스는 테이블의 모든 레코드를 미리 정의된 고유한 순서로 논리적으로 정렬하는 하나 이상의 필드로 구성됩니다. 인덱스가 하나의 필드로 구성된 경우 해당 필드의 값은 전체 테이블에서 고유해야 합니다. 인덱스가 둘 이상의 필드로 구성된 경우 각 필드에는 중복 값이 포함될 수 있지만 인덱싱된 모든 필드의 각 값 조합은 고유해야 합니다.

index 개체의 Unique 및 Primary 속성이 모두 TRUE로 설정된 경우 인덱스는 고유하고 기본입니다. 이 인덱스는 테이블의 모든 레코드를 미리 정의된 논리적 순서로 고유하게 식별합니다. Primary 속성이 FALSE로 설정된 경우 인덱스는 보조 인덱스입니다. 보조 인덱스(키 및 키가 아닌 인덱스 모두)는 테이블에서 레코드의 식별자로 사용하지 않고도 미리 정의된 순서로 레코드를 논리적으로 정렬합니다.

자세한 내용은 DAO 도움말의 “Primary 속성” 및 “Unique 속성” 항목을 참조하세요.

m_bClustered
index 개체가 테이블의 클러스터형 인덱스를 나타내는지 여부를 나타냅니다. 이 속성이 TRUE이면 index 개체는 클러스터형 인덱스를 나타내고, 그렇지 않으면 나타내지 않습니다. 클러스터형 인덱스는 종합적으로 테이블의 모든 레코드를 미리 정의된 순서로 정렬하는 하나 이상의 키가 아닌 필드로 구성됩니다. 클러스터형 인덱스를 사용하면 테이블의 데이터는 클러스터형 인덱스로 지정된 순서대로 저장됩니다. 클러스터형 인덱스는 테이블의 레코드에 대한 효율적인 액세스를 제공합니다. 자세한 내용은 DAO 도움말의 “Clustered 속성” 항목을 참조하세요.

참고 항목

Jet 데이터베이스 엔진은 클러스터형 인덱스를 지원하지 않으므로 Microsoft Jet 데이터베이스 엔진을 사용하는 데이터베이스에서는 Clustered 속성이 무시됩니다.

m_bIgnoreNulls
인덱스 필드에 Null 값이 있는 레코드의 인덱스 항목이 있는지 여부를 나타냅니다. 이 속성이 TRUE이면 Null 값이 있는 필드에는 인덱스 항목이 없습니다. 필드를 사용하여 레코드를 더 빠르게 검색하기 위해 필드의 인덱스를 정의할 수 있습니다. 인덱싱된 필드에서 Null 항목을 허용하고 많은 항목이 Null일 것으로 예상하는 경우 index 개체의 IgnoreNulls 속성을 TRUE로 설정하여 인덱스가 사용하는 스토리지 공간의 양을 줄일 수 있습니다. IgnoreNulls 속성 설정과 Required 속성 설정은 함께 사용되어 다음 표와 같이 Null 인덱스 값이 있는 레코드에 인덱스 항목이 있는지 여부를 결정합니다.

IgnoreNulls Required 인덱스 필드의 Null
거짓 Null 값이 허용됩니다. 인덱스 항목이 추가되지 않았습니다.
False False Null 값이 허용됩니다. 인덱스 항목이 추가되었습니다.
True 또는 False True Null 값이 허용되지 않습니다. 인덱스 항목이 추가되지 않았습니다.

자세한 내용은 DAO 도움말의 “IgnoreNulls 속성” 항목을 참조하세요.

m_bRequired
DAO index 개체에 Null이 아닌 값이 필요한지 여부를 나타냅니다. 이 속성이 TRUE이면 index 개체가 Null 값을 허용하지 않습니다. 자세한 내용은 DAO 도움말의 “Required 속성” 항목을 참조하세요.

DAO index 개체 또는 필드 개체(tabledef, recordset 또는 querydef 개체에 포함됨)에 대해 이 속성을 설정할 수 있는 경우 필드 개체에 대해 이를 설정합니다. 필드 개체에 대한 속성 설정의 유효성은 index 개체의 속성 설정보다 먼저 검사됩니다.

m_bForeign
index 개체가 테이블의 외래 키를 나타내는지 여부를 나타냅니다. 이 속성이 TRUE이면 인덱스는 테이블의 외래 키를 나타냅니다. 외래 키는 기본 테이블의 행을 고유하게 식별하는 외래 테이블에 있는 하나 이상의 필드로 구성됩니다. Microsoft Jet 데이터베이스 엔진은 외래 테이블의 index 개체를 만들며 참조 무결성을 적용하는 관계를 만들 때 Foreign 속성을 설정합니다. 자세한 내용은 DAO 도움말의 “Foreign 속성” 항목을 참조하세요.

m_lDistinctCount
연결된 테이블에 포함된 index 개체의 고유 값 수를 나타냅니다. DistinctCount 속성을 확인하여 인덱스의 고유 값 또는 키 수를 확인합니다. 인덱스가 중복 값을 허용하는 경우 해당 값이 여러 번 발생할 수 있더라도 모든 키는 한 번만 계산됩니다. 이 정보는 인덱스 정보를 평가하여 데이터 액세스를 최적화하려는 애플리케이션에서 유용합니다. 고유 값 수를 index 개체의 카디널리티라고도 합니다. DistinctCount 속성이 항상 특정 시간의 실제 키 수를 반영하는 것은 아닙니다. 예를 들어, 트랜잭션 롤백으로 인한 변경 내용은 DistinctCount 속성에 즉시 반영되지 않습니다. 자세한 내용은 DAO 도움말의 “DistinctCount 속성” 항목을 참조하세요.

설명

위의 Primary, Secondary 및 All에 대한 참조는 CDaoTableDefCDaoRecordset 클래스의 GetIndexInfo 멤버 함수에서 정보가 반환되는 방식을 나타냅니다.

index 개체는 MFC 클래스로 나타내지 않습니다. 대신 CDaoTableDef 또는 CDaoRecordset 클래스의 기본 MFC 개체에 있는 DAO 개체는 Indexes 컬렉션이라는 index 개체의 컬렉션을 포함합니다. 이러한 클래스는 멤버 함수를 제공하여 인덱스 정보의 개별 항목에 액세스하거나, 포함하는 개체의 GetIndexInfo 멤버 함수를 호출하여 CDaoIndexInfo 개체를 통해 한 번에 모두 액세스할 수 있습니다.

CDaoIndexInfo에는 m_pFieldInfos의 인덱스 필드 정보를 제대로 할당하고 할당 취소하기 위해 생성자와 소멸자가 있습니다.

tabledef 개체의 GetIndexInfo 멤버 함수로 검색되는 정보는 CDaoIndexInfo 구조체에 저장됩니다. index 개체가 저장된 Indexes 컬렉션에서 포함하는 tabledef 개체의 GetIndexInfo 멤버 함수를 호출합니다. CDaoIndexInfo도 디버그 빌드에서 Dump 멤버 함수를 정의합니다. Dump를 사용하여 CDaoIndexInfo 개체의 콘텐츠를 덤프할 수 있습니다.

요구 사항

머리글: afxdao.h

참고 항목

구조체, 스타일, 콜백 및 메시지 맵
CDaoTableDef::GetIndexInfo