在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/PHP  數(shù)據(jù)庫(kù)/ 數(shù)據(jù)庫(kù) 表設(shè)計(jì)

數(shù)據(jù)庫(kù) 表設(shè)計(jì)

a b c d 4個(gè)人

a將任務(wù)轉(zhuǎn)辦給b.

b將任務(wù)轉(zhuǎn)辦給c.

c將任務(wù)轉(zhuǎn)辦給d.
...

a 看到的記錄. a->b->c->d.
....

數(shù)據(jù)表應(yīng)該如何設(shè)計(jì)呢?

回答
編輯回答
醉淸風(fēng)

可以建個(gè)1對(duì)多關(guān)系的兩張表啊,任務(wù)表(task_id,..)和任務(wù)轉(zhuǎn)辦表(id, task_id, user_id, parent_id, next_id,..),parent_id為0的就是第一個(gè)接手記錄,next_id為0的就是最后個(gè)接手的記錄。查這個(gè)任務(wù)的所有關(guān)系鏈按照id升序就是了。查指定人的下級(jí)關(guān)系鏈找轉(zhuǎn)辦表主鍵id大于這個(gè)人所在記錄的主鍵id的就行了。

2018年5月11日 14:27
編輯回答
紓惘

因?yàn)镸ySQL 不太支持存儲(chǔ)有順序的列表類(lèi)型, 當(dāng)然如果把任務(wù)隊(duì)列a->b->c->d看成字符串另說(shuō)。
有沒(méi)有考慮過(guò)給任務(wù)額外增加一些屬性,比如計(jì)數(shù),時(shí)間戳等。因?yàn)槿蝿?wù)本身應(yīng)該有一定時(shí)效性。

沒(méi)理解錯(cuò)的話,其實(shí)就是當(dāng)某一個(gè)用戶開(kāi)始接手這個(gè)任務(wù)之后,后續(xù)任務(wù)對(duì)其可見(jiàn)。

比如一項(xiàng)任務(wù)執(zhí)行順序是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接手之后的所有任務(wù)都是對(duì)b可見(jiàn)的
SQL查詢可以是:其中table1 就是存儲(chǔ)上述數(shù)據(jù)的一個(gè)表。子查詢得到的結(jié)果就是找到該用戶最早接手的任務(wù)對(duì)應(yīng)的序號(hào),這里是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。

2018年3月14日 21:20
編輯回答
貓小柒

弄個(gè)任務(wù)轉(zhuǎn)辦記錄表,一個(gè)任務(wù)可以對(duì)應(yīng)多條轉(zhuǎn)辦記錄,根據(jù)任務(wù)ID查詢出對(duì)應(yīng)的所有的轉(zhuǎn)辦記錄,根據(jù)時(shí)間排序升序,就能得到 a->b->c->d的效果了

2018年8月31日 03:15