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

学无止境-逆流而上 2013-01-06 11:35:16
有一个排名:
1 信息一 上移 下降 删除
2 信息二 上移 下降 删除
3 信息三 上移 下降 删除
4 信息四 上移 下降 删除
有分页,然后还要支持一个或者多个集体上移到顶部位置,表怎么设计呢?自增排序字段好像不是很好。
...全文
237 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
ACMAIN_CHM 2013-01-07
  • 打赏
  • 举报
回复
比如在表中 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 到数据库。
WWWWA 2013-01-07
  • 打赏
  • 举报
回复
只有建立1个辅助表,保存顺序,ID唯一 id num 替换NUM,再与工作表通过ID连接
  • 打赏
  • 举报
回复
谢谢以上各位的回答,结贴!
ACMAIN_CHM 2013-01-06
  • 打赏
  • 举报
回复
表的设计很简单,复杂的是在你的UI上实现。 表 (id, title, seqno) 然后你的程序要控制这个 seqno
rucypli 2013-01-06
  • 打赏
  • 举报
回复
在表的上加一个字段 代表当前序列 -1带表删除 用数字代表所在位置
  • 打赏
  • 举报
回复
版主大神,所谓更新到数据库,是不是把这个表的所有排序字段都更新呢?
ACMAIN_CHM 2013-01-06
  • 打赏
  • 举报
回复
不管是几个,先在UI中排好顺序。这样在UI中每个记录自然就可以编号从1,2,3,4.. 然后更新到数据库。
  • 打赏
  • 举报
回复
我明白你意思了,你更新的意思是全部一次性更新吗?如何更新才好,主要是红色字体标注的问题希望能有效解决。
ACMAIN_CHM 2013-01-06
  • 打赏
  • 举报
回复
在UI中排好序,然后更新到数据库中。
  • 打赏
  • 举报
回复
2#的朋友我程序UI应该没问题,但是就是数据库还是要操作的啊,就如我上面所说的。
  • 打赏
  • 举报
回复
这是上移 下移的功能,这个没问题。关键是一个或者多个上移到最前面问题的解决。比如:1,2,3,4,5排序,我4,5移到上面,1,2,3就要每个加2,重新变成1,2,3,4,5排序。如果记录数多的话,改动是不是太大了?有没有更好的解决方案或者算法呢?
rucypli 2013-01-06
  • 打赏
  • 举报
回复
不用后面的字段都要变啊 比如序列是1 2 3 4 如果3上移 就只需要修改2和3两条记录 1和4不用变的
  • 打赏
  • 举报
回复
上移,下移这个好实现,关键是 一个或者多个上移到最前面,后面的排序字段都要改变,比如移动2条记录到前面,前面记录排序字段都要减2,还要考虑删除字段,记录缺失(或者像1#说的做逻辑删除吗?)。记录数太多的话,性能不好,这个好像是个算法问题了。

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧