Modelling many-to-one relation in SQL is trivial, you just add foreign key and write a join for it.
It’s slightly more complex for many-to-many relation: you just add an intermediary table, foreign keys and write joins for them.
Frappe, IFAIK, requires creating a link on the
many side, an additional child model and a child table on the
one side (parent).
It gets worse for many-to-many relations. Frappe doesn’t handle it at all, each side of the relation is completely separate and synchronization needs to be handled programmatically.
Configuring a child table for a relation should be as simple as selecting target, selecting fields to display in the child table, and whether or not to make the items clickable.