The most use cases I have seen so far are:
- Players in Teams in Competitions that have Matches and perform Scores (we all know football…)
- Musicians in Bands at Events performing Songs
- Authors and Co-Authors of Books
- Chapters in Books
- Methods in Classes
- Family Relationships (the Father has Kids and is married to a Mother, and might be re-married to another Mother with other Kids)
- Car plates, serial numbers or else for Cars or generally products
- Meetings and their Attendees and their Speakers and their Locations
- Courses and Lessons, with Scholars and Teachers and Locations where things are happening
These examples are taken from thousands of sites I have seen built during support of a tool that does amongst other things exactly that (implement relationship), they are not my personal opinion, but based on what WordPress users do.
The main point of using a relationship versus taxonomies or fields (most relationships can be done with existing tools like fields and terms) is that you want additional information that you can’t add to a meta field or a term, such as a location can have an address and also a name, capacity, age, safety etc etc. The location is holding events, and those events again can have additional data, and folks attend events or perform at events, and again they will have data that is stored in form of either terms or fields for those “objects”
In the numerous years helping, supporting and building such sites for clients/users, the most often used relationship is between post types.
User <> Posts is the second most requested and can usually be replaced by mimicking a user in a post type.
The third, and almost never requested group of relationships is taxonomy <> users or taxonomy <> taxonomy or users <> users or taxonomy <> posts.
This might be just because almost no tool offering relationships actually has relationships for Terms and Users, most focus on post types, but also because there are just not so many reasons to actually have relationships (which do not already exist, like tagging a post is also a relationship) of this kind.
The Users <> posts comes up then and when for folks who want to allow sort of “co-authorship” of posts, but again, mostly that can be solved with other means. Relating terms to terms might be useful, but the question is also how to query that data, how could it even be used, I have yet to come across the use case for this (not ever requested actually) type of relationship.
user <> terms (as a relationship) would likely just be to allow taxonomies for users, like you can have meta fields for users (or terms).
Note that it is often overkill to use relationships. Very often, a term or field is much better solution and much faster to do as well (and faster to retrieve and work with later).
The real use case of relationships comes really in when you need that additional room for editing and data, which you don’t have in fields or terms.
In support, we used to use a rule of thumb that first you check if a term is enough, then you check if you might be able to achieve the same with a field or group of fields, and only if that does not lead to the desired results, use relationships.
And again here, first check if a simple (1:1) does the trick, and from there work your way up to M:M, which is the least desired type of relationship (not because it is bad, but because one wants to keep things simple, and relating content gets extremely messy under circumstances, where users quite often end up in a limbo of “this relates to that but that relates to this which relates to another that and that other that relates to more this”. At the end you don’t know anymore what relates to what and all you have is a spidernet of connected items (which might look cool but gets awful to query, maintain and keep organised and make a sense of))