Relational-Theory

幫助我思考多對多關係

  • June 19, 2013

我正在製作一個需要以下表格的數據庫:文章、影片、圖像和關鍵字。關鍵字包含固定的關鍵字列表。(例如,在創建文章時,您必須從關鍵字列表中進行選擇,而不是創建新的)每個文章、圖像和影片都可以有 n 個關鍵字。我很難考慮如何在我的數據庫中定義這些關係,因為在我必須開發的應用程序中我真的只處理一對一和一對多在過去。我會在關鍵字和其他表之間進行多對多嗎?或者我需要在每個表之間創建一個連接表嗎?KeywordImage(keyword_id,image_id)?或者這些選項都不是思考這個問題的正確方法?

如果連接表是正確的方法,那麼文章和 ArticleKeyword 之間是否是一對多的?

編輯 關鍵字不是任何表格中的必填欄位

就像是:

Article                ArticleKeyword         Keyword
---------------        ---------------        ------------
article_id (PK)  <---  article_id (FK)        
                      keyword_id (FK)  --->  keyword_id (PK)

Article 中的每一行可能有零對多的 ArticleKeyword 行。

關鍵字中的每一行可能有零對多的 ArticleKeyword 行。

這等同於文章和關鍵字表之間的多對多關係。

ArticleKeyword 的主鍵將是複合鍵 (article_id, keyword_id) 除非您想分別計算同一篇文章中相同關鍵字的多次出現(也許注意文章中的位置),在這種情況下您可能需要一個代理鍵像這樣:

Article                ArticleKeyword         Keyword
---------------        ---------------        ------------
                      ak_id      (PK)        
article_id (PK)  <---  article_id (FK)        
                      keyword_id (FK)  --->  keyword_id (PK)
                      kw_location

(或者您可以將位置屬性添加到組合鍵中,當然,如果這些額外的列永遠不會為 NULL)

引用自:https://dba.stackexchange.com/questions/44854