0

我正在设计一个数据库来记录实验结果。基本上,一个实验有几个输入参数和一个输出响应。因此,数据表将如下所示:

run_id parameter_1 parameter_2 ... parameter_n 响应

1………………

2………………

. . .

然而,这个表的结构不是决定性的,因为不同的实验有不同的列数。那么问题来了:当用户实例化一个实验时,动态创建数据表是个好主意吗?否则,什么是优雅的解决方案?谢谢。

4

1 回答 1

0

当我发现自己尝试在运行时动态创建表时,通常意味着我需要另一个表来解决实体之间的关系。简而言之,我建议将您的输入参数视为一个单独的实体并将它们存储在一个单独的表中。

听起来您的实体是:

  • 实验
  • 实验的运行,包括响应和一个或多个:
    • 输入参数

实体之间的关系是:

  • 一次实验进行零次或多次运行
  • 一次运行到一个或多个输入参数值(一对多)

最后一个关系将需要一个额外的表来解决。您可以有一个单独的表来存储您的输入参数,并将输入参数与run_id. 该表可能如下所示:

run_parameter_id ...  run_id_fk ... parameter_keyword ... parameter_value

run_id_fkRuns 表中适当行的外键在哪里(在您的问题中描述)。parameter_keyword仅用于跟踪参数的名称(、parameter_1_exp1parameter_2_exp1)。

您从数据库读取/写入的查询现在变得有点复杂(需要连接),但不再依赖于动态创建表。

如果不清楚,请告诉我,我可以提供一个潜在的数据库图。

于 2016-05-16T05:44:26.067 回答