Designing a conceptual data structure
Analyzing the mappings from all the local views is one of the first steps in designing a conceptual data structure.
Two kinds of mappings affect the segments: one-to-many and many-to-many.
A one-to-many mapping means that for each segment A there are one or more segment Bs; shown like this: A ◄────────►► B. For example, in the Current Roster shown in Local view of a business process, there is a one-to-many relationship between course and class. For each course, there can be several classes scheduled, but a class is associated with only one course. A one-to-many relationship can be represented as a dependent relationship: In the course/class example, the classes are dependent on a particular course.
A many-to-many mapping means that for each segment A there are many segment Bs, and for each segment B there are many segment As. This is shown like this: A ◄◄────────►► B. A many-to-many relationship is not a dependent relationship, since it usually occurs between data aggregates in two separate data structures and indicates a conflict in the way two business processes need to process that data.
When you implement a data structure with DL/I, there are three strategies you can apply to solve data conflicts:
- Defining logical relationships
- Establishing secondary indexes
- Storing the data in two places (also known as carrying duplicate data).
The first step in designing a conceptual data structure is to combine the mappings of all the local views. To do this, go through the mappings for each local view and make a consolidated list of mappings (see the following table). As you review the mappings:
- Do not record duplicate mappings. At this stage you need to cover each variation, not each occurrence.
- If two data aggregates in different local views have opposite mappings, use the more complex mapping. This will include both mappings when they are combined. For example, if local view #1 has the mapping A ◄────────►► B, and local view #2 has the mapping A ◄◄────────► B, use a mapping that includes both these mappings. In this case, this is A ◄◄────────►► B.
Mapping | Local view |
---|---|
Course ◄────────►► Class | 1, 2, 4 |
Class ◄────────►► Student | 1 |
Class ◄────────►► Instructor | 1 |
Customer/location ◄────────►► Student | 1 |
Instructor ◄────────►► Course | 3, 4 |
Using the combined mappings, you can construct the data structures shown in the following figure.

Two conflicts exist in these data structures. First, STUDENT is dependent on both CUST and CLASS. Second, there is an opposite mapping between COURSE and INSTR, and INSTR and COURSE. If you implemented these structures with DL/I, you could use logical relationships to resolve the conflicts.