为了控制实验设置,用户输入下表,该表定义了独特的参数配置,即运行实验的参数值的组合。参数的数量及其含义可以是任意的,例如,这里我们有
Mode
、AmpGain
和 InputVoltage
。
配置名称 | 模式 | 放大器增益 | 输入电压 |
---|---|---|---|
MX1_LG_HV | MX1 | 1 | 3.3 |
MX1_HG_HV | MX1 | 10 | 3.3 |
MX2_LG_HV | MX2 | 1 | 3.3 |
MX2_HG_HV | MX2 | 10 | 3.3 |
MX2_LG_LV | MX2 | 1 | 1.8 |
MX2_HG_LV | MX2 | 10 | 1.8 |
在我的应用程序中,这些数据需要保存在类似 SQL 的数据库中(例如 SqLite)。 从有关数据库设计模式的各种文章中,我发现Entity-Attribute-Value Pattern是表示该模型的一种可能方法,即:
Parameter
参数描述表
参数ID(PK) | 参数名称 |
---|---|
1 | 模式 |
2 | 放大器增益 |
3 | 输入电压 |
Config
描述配置的表格
配置ID(PK) | 配置名称 |
---|---|
1 | MX1_LG_HV |
2 | MX1_HG_HV |
3 | MX2_LG_HV |
4 | MX2_HG_HV |
5 | MX2_LG_LV |
6 | MX2_HG_LV |
最后是组合关系的表格,其中
ConfigID
和ParamID
形成主键:
配置ID | 参数ID | 值整数 | 浮点值 | 价值Str |
---|---|---|---|---|
1 | 1 | 空 | 空 | MX1 |
1 | 2 | 1 | 空 | 空 |
1 | 3 | 空 | 3.3 | 空 |
2 | 1 | 空 | 空 | MX1 |
2 | 2 | 10 | 空 | 空 |
2 | 3 | 空 | 3.3 | 空 |
3 | 1 | 空 | 空 | MX2 |
3 | 2 | 1 | 空 | 空 |
3 | 3 | 空 | 3.3 | 空 |
4 | 1 | 空 | 空 | MX2 |
4 | 2 | 10 | 空 | 空 |
4 | 3 | 空 | 3.3 | 空 |
5 | 1 | 空 | 空 | MX2 |
5 | 2 | 1 | 空 | 空 |
5 | 3 | 空 | 1.8 | 空 |
6 | 1 | 空 | 空 | MX2 |
6 | 2 | 10 | 空 | 空 |
6 | 3 | 空 | 1.8 | 空 |
这是实现 EAV 模式的正确方法吗? 考虑到参数不会超过 25-30 个,并且该数据每分钟只需访问/保存一次,是否有更好的方法来对数据进行建模?
我最终决定将这些参数序列化存储到 JSON 字段中,正如@Panagiotis Kanavos 所建议的那样。这比实现 EAV 模式要麻烦得多,而且许多 ORM 框架都支持访问 JSON 字段。