So let me see if I can clarify things a little bit here. The result of this is nothing more than an organizations structure that will populate a tree control. Anyway, the idea would be that when a user clicks on one of the tree nodes, the right hand pane would display all of the appropriate modules. So for example, depending on what node (using your ex., Employee, Manager, Clerk) different modules would be populated on the right side pane.
So what you're doing is something else. I really fail to see why you've stuffed all that data into a single table, I mean, why is 'product' in the same table as 'company' ?
Well, I don't believe I'm really doing anything much different than what you suggested with supertypes/subtypes. I'm not attempting to stuff product and company entites into the same table. These are infact to seperate entities. In general, the org table consist of the following:
OrgId, OrgName, OrgParent, OrgType where the orgParent would reference the OrgId of it's parent and OrgType would specify the reference to the assoicated entity. No detail info of product or company would be present, that's where the OrgType comes in.
It's just I need a way to build an organizational structure which consists of references to the product and company entities.
(Wow, I may not be wording this as correctly as is possible).
Which is why your purposed method of using supertype and subtypes seems like it might be a good solution. Comments?