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.