【问题标题】:What are the benefits of super type sub type table超类型子类型表有什么好处
【发布时间】:2017-06-08 10:28:51
【问题描述】:

假设任何一个设计数据库(ER 模型)的人,他有三个表 CHECKING-ACCOUNT、SAVINGS-ACCOUNT 和 LOAN-ACCOUNT。

Tables.

假设他知道超类型-子类型的关系。于是他实现了超类型——子类型。

new structure

我的问题是——在实现超类型-子类型关系后,他得到了什么好处或优势?实现超类型 - 子类型是最佳实践吗?

【问题讨论】:

  • 我只是不确定他为什么不将帐户类型、帐户 ID、帐户余额都放在同一个表中。
  • 如果我们总是使用一张表来存储相似(不是100%相似)类型的东西(很少有相同的列,很少有不同的)那么超类型-子类型关系有什么用呢?跨度>
  • 如果每个表中有很多列彼此无关,您可能不希望大量空列膨胀。或者,如果您有许多子类型,您将再次得到许多空列。 sub-super 可以防止这些问题。
  • 这是一个常见问题解答,google stackoverflow 数据库 sql 表子类型/继承/多态和/或多个/多个关系/关联/FK。 PS请尽可能使用文本,例如这里的 DDL 和代码块而不是您的 ERD 和表的图像(分别)。
  • 您可能需要查看几个标签。 class-table-inheritancesingle-table-inheritance

标签: database database-design database-normalization denormalization supertype


【解决方案1】:

优点是超类型允许我们为多个实体集统一公共属性、关系和完整性,而子类型允许我们支持特定类型的属性、关系和完整性约束。这使我们能够简化数据库和查询并加强完整性。

在您的第一个示例中,如果我们想知道所有帐户何时打开或审核,我们需要分别查询 3 个表中的每一个。如果我们想在客户和客户之间建立关系,我们需要 3 个独立的关系和 3 个独立的查询来获取所有客户和客户。必须定义 3 次约束,例如确保审核日期在开放日期之后。

如果没有子类型,我们将需要支持单个常见类型的所有可能的属性和关系,并且我们的查询必须包含特定于类型的逻辑来分别处理不同的行。我们无法轻易实施特定类型的约束,例如不适用于支票账户的正利率。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-20
    • 2018-10-11
    • 2011-10-20
    • 1970-01-01
    • 2022-01-23
    • 2013-02-05
    相关资源
    最近更新 更多