當談到數據庫中n到m的關係時,通常會提到一個交集表。 例如有專家和書籍,作者可以與許多書有關係,反之亦然。SQL:數據庫中n到m的關係,中間有關係
但是:我如何建立關係模型,作者也可以在他們和書籍之間建立關係?
E.g. - 作者A寫了書1和書2,作者A是作者B的朋友。 - 書1與書2有相同的流派。
然後我有多個相交表嗎? 例如作者 - 書籍關係表,作者 - 作者「朋友」 - 關係表和書籍「流派」關係?
我關於數據庫和SQL初學者... 感謝你的幫助, 安妮
當談到數據庫中n到m的關係時,通常會提到一個交集表。 例如有專家和書籍,作者可以與許多書有關係,反之亦然。SQL:數據庫中n到m的關係,中間有關係
但是:我如何建立關係模型,作者也可以在他們和書籍之間建立關係?
E.g. - 作者A寫了書1和書2,作者A是作者B的朋友。 - 書1與書2有相同的流派。
然後我有多個相交表嗎? 例如作者 - 書籍關係表,作者 - 作者「朋友」 - 關係表和書籍「流派」關係?
我關於數據庫和SQL初學者... 感謝你的幫助, 安妮
要創建一個簡單的1:n
關係,只需使用一個FOREIGN KEY
列即可指定相關記錄。
但是,無論何時您想建模m:n
關係,或者您可能需要將其他信息添加到1:n
關係中,都需要一個映射表。
1:n
關係的映射表:想象一下,一本書可能只有一個當前讀者。如果您在Book
表格中使用FK CurrentReaderID
,則在更改FK值後,您將無法找到以前的讀者。m:n
關係映射表:關係看作對自己的對象,具有自己特定的詳細數據(時,validTo,createdBy ...)是的:在一個精心設計的數據庫,你會發現很多表與廣泛的不同關係/映射其中。
是的,這是相當標準。如果書籍可以有多種類型,則包含來自一面的流派ID和來自另一面的書籍ID的書籍流派表格是非常合適的。作者 - 朋友關係有點棘手,因爲交集表將連接到作者表兩次(作者 - 朋友關係中的每個作者一次),但本質上是相同的。
正如您已經確定的,這些與書籍作者表相同,它將書籍以n:m爲基礎鏈接到作者。
查找學生 - 教師課程示例,因爲它們相似,通常是n:m解釋的一部分。
表1:作者,表2:書和表3:作者_書籍映射 –
作者 - 作者映射和書書映射如何? –
作者與作者的關係只通過一本書?或者你想直接將作者鏈接到其他作者? –