From the Grails documentation, by default one-to-many relationships are represented using a join table.
I don't understand why this is desirable. I had little SQL experience before starting to use Hibernate and/or Grails' GORM. It seems like using a foreign key in the 'many'-side table pointing at a row on the 'one'-side table is the way to implement a one-to-many relationship...
Can anyone explain this sort of design decision?
The reason for using an join table for a unidirectional one-to-many relationship is because the many side of the relationship may have many relationships and does not know of those relationships. Perhaps an example is best here:
In the above domain, a
Bookhas no need to have both theBookStoreandLibraryIDs on it's table. ABookis perfectly valid without either. By using join tables this keeps from polluting the book table with foreign keys.Keep in mind because this is modeling uni-directional and not bi-directional relationships.