以下是我认为无列表格的好处,它们可能更多地属于温暖和模糊类别:1. 在添加任何用户定义列之前创建表格的一个实际用途是,在创建新系统或进行快速开发迭代时,它可以让您快速迭代。2. 更像是第一种用途,但是它可以让您存根表格,以便您的应用程序逻辑或过程可以引用它们,即使尚未放置列。3. 我可以看到在大公司有很多开发人员的情况下,它会变得方便。也许您想在完成工作之前提前几个月保留名称。只需将新的无列表格添加到构建中。当然,他们仍然可以劫持它,但是您可能能够赢得争论,即在他们提出其他计划之前,您已经使用它了。有点边缘,但是是一个有效的好处。所有这些都很方便,当我不在PostgreSQL中工作时,我会想念它们。
我不知道为什么PostgreSQL要包含零列表,但是零属性关系在关系代数理论中扮演了一个角色,而SQL就是基于这个理论的(广泛地说)。具体来说,没有元组的零属性关系(在SQL术语中,即没有列和行的表)是零或假的关系等价于关系代数中的零;而没有属性但有一个元组的关系(SQL:没有列,但有一行,在PostgreSQL中好像不可能)则是真或一。Hugh Darwen是关系理论的坚定支持者和SQL批评家,他分别称这些为“Table Dum”和“Table Dee”。在普通的代数中,x + 0 == x 和 x * 0 == 0,而x * 1 == x;关系代数中的想法是,Table Dum 和 Table Dee 可以用作类似于联接、并集等的原语。PostgreSQL 内部将表(以及视图和序列)称为“关系”,因此虽然它是围绕实现 SQL 的,而 SQL 并没有被这种纯关系代数所定义,但在其设计或历史中可能存在这样的元素。
这不是空表,只是没有结果。PostgreSQL的行包含一些默认情况下看不见的列。我不确定,但它可能是来自Postgres作为面向对象关系数据库时的历史遗留问题,并且PG支持POSTQUEL语言。这个空表可以作为类层次结构中的抽象祖先。 系统列列表