Let's say we have a list of subcontractors. Now subcontractors can either 1) hire workers to do the manual work or 2) do the manual work themselves (they're subcons who are also carpenters).

Normally, the hierarchy would be:

Subcontractor has Carpenters / Workers

Means if I will create a list of Subcontractors, they will have a column called Workers, which lists the Workers under them. This is straightforward. When I click John Smith, I will go to a Subcontractor Information page. When I click on the Workers, I will go to a Worker Information page (which have different content). Subcontractors have billing information, list of Workers, etc. while Workers have licenses, work passes, works under a Subcontractor, etc. See below:

enter image description here

Now my problem comes when the Subcontractor is also the Worker as in below:

enter image description here

Do I have 2 records of the same John Smith in the database? One as a Worker and one as a Subcontractor? It's a bit odd that I can click on both same persons but different profiles and different occurances but am not sure how else to structure it?

OR, do I do away with the Subcontractor list and just have a Worker list, which has a property of them being a Subcontractor also. If they are a Subcontractor, in their profile, they will have additional tabs for being a Subcontractor.

  • Is the subcontractor a human? I'd think those would include companies, and would be listed more like 'Smith Services' and 'M.Dunn Installations'. – PixelSnader Oct 2 '17 at 7:05
  • @PixelSnader It can be a human subcontractor. – catandmouse Oct 2 '17 at 7:07

I would definitely go with option 1. Keep them separated, add two records. It's only weird if you think of them as persons, not subcontractors/workers. And I think it would be weirder if you have a company that can also be a carpenter.

If you start building complex data structures or add exceptions, you will soon regret that decision when new requirements start dropping in.


You need to make a generic class for both the users mentioned in the Information architecture. A generic person who can either be a Subcontractor or a worker. Person may have tags associated to each of the categories and information displayed will be according to the tags that generic person has on his profile.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.