【问题标题】:How do I represent object classification hierarchy in a RDBMS如何在 RDBMS 中表示对象分类层次结构
【发布时间】:2009-05-07 18:52:56
【问题描述】:

我的数据,如果它将由对象表示,它看起来像:

abstract class A{
   int a;
   int b;
   string c;
}

class B inherits A{
  string D;
}

class C inherits A{
  int e;
  int f;
}

我的问题:我是否为实体 B 和 C 创建单独的表, 或者我是否创建一个主表,并为每种实体类型执行不同的连接以获取数据。
在现实世界中,我将为所有实体拥有大约 15 个相似字段,每个实体大约有 1-3 个唯一字段。
我预计最多 100K 记录。

有什么见解吗?

【问题讨论】:

    标签: database-design relational


    【解决方案1】:

    你会发现关于这个话题的意见不乏。许多人提倡concrete table inheritance,其中(如您在第一个选项中所述)您在每个表中明确定义数据。

    鉴于您的第二个陈述,我会推荐这种模式。我会考虑让“主”表代表您的父母和代表孩子的辅助表。您可能希望在主表中包含某种类型的标识符,以指示它是哪种类型的实体,但这可能是必要的,也可能不是必需的。至少,您需要类似...

    tableA
    (
        ID (primary),
        A,
        B,
        C
    )
    
    tableB
    (
        ID (primary and foreign->table_A),
        D
    )
    
    tableC
    (
        ID (primary and foreign->table_A),
        E,
        F
    )
    

    【讨论】:

      【解决方案2】:

      table_a 包含所有相似字段,table_B 和 table_c 包含唯一字段

      table_A
         PKa
         a int
         b int
         c string
      
      
      table_B
        PKb
        FKa
        D string
      
      
      table_C
        PKc
        FKa
        e int
        f int
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-10-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多