在 Postgres 中将多个值链接在一起

Posted

技术标签:

【中文标题】在 Postgres 中将多个值链接在一起【英文标题】:Link several values together in Postgres 【发布时间】:2020-05-16 11:05:38 【问题描述】:

从 MongoDB 我有两个集合:集合“A”有列“a”、“b”、“c”和集合“B”:“c”、“d”、“e”。 我的目标是创建 Postgres 表“a”、“b”、“c”、“d”、“e”,并从 MongoDB 不断更新 Postgres 中的数据。问题是“d”或“e”是否已更改 -> 我必须在 Postgres 的连接表中更新所有对应的“c”,这非常慢。 有没有办法以某种方式链接它们之间的“c”值,以便它们可以在整个表中同时更新。

【问题讨论】:

你的意思是“你必须更新连接表中的相应c”?你的数据库是如何在 Postgres 中定义的?你真的有五张表还是两张表,每张三列?如果是这样,您在每个表中有哪些列。 @ex4 比如说,第一个集合是带有 user_id 列的购买。第二个集合 - 用户信息,包括 user_id。我的目标是将这两个连接的集合存储在 Postgres 中作为一个表。我可以让一个用户进行大量购买,因此,如果用户信息更新,我将不得不为每个购买过的用户更新此信息。 【参考方案1】:

与 MongoDB 不同,Postgres 是一个关系数据库。看来您正试图像使用非 SQL 数据库一样使用它。有一篇关于数据库规范化的优秀 Wikipedia 文章。看看这个概念。 https://en.wikipedia.org/wiki/Database_normalization

在您的示例中,您可能希望有两个表。一种用于用户,一种用于购买。您的购买表中有一个字段是引用您的用户表的外键。当有新的销售或者你修改旧的时候,你不需要修改你的用户表。

在对该数据库进行查询时,您使用 JOIN 并获得结果,就像所有数据都在一个表中一样。

【讨论】:

以上是关于在 Postgres 中将多个值链接在一起的主要内容,如果未能解决你的问题,请参考以下文章

在dict python中将多个值映射到一个

如何在单个 Postgres 服务器中将 Embedded Debezium 用于多个数据库?

如何在 Postgres 中将布尔数组转换为单个布尔值或单个字符串

如何在 Access 中将一个控件源与来自用户表单的多个组合框一起使用?

在Postgres中将十六进制字符串转换为bigint [重复]

在laravel [实现过滤器]中将多个表与雄辩和急切的加载一起加入