  With the use of object-oriented languages for HEP, many experiments have
designed their data objects to contain direct references to other objects in
the event (e.g., tracks and electromagnetic showers have references to each
other to denote matches). Unfortunately this creates tremendous dependencies
between packages which lead to brittle development systems (e.g., if the
electromagnetic code has a problem you may not be able to compile the tracking
code) and makes the storage system more complex.
  We discuss how the CLEO III experiment avoided these problems by treating an
event as an object-relational database. The discussion will include: the
constraints we placed on our objects; our use of a separate Association class
to deal with inter-object references; and our ability to use multiple sources
to supply different data items for one event.
