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