FHS - Family File Description


SOME BACKGROUND
Much of the time that I have spent on mainframe computers, from the early 1970's to the present, has been involved with an IBM database manager called IMS (Information Management System). The database files managed by IMS are designed to store complex, variable length records of information in a very efficient manner. When I first began writing a program for "computerising" the information in a booklet that recorded the descendants of a 5th generation ancestor of mine, it seemed natural to design the family file along the lines of an IMS database. Let me take a few moments then to describe some of the characteristics of an IMS database in terms that I will go on to use in describing the FHS family file format.

In an IMS database, a database record consists of all items of information concerning a particular instance of the subject of the database. For instance, if it were a database of schools, a database record for a school would include all items of information about the school. Of course within a complete database record, some items of information are more closely related to one another than to other items in the record. It is common to group logically related items of information together. For instance, in a database record for a school, information about teachers might be grouped separately from information about classrooms.

In IMS terminology, a group of related items of information would be called a SEGMENT of the database, and in the example of a database of schools, all information about a teacher might be placed in a "Teacher Segment", with similar, but separate, segments for each teacher. Similarly, all information about a student would be placed in a "Student Segment", with similar, but separate, segments for each student. In this way a complete database record is broken down into many segments, with similar segments being grouped together as well. Typically, the primary subject of the database, here the school, would be represented by a single segment of items of information which are unique to the subject, such as the name of the school, an identifying code, etc.

It is common to think of an IMS database record diagrammagically as a hierarchical arrangement of these SEGMENTs of information, with the single segment of information about the main subject of the database at the top, and other segments arranged beneath it, with similar SEGMENTs grouped together. For example:

               +--------+
               ! School !
               +----+---+
                    !
             +------+-----+----------+-------->
             !            !          !
        +----+---+   +----+---+  +---+----+
       +--------+!  +--------+!  ! Address!
       ! Teacher!+  ! Student!+  +--------+
       +--------+   +--------+
where each segment of information is represented by a box, with groups of similar segments being represented by "stacked" boxes. Here the top segment is called the ROOT segment of the database record and subordinate segments are called CHILD segments...the ROOT Segment is called the PARENT of its children, and each occurrence of similar types of CHILD segments is called a TWIN. (You can see why it seemed natural to me to use the IMS database model for designing a family file structure.)

IMS databases are designed so that a database record can allow for many types of segments, with many occurences of each segment type, and yet not have to "reserve" space for segments which may not be used within a particular database record. This is done by storing each segment of information separately in the database file and using "pointer" fields to join together the segments that make up a complete database record. In this way, the only space that has to be reserved ahead of time is that for the very small "pointer" field. Further, the segments are joined together in such a way that only a single pointer field is required for each "group" of similar CHILD segment types.

Before going on to see how these ideas were used in the design of the FHS family file format, let me mention that, when storing IMS databases on disks, it is common to store certain segments of information separately from others (sometimes the grouping of segment types is based upon some physical characteristic, such as the total length of the items of information in the segment, at other times it is based upon the "logical" relationship of the segment to other types). Each disk file of related segments is called a DATASET. The complete set of Datasets with all of the segments of information is called the Database FILE.

FHS FAMILY FILE DESIGN
The FHS Family File design employs 11 SEGMENT Types, using the terminology described above. You may want to look at the FHS Family File Structure Diagram to see how these segments are logically related. The Family File SEGMENT types are:

You will notice that there are no segments for the parents or children of an individual, although they are shown in the Family File diagram. Actually, the parents and children are represented by NAME segments so there is no need for a separate segment type for them. Each name record simply contains "pointer" fields for the Father, Mother which you fill in with the record numbers of each parent. The software maintains other "pointer fields" in the Name record for Oldest Child, Next Oldest Paternal Sibling, and Next Oldest Maternal Sibling, which, together with the parent pointers, permit maintaining a full record of "blood" relationships.

In the FHS manuals I have used the term RECORD instead of SEGMENT to refer to each of these groupings of information items. The "records" are stored on disk in three different datasets (you might think of each of these datasets as a box of 3x5 cards, or as a file drawer in a file cabinet). The datasets are:

An FHS Family File consists of these three datasets containing all of the information about individuals in the family. To make a backup copy of all of your family information you need only create copies of those three datasets.

If you are interested in a more detailed description of the way that individual items of information are stored in the different FHS Segments or Records, look at the Field Description Document or the Microsoft Basic Record Definitions for the FHS family file.