Excel Spreadsheet with Illustrative EAS Documentation:

The above Excel file contains an extract from the Entity-Attribute-Set (EAS) documentation of a complex database system used in the management of 401(k) retirement plans. A previous attempt to document an earlier version of this application system, using arrows to represent 1-1, 1-n, n-1 and m-n relationships, was exceedingly cumbersome because of a large number of criss-crossing arrows. For our present purposes we have extracted four (of 20) pages worth of entities represented in the system, to illustrate the use of the EAS table format. We will not attempt to explain all entries in the EAS table. Our objective, rather, is to explain enough to illustrate the modeling of a complex system in terms of Entities, Attributes and Sets, and the use of an EAS table to record such a view of the application system.

This EAS table (from which our example was extracted) proved extremely valuable for reviewing precisely how a particular aspect of the application system was modeled during the design of the system, its implementation, and subsequent review and augmentation. Considerable discipline, however, is required to keep the documentation and implementation synchronized, as compared to the SIMSCRIPT [I] Definition Form which was both documentation and “program.”

While the application system was modeled in EAS terms (sometimes also referred to as the “network” view of database programming; see Date ( ) the application was implemented using a relational database manager, since that was what was commercially available for large, critical applications. In such an implementation, entity types are represented by relational tables, individual entities by rows in tables, and attributes by columns.   Sets can be represented in different ways depending on the need to retrieve members efficiently. The simplest (and least efficient) is to write the owner’s name or ID as an attribute (datafield) of the member. To obtain all members of the set associated with a given owner, select all members with the particular attribute equal to the owner’s name or ID.A more efficient way is to store a list of the primary key IDs of the members of the set in a long text attribute of the owner.

The first column of the EAS Documentation File indicates the contents of each row. Specifically, in each row the entry in the first column is either:

   ENT  the row presents an entity type;
   ATT  row describes an attribute of the previously mentioned entity type;

   SET  the row describes a set owned by the entity type;

   COM  the row contains a comment.

Names of entity types start in the second column of the table, and may spread over subsequent columns. Names of attributes start in the third column of the table and may spread to subsequent columns. Set names are listed in the fourth column of the table.

The fifth column of the table contains the entity types – either user defined or system defined types – of the members of the set listed in Column 4, or of the value of the attribute listed in Column 3.   For example, the first entity type listed in the table is “The_SYSTEM”   representing the application system as a whole.   The last line of information noted for The_SYSTEM is that it owns a set called Fed_tax_brackets. Column 5 indicates that the members of this set are entities of type Inc_tax_bracket.   Glance down column 2 to find Inc_tax_bracket, the indicated entity type. We see that attributes of Inc_tax_bracket include From_income, To_income and Marginal_rate_pct. yes">  These attributes record the start and end of the tax bracket and the marginal rate within it.

The_SYSTEM owns 16 sets.   Some of these contain types of entities which are not included in the extract. Examples of types of entities in sets owned by The_SYSTEM include Sponsors (companies that provide the 401(k) plans), Record_Keepers who keep track of the official information in the plan for the individual participants, and Event_log_entry contained in The_SYSTEM owned set, Transaction_log_book.   The eighth set owned by The SYSTEM is named Partcpnt_auth_memos for “participant authorization memos”, and contains entities of type “Authorization_memo”. Authorization_memo is the fourth entity type listed in the extract.

It is often convenient to know which other entity types refers to a given entity type, either as the value of an attribute or the member of a set. Towards this end, the last column of the documentation table, under the heading “comment/cross references,” includes the entity types which reference a given type.   In particular, we see on the ENT line of Authorization_memo, that entities of this type are members of a set owned by The_SYSTEM and by Person.   In Column 3 we see that attributes of Authorization_memo include its own ID, a Social Security number, a participant ID, the participant’s PIN number, a question which the participant has supplied and the participant’s answer to this question, a flag indicating whether the PIN can be changed interactively (permitted by some plan sponsors and not others), and the date of the last PIN change.

The number of characters in text variables is indicated in the next to the last column of the documentation table.

The fifth type of entity listed (on page 2 of the extract) is Person. Under cross references we see that Person is pointed to (as the value of an attribute) by entities of type Person, Authorization_memo, GC_case, Session, Transaction_log_entry, Event_log_entry, Error_log_entry, and Expenses_worksheet.   “II” indicates the start of cross references due to attributes pointing rather than sets containing.   “>” on lines following the ENT line indicate that cross references are continued.

Attributes of Person include an internal ID, first name, last name, middle initial, birth date, Social Security number, gender, Contact_info (a many-attribute entity type not shown here), country of legal residence, etc. “Spouse” is an attribute of Person whose value, if not null, is another Person.   Person owns a set named Sign_ons.   This set contains entities of type Authorization_memo, discussed above.   A second set, named Dependents, includes entities of type Dependent.   The attributes of Dependent are listed as the next entity-type. Other sets owned by Person include, as members, entities of type Account, Portfolio and Planned_Disbursement.

On the same page of the extract we see that a planned disbursement has, as one of its attributes, the Dependent for which this disbursement is to be made. The comment indicates that the entry should be zero if not for college.   Other attributes indicate Period (monthly, quarterly, semi-annual or annual), Amount, Start_date and End_date for the planned disbursement.

On page 3 we see that entities of type Account own eight sets including ones named Beneficiaries, Portfolios and Archived_cases.   The members of these sets are, respectively, entities of type Beneficiary, Portfolio and GC_case.

Entities of type Portfolio are described next in the extract. yes">  Entities of this type own a set called Positions whose members are of type Position.   Entities of type Position are described next.   Each Position remembers, as values of its attributes, its own ID and those of the Security, Portfolio and Person involved.   Attributes also remember quantity and value.

SIMSCRIPT [I] and II and [TJW]EAS-E refer to the Cartesian product of two or more entity types as a “compound entity”.   Compound entities appear frequently in the total documentation for the application system discussed here, but not often in the extract. yes">  The only instance is that of a (Person, Comp_type) combination referred to in the extract as Person_Comp_type. yes">  This compound entity remembers, as values of its attributes, the account and the compensation type involved, as well as other information. Compensation type, documented just below in the extract, belongs to sets owned by three entity types, and pointed at as attributes of two entity types.   The entity type Eligible_comp_type (ECT, for short) is used to remember which compensation types are included in some aspect of a 401(k) plan. yes">  The Eligible_comp_type is itself pointed at by a compound entity PCH_ECT that represents a combination of a plan, a tax category, a “highly-compensated-employee-or-not” flag, and an ECT. This compound entity, not shown in the extract, includes plan information such as contribution limits and company matching rules.

A 401(k) system with its sponsors, record keepers, participants, accounts, portfolios, positions, and so on is a complex application system. yes">  We found that an EAS table, part of which is presented here, is quite serviceable in keeping track of the database design, and guiding its implementation.   In particular, this documentation was vastly clearer than the entity-relationship m-n diagrams used to document an earlier draft of the system.