我是postgresql的新手,但我对mysql有很好的体验.我正在阅读文档,我发现postgresql有一个数组类型.我很困惑,因为我无法理解这种类型在rdbms中有用.为什么我必须选择这种类型而不是使用经典的一对多关系?
提前致谢.
我使用它们来使树(例如评论线程)的处理变得更容易。您可以将从树的根到单个节点的路径存储在数组中,数组中的每个数字都是该节点的分支编号。然后,您可以执行以下操作:
SELECT id, content
FROM nodes
WHERE tree = X
ORDER BY path -- The array is here.
Run Code Online (Sandbox Code Playgroud)
PostgreSQL 将以自然方式逐个元素地比较数组,因此ORDER BY path将以合理的线性显示顺序转储树;然后,您检查 的长度path以计算出节点的深度,并为您提供缩进以正确渲染。
上述方法只需一次传递数据即可从数据库到达呈现的页面。
PostgreSQL 还具有几何类型、简单键/值类型,并支持各种其他复合类型的构造。
通常,使用传统的关联表会更好,但工具箱中拥有更多工具也没有什么问题。