IMS DB - 逻辑数据库
IMS 数据库有一条规则,即每种段类型只能有一个父级。这限制了物理数据库的复杂性。许多 DL/I 应用程序需要复杂的结构,允许一个段具有两个父段类型。为了克服这一限制,DL/I 允许 DBA 实现逻辑关系,其中段可以同时具有物理和逻辑父级。我们可以在一个物理数据库中创建其他关系。实现逻辑关系后的新数据结构称为逻辑数据库。
逻辑关系
逻辑关系具有以下属性 −
逻辑关系是两个段之间的路径,它们在逻辑上相关,但在物理上不相关。
通常在单独的数据库之间建立逻辑关系。但是,一个特定数据库的各个段之间可以存在关系。
下图显示了两个不同的数据库。一个是学生数据库,另一个是图书馆数据库。我们在学生数据库的"已发行图书"段和图书馆数据库的"图书"段之间创建逻辑关系。
这是创建逻辑关系时逻辑数据库的样子 −
逻辑子段
逻辑子段是逻辑关系的基础。它是一个物理数据段,但对于 DL/I,它看起来好像有两个父段。上例中的图书段有两个父段。已发行图书段是逻辑父段,而图书馆段是物理父段。一个逻辑子段出现只有一个逻辑父段出现,一个逻辑父段出现可以有许多逻辑子段出现。
逻辑孪生
逻辑孪生是逻辑子段类型的出现,它们都从属于逻辑父段类型的单个出现。DL/I 使逻辑子段看起来类似于实际的物理子段。这也称为虚拟逻辑子段。
逻辑关系的类型
DBA 在段之间创建逻辑关系。要实现逻辑关系,DBA 必须在所涉及的物理数据库的 DBDGEN 中指定它。有三种类型的逻辑关系 −
- 单向
- 双向虚拟
- 双向物理
单向
逻辑连接从逻辑子节点到逻辑父节点,不能反过来。
双向虚拟
允许双向访问。物理结构中的逻辑子节点和相应的虚拟逻辑子节点可以看作是成对的段。
双向物理
逻辑子节点是物理和逻辑父节点的物理存储下属。对于应用程序来说,它看起来与双向虚拟逻辑子项相同。
编程注意事项
使用逻辑数据库的编程注意事项如下 −
访问数据库的 DL/I 调用也与逻辑数据库相同。
程序规范块指示我们在调用中使用的结构。在某些情况下,我们无法识别我们正在使用逻辑数据库。
逻辑关系为数据库编程增加了一个新的维度。
使用逻辑数据库时必须小心,因为两个数据库是集成在一起的。如果您修改一个数据库,则相同的修改必须反映在另一个数据库中。
程序规范应指示允许在数据库上进行哪些处理。如果违反了处理规则,您将获得非空白状态代码。
连接段
逻辑子段始终以目标父段的完整连接键开头。这称为目标父段连接键 (DPCK)。您需要始终在逻辑子段的段 I/O 区域的开头编码 DPCK。在逻辑数据库中,连接段将在不同物理数据库中定义的段之间建立连接。连接段由以下两个部分组成 −
- 逻辑子段
- 目标父段
逻辑子段由以下两个部分组成 −
- 目标父级连接键 (DPCK)
- 逻辑子级用户数据
当我们在更新期间使用连接段时,可能只需一次调用即可添加或更改逻辑子级和目标父级中的数据。这也取决于 DBA 为数据库指定的规则。对于插入,请在正确的位置提供 DPCK。对于替换或删除,请勿更改连接段任何部分的 DPCK 或序列字段数据。