数据库 表设计

a b c d 4个人

a将任务转办给b.

b将任务转办给c.

c将任务转办给d.
...

a 看到的记录. a->b->c->d.
....

数据表应该如何设计呢?


墨色风雨
浏览 667回答 2
2回答

largeQ

因为MySQL 不太支持存储有顺序的列表类型, 当然如果把任务队列a->b->c->d看成字符串另说。有没有考虑过给任务额外增加一些属性,比如计数,时间戳等。因为任务本身应该有一定时效性。没理解错的话,其实就是当某一个用户开始接手这个任务之后,后续任务对其可见。比如一项任务执行顺序是a-b-c-d-b,那可以有:user task order a    task1   0 b    task1   1 c    task1   2 d    task1   3 b    task1   4 b    task2   0 d    task2   1 ...  ...     ...比如要查询b的记录,那么就是b接手之后的所有任务都是对b可见的SQL查询可以是:其中table1 就是存储上述数据的一个表。子查询得到的结果就是找到该用户最早接手的任务对应的序号,这里是2。SELECT table1.user FROM table1  WHERE table1.order >=      (SELECT table1.order       FROM table1       WHERE table1.user = 'a'     AND table1.task = 'task1'       ORDER BY table1.order       LIMIT 1)  AND table1.task = 'task1'ORDER BY table1.order;最后得到有顺序的b->c->d->b。

慕神8447489

可以建个1对多关系的两张表啊,任务表(task_id,..)和任务转办表(id, task_id, user_id, parent_id, next_id,..),parent_id为0的就是第一个接手记录,next_id为0的就是最后个接手的记录。查这个任务的所有关系链按照id升序就是了。查指定人的下级关系链找转办表主键id大于这个人所在记录的主键id的就行了。
打开App,查看更多内容
随时随地看视频慕课网APP