首頁 >資料庫 >mysql教程 >子類型或超類型:哪種資料庫設計最能處理多型資料?

子類型或超類型:哪種資料庫設計最能處理多型資料?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-26 09:42:10236瀏覽

Subtype or Supertype: Which Database Design Best Handles Polymorphic Data?

資料庫設計的子類型與超類型

背景

在資料庫設計中,決定是否使用子類型。當特定類型的資料具有區別於其他類型的附加屬性或屬性時,將使用子類型。這種方法涉及為每個子類型建立單獨的表,從而可能產生大量表。

範例:書籍和文章的註解

考慮一個包含三個主表的資料庫:BOOKS、ARTICLES、和註釋。每本書和文章可以有多個註解。初始設計將註解指派給單一NOTES表,其中包含以下列:

  • note_id
  • note_type
  • note_type_id
  • note
使用分離的替代設計表格

另一個設計建議使用五個表格:

    書籍
  • 文章
  • 筆記
  • 文章
  • 筆記
  • 文章

筆記

文章

筆記文章

    筆記
  • book_notes
  • article_notes
這個設計將書籍和文章註釋分開,簡化資料

每種設計的優缺點

    子類型設計(現有設計)的優點:
  • 透過合併註解簡化資料儲存在一張表中。

僅儲存註解來避免報表一次。 需要較少的資料檢索連線。

  • 子類型設計的缺點:
  • 可能導致資料異常,如筆記型別可以改變。

如果筆記類型管理起來可能會很複雜

超類型設計(替代設計)的優點:通過明確定義超類型和子類型關係來促進資料完整性。 允許輕鬆添加新的出版物類型(例如,雜誌)。 提供了更清晰的資料層次結構和關係表示。 超類型/子類型方法修改後的方法建議使用具有兩個子類型的超類型發布表:書籍和文章。該模型將允許單一註釋表具有出版物的外鍵,從而能夠跨所有出版物類型(書籍、文章、雜誌等)進行連結。

以上是子類型或超類型:哪種資料庫設計最能處理多型資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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