首頁 >資料庫 >mysql教程 >對於資料庫關係,我應該使用子類型還是帶有鑑別器列的單一表?

對於資料庫關係,我應該使用子類型還是帶有鑑別器列的單一表?

Linda Hamilton
Linda Hamilton原創
2024-12-31 01:41:12369瀏覽

Should I Use Subtypes or a Single Table with a Discriminator Column for Database Relationships?

資料庫表關係的子類型設計

設計資料庫模式時,一個關鍵的考慮因素是確定是否使用子類型。在物件導向程式設計的上下文中,子類型是從超類型或父類別繼承屬性和方法的派生類別。在資料庫中,這個概念可以應用在表關係上。

在給定的場景中,資料庫有三個主要表:BOOKSARTICLES註解。每本書或文章可以有多個註釋,最初的設計提出了一個 NOTES 表,其中包含一個名為 note_type 的鑑別器列來區分書籍註釋和文章註釋。然而,這種方法可能會導致資料完整性挑戰和冗餘。

問題中建議的另一種方法是使用五個表格:

  • 書籍
  • 文章
  • 文章
  • 文章
  • 文章

書本註解文章_註解這篇設計將書籍和文章註釋表,從而消除了對鑑別器列的需要。雖然這種方法可確保資料完整性,但它也會引入重複,因為書籍和文章都會複製

NOTES

表。 考慮另一種方法:使用帶有超類型表的超類型/子類型設計稱為

PUBLICATION
  • BOOKS
  • 的子類型表和
  • 文章
  • 。在這種情況下,
PUBLICATION 表將包含書籍和文章共有的列,而子類型表將包含特定於每種類型的列。 PUBLICATION {ID (PK)

以上是對於資料庫關係,我應該使用子類型還是帶有鑑別器列的單一表?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn