Ims Db 简明教程
IMS DB - Logical Database
IMS数据库有一条规则,即每个段类型只能有一个父段。这就限制了物理数据库的复杂性。许多DL/I应用程序需要一个复杂结构,它允许一个段具有两个父段类型。为了克服这一限制,DL/I允许DBA实现逻辑关系,其中一个段可以具有物理父段和逻辑父段。我们可以在一个物理数据库中创建其他关系。实现逻辑关系之后的新数据结构称为逻辑数据库。
Logical Relationship
逻辑关系具有以下属性 −
-
逻辑关系是两个在逻辑上(而非物理上)相关的段之间的路径。
-
通常,在单独的数据库之间建立逻辑关系。但一个特定数据库的段之间也是有可能建立关系的。
下图显示了两个不同的数据库。一个是学生数据库,另一个是图书数据库。我们在学生数据库中的“已借阅书籍”段和图书数据库中的“书籍”段之间创建逻辑关系。
创建逻辑关系后,逻辑数据库如下所示 −
Logical Child Segment
逻辑子段是逻辑关系的基础。它是一个物理数据段,但对于DL/I来说,它看起来好像有两个父段。上面示例中的“书籍”段有两个父段。“已借阅书籍”段是逻辑父段,而“图书”段是物理父段。一个逻辑子段实例只有一个逻辑父段实例,并且一个逻辑父段实例可以具有许多逻辑子段实例。
Types of Logical Relationships
DBA在段之间创建逻辑关系。为了实现逻辑关系,DBA必须在所涉及的物理数据库的DBDGEN中指定它。有三种类型的逻辑关系 −
-
Unidirectional
-
Bidirectional Virtual
-
Bidirectional Physical
Programming Considerations
使用逻辑数据库的编程注意事项如下 −
-
访问数据库的DL/I调用在逻辑数据库中仍然相同。
-
程序规范块指示我们在调用中使用的结构。在某些情况下,我们无法识别我们正在使用一个逻辑数据库。
-
逻辑关系为数据库编程增加了新维度。
-
使用逻辑数据库时必须谨慎,因为两个数据库被集成在一起了。如果修改一个数据库,同样的修改必须反应在另一个数据库中。
-
程序规范应该指明什么处理被允许用在一个数据库上。如果违反了处理规则,你就会得到一个非空白状态码。
Concatenated Segment
一个逻辑子段总是以目标父级的完整串联键开头。这被称为目标父级串联键 (DPCK)。对于逻辑子级的段 I/O 区域,你始终需要在开头编码 DPCK。在一个逻辑数据库中,串联段使得在不同物理数据库中定义的段之间形成连接。一个串联段包括以下两部分:
-
Logical child segment
-
Destination parent segment
一个逻辑子级段包括以下两部分:
-
目标父级串联键 (DPCK)
-
Logical child user data
在更新期间处理串联段时,有可能通过一个调用添加或修改逻辑子级和目标父级中的数据。这还取决于 DBA 为数据库指定的规则。对于一个插入,将 DPCK 放置在正确的位置。对于一个替换或删除,不要更改串联段的任何部分中的 DPCK 或序列字段数据。