Database design 如何在RDBMS中表示对象分类层次结构
我的数据,如果它将由对象表示,它将如下所示:Database design 如何在RDBMS中表示对象分类层次结构,database-design,relational,Database Design,Relational,我的数据,如果它将由对象表示,它将如下所示: 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个唯一字段
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个唯一字段。
我预计最多有10万张唱片
任何细节?表a包含所有类似字段,表B和表c包含唯一字段
table_A
PKa
a int
b int
c string
table_B
PKb
FKa
D string
table_C
PKc
FKa
e int
f int
表a包含所有类似字段,表B和表c包含唯一字段
table_A
PKa
a int
b int
c string
table_B
PKb
FKa
D string
table_C
PKc
FKa
e int
f int
你会发现在这个话题上不乏意见。许多人主张(如您在第一个选项中所述)在每个表中明确定义数据 鉴于你的第二句话,我不推荐这种模式。我同意这样的想法,即用一个“主”表表示您的父表,用辅助表表示子表。您可能希望在主表中包含某种类型的类型标识符,以指示它是哪种类型的实体,但这可能是必需的,也可能不是必需的。至少,你需要像
tableA
(
ID (primary),
A,
B,
C
)
tableB
(
ID (primary and foreign->table_A),
D
)
tableC
(
ID (primary and foreign->table_A),
E,
F
)
你会发现在这个话题上不乏意见。许多人主张(如您在第一个选项中所述)在每个表中明确定义数据 鉴于你的第二句话,我不推荐这种模式。我同意这样的想法,即用一个“主”表表示您的父表,用辅助表表示子表。您可能希望在主表中包含某种类型的类型标识符,以指示它是哪种类型的实体,但这可能是必需的,也可能不是必需的。至少,你需要像
tableA
(
ID (primary),
A,
B,
C
)
tableB
(
ID (primary and foreign->table_A),
D
)
tableC
(
ID (primary and foreign->table_A),
E,
F
)