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