带有一些用户定义字段的SQL数据库设计
我正在开发一个数据库模式来处理数据收集,然后报告这些数据 在需求讨论之后,似乎实体属性值(entity attribute value,EAV)解决方案或平面表解决方案都可以——因为数据有点稀疏,但不是高度稀疏 然而,用户定义的字段在将来将成为必须的,但我知道使用EAV表查询和优化RDBMS可能会变得复杂 我看了一下讨论,我认为类似于选项1的选项是可能的。例如,先设置多个字段,然后设置多个备用字段,用户可以定义这些字段的标签带有一些用户定义字段的SQL数据库设计,sql,database,postgresql,database-design,entity-attribute-value,Sql,Database,Postgresql,Database Design,Entity Attribute Value,我正在开发一个数据库模式来处理数据收集,然后报告这些数据 在需求讨论之后,似乎实体属性值(entity attribute value,EAV)解决方案或平面表解决方案都可以——因为数据有点稀疏,但不是高度稀疏 然而,用户定义的字段在将来将成为必须的,但我知道使用EAV表查询和优化RDBMS可能会变得复杂 我看了一下讨论,我认为类似于选项1的选项是可能的。例如,先设置多个字段,然后设置多个备用字段,用户可以定义这些字段的标签 在报告方面,使用这种方法而不是使用EAV是否有任何缺点?您会后悔EAV
在报告方面,使用这种方法而不是使用EAV是否有任何缺点?您会后悔EAV,尤其是在报告方面
jsonb
速度快,允许索引/查询你会后悔EAV,尤其是在报道方面
jsonb
速度快,允许索引/查询在Postgres中,可以使用
hstore
列或jsonb
在Postgres中,可以使用hstore
列或jsonb
我将更深入地研究序列化LOB,因为它在可查询性方面似乎更容易一些。我认为用户可修改的模式并不理想,因为字段可能存在的时间很短(例如,一年中的新字段可能在下一年不存在)。这使得EAV和JSON类型字段更具吸引力,因为它们是动态的。此外,我还看到了这一点,它显示了在医疗数据收集中的一个相对常见的用法。我将更深入地研究序列化LOB,因为它在可查询性方面似乎更容易一些。我认为用户可修改的模式并不理想,因为字段可能存在的时间很短(例如,一年中的新字段可能在下一年不存在)。这使得EAV和JSON类型字段更具吸引力,因为它们是动态的。此外,我还看到了这一点,它显示了在医疗数据收集中的一个相对常见的用途。