Informix 中地理数据库 (geodatabase) 内的密钥集表
在以下情况下将使用密钥集表来存储一组所选的行:ArcGIS Desktop 客户端执行使用整型、数值型、日期型或字符串型属性来连接表的地理数据库关系查询。
正如有关 Informix 的 ArcSDE 日志文件表配置选项中所述,日志文件表存储所选要素的 objectid。密钥集表用于保存使用 objectid 以外的属性的连接。
当数据库查询中的源选择集超过 99 行时,将在每次会话中为每个连接创建一个密钥集表。
ArcGIS Desktop 中的密钥集表
ArcGIS Desktop 中无法显示密钥集表。但是,以下操作可创建和填充密钥集表:在 ArcMap 中从某个关系类所涉及的要素类中选择超过 99 条记录,然后打开属性表,并使用“选项”菜单中的“关联表”列表检索相关表。启动编辑会话时也会创建密钥集表。
IBM Informix 数据库中的密钥集表
只有发生以下两种情况之一时,地理数据库中才会出现密钥集表:
- 通过 ArcGIS Desktop 进行限定选择
- 启动编辑会话
发生以上两种情况之一时,密钥集表将创建为全局临时表。第一种情况会创建并填充密钥集表。第二种情况将仅创建密钥集表,而在做出限定选择后才会对其进行填充。
密钥集表名称包括引发密钥集表创建操作的用户的名称以及用户会话的进程标识号。格式如下:
<owner>.keyset_<process_id>
密钥集表将存储每个选择集的密钥集 ID 号以及确定要素类间关系时所依据的字段的值。
因为密钥集表是临时表,所以在用户与数据库断开连接时会被删除。
以下是在相关表 LATERALS 与 CONTRACTORS 之间执行选择时创建的密钥集表。在本例中,将对 LONG_VAL 字段进行填充,该字段包含 LATERALS 与 CONTRACTORS 之间的关系类所依据的 CONTRACTOR_ID 字段的值。
虚线表示各列之间的隐含关系。
<owner>.keyset_<process_id>
以下是 Informix 中密钥集表的定义:
字段名 |
字段类型 |
描述 |
是否允许为空 |
---|---|---|---|
keyset_id |
integer |
密钥集选择内容的标识符 |
NOT NULL |
long_val |
integer |
关系类所依据的字段的值,前提是该字段为数值字段 | |
str_val |
varchar(255) |
关系类所依据的字段的值,前提是该字段为字符串字段 | |
dbl_val |
double |
关系类所依据的字段的值,前提是该字段为双精度字段 | |
date_val |
datetime year to second |
关系类所依据的字段的值,前提是该字段为日期字段 |
XML 文档中的密钥集表
密钥集表是一种临时表,因而不存储在 XML 文档中。