How to best model Hierarchical Types?

The goal is to make the schema/DB structure as clean as possible; i.e., no duplication of fields, and no extraneous fields. (see Database Normalization)

So e.g.:

  • all of the different project types need “tasks”, so “tasks” should belong to a generic “parent” Project type.
  • only “website projects” need a URL (brochure projects do not), so the URL field belongs in the “website project” type, not in the generic Project type.