2

我需要设计一个几乎看起来像 3 维需求的表格。

例如,

  1. 有“无限”的恐龙品种。
  2. 所有的恐龙都有一些共同的特征(名字、地球上存在的年代、体重、姓氏等)。
  3. 会有一些特定的特征有时与每个品种无关。每个这样的特征都用一个“名称”=“值”对来标识。“名称”类似于特征的名称(例如可能是头上的喇叭、语音频率等),而“值”可能是特征的值(例如头上的 3 个喇叭、一些 10hz 的语音频率等) .,)。

根据要求,我们可以创建一个具有共同特征的表 X,例如引用 cid、名称、自存在年数、重量等的列。并且可能存在另一个表 Y,其中只有列(uid、名称、值),其中 cid 可以绑定用于 uid。

但事实上,X 中的行数将是巨大的(万亿+,我们可能没有那么多恐龙家族,但这只是一个例子)。类似地,表 X 中的每个条目的 name=value 将是数百个。这将增加表 Y 中的行数。

由于特征“名称”也是“无限的”,我们无法创建具有固定列数的表,不幸的是,就像每个特征的列一样,因为这就像动态列。

一个想法是在表 X 中再增加两列,其中一列可以由逗号分隔的所有特征(“名称”)组成,另一列可以由逗号分隔的所有“值”组成。但我知道这是一个非常糟糕的设计。

有没有更好的解决方案来满足这个要求?

4

1 回答 1

1

看看下面的例子。您在 中指定恐龙的种类dinosaur_type,单个恐龙进入表格dinosaur并链接到一个物种/类型,然后dinosaur_feature您可以为每个恐龙添加行,为恐龙添加任何类型(无限)可能的特征。

Table `dinosaur`:
id 
dinosaur_type_id (fk)
name
years since existence on earth
weight
family name

Table `dinosaur_type`:
id
name

Table `dinosaur_feature`:
dinosaur_id (fk)
feature_name
feature_value
于 2011-12-13T09:45:55.910 回答