In Studio, when creating a many-to-many relationship there will be a join table created, but we cannot add fields or constraints to it.
Adding fields would allow us to add association attributes (in design terms) that would de facto transform the association to an entity with a composite PK, which is a perfectly valid mapping. For instance when you link an address to a customer you could define it as a delivery or invoice address using an association attribute.
The current workaround is to create a full-blown entity (costly in dev time and infra resource) or define the kind of address inside the address entity. But in the latter changes the semantic of address entity from “I’m a plain an simple address usable by any process” to “I’m an address used only for delivery or invoicing”.
Adding constraints would allow us to manage cases not currently managed by CUBA : unidirectional one-to-many and many-to-one relationships. Which can be handled by setting a unique constraint on one of the join columns.