2017-02-01 123 views
1

當談到數據庫中n到m的關係時,通常會提到一個交集表。 例如有專家和書籍,作者可以與許多書有關係,反之亦然。SQL:數據庫中n到m的關係,中間有關係

但是:我如何建立關係模型,作者也可以在他們和書籍之間建立關係?

E.g. - 作者A寫了書1和書2,作者A是作者B的朋友。 - 書1與書2有相同的流派。

然後我有多個相交表嗎? 例如作者 - 書籍關係表,作者 - 作者「朋友」 - 關係表和書籍「流派」關係?

我關於數據庫和SQL初學者... 感謝你的幫助, 安妮

+0

表1:作者,表2:書和表3:作者_書籍映射 –

+0

作者 - 作者映射和書書映射如何? –

+0

作者與作者的關係只通過一本書?或者你想直接將作者鏈接到其他作者? –

回答

0

要創建一個簡單的1:n關係,只需使用一個FOREIGN KEY列即可指定相關記錄。

但是,無論何時您想建模m:n關係,或者您可能需要將其他信息添加到1:n關係中,都需要一個映射表。

  • 1:n關係的映射表:想象一下,一本書可能只有一個當前讀者。如果您在Book表格中使用FK CurrentReaderID,則在更改FK值後,您將無法找到以前的讀者。
  • m:n關係映射表:關係看作對自己的對象,具有自己特定的詳細數據(時,validTo,createdBy ...)

是的:在一個精心設計的數據庫,你會發現很多表廣泛的不同關係/映射其中。

0

是的,這是相當標準。如果書籍可以有多種類型,則包含來自一面的流派ID和來自另一面的書籍ID的書籍流派表格是非常合適的。作者 - 朋友關係有點棘手,因爲交集表將連接到作者表兩次(作者 - 朋友關係中的每個作者一次),但本質上是相同的。

正如您已經確定的,這些與書籍作者表相同,它將書籍以n:m爲基礎鏈接到作者。

查找學生 - 教師課程示例,因爲它們相似,通常是n:m解釋的一部分。