在jsonb列中存储外键有哪些问题?
背景:
我有一个项目表:
Item
--------------------------
| id | name | property |
| PK | text | jsonb |
属性列是以下结构的一级jsonb:
[
{"value": "white", "item_attribute_id": "1"},
{"value": "71", "item_attribute_id": "3"},
{"value": "29", "item_attribute_id": "4"},
{"value": "48-70", "item_attribute_id": "5"},
{"value": "190", "item_attribute_id": "6"}
]
item_attribute_id是指向属性表的外键,它保存与给定属性(名称、类型、描述)相关的所有内容。
我找不到任何关于为什么这可能是一种好的/坏的做法的文献。有没有我忽略的明显的直接相关问题?
关于JSONB
type,您需要考虑以下事项:
SELECT
语句),UPDATE
操作仍然很棘手-请考虑@Erwin对此的回答。pg_column_size()
对您的案例的结果。元素
在数组
中执行搜索时,您将没有运气(例如json_array_elements()
等功能)。默认GIN
索引支持使用(CONTAINS
)@进行查询
需要考虑的条款:
从PGConf 2015重新思考JSONB
- PostgreSQL 9.4中的JSONB类型性能
问题内容: 如果我使用ID nr:s代替VARCHARS作为外键会更好吗?最好使用VARCHARS的ID nr:s istead作为主键吗?ID nr是指INT! 这就是我现在所拥有的: 我可能已经想到了: 还是我在这里认为完全错误? 问题答案: VARCHAR用于任何KEY的问题在于它们可以保留WHITE SPACE。空格由任何无法在屏幕上读取的字符组成,例如空格标签,回车符等。当您开始追查为什
我使用的框架Laravel。 我有两个表(用户和人员)。我想将persons表的主键person\u id存储在users表的外键person\u id中。目前我使用这个$user- 表用户 餐桌上的人 索引操作 商店行动 用户迁移 人员迁移 模型用户 模范人物 我只想改变这个:$user-
假设您有一个表,如下所示: 可以看到列是表的主键和外键。是的,MySQL成功生成了这个表。 问题很简单,我将如何在JPA实体中映射这一点?我是否应该有映射到列的1个id和连接列的另一个字段?欢迎提出建议。
问题内容: 我知道String类的hashCode()方法 不能 保证为不同的String-s生成唯一的哈希码。我看到了很多将String键放入HashMap-s的用法(使用默认的String hashCode()方法)。如果地图使用真正不同的String键替换了先前放置在地图上的HashMap条目,那么很多这种用法可能会导致重大的应用程序问题。 在String.hashCode()对于不同的St
我正在拉维尔创建一个项目。我有两个数据库表,它们是通过迁移创建的:我想在数据库模式中设置多个外键。 表用户 我想知道的是如何描述模型中的关系? 编辑: 我计划使用此关系,每个用户都属于部门,任何部门都有多个用户,每个用户只有一个部门
如何使用hibernate注释实现下表? 当前代码为:(为简洁起见,已删除) 使用者 社交网络 SocialProfile公司 显然我的代码现在不能正常工作。有人能解释一下吗?