A major constraint in Goby’s architecture is that when you create a linked relation involving multiple targets, one class has to be a ‘parent’, meaning objects of that class have to be involved in all relations of that type. Ok what does that actually mean? Example:

Let’s say I'm listing friendships between individuals using a table, with different columns for different types of entities:

|  Humans  | Animals |  Robots  |
| Craig    | Mittens |          |
| Linda    | Sparky  |          |
| Linda    |         | Greeborg |
| Beatrice | Mittens |          |

(this is how the junction tables look in Goby's SQLite project dbs)

So this table tells us Craig is friends with Mittens, Linda is friends with Sparky and Greeborg, and Beatrice is also friends with Mittens.

The problem in Goby is that there is no way of defining this friend relation such that an animal could be friends with a robot. Only friendships with humans are allowed. Or rather to achieve animal/robot friendships, the two classes would each have to have separate tables for "human friends" and "robot/animal (respectively) friends".

Adjacent musing: every object in Goby has a unique id which is completely separate from the class that it's a part of, so in theory all junction tables could just have two columns, which generically contain unique ids, and together create a pairing. But this would create a filtering nightmare.