`
wangshare
  • 浏览: 21358 次
  • 性别: Icon_minigender_1
  • 来自: 佛在我心
社区版块
存档分类
最新评论

postgresql8.4终于来了,Recursive Queries[递归查询]的新功能让我等待了好久

阅读更多

我想写的是关于数据库方面的一个随笔

 

内容来自:

http://www.postgresql.org/docs/8.4/static/release-8-4.html  [Easier to usr than ever]

 

我猜想很多开发者在遇到比如组织结构,菜单管理等具有树状属性的数据管理的时候,会犹豫不决,表如何设计呢,在很久以前,曾经有如下设计组织表t_org_m【当时使用mssqlserver2000或者postgresql7.3】:

 

          id                                  比如: 11

          p_id                              比如:  10

          name                             比如: 销售部

          order_by_no                比如: 1000.1001          .

          .

          .

数据表中可能是这样的

id       pid        name         order_by_no

10       0         XX公司        1000

11       10        销售部         1000.1000

12      10           财务部         1000.1001

13      11        销售组        1000.1000.1000

14      11          销售组2      1000.1000.1001

 

我们插入如上的数据来形成树状数据,查询的时候直接

select * from t_org_m  order by order_by_no

可是在编辑的时候,或者调整数据排序的时候,是很麻烦的,需要变更很多的数据,如果把一级节点修改到上一级或者下一级,那么修改内容是很多很多的,为了速度,还使用存储过程来辅助解决节点排序的问题。

 

有没有更简洁的办法,当然有:

如果使用oracle9i,或者db2我想问题不至于这么复杂,基本一样的表结构设计,但数据内容稍有不同

          id                      比如: 11

          p_id                  比如:  10

          name                比如: 销售部

          order_by_no    比如: 1

 

id       pid        name         order_by_no

10       0         XX公司        1

11       10        销售部        1

12      10           财务部         2

13      11        销售组        1

14      11          销售组2      1

在存储的时候,order—by_no的数据不一样了,和上面的差别在哪儿呢:

 

前者记录的用"."分隔的数据其实是这条数据在全局树中的排序,但是后者用的是简单的数字,代表的是在兄弟节点中的顺序。

其实order_by_no类型也不同

前者  type varchar200

后者  type  integer  

查询的时候如何查询呢:

select * from t_org_m start with id=10 connect by prior id=p_id order by order_by_no;

 

 这种办法可以更简便的得到树状查询结果,而且是更便于编辑。

 

因为工作的缘故,我接触了很多版本的postgresql,而且正在使用8.3的版本,关心postgresql的朋友可能知道enterprsedb,这个是postgresql商业化的结果,enterprsedb建立在postgresql基础之上,目标兼容oracle数据类型和过程语言格式,最终可以达到替换oracle的结果,在enterprsedb中已经拥有了类似oracle的递归查询功能,可是postgresql8.3却不存在,虽然外国一家公司,看域名可能是奥地利的

http://www.postgresql.at/english/produkte_postgresql_e.html开发了一款Postgresql8.3RC版,拥有递归查询的功能,但是我却希望伯克利研究postgresql的高人们能开发出同等功能。

 

 

终于等到了8.4,他声称的的递归查询到底怎么样的,拭目以待。

 

 

请大家多多关注postgresql,个人觉得他是开源数据库领域的超重量级产品。就他的历史,他在全球范围内的影响力而言,他在中国的知名度和影响力好像不太协调。

分享到:
评论

相关推荐

    PostgreSQL 8.4帮助文档chm

    这个是最新的PostgreSQL8.4版本的帮助文档,chm格式,挺经典的,建议研究和使用PostgreSQL的朋友收藏。

    PostgreSQL 8.4

    在 PostgreSQL 8.4 版本中,用户可以享受到许多新特性,如改进的性能、增强的并发性以及更丰富的数据类型支持。以下是针对 PostgreSQL 8.4 的详细安装过程: ### 一、系统需求 在安装 PostgreSQL 8.4 之前,确保你...

    PostgreSQL_8.4安装及空间数据导入_安装操作手册

    PostgreSQL 8.4是PostgreSQL数据库管理系统的一个版本,它是一个开放源码的对象关系数据库系统。PostgreSQL以健壮性和高性能而闻名,支持标准的SQL语言以及许多其它特性。PostGIS是PostgreSQL数据库的一个扩展,它为...

    数据库设计之递归树查询

    在支持`WITH RECURSIVE`的数据库(如PostgreSQL、SQL Server)中,递归查询的通用语法如下: ```sql WITH RECURSIVE cte_name AS ( -- 初始化子查询(非递归部分) SELECT column1, column2, ... FROM table_...

    postgresql-8.4-701.jdbc3.jar

    postgresql 数据库的驱动包 postgresql driver

    树PostgreSQL的递归查询

    树PostgreSQL的递归查询树PostgreSQL的递归查询树PostgreSQL的递归查询

    PostgreSQL 8.4官方开发文档A4

    ### PostgreSQL 8.4官方开发文档A4:关键知识点概览 #### 一、PostgreSQL简介与历史背景 - **PostgreSQL定义**:PostgreSQL是一款功能强大的开源对象关系型数据库系统,它支持复杂的查询和事务处理,具备高度的...

    PostgreSQL v8.4.14.1 For Windows

    符合ANSI SQL 92和ANSI SQL 99标准,是目前功能最强、最稳定的开放源代码数据库产品,具有存储过程、事务、视图、触发器等功能,与MySQL相比,PostgreSQL注重整体性能和稳定性。

    postgresql-8.4-703.jdbc3

    postgresql-8.4-703.jdbc3

    PostgreSQL图(graph)的递归查询实例

    在PostgreSQL中,图(graph)的递归查询是一种强大的功能,尤其在处理复杂的数据结构时。本篇将深入探讨如何在PostgreSQL中进行递归查询,以解决涉及图结构的问题。 首先,我们要明白图和树的主要区别。在树形结构中...

    libpq for centos(postgresql 8.4)

    此版本是postgresql 8.4目录下下载的头文件和so wmslib.tar.gz需要解到linux目录 不能解到/mnt的windows目录下 否则符号链接libpq.so会不存在将这些库放到系统路径下即可实现连接 例如64位系统,/usr/lib64/ ...

    PostgreSQL 8.4beta英文版

    虽然咱是中国人,喜欢读中文。但PostgreSQL ,原版还是准确些

    postgre8.4

    PostgreSQL 8.4是PostgreSQL数据库管理系统的一个旧版本,发布于2010年,具有许多关键功能和改进。PostgreSQL是一个开源的关系型数据库系统,以其强大的事务处理能力、丰富的SQL支持和高度稳定性而闻名。8.4版本在...

    PostgreSQL v8.4.14.1 For Linux

    符合ANSI SQL 92和ANSI SQL 99标准,是目前功能最强、最稳定的开放源代码数据库产品,具有存储过程、事务、视图、触发器等功能,与MySQL相比,PostgreSQL注重整体性能和稳定性。

    postgresql-8.4-701.jdbc4.jar

    postgresql-8.4-701.jdbc4.jar for windows 更多PostgreSQL资源待续

    postgresql-8.4-702.jdbc3-API文档-中文版.zip

    jar包文件:postgresql-8.4-702.jdbc3.jar javadoc API文档文件:postgresql-8.4-702.jdbc3-javadoc.jar sources 源代码文件(若本来存在):postgresql-8.4-702.jdbc3-sources.jar 对应Maven信息: groupId:...

    postgresql-8.4-702.jdbc4-API文档-中文版.zip

    jar包文件:postgresql-8.4-702.jdbc4.jar javadoc API文档文件:postgresql-8.4-702.jdbc4-javadoc.jar sources 源代码文件(若本来存在):postgresql-8.4-702.jdbc4-sources.jar 对应Maven信息: groupId:...

    hibernate实现递归查询

    本文将深入探讨如何使用Hibernate实现递归查询,以解决在数据层次结构中涉及父节点与子节点关系时的问题。递归查询通常用于处理树形结构的数据,例如组织结构、菜单系统或者文件目录等。 首先,我们需要了解递归的...

    postgreSQL 拼音字库 汉字转拼音 8.4

    网上传的postgreSQL汉字转拼音的方法,是针对9.3的版本(相信你要是8.4的也搜到了但不能直接用,才来看我的),尝试了8.4的版本来做拼音处理。发现网上的《postgreSQL汉字转拼音》里面坑比较多,尝试纠正了一下,发...

    org.postgresql-8.4.702.jdbc4.1-rc6.zip

    pg-inet-maven.zip,这个包简单地包装了postgresql-${postgresql.version}.jar.postgresql networking extansions用maven重建和增强

Global site tag (gtag.js) - Google Analytics