用排序串字段实现树状结构(原理)

平稳的路

平稳的路

2016-01-29 17:59

用排序串字段实现树状结构(原理),用排序串字段实现树状结构(原理)
  实现原理:以一排序字段(字符型实现排序),该字段的实际长度即为回复深度(用一位字符代表一层深度时)。
    所受限制:回复深度只受排序串定义长度的限制(有点象空间换深度),每贴回复数(包括根贴和子贴)为30左右(当sql
server使用Dictionary order,case-insensitive排序方式,即不区分字母大小写时),如果sql server使用Binary orders排
序方式时受限为127(255?)。
    改进方法:如果觉得不够用,可以使用多位字符对应一个深度(这样计算有点麻烦),或使用几位数字代表一个深度,例如3
位数字——最多可以999个子贴,不过些时排序字段的长度应为“3*最大深度”)
优点:此法是正则的——均匀的。

    有关树状结构的字段:rootid、orderstr(varchar型,按需要深度定,假如你最大要使用20层回复深度,则定为varchar
(20),余类推)

例如:(以下排序均按order by rootid+(1-sign(rootid))*lybid desc,orderstr,id desc排序)
id     rootid    orderstr
1        0        空串
2        1        z  ——回复根贴,使用串z初始化排序字串
___________________
3        1        y  ——回复1,将排在1后面的排序字符串的最后一个字符z的ascii码减1,组成新的排序串。

排序结果为:
id     rootid    orderstr
1        0        空串
3        1        y
2        1        z
___________________
4        1        x  ——回复1贴,排序字符串求法同上

排结果为:
id     rootid    orderstr
1        0        空串
4        1        x
3        1        y
2        1        z
___________________
5        1        xz ——回复4贴,检查4贴是否已经有回复,现没有,初始化排序串第二个字符(在4后加上z)

排序结果为:
id     rootid    orderstr
1        0        空串
4        1        x
5        1        xz
3        1        y
2        1        z
___________________
6        1        xy ——回复4贴,将4贴的第一子贴的排序字串最后一个字符的ascii码减1

排序结果为:
id     rootid    orderstr
1        0        空串
4        1        x
6        1        xy
5        1        xz
3        1 
展开更多 50%)
分享

猜你喜欢

用排序串字段实现树状结构(原理)

ASP
用排序串字段实现树状结构(原理)

用排序串字段实现树状结构(库结构)

ASP
用排序串字段实现树状结构(库结构)

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

用排序串字段实现树状结构(存储过程)

ASP
用排序串字段实现树状结构(存储过程)

用排序串字段实现树状结构(例程——删除贴子)

ASP
用排序串字段实现树状结构(例程——删除贴子)

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

用排序串字段实现树状结构(例程——显示树)

ASP
用排序串字段实现树状结构(例程——显示树)

用排序串字段实现树状结构(例程——回复表单)

ASP
用排序串字段实现树状结构(例程——回复表单)

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

如何用APT维护红帽企业版Linux

如何用APT维护红帽企业版Linux

不能ASP图像组件来生成图像的ASP计数器程序(三)

不能ASP图像组件来生成图像的ASP计数器程序(三)
下拉加载更多内容 ↓