在谈论数据库中的n到m关系时,经常会提到交集表。 例如。有作品和书籍,作者可以与许多书籍有关系,反之亦然。
但是:我如何塑造这种关系,作者也可以在他们和书籍之间建立关系?
E.g。 - 作者A写过第1册和第2册,作者A是作者B的朋友。 - 第1册与第2册相同的类型。
那么我有多个交叉表吗? 例如。作者 - 书籍关系表,作者 - 作者“朋友” - 关系表和书籍“流派”关系?
我是数据库和SQL的初学者...... 谢谢您的帮助, 安
答案 0 :(得分:0)
是的,这是相当标准的。如果书籍可以有多种类型,则Book-Genre表格从一侧包含Genre ID,而另一侧包含Book Ids则非常合适。作者 - 朋友关系有点棘手,因为交集表将连接到作者表两次(对于作者 - 朋友关系中的每个作者一次),但基本上是相同的。
正如您所确定的那样,这些与书籍作者表相同,该表以n:m为基础将书籍与作者联系起来。
查找学生 - 教师 - 课程示例,因为它们相似并且通常是n:m解释的一部分。
答案 1 :(得分:0)
要创建一个简单的1:n
关系,只需一个FOREIGN KEY
- 列来指定相关记录。
但是,无论何时想要建立m:n
关系的模型,或者您可能需要向1:n
关系添加其他信息,您都需要一个映射表。
1:n
关系映射表:想象一下,一本书可以只有一个当前读者。如果您在CurrentReaderID
表格中使用FK Book
,则在您更改了FK值后,您将无法找到以前的读者。m:n
关系映射表:将关系视为对象本身及其自己的特定详细数据(when,validTo,createdBy ...)是的:在设计良好的数据库中,您会发现多个表,其中包含广泛的不同关系/映射。