PostgreSQL:我能声明函数依赖关系吗?

3
如果对于一个给定的表,列 c 的值是由列(a,b)的值确定的,那么有没有办法将这个事实声明给Postgres?我之所以问这个问题,是因为 group by 的示例提到,如果按主键分组,则可以在select列表中使用表的任何其他列,因为它将与主键函数依赖。但是,我在文档中没有找到扩展到其他列或列组合的内容。

1
你应该阅读关系模型的基础知识,特别是关于2NF和3NF。数据库管理系统只是管理你的数据,它并不了解数据之间的关系(除了主键/外键约束)。所以关于你的模型,这是一个问题需要你来解决。 - undefined
@astentx:是的,这就是为什么我在问能否声明存在依赖关系。进一步的规范化并不总是切实可行的。 - undefined
@blue_note,恐怕astentx并没有真正理解你的问题。不幸的是,引擎虽然意识到了功能依赖,但你仍然需要使用虚拟聚合函数,比如SUM(c)或者MAX(c)来消除这个警告。 - undefined
1
@wildplasser 我理解你的问题,但是MAX(c)是你管理这个依赖关系的方式,而不是DBMS。因为你知道它存在,并且可以保证正确的结果。此外,按照主键分组可以保证访问其他列,因为你的表就是这种功能依赖关系。所以,归一化是唯一的方法。 - undefined
1个回答

4

不,您想要的功能目前不受支持(2020年)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接