当前位置: 代码迷 >> Oracle开发 >> 两个表的多重映射关系如何实现啊
  详细解决方案

两个表的多重映射关系如何实现啊

热度:157   发布时间:2016-04-24 06:23:49.0
两个表的多重映射关系怎么实现啊?
用户表 和 任务表  
业务是这样的。任务只能被一个人接,一个人接了其他人不能再接,用户只能同时接一个任务,没有提交之前不能继续接任务。任务被完成以后只是保存记录,不能被重复接受或执行。
任务是群发给用户的 
1任务表中有一个字段记录都下发给那些用户。
2任务有一个字段记录被谁接了。
3用户有一个字段记录当前进行的任务。

用户完成提交任务以后可以等待新的下发任务,接到以后继续任务。

这个用户和任务表的关系到底是 一对多还是 多对多。怎么在PowerDesigner15 概念模型中设置?
------解决思路----------------------
这个任务和用户是一对一的关联关系啊。表结构可以这样设计:
1)任务表task,字段:id(任务编号),executor_id(执行用户),status(执行状态);外键executor_id
2)用户表user,字段:id(用户编号)
直接在任务表里面外键关联用户就可以了。任务表首先都是初始状态的任务记录,没有执行用户的信息,轮询该表记录将任务分配给用户,并且修正状态为中间状态;任务执行完成后修正已完成。
还有一种方案是直接两种单独的任务表和用户表,然后再定义一个中间表,记录关联关系。
1)任务表:task,字段:id(任务编号)
2)用户表:user,字段:id(用户编号)
3)任务用户关联表:task_execute_info,字段:task_id,user_id,status

------解决思路----------------------
过分复杂的逻辑不能依靠数据库结构来实现,而应在代码逻辑中控制,具体情况具体分析
------解决思路----------------------
1)用户表user,字段:userid(用户编号),cjstatus(承接任务状态,1或0)……
2)任务表task,字段:taskid(任务编号),status(任务状态),executor_userid(承接人ID),……
当承接任务时,更新任务表的任务状态和承接人,更新用户表的承接任务状态;当完成任务时,更新任务表的任务状态和用户表的承接任务状态
------解决思路----------------------
你的意思是先有个群发的环节,然后才是收到群发的某个人承接了任务,对吗?
如果这样,有两种办法:
a、再建一个任务群发表(taskid(任务编号),qf_userid(群发人))
b、在任务表建一个字段(用a,b,c这样的方式存储群发的用户),这种设计方式编程复杂点
  相关解决方案