【问题标题】:In PostgreSQL, efficiently using a table for every row in another table在 PostgreSQL 中,有效地为另一个表中的每一行使用一个表
【发布时间】:2019-12-02 11:40:57
【问题描述】:

我很抱歉我的问题中缺少符号,但我对 SQL 不太熟悉。尽管在互联网上搜索了相当长的时间,但我找不到如何有效地做我想做的事,但这可能是因为我不熟悉这个符号。问题来了:

我想创建一个表格,比如 Forms,其中每个 Form 行都有一个 ID、一些元数据和一个指向该 Form 行的表的指针(?),比如说 Form12 表,它将我引导到 Form12 表。我需要它,因为每个表单都有不同的列数、名称和类型,具体取决于用户对特定表单的配置。

所以,我想我可以把 Form12 的表格 ID 作为表格的一列。但是这种方法被认为可以吗,还是有更好的方法呢?

感谢您的宝贵时间。

【问题讨论】:

  • 您可以使用 jeson 数据类型作为我想可以解决您的目的的列之一
  • @smn_onrocks 我会检查一下,谢谢。

标签: sql postgresql postgresql-11


【解决方案1】:

在列中存储表的名称在关系数据库中通常不是一个好的解决方案。为了使用这些信息,您需要使用动态 SQL。

我会问为什么不能将信息存储在单个表或明确定义的表集中。 Postgres 有很多选项可以帮助解决这个问题:

  • NULL数据值,所以列不需要填写。
  • 表继承,因此表可以共享列。
  • JSON 列支持一组灵活的列。
  • 实体-属性-值 (EAV) 数据模型,具有很大的灵活性。

【讨论】:

  • 感谢您的回答,正如我所说,我不是专家,只是在大学学习了 sql 课程。我可以问一下,在最终可能存在(因为有人可以添加另一个具有不同变量的表单)的情况下将信息存储在一个表中,存在大量列,您会选择哪种方法?我要研究你所说的东西,但需要一些偏见:)
  • @OzgurBagci 。 . .您可能有一个很好的表继承用例:postgresql.org/docs/current/tutorial-inheritance.html
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-08-25
  • 1970-01-01
  • 1970-01-01
  • 2020-09-16
  • 2022-01-25
  • 2011-07-17
相关资源
最近更新 更多