Glad my rant was of some use 😃
Here's another really powerful usecase for relationships:
Tagging tags
(I know rite)
Take the engine forum I manage for instance, hub.jmonkeyengine.org. I'd like trusted users to be able to create new tags within the game:
grouping, so that when they start talking about a game of theirs in different Categories, it's still easy to keep track of their game.
I'd like to be able to tag tags within the game:
grouping. All that really means is that you create a rule that says TagX, TagY and TagZ will always be added (in the background) if user applies TagA. These tags wouldn't have to be visible in any interface except for the special filtering actions when they come into play.
Here's an example:
I add a new game to our forum with the following tag:
This tag is in turn tagged with the following tags:
- gui:lemur
- shader:legacy
- status:alpha
At its simplest, all that means is that I could do a filter search for all threads currently in status:alpha
, and I would find all Shovelville topics among them. Furthermore, since these tags could not be altered per topic but rather only via the unique tags they're attached to, you wouldn't end up with messy Shovelville taggings where it's marked with status:alpha
in some places and status:beta
in others, and some places not at all. Once I go into the game:shovelville
tag and change its status:alpha
tag to status:beta
, that change will immediately be reflected in all topics tagged game:shovelville
.