โครงสร้างของCDaoIndexInfoมีแบบฟอร์มต่อไปนี้:
struct CDaoIndexInfo {
nbsp CDaoIndexInfo () / / กำหนด
CString m_strName / / หลัก
CDaoIndexFieldInfo * m_pFieldInfos / / หลัก
m_nFields ย่อ / / หลัก
BOOL m_bPrimary / / รอง
BOOL m_bUnique / / รอง
BOOL m_bClustered / / รอง
BOOL m_bIgnoreNulls / / รอง
BOOL m_bRequired / / รอง
BOOL m_bForeign / / รอง
ยาว m_lDistinctCount / / ทั้งหมด
/ / ข้างล่างนี้ / / แสดงความคิดเห็นการใช้งาน:
/ / Destructor ไม่จัด
}(&N)
CDaoIndexInfoโครงสร้างประกอบด้วยข้อมูลเกี่ยวกับวัตถุของดัชนีที่กำหนดสำหรับวัตถุ access ข้อมูล (DAO) อ้างอิงเป็น Primary, Secondary และทั้งหมดข้างต้นบ่งชี้วิธีที่ข้อมูลจะถูกส่งกลับ โดยฟังก์ชันGetIndexInfoสมาชิกในชั้นเรียนที่CDaoTableDefและCDaoRecordset?
วัตถุที่ดัชนีจะไม่ถูกแสดง โดยมีคลาส MFC แทน วัตถุ DAO MFC วัตถุคลาCDaoTableDefหรือCDaoRecordsetที่ต้นแบบประกอบด้วยชุดของวัตถุดัชนี เรียกว่าคอลเลกชันของดัชนี เรียนเหล่านี้ใส่ฟังก์ชันของสมาชิกในการเข้าถึงแต่ละรายการดัชนีข้อมูล หรือคุณสามารถเข้าถึงได้ทั้งหมดในครั้งเดียวกับวัตถุCDaoIndexInfoโดยการเรียกฟังก์ชันของวัตถุประกอบด้วยสมาชิกGetIndexInfo?
CDaoIndexInfoมีการกำหนดและ destructor แบบเพื่อจัดสรรอย่างเหมาะสม และข้อมูลฟิลด์ดัชนีในm_pFieldInfos deallocate?
สมาชิก
m_strName
ชื่อวัตถุเขตข้อมูลไม่ซ้ำกัน สำหรับรายละเอียด ดูหัวข้อ "ชื่อคุณสมบัติ" ในวิธีใช้ DAO?
m_pFieldInfos
ตัวชี้ไปยังอาร์เรย์CDaoIndexFieldInfoวัตถุที่ระบุว่า เขตข้อมูลใด tabledef หรือชุดระเบียนที่มีเขตข้อมูลคีย์ในดัชนี แต่ละวัตถุที่ระบุเขตข้อมูลหนึ่งในดัชนี จากน้อยไปสั่งดัชนีเริ่มต้นจะมาก วัตถุดัชนีสามารถกำหนดอย่าง น้อยหนึ่งเขตข้อมูลที่แสดงดัชนีคีย์สำหรับแต่ละระเบียนได้ สิ่งเหล่านี้สามารถได้จาก descending หรือผสมกัน?
m_nFields
จำนวนของเขตข้อมูลที่จัดเก็บไว้ในm_pFieldInfos?
m_bPrimary
ถ้าคุณสมบัติหลักเป็นจริงวัตถุดัชนีแสดงดัชนีเป็นหลัก ดัชนีแบบหลักประกอบด้วยเขตข้อมูลอย่าง น้อยหนึ่งที่จะระบุระเบียนทั้งหมดในตารางในลำดับกำหนดไว้ล่วงหน้า เนื่องจากเขตข้อมูลดัชนีต้องไม่ซ้ำกัน คุณสมบัติไม่ซ้ำกันของวัตถุของดัชนีที่กำหนดเป็นจริงใน DAO ถ้าดัชนีหลักประกอบด้วยเขตข้อมูลมากกว่าหนึ่ง แต่ละเขตข้อมูลสามารถประกอบด้วยค่าซ้ำกัน แต่ต้องไม่ซ้ำกันแต่ละชุดของค่าจากเขตข้อมูลของดัชนีทั้งหมด ดัชนีหลักประกอบด้วยคีย์สำหรับตาราง และมักจะประกอบด้วยเขตข้อมูลเดียวกันเป็นคีย์หลัก?
เมื่อคุณตั้งค่าคีย์หลักสำหรับตาราง คีย์หลักถูกกำหนดเป็นดัชนีหลักสำหรับตารางโดยอัตโนมัติ สำหรับข้อมูลเพิ่มเติม ให้ดูหัวข้อ "หลักคุณสมบัติ" และ "คุณสมบัติเฉพาะ" ในวิธีใช้ DAO?
หมายเหตุnbsp สามารถมี มากที่สุด ดัชนีหลักหนึ่งในตาราง(&N)?
m_bUnique
บ่งชี้ว่า วัตถุดัชนีแสดงดัชนีที่ไม่ซ้ำสำหรับตาราง หากคุณสมบัตินี้เป็นจริงวัตถุดัชนีแสดงถึงดัชนีที่ไม่ซ้ำ ดัชนีที่ไม่ซ้ำที่ประกอบด้วยเขตข้อมูลอย่าง น้อยหนึ่งที่ในเชิงตรรกะจัดเรียงระเบียนทั้งหมดในตารางใบสั่งเฉพาะ การกำหนดไว้ล่วงหน้า ถ้าดัชนีประกอบด้วยเขตข้อมูลหนึ่ง ค่าในเขตข้อมูลนั้นต้องไม่ซ้ำกันสำหรับตารางทั้งหมด ถ้าดัชนีประกอบด้วยเขตข้อมูลมากกว่าหนึ่ง แต่ละเขตข้อมูลสามารถประกอบด้วยค่าซ้ำกัน แต่ต้องไม่ซ้ำกันแต่ละชุดของค่าจากเขตข้อมูลของดัชนีทั้งหมด?
ถ้าคุณสมบัติทั้งเอกลักษณ์และหลักของวัตถุดัชนีถูกตั้งค่าเป็นTRUEดัชนีไม่ซ้ำกัน และหลัก: จะระบุเร็กคอร์ดทั้งหมดในตารางในลำดับกำหนดไว้ล่วงหน้า ลอจิคัล ถ้าคุณสมบัติหลักถูกตั้งค่าเป็นFALSEดัชนีคือ ดัชนีแบบทุติยภูมิ ดัชนีรอง (ทั้งคีย์ และไม่) จัดเรียงระเบียนในลำดับกำหนดไว้ล่วงหน้าโดยไม่ต้องทำหน้าที่เป็นตัวระบุสำหรับระเบียนในตารางในเชิงตรรกะ?
สำหรับข้อมูลเพิ่มเติม ให้ดูหัวข้อ "หลักคุณสมบัติ" และ "คุณสมบัติเฉพาะ" ในวิธีใช้ DAO?
m_bClustered
บ่งชี้ว่า วัตถุดัชนีแสดงดัชนีแบบคลัสเตอร์สำหรับตาราง หากคุณสมบัตินี้เป็นจริงวัตถุดัชนีแสดงดัชนีกลุ่ม มิฉะนั้น ดังกล่าวไม่ ดัชนีแบบคลัสเตอร์ประกอบอย่างใดอย่างหนึ่ง หรือมากกว่า nonkey เขตข้อมูลที่นำมารวมกัน จัดเรียงระเบียนทั้งหมดในตารางในลำดับกำหนดไว้ล่วงหน้า ข้อมูลในตารางถูกตามตัวอักษรเก็บไว้ในลำดับที่ระบุ โดยดัชนีคลัสเตอร์กับดัชนีแบบคลัสเตอร์ ดัชนีแบบคลัสเตอร์ให้มีประสิทธิภาพเข้ากับระเบียนในตาราง สำหรับข้อมูลเพิ่มเติม ให้ดูหัวข้อ "จับกลุ่มคุณสมบัติ" ในวิธีใช้ DAO?
หมายเหตุnbsp Clustered คุณสมบัติจะถูกละเว้นสำหรับฐานข้อมูลที่ใช้ Microsoft Jet database engine เนื่องจาก Jet database engine ไม่สนับสนุนดัชนีคลัสเตอร์(&N)?
m_bIgnoreNulls
บ่งชี้ว่า มีรายการดัชนีสำหรับระเบียนที่มีค่า Null ในเขตข้อมูลของดัชนี หากคุณสมบัตินี้เป็นจริงเขตข้อมูลที่ มีค่า Null ไม่มีรายการดัชนี ทำให้การค้นหาระเบียนโดยใช้เขตข้อมูลได้รวดเร็วขึ้น คุณสามารถกำหนดดัชนีสำหรับเขตข้อมูล ถ้าคุณอนุญาตให้มีรายการค่า Null ในเขตข้อมูลมีการทำดัชนี และคาดว่าหลายรายการเพื่อเป็นค่า null คุณสามารถตั้งค่าคุณสมบัติ IgnoreNulls สำหรับวัตถุที่ดัชนีเป็นจริงเพื่อลดจำนวนของพื้นที่เก็บข้อมูลที่ใช้ในดัชนี การตั้งค่าคุณสมบัติ IgnoreNulls และการตั้งค่าคุณสมบัติจำเป็นร่วมกันกำหนดว่า ระเบียนที่ มีค่า Null ดัชนีมีรายการดัชนี ตามแสดงในตารางต่อไปนี้?
| IgnoreNulls | ต้องระบุ | ไม่มีค่าในฟิลด์ดัชนี |
| จริง | เท็จ | ค่า null ที่ได้รับอนุญาต ไม่มีรายการดัชนีที่เพิ่ม? |
| เท็จ | เท็จ | ค่า null ที่ได้รับอนุญาต รายการดัชนีที่เพิ่ม? |
| True หรือ False | จริง | ค่า null ที่ไม่ได้รับอนุญาต ไม่มีรายการดัชนีที่เพิ่ม? |
สำหรับข้อมูลเพิ่มเติม ให้ดูหัวข้อ "IgnoreNulls คุณสมบัติ" ในวิธีใช้ DAO?
m_bRequired
บ่งชี้ว่า วัตถุดัชนีดาวต้องมีค่าไม่เป็น Nullหากคุณสมบัตินี้เป็นจริงวัตถุดัชนีไม่อนุญาตให้ค่า Null สำหรับข้อมูลเพิ่มเติม ให้ดูหัวข้อ "จำเป็นต้องใช้คุณสมบัติ" ในวิธีใช้ DAO?
เคล็ดลับnbsp เมื่อคุณสามารถตั้งค่าคุณสมบัตินี้สำหรับวัตถุดัชนีดาวหรือวัตถุเขตข้อมูล (ที่มีอยู่ โดยมี tabledef, recordset หรือวัตถุ querydef), ตั้งค่าสำหรับวัตถุเขตข้อมูล มีการตรวจสอบความถูกต้องของการตั้งค่าคุณสมบัติสำหรับเขตข้อมูลวัตถุก่อนว่าวัตถุดัชนี(&N)?
m_bForeign
บ่งชี้ว่า ดัชนีวัตถุแทน foreign key ในตาราง หากคุณสมบัตินี้เป็นจริงดัชนีแทน foreign key ในตารางนั้น Foreign key ประกอบด้วย น้อยหนึ่งเขตข้อมูลในตารางนอกซึ่งจะระบุแถวในตารางหลัก Microsoft Jet database engine สร้างดัชนีวัตถุสำหรับตารางต่างประเทศ และตั้งค่าคุณสมบัติต่างประเทศเมื่อคุณสร้างความสัมพันธ์ที่บังคับให้มี referential integrity สำหรับข้อมูลเพิ่มเติม ให้ดูหัวข้อ "คุณสมบัติต่างประเทศ" ในวิธีใช้ DAO?
m_lDistinctCount
บ่งชี้ว่า จำนวนของค่าไม่ซ้ำกันสำหรับวัตถุที่ดัชนีที่มีอยู่ในตารางเกี่ยวข้อง การตรวจสอบคุณสมบัติ DistinctCount เพื่อพิจารณาจำนวนค่าที่ไม่ซ้ำกัน หรือแป้น ในดัชนี คีย์ใด ๆ จะนับเพียงครั้งเดียว ถึงแม้ว่าอาจจะมีเกิดขึ้นหลายครั้งของค่านั้นถ้าดัชนีช่วยให้ค่าที่ซ้ำกัน ข้อมูลนี้มีประโยชน์ในโปรแกรมประยุกต์ที่พยายามเข้าถึงข้อมูลการปรับให้เหมาะสม โดยประเมินดัชนีข้อมูล จำนวนค่าที่ไม่ซ้ำกันเป็นที่รู้จักกันที่ cardinality ของวัตถุดัชนี คุณสมบัติ DistinctCount จะไม่เป็นจำนวนแป้นที่แท้จริงในเวลาเฉพาะเสมอ ตัวอย่าง การเปลี่ยนแปลงที่เกิดขึ้นจากการย้อนกลับธุรกรรมจะไม่มีผลทันทีในคุณสมบัติ DistinctCount สำหรับข้อมูลเพิ่มเติม ให้ดูหัวข้อ "DistinctCount คุณสมบัติ" ในวิธีใช้ DAO?
ความคิดเห็น
ข้อมูลที่ดึงข้อมูล โดยฟังก์ชันGetIndexInfoสมาชิกของวัตถุ tabledef ถูกเก็บไว้ในโครงสร้างแบบCDaoIndexInfo เรียกใช้ฟังก์ชันของชุดเก็บรวบรวมดัชนีซึ่งมีวัตถุดัชนีจะถูกเก็บวัตถุ tabledef ประกอบด้วยสมาชิกGetIndexInfo CDaoIndexInfoยังกำหนดฟังก์ชันการถ่ายโอนข้อมูลสมาชิกในการสร้างการตรวจแก้จุดบกพร่อง คุณสามารถใช้ถ่ายโอนข้อมูลเพื่อการถ่ายโอนข้อมูลเนื้อหาของวัตถุCDaoIndexInfo?
สำหรับข้อมูลเกี่ยวกับการใช้และโครงสร้างอื่น ๆ ข้อมูล DAO MFC นี้ ให้ดูบทความ DAO คอลเลกชัน: การขอรับข้อมูลเกี่ยวกับดาววัตถุในVisual c ++ Programmer ของคำแนะนำ?
ดูเพิ่มเติมnbspCDaoTableDef::GetIndexInfo(&N)