从Grails documentation开始,默认情况下,使用连接表表示一对多关系。
我不明白为什么这是可取的。在开始使用Hibernate和/或Grails的GORM之前,我几乎没有SQL经验。看起来在“多边”表中使用外键指向“一侧”表上的一行是实现一对多关系的方式......
任何人都可以解释这种设计决定吗?
答案 0 :(得分:2)
将连接表用于单向一对多关系的原因是因为关系的许多方面可能有许多关系,并且不知道这些关系。也许这里最好的例子是:
class Book {
String title
}
class BookStore {
String name
static hasMany = [books: Book]
}
class Library {
String name
static hasMany = [books: Book]
}
在上述域中,Book
无需在其表格中同时包含BookStore
和Library
ID。没有任何一个Book
完全有效。通过使用连接表,可以防止使用外键污染书籍表。
请记住,因为这是建模单向而非双向关系。