a b c d 4个人
a将任务转办给b.
b将任务转办给c.
c将任务转办给d.
...
a 看到的记录. a->b->c->d.
....
数据表应该如何设计呢?
可以建个1对多关系的两张表啊,任务表(task_id,..)和任务转办表(id, task_id, user_id, parent_id, next_id,..),parent_id为0的就是第一个接手记录,next_id为0的就是最后个接手的记录。查这个任务的所有关系链按照id升序就是了。查指定人的下级关系链找转办表主键id大于这个人所在记录的主键id的就行了。
5 回答3.2k 阅读✓ 已解决
3 回答3.6k 阅读✓ 已解决
1 回答4k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
2 回答2.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
1 回答2.4k 阅读✓ 已解决
因为MySQL 不太支持存储有顺序的列表类型, 当然如果把任务队列
a->b->c->d
看成字符串另说。有没有考虑过给任务额外增加一些属性,比如计数,时间戳等。因为任务本身应该有一定时效性。
没理解错的话,其实就是当某一个用户开始接手这个任务之后,后续任务对其可见。
比如一项任务执行顺序是
a-b-c-d-b
,那可以有:比如要查询b的记录,那么就是b接手之后的所有任务都是对b可见的
SQL查询可以是:其中
table1
就是存储上述数据的一个表。子查询得到的结果就是找到该用户最早接手的任务对应的序号,这里是2
。最后得到有顺序的
b->c->d->b
。