中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > Web开发 > Asp > 综合文章
bbs的树状结构算法
作者:佚名 时间:2006-11-05 16:45 出处:互连网 责编:月夜寒箫
              摘要:bbs的树状结构算法

数据库设计中order_value是用来排序的,具体实现是
**注意以下的讨论是对一个主题而言,就是对一棵树而言!
如果加一新贴那么 order_value=0
如果跟贴查比父贴 order_value大的order_value
如果有假设为next_value,那么新帖的
order_value为父贴的(order_value+next_value)/2;
如果有那么新帖的order_value为父贴的order_value+1000
也就是说如果对A贴跟贴,如果A为末贴,A的字帖的order_value为order_value(父)+1000,
不是末贴既找出比A大的order_value,新的order_value为两者的一半!
排序实现: order by groupid,order_value desc
**技巧如果想实现层次多一点可以每次加的多一点+100000,那样应该会好一点

 

***不足之处:
1:使用两个字段排序,速度有点慢
2:使用order_value是一个浮点数,使用float估计不够,还是使用double
3:只能实现理论上的无穷层实际上超过10层使用float有问题,使用double可能没有
4:插入是需要查找下一个order_value

Dim ordervalue, nextvalue As Double
sql = "select gorders where gId=" & gId & " and goders> " & gorders & " order by goders "
rs1.Open sql, conn1, adOpenForwardOnly, adLockOptimistic '查询比父贴大的
order_value
If (rs1.EOF And rs1.BOF) Then
gorders = gorders + 256
gLayer = gLayer + 1
Else
nextvalue = rs1("gorders")
If (nextvalue - gorders) > 1 Then
gorders = Int((gorders + nextvalue) / 2)
gLayer = gLayer
Else
'gorders,glayer跟回帖一样
End If
End If

End Sub

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有