I believe that a good developer will never add a relationship to a graph unless there’s no other practical way to do what s/he needs to do. Creating a relationship, by definition, creates tight coupling.
Instinctively solving programming problems in a context-independent way (loose coupling) is a matter of developing good habits. It doesn’t need to be harder, as long as you have the mental image of the appropriate design patterns in mind.
For example, a good loose coupling FileMaker scripting pattern is what we might call the “Close/Open Process Window” pattern.
Close Window [ Name: $windowname; Current file ] New Window [ Name: $windowname; Height: $windowsize; Width: $windowsize; Top: $windowoffset ] <do stuff> Close Window [ Name: $windowname; Current file ]
I use this pattern almost reflexively any time I need to do something context-independent, or a variant (whereby I don’t put the window off-screen and don’t issue the final Close Window) for print previews and pop-ups.
The more patterns you can internalize that support context-independence (loose coupling), the less you have to worry about it, even when (or especially when) things are down and dirty. There is a huge risk that adding a relationship to solve a problem will have unintended consequences, even if it’s just the added cognitive weight when trying to debug things or expand the system. If you think about it. There is arguably no worse time to tightly bind something than in the heat of battle. Make a habit of loose coupling in your code.