最近在做一个合同签约方面的系统,数据库设计不知道该怎么设计,求大家帮帮忙

jiaowonange 发布于 2016/05/31 17:26
阅读 712
收藏 0


需求:一个合同,一个人发起后,可以添加一个或者多个签约人,指定顺序,发起者签名后,后面的人依次去签署,每个人都 签署完了,这个合同就算完成了;
细节:①:比如:A发起并签名后,B、C签署,那么A状态:已经签署,BC状态:待签署
                      ②:这里把ABC叫做签约人,每个签约人都是可以查到自己待签署的合同,已经签署的合同,完成的合同等等;
                      
我的设计:
                       合同表(contract):合同ID(cID),合同过期时间,合同名称,合同信息等,合同状态;
                       签约人表(user):uID,cID,username,cellphone,order(签约顺序)等;
                       合同_签约人中间表(con_user):uID,cID,state(合同对于每个签约人的状态);
不足:我现在这样设计,总觉得很冗余,首先签名记录没有,流程没有,每次更改中间表状态后,还要更新合同的状态;但是不知道该如何下手,怎么样才能更好的设计呢;求大神们指点一二;
加载中
0
leo108
leo108
中间表加上order字段、update_time字段
leo108
leo108
回复 @jiaowonange : order在签约人表里不合理吧,难道一个签约人只能参与一次签约?如果是这样的话,就不需要中间表了啊
j
jiaowonange
order字段在签约表中有的,时间字段是有的,这不是关键点,我不知道怎么设计更加合理呢
0
ZeRur
ZeRur
感觉有点像工作流的方式
j
jiaowonange
没做过工作流方面的设计,想不出很好的设计
0
tywali
tywali
如果不需要记录签约人状态改变的时间,则合同_签约人中间表”这个表没有必要,可以把签署状态合并到签约人表,如果想记录签约人每个状态发生的时间,则可以要合同_签约人中间表,同时增加上更新时间。
j
jiaowonange
恩,感觉中间表是没有多大用了,我再考虑考虑
0
就是个精虫上脑的地方
就是个精虫上脑的地方

合同作为主表 每一个签署人作为子表的一条记录挂在合同表下面,如果想在子表中体现顺序也可以把子表的顺序也关联起来 具体看你想怎么实现了

搞清楚谁是主体,谁是附属就容易分析一些,以上个人建议,仅供参考

合同---ID,合同信息等

|-------签署人A,合同ID,时间,状态等

|-------签署人B,合同ID,时间,状态等

j
jiaowonange
看楼下我的想法,提提建议吧,多谢;
0
j
jiaowonange
子表就是所谓的合同和签署人的中间表喽,签署人是单独的一张表,我现在设计:
    合同---id,状态,合同信息;
    签署人--id,手机,基本信息等
    中间表:--合同id,签署人id,操作时间,状态,顺序
目前主要是这三个表,中间表体现合同对于每个签署人的状态,合同的状态是整个合同的状态,另外我又加了操作记录表;
虽然合同的状态好查,每个合同对于签署人的状态好查,但是每个合同的进度不是很明显(比如从发起合同-哪位签署人已经签名,该哪位签署人签名,还剩谁没有签名),想在这方面优化,不晓得表该怎么设计。
0
3
32Er43
这就是工作流吧
j
jiaowonange
有点那个感觉
0
月生无界
月生无界

个人觉得,一个合同可以有几个签署人,且人数不定,一个签署人也可能签署多个合同,合同数不定,这是一种多对多的关系,两者必须要分开来,通过中间表的连接,这样可以更方便以后的业务拓展。看了一下,你说的操作记录表,我觉得中间表就是一个操作记录表了,不需要另外添加了吧。签署人只有签与没签两种状态,你加两个时间,一个中间表记录的创建时间,一个签署时间,就可以记录了。

另外一个问题,不知道你们的合同需求是发起人必须首先签名,然后其他签署人必须按照发起人所规定的顺序来签名,否则不给签(不知道题主有没有考虑到除了发起人,其他签署人可能会无序签这种情况,觉得你们产品分分钟坑死你们),在合同表添加合同人数标志,签一个,减一,到0,表示合同完成

(比如从发起合同-哪位签署人已经签名,该哪位签署人签名,还剩谁没有签名)这个直接以中间表为主,查询签署状态是未签的人就行了,前提是,当发起者指定签署人时,要在本表记录所有该合同的签署人

j
jiaowonange
我只是求一个思路,业务不是一句能说完的,多谢了;
j
jiaowonange
用心了,可以参考的很多,多谢啦;
0
开源中国首席技术官
开源中国首席技术官

学习一下工作流引擎吧

比如Activiti,jbpm

j
jiaowonange
恩,多谢
返回顶部
顶部