我的数据 IF 它将由对象表示,它看起来像:
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的记录。
任何见解?
答案 0 :(得分:4)
你会发现这个话题不缺乏意见。许多人提倡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
)
答案 1 :(得分: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