Logical relationship types

Three types of logical relationships are discussed in this topic.

The three types of logical relationships are:

Unidirectional logical relationships

A unidirectional relationship links two segment types, a logical child and its logical parent, in one direction. A one-way path is established using a pointer in the logical child. The following figure shows a unidirectional relationship that has been established between the ORDER and ITEM databases. A unidirectional relationship can be established between two segment types in the same or different databases. Typically, however, a unidirectional relationship is created between two segment types in different databases. In the figure, the logical relationship can be used to cross from the ORDER to the ITEM database. It cannot be used to cross from the ITEM to the ORDER database, because the ITEM segment does not point to the ORDER database.

Figure 1. Unidirectional logical relationship
Figure description: ORDITEM segments in the ORDER database point to ITEM segments in the ITEM database.

It is possible to establish two unidirectional relationships, as shown in the following figure. Then either physical database can be entered and the logical child in either can be used to cross to the other physical database. However, IMS treats each unidirectional relationship as a one-way path. It does not maintain data on both paths. If data in one database is inserted, deleted, or replaced, the corresponding data in the other database is not updated. If, for example, DL/I replaces ORDITEM-SCREWS under ORDER-578, ITEMORD-578 under ITEM-SCREWS is not replaced. This maintenance problem does not exist in both bidirectional physically paired-logical and bidirectional virtually paired-logical relationships. Both relationship types are discussed next. IMS allows either physical database to be entered and updated and automatically updates the corresponding data in the other database.

Figure 2. Two unidirectional logical relationships
ORDITEM SCREWS is physical child of ORDER 578 in ORDER database and logical child of ITEM SCREWS in ITEM database. ITEMORD 578 is physical child of ITEM SCREWS and logical child of ORDER 578.

Bidirectional physically paired logical relationship

A bidirectional physically paired relationship links two segment types, a logical child and its logical parent, in two directions. A two-way path is established using pointers in the logical child segments. The following figure shows a bidirectional physically paired logical relationship that has been established between the ORDER and ITEM databases.

Figure 3. Bidirectional physically paired logical relationship
ITEM BOLT and ITEM WASHER each have a phys. child ITEMORD 123, log. children of ORDER 123. ORDER 123 is phys. parent of ORDITEM BOLT and ORDITEM WASHER, log. children of ITEM BOLT and ITEM WASHER.

Like the other types of logical relationships, a physically paired relationship can be established between two segment types in the same or different databases. The relationship shown in the figure above allows either the ORDER or the ITEM database to be entered. When either database is entered, a path exists using the logical child to cross from one database to the other.

In a physically paired relationship, a logical child is stored in both databases. However, if the logical child has dependents, they are only stored in one database. For example, IMS maintains data in both paths in physically paired relationships. In the figure above, if ORDER 123 is deleted from the ORDER database, IMS deletes from the ITEM database all ITEMORD segments that point to the ORDER 123 segment. If data is changed in a logical child segment, IMS changes the data in its paired logical child segment. Or if a logical child segment is inserted into one database, IMS inserts a paired logical child segment into the other database.

With physical pairing, the logical child is duplicate data, so there is some increase in storage requirements. In addition, there is some extra maintenance required because IMS maintains data on two paths. In the next type of logical relationship examined, this extra space and maintenance do not exist; however, IMS still allows you to enter either database. IMS also performs the maintenance for you.

Bidirectional virtually paired logical relationship

A bidirectional virtually paired relationship is like a bidirectional physically paired relationship in that:

  • It links two segment types, a logical child and its logical parent, in two directions, establishing a two-way path.
  • It can be established between two segment types in the same or different databases.

The figure below shows a bidirectional virtually paired relationship between the ORDER and ITEM databases. Note that although there is a two-way path, a logical child segment exists only in the ORDER database. Going from the ORDER to the ITEM database, IMS uses the pointer in the logical child segment. Going from the ITEM to the ORDER database, IMS uses the pointer in the logical parent, as well as the pointer in the logical child segment.

Figure 4. Bidirectionally virtually paired logical relationship
ORDITEM BOLT and ORDITEM WASHER are physical children of ORDER 123 and logical children of ITEM BOLT and ITEM WASHER, respectively.

To define a virtually paired relationship, two logical child segment types are defined in the physical databases involved in the logical relationship. Only one logical child is actually placed in storage. The logical child defined and put in storage is called the real logical child. The logical child defined but not put in storage is called the virtual logical child.

IMS maintains data in both paths in a virtually paired relationship. However, because there is only one logical child segment, maintenance is simpler than it is in a physically paired relationship. When, for instance, a new ORDER segment is inserted, only one logical child segment has to be inserted. For a replace, the data only has to be changed in one segment. For a delete, the logical child segment is deleted from both paths.

Note the trade-off between physical and virtual pairing. With virtual pairing, there is no duplicate logical child and maintenance of paired logical children. However, virtual pairing requires the use and maintenance of additional pointers, called logical twin pointers.