Looking for opinions and feedback for where relationships should be defined between database tables. Specifically, whether to prefer direct relationships where they conceptually make sense and need to be used, or to prefer using the minimum number of relationships possible.
For example, in this diagram:
The a_g relationship really needs to exist. The d_g relationship conceptually makes sense and will be used often. My question is whether to have such a relationship, or whether to omit it in preference of going d->c->b->a->g.
More relationships helps performance, but seems to me to add a risk of inconsistency. It adds the risk that d->g could get to a different g than d->c->b->a->g. (Obviously this particular design dictates that the g will be the same either way, but I'm talking about if something goes horribly wrong - those "how the heck did this happen" situations.)
Likewise, when working with d, a will often need to be accessed in a situation where the data in c and b don't need to be accessed. Should there be an a_d relationship, or is starting to create those "time saving" relationships a way to get out of hand?