【发布时间】:2014-03-14 19:28:20
【问题描述】:
从Grails documentation 开始,默认情况下,一对多关系使用连接表表示。
我不明白为什么这是可取的。在开始使用 Hibernate 和/或 Grails 的 GORM 之前,我几乎没有 SQL 经验。似乎在“多”侧表中使用指向“一”侧表上一行的外键是实现一对多关系的方式......
谁能解释这种设计决策?
【问题讨论】:
标签: sql grails grails-orm
从Grails documentation 开始,默认情况下,一对多关系使用连接表表示。
我不明白为什么这是可取的。在开始使用 Hibernate 和/或 Grails 的 GORM 之前,我几乎没有 SQL 经验。似乎在“多”侧表中使用指向“一”侧表上一行的外键是实现一对多关系的方式......
谁能解释这种设计决策?
【问题讨论】:
标签: sql grails grails-orm
将连接表用于单向一对多关系的原因是关系的多方可能有许多关系并且不知道这些关系。也许这里最好举个例子:
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 没有任何一个都是完全有效的。通过使用连接表,可以避免外键污染 book 表。
请记住,因为这是对单向而不是双向关系的建模。
【讨论】: