数据库

本类阅读TOP10

·SQL语句导入导出大全
·SQL Server日期计算
·SQL语句导入导出大全
·SQL to Excel 的应用
·Oracle中password file的作用及说明
·MS SQLServer OLEDB分布式事务无法启动的一般解决方案
·sqlserver2000数据库置疑的解决方法
·一个比较实用的大数据量分页存储过程
·如何在正运行 SQL Server 7.0 的服务器之间传输登录和密码
·SQL中两台服务器间使用连接服务器

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
关于树型结构的表,及排序的问题

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

刚才一同事碰到一个树型结构表的排序的问题,让我想到一个隐藏很深的BUG。我通常对树型结构的表都是这样设计的:在表中与排序相关的有三个列,ID,ParentID, TreeKey

ID:本条记录的唯一主键
ParentID:父记录的编号
TreeKey:表示层级结构,形如xx.xxx.xxxx

关键是TreeKey,我以前都要求存入父ID的编号,像这样

ID                              ParentID                              TreeKey
---------------------------------------------------------------------
1        NULL            1
2        1            1.2
3        1            1.3
...
10       1            1.10
11        1            1.11

像这样的话,按照TreeKey进行排序就会出现问题,因为TreeKey是个字符串,而1.10会排到1.2, 1.3之前,很显然,这不是我们要的结果。要解决其实也很简单,在编号前面补0,比如,1.10就写成0001.0010,1.2就写成0001.0002,这样排序就不会有问题了。

这让我想起很早前看的微软的一个有关树的软件代码,就看到他们是以000x.000x这种方式进行处理的,当时我还感觉他们怎么这么麻烦,现在想来,才发现是自己无知了,呵呵。




相关文章

相关软件