实体-属性-值模式是对该数据建模的正确方法吗?

问题描述 投票:0回答:1

为了控制实验设置,用户输入下表,该表定义了独特的参数配置,即运行实验的参数值的组合。参数的数量及其含义可以是任意的,例如,这里我们有

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 个,并且该数据每分钟只需访问/保存一次,是否有更好的方法来对数据进行建模?

sql sqlite entity-attribute-value datamodel
1个回答
0
投票

我最终决定将这些参数序列化存储到 JSON 字段中,正如@Panagiotis Kanavos 所建议的那样。这比实现 EAV 模式要麻烦得多,而且许多 ORM 框架都支持访问 JSON 字段。

© www.soinside.com 2019 - 2024. All rights reserved.