首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >postgresql中的EAV

postgresql中的EAV
EN

Database Administration用户
提问于 2019-07-24 17:13:19
回答 1查看 885关注 0票数 -1

我正在构建一个需要多次部署的应用程序,该应用程序具有相对良好的组织数据模型。需要为每个部署配置一个表,每次都会有少量不同的附加字段。性能不是问题,因为我们讨论的是几百行和十几个附加字段。

我倾向于保留一个独特的通用数据模型,因此我试图(可能是天真地)为该表使用类似于EAV模型的内容:

  • user:表有公共字段
  • user_data:user_id,field_id,field_value
  • field:id,field_name,field_type

然后我的意图是crosstab user_data表有一个表,如user_id,field1,field2,field3,.然后我可以加入到我的user表中。

但是,crosstab需要为支点的输出提供一个自定义类型,并在列中包含所有字段名和类型。我将所有信息存储在field表中。

那么,我的问题是:我可以根据我存储在PostgreSQL表中的信息在field中动态地创建一个自定义类型吗?

EN

回答 1

Database Administration用户

发布于 2019-07-24 21:45:11

使用与jsonjsonbhstore类型的单一文档类型列相同的表定义来存储安装之间不同的少数列的附加键/值对。如果需要动态/灵活,这通常是最有效的解决方案。

如果动态列的总数不超过几十个,您甚至可以为每个安装实现一个相同的列超集,并且只使用实际值填充使用中的列。剩下的可以保持为空。空存储在Postgres中很便宜,基本上每个字段1位。

相关信息:

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/243709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档