【问题标题】:Does PostgreSQL have a way of creating metadata about the data in a particular table?PostgreSQL 是否有办法创建有关特定表中数据的元数据?
【发布时间】:2018-10-04 15:33:10
【问题描述】:

我正在处理许多具有相同类型列的唯一数据,但每组行都有不同的属性,我正在尝试查看 PostgreSQL 是否有一种方法来存储有关行组的元数据在数据库中,或者如果我最好将自定义列添加到我当前的列列表中以跟踪这些不同的属性。例如,Microsoft Excel 有一种方法可以将多个列合并为一个超级列,以将多个列组合为一个列,但我不知道这将如何转换为 PostgreSQL 数据库。有人想吗?

好的,不能上传文件。希望一切顺利。

Section 1 | Section 2 | Section 3
=================================
Num1|Num2 | Num1|Num2 | Num1|Num2
=================================
132 | 163 | 334 | 1345| 343 | 433
......
......
......

【问题讨论】:

  • 您在谈论“行组”,然后您在谈论“列组”。此外,这听起来像您的架构到处都是,并且可能标准化得很差。一张桌子就是一张桌子,就是这样。您可以在窗口函数中使用 OVER() 子句查询和聚合记录时“分组”记录,但我不确定这就是您所追求的。您能否分享一些示例数据以帮助我们更好地理解您在说什么?
  • 当然。不过这可能需要一些时间。
  • 嗯...即使只是一个小样本/示例,它显示了您在谈论的内容“行组与另一个组相同但不同”这从一个从 RDBMS 的角度来看,但从 Excel 的角度来看,它确实有点作用。能够将Dog; Cat; Horse; Tomato; Green Bean; Carrot 全部在同一列中可视化会很有帮助,但是有两个组?
  • 这确实有帮助。我觉得这只是标准化不良的数据。两个表会更合适(可能),但整个表布局与 RDBMS 的“关系”方面确实是对立的。
  • 在 Excel 中合并的单元格是撒旦的工作,而 RDBMS 就是不能这样工作。一列就是一列,仅此而已。

标签: postgresql


【解决方案1】:

有一个“超级组”的列(在一般的 SQL 中,不仅仅是 postgreSQL),最简单的方法是使用多个表。 示例:

Person 表可以有以下列 person_ID、first_name、last_name

employee 表可以包含以下列 person_id, 部门, manager_person_id, 薪水

客户表可以包含以下列 person_id、地址、城市、州、邮编

这样,你就可以把他们联合起来做任何你喜欢的事情..

例子:

 select *
 from person p
 left outer join student s on s.person_id=p.person_id
 left outer join employee e on e.person_id=p.person_id

或任何变化,同时将数据分成不同的类型,并且可能会在此过程中节省一点磁盘空间(例如,如果大多数“人”是“客户”,他们不需要一堆员工数据漂浮或拥有可空列)

这就是我通常处理这种情况的方式,但是如果没有一个实际的例子,很难说在你的情况下什么是最好的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-04
    • 1970-01-01
    • 2023-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-12
    • 1970-01-01
    相关资源
    最近更新 更多