Here is an example from a 3rd party managed package of what I am currently calling a "Vanity Lookup" because it is totally redundant from an OOD/ERD perspective and I assume it is only for convenience:
Defining: QuoteLine->QuoteLineGroup->Quote
Vanity: QuoteLine->Quote
My example:
Defining: LicenseKey->Asset->Account
Vanity: LicenseKey->Account
My License Key custom object has a lookup to Asset. Simple right. Assets belong to Accounts though so there is an implied relationship from LicenseKey->Asset->Account. Fine. I know how to take advantage of that through SOQL queries and relationship report types. From an OOD or ERD perspective I'm done. But there is so much out-of-the-box goodness if I have a lookup from LicenseKey->Account too. I'm calling this a "vanity lookup" because it is a truly unnecessary and redundant relationship but it "looks better" when I get that free related list on my Accounts page (itemizing all of the License Keys for an Account) or my coworkers get to do easy Account->LicenseKey reporting without having to jump through the extra relationship.
Ultimately, I'm interested in the best practices for this technique. Is it discouraged? Is it as simple as marking the Vanity Lookup read-only and keeping it in sync with workflow? In an effort to keep my question specific I'll settle for the proper name so I can go search for the best practices myself... but hey, if you want to point me to a good article or share the best practices from your experience I'm all ears.