[英]SQL: n to m relationship in a database with relations inbetween one table
在談論數據庫中的n到m關系時,經常會提到交集表。 例如,有作品和書籍,作者可以與許多書籍有關系,反之亦然。
但是:我如何塑造這種關系,作者也可以在他們和書籍之間建立關系?
例如 - 作者A寫過第1冊和第2冊,作者A是作者B的朋友。 - 第1冊與第2冊相同的類型。
那么我有多個交叉表嗎? 例如作者 - 書籍關系表,作者 - 作者“朋友” - 關系表和書籍“類型”關系?
我是數據庫和SQL的初學者...感謝您的幫助,Anne
是的,這是相當標准的。 如果書籍可以有多種類型,則Book-Genre表格從一側包含Genre ID,而另一側包含Book Ids則非常合適。 作者 - 朋友關系有點棘手,因為交集表將連接到作者表兩次(對於作者 - 朋友關系中的每個作者一次),但基本相同。
正如您所確定的那樣,這些與書籍作者表相同,該表以書籍形式將書籍鏈接到作者。
尋找學生 - 教師 - 課程的例子,因為它們是相似的,並且通常是n:m解釋的一部分。
要創建一個簡單的1:n
關系,只需一個FOREIGN KEY
-column即可指定相關記錄。
但是,無論何時想要建立m:n
關系模型,或者您可能需要向1:n
關系添加其他信息,您都需要一個映射表。
1:n
關系的映射表:想象一下,一本書可以只有一個當前讀者。 如果您在Book
表中使用FK CurrentReaderID
,則在更改FK值后,您將無法找到以前的讀者。 m:n
關系映射表m:n
將關系視為一個對象,並將其與自己的特定詳細數據一起考慮(when,validTo,createdBy ...) 是的:在設計良好的數據庫中,您會發現許多表中包含各種不同的關系/映射 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.