1

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

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 记录。

有什么见解吗?

4

2 回答 2

4

你会发现关于这个话题的意见不乏。许多人提倡具体的表继承,其中(正如您在第一个选项中描述的那样)您在每个表中明确定义数据。

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

tableA
(
    ID (primary),
    A,
    B,
    C
)

tableB
(
    ID (primary and foreign->table_A),
    D
)

tableC
(
    ID (primary and foreign->table_A),
    E,
    F
)
于 2009-05-07T18:59:18.840 回答
3

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
于 2009-05-07T18:57:33.383 回答