Denver > >Assuming that Person contains a collection of Roles with a pointer to the applicable >PersonRole subclass object ID, why? do you mean collection in Cache terms as in property Roles as PersonRole [collection=list/array] ??
I think there is a place for both implementations If Denver is doing a Medical Records system then it is absolutely necessary to keep data separate- a Doctor may become a Patient at the same hospital but his employment records must be kept separate from treatment records, abstraction with separate extents is cool If Peter is doing a HR system for an individual client then it is necessary to be able to find all the roles that a person has been involved in from time to time (project lead on proj A, head of tea committee...), a single Extent makes this much easier So we both have the same model but Peter sub classes and has a single Extent, Denver abstracts for implementation on a case by case basis keeping the data in separate extents Peter > >In others words, the solution is for a Person to have pointers to all his Roles. >[An alternative is for system maintenance to locate every PersonRole subclass and >search it for the Person.] > >Making PersonRole abstract means that the persistent Employee subclass data and the >persistent Patient subclass data are stored separately and are unlikely to be >accidentally queried since typically Role must be specified in order to find any data.
