首页 > 数据库 > mysql教程 > 子类型或超类型:哪种数据库设计最能处理多态数据?

子类型或超类型:哪种数据库设计最能处理多态数据?

Mary-Kate Olsen
发布: 2024-12-26 09:42:10
原创
276 人浏览过

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

数据库设计的子类型与超类型

背景

在数据库设计中,决定是否使用子类型。当特定类型的数据具有区别于其他类型的附加属性或属性时,将使用子类型。这种方法涉及为每个子类型创建单独的表,从而可能会产生大量表。

示例:书籍和文章的注释

考虑一个包含三个主表的数据库:BOOKS、ARTICLES、和注释。每本书和文章可以有多个注释。初始设计将注释分配给单个NOTES表,其中包含以下列:

  • note_id
  • note_type
  • note_type_id
  • note_content

使用分离的替代设计表格

另一种设计建议使用五个表:

  • 书籍
  • 文章
  • 笔记
  • book_notes
  • article_notes

这个设计将书籍和文章注释分开,简化数据

每种设计的优缺点

子类型设计(现有设计)的优点:

  • 通过合并注释简化数据存储在一张表中。
  • 通过仅存储注释来避免报表一次。
  • 需要更少的数据检索连接。

子类型设计的缺点:

  • 可能导致数据异常,如笔记类型可以改变。
  • 如果笔记类型管理起来可能会很复杂

超类型设计(替代设计)的优点:

  • 通过显式定义超类型和子类型关系来促进数据完整性。
  • 允许轻松添加新的出版物类型(例如,杂志)。
  • 提供了更清晰的数据层次结构和关系表示。

超类型/子类型方法

修改后的方法建议使用具有两个子类型的超类型发布表:书籍和文章。该模型将允许单个注释表具有出版物的外键,从而能够跨所有出版物类型(书籍、文章、杂志等)进行联接。

以上是子类型或超类型:哪种数据库设计最能处理多态数据?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板