毕业论文开发语言企业开发JAVA技术.NET技术WEB开发Linux/Unix数据库技术Windows平台移动平台嵌入式论文范文英语论文
您现在的位置: 毕业论文 >> 数据库 >> 正文

一个排名管理的mysql数据库设计

更新时间:2013-1-8:  来源:毕业论文

一个排名管理的mysql数据库设计

有一个排名:
1 信息一 上移 下降 删除
2 信息二 上移 下降 删除
3 信息三 上移 下降 删除
4 信息四 上移 下降 删除
有分页,然后还要支持一个或者多个集体上移到顶部位置,表怎么设计呢?自增排序字段好像不是很好。

在表的上加一个字段 代表当前序列  -1带表删除  用数字代表所在位置

上移,下移这个好实现,关键是 一个或者多个上移到最前面,后面的排序字段都要改变,比如移动2条记录到前面,前面记录排序字段都要减2,还要考虑删除字段,记录缺失(或者像1#说的做逻辑删除吗?)。记录数太多的话,性能不好,这个好像是个算法问题了。

不用后面的字段都要变啊  比如序列是1 2 3 4  如果3上移 就只需要修改2和3两条记录  1和4不用变的  

这是上移 下移的功能,这个没问题。关键是一个或者多个上移到最前面问题的解决。比如:1,2,3,4,5排序,我4,5移到上面,1,2,3就要每个加2,重新变成1,2,3,4,5排序。如果记录数多的话,改动是不是太大了?有没有更好的解决方案或者算法呢?

在UI中排好序,然后更新到数据库中。

只有建立1个辅助表,保存顺序,ID唯一
id num
替换NUM,再与工作表通过ID连接

比如在表中
id,title,seq
1 信息一 1
2 信息二 2
3 信息三 3
4 信息四 4

以seq 来排序。 UI加载的时候,直接从表中取记录 order by seq.
UI上进行调整,排序(这个在UI中用代码实现,与数据库无关)
在UI中应该得到一个调整后的集合
2 信息二 1
1 信息一 2
4 信息四 3
3 信息三 4

此时,在保存事件中将 seq值 update 到数据库。

设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优尔论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。