文档审核:应该如何设计数据库???

shoppo0505 2016-06-03 06:17:06
目前有很多文档,不同类型的文档有不同的审核步骤,但是同一类型的文档审核的步骤数据相同,每一步的审核人数未知。
举例:
文档类型1:有5个步骤,每步只需要一个人审核
文档类型2:有4个步骤,其中1,2,4步只需要一个人审核,但是第3步需要多人审核,多人审核步骤人数未知
文档类型3:有3个步骤,每步都需要多人审核, 多人审核步骤人数未知

现在的问题是:
1. 文档表和审核表是1对n的关系,但是对于文档类型1来说,每步只需要一个人审核,这个怎么在数据库中限制审核人数?也就是说数据库怎么设计?
2. 对于某个文件,需要多人审核的步骤,该怎么设计?

现在有2种方法:
方法a)
审核表结构如下:
ID,审核人,内容,日期
对于文档类型1的数据库表格设计如下:
文档1表结构:
ID,Name等其他内容, ID_审核步骤1,ID_审核步骤2, ID_审核步骤3,ID_审核步骤4,ID_审核步骤5
但是对于文档类型2,3中多人审核的步骤没法表示

方法b)
审核表结构如下:
ID,ID_文档,审核人,内容,日期
对于文档的数据库表格设计如下:
文档1表结构:
ID,Name等其他内容,文档表中没有审核表的ID
这种方法的话,没有办法限制只需要单人审核的步骤中的人数。而且也没有办法限制步骤。

请高手指点一下,这种情况的话,数据库该怎么设计?
...全文
469 18 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
卖水果的net 2016-06-03
  • 打赏
  • 举报
回复
文档类型3:有3个步骤,每步都需要多人审核, 多人审核步骤人数未知 多人审核的这个,如果该步骤有 4 个人,是这 4 个人都要审核通过,才算通过,还是某一个审核通过,就算通过呢?
zbdzjx 2016-06-03
  • 打赏
  • 举报
回复
文档类型表:文档类型ID,文档类型 审核模板表:文档类型ID,审核步骤(第1步、第2步……),审核人员(存员工号) 文档建立完成后,点个“发送”按钮,就通过文档类型,按上面的模板生成要审核几步(几步就几行),每一步有几个人要审核(一个或多个),将审核流程存到另一个表中。
shoppo0505 2016-06-03
  • 打赏
  • 举报
回复
引用 16 楼 jinfengyiye 的回复:
[quote=引用 12 楼 shoppo0505 的回复:] [quote=引用 10 楼 xdashewan 的回复:] 看了你和楼上的对话,步骤这个东西其实有两种定义,一种是预设,也就是说你事先知道这文档需要多少步审核,在创建文档审核的记录时,就创建好了审核的步骤,比如有个画面什么的可以设置,楼上设计符合你的需求。另一种是你预先不知道一共要审核几步,审核一步是一步,这种方式需要最后有个人来做最终审核,楼上的设计也能符合你的需求,但是审核步骤这张表的用途就要改变,并不是在创建文档审核时候就把所有审核步骤都预设好,而是每次审核过后把步骤序号+1,用来保存现在审核步骤号
关于预设的问题我在11楼回覆了. 预设在前台做整个程序会简化很多. 关于审核步骤的问题,我知道会有几步,但是我不想在文档创建的时候就在页面和数据库中建立所有空的审核步骤[/quote]你不想要前台我这个设置也是可以预设的啊,我也可以预制数据啊,也可以达到你的要求。[/quote] 你的设计确实可以这个我没有疑义. 我的问题是这个预设在哪里做的问题,对于前后台整体来说哪个方便.
shoppo0505 2016-06-03
  • 打赏
  • 举报
回复
引用 15 楼 xdashewan 的回复:
[quote=引用 12 楼 shoppo0505 的回复:] 关于预设的问题我在11楼回覆了. 预设在前台做整个程序会简化很多. 关于审核步骤的问题,我知道会有几步,但是我不想在文档创建的时候就在页面和数据库中建立所有空的审核步骤
如果你确定审核步骤可以不依赖数据库,直接靠应用程序自身设计就能办到,那你可以把审核步骤删除,再把审核步骤记录表的审核步骤ID字段改为审核步骤,数值由你应用程序来决定,就不用在文档创建时建立审核步骤了[/quote] 如果在数据库template的设计逃不掉的话,那还是在前台做因为还涉及到介面设计.(我指的是通过表结构确定审核步骤) 本想通过数据库简单设计(不用template),就确定结构然后前台根据数据库结构动态生成介面,看来还是不行 不过还是非常感谢回覆.
gw6328 2016-06-03
  • 打赏
  • 举报
回复
引用 12 楼 shoppo0505 的回复:
[quote=引用 10 楼 xdashewan 的回复:] 看了你和楼上的对话,步骤这个东西其实有两种定义,一种是预设,也就是说你事先知道这文档需要多少步审核,在创建文档审核的记录时,就创建好了审核的步骤,比如有个画面什么的可以设置,楼上设计符合你的需求。另一种是你预先不知道一共要审核几步,审核一步是一步,这种方式需要最后有个人来做最终审核,楼上的设计也能符合你的需求,但是审核步骤这张表的用途就要改变,并不是在创建文档审核时候就把所有审核步骤都预设好,而是每次审核过后把步骤序号+1,用来保存现在审核步骤号
关于预设的问题我在11楼回覆了. 预设在前台做整个程序会简化很多. 关于审核步骤的问题,我知道会有几步,但是我不想在文档创建的时候就在页面和数据库中建立所有空的审核步骤[/quote]你不想要前台我这个设置也是可以预设的啊,我也可以预制数据啊,也可以达到你的要求。
xdashewan 2016-06-03
  • 打赏
  • 举报
回复
引用 12 楼 shoppo0505 的回复:
关于预设的问题我在11楼回覆了. 预设在前台做整个程序会简化很多. 关于审核步骤的问题,我知道会有几步,但是我不想在文档创建的时候就在页面和数据库中建立所有空的审核步骤
如果你确定审核步骤可以不依赖数据库,直接靠应用程序自身设计就能办到,那你可以把审核步骤删除,再把审核步骤记录表的审核步骤ID字段改为审核步骤,数值由你应用程序来决定,就不用在文档创建时建立审核步骤了
gw6328 2016-06-03
  • 打赏
  • 举报
回复
引用 11 楼 shoppo0505 的回复:
[quote=引用 9 楼 jinfengyiye 的回复:] [quote=引用 8 楼 shoppo0505 的回复:] [quote=引用 6 楼 jinfengyiye 的回复:] 虽说有几种文档,类型这些都定死了,如果要设计得灵活一点可以如下参考 文档 ID,类型,其它 审核 ID,名称,其它 审核步骤 ID,审核ID,步骤序号,步骤类型,其它 文档审核表 ID,文档ID,审核ID,审核状态,其它 审核步骤记录表 ID,审核步骤ID,审核人ID,审核时间,其它
感谢回覆. 步骤序号,步骤类型你是靠前台信息建立的么? 顺便说一下,这种设计使用起来还是稍有不便.[/quote] 步聚序号就是一个审核里面包含几个步聚,然后里面就分先后审核啊。 这个肯定比直接放几个id字段要复杂些,但是后面使用方不方便要你做到后面才知道,我一直认为正常的设计会方便一些。 而且这个都是最简化的方式了,审核是较复杂的,可能现实中的问题还要多一些设计。[/quote] 我完全明白你步骤序号,步骤类型的用处. 我的意思是在前台程序中对象的设计可以限制步骤序号,步骤类型,这个没有问题. 问题是数据库层面能否有比较简洁的设计 来取代前台程序中省略步骤序号,步骤类型,如果只能用于定义来设计那还是在前台做好了 而且你这个设计怎么在数据库层面还是不能确保只需要一个人审核的限制.[/quote] 一种审核结构一定就确定类型了,如果这种审核设值的是一个步聚,那么就是一个步骤的审核。如果是设置的多个步骤就是多个步 骤的审核,而且这些步骤又分成单人,或者多人这种。而按你的需需这种设置是比较合理的。不知道是否有处理过审核的案例,你可能认为一个类型对应三个步骤,写死了很方便,你后面慢慢做到就明白了,上面我也说了,你现在还看不出来哪个处理方式简单,后续你做了就明白了。
zbdzjx 2016-06-03
  • 打赏
  • 举报
回复
引用 4 楼 shoppo0505 的回复:
[quote=引用 1 楼 zbdzjx 的回复:] 文档类型表:文档类型ID,文档类型 审核模板表:文档类型ID,审核步骤(第1步、第2步……),审核人员(存员工号) 文档建立完成后,点个“发送”按钮,就通过文档类型,按上面的模板生成要审核几步(几步就几行),每一步有几个人要审核(一个或多个),将审核流程存到另一个表中。
我不是问如何操作,我是问,数据库怎么设计。[/quote] 前两句就是最基础的表结构了,如果不说操作,单纯给表结构,又怎么在此基础上展开啊。
shoppo0505 2016-06-03
  • 打赏
  • 举报
回复
引用 10 楼 xdashewan 的回复:
看了你和楼上的对话,步骤这个东西其实有两种定义,一种是预设,也就是说你事先知道这文档需要多少步审核,在创建文档审核的记录时,就创建好了审核的步骤,比如有个画面什么的可以设置,楼上设计符合你的需求。另一种是你预先不知道一共要审核几步,审核一步是一步,这种方式需要最后有个人来做最终审核,楼上的设计也能符合你的需求,但是审核步骤这张表的用途就要改变,并不是在创建文档审核时候就把所有审核步骤都预设好,而是每次审核过后把步骤序号+1,用来保存现在审核步骤号
关于预设的问题我在11楼回覆了. 预设在前台做整个程序会简化很多. 关于审核步骤的问题,我知道会有几步,但是我不想在文档创建的时候就在页面和数据库中建立所有空的审核步骤
shoppo0505 2016-06-03
  • 打赏
  • 举报
回复
引用 9 楼 jinfengyiye 的回复:
[quote=引用 8 楼 shoppo0505 的回复:] [quote=引用 6 楼 jinfengyiye 的回复:] 虽说有几种文档,类型这些都定死了,如果要设计得灵活一点可以如下参考 文档 ID,类型,其它 审核 ID,名称,其它 审核步骤 ID,审核ID,步骤序号,步骤类型,其它 文档审核表 ID,文档ID,审核ID,审核状态,其它 审核步骤记录表 ID,审核步骤ID,审核人ID,审核时间,其它
感谢回覆. 步骤序号,步骤类型你是靠前台信息建立的么? 顺便说一下,这种设计使用起来还是稍有不便.[/quote] 步聚序号就是一个审核里面包含几个步聚,然后里面就分先后审核啊。 这个肯定比直接放几个id字段要复杂些,但是后面使用方不方便要你做到后面才知道,我一直认为正常的设计会方便一些。 而且这个都是最简化的方式了,审核是较复杂的,可能现实中的问题还要多一些设计。[/quote] 我完全明白你步骤序号,步骤类型的用处. 我的意思是在前台程序中对象的设计可以限制步骤序号,步骤类型,这个没有问题. 问题是数据库层面能否有比较简洁的设计 来取代前台程序中省略步骤序号,步骤类型,如果只能用于定义来设计那还是在前台做好了 而且你这个设计怎么在数据库层面还是不能确保只需要一个人审核的限制.
xdashewan 2016-06-03
  • 打赏
  • 举报
回复
看了你和楼上的对话,步骤这个东西其实有两种定义,一种是预设,也就是说你事先知道这文档需要多少步审核,在创建文档审核的记录时,就创建好了审核的步骤,比如有个画面什么的可以设置,楼上设计符合你的需求。另一种是你预先不知道一共要审核几步,审核一步是一步,这种方式需要最后有个人来做最终审核,楼上的设计也能符合你的需求,但是审核步骤这张表的用途就要改变,并不是在创建文档审核时候就把所有审核步骤都预设好,而是每次审核过后把步骤序号+1,用来保存现在审核步骤号
gw6328 2016-06-03
  • 打赏
  • 举报
回复
引用 8 楼 shoppo0505 的回复:
[quote=引用 6 楼 jinfengyiye 的回复:] 虽说有几种文档,类型这些都定死了,如果要设计得灵活一点可以如下参考 文档 ID,类型,其它 审核 ID,名称,其它 审核步骤 ID,审核ID,步骤序号,步骤类型,其它 文档审核表 ID,文档ID,审核ID,审核状态,其它 审核步骤记录表 ID,审核步骤ID,审核人ID,审核时间,其它
感谢回覆. 步骤序号,步骤类型你是靠前台信息建立的么? 顺便说一下,这种设计使用起来还是稍有不便.[/quote] 步聚序号就是一个审核里面包含几个步聚,然后里面就分先后审核啊。 这个肯定比直接放几个id字段要复杂些,但是后面使用方不方便要你做到后面才知道,我一直认为正常的设计会方便一些。 而且这个都是最简化的方式了,审核是较复杂的,可能现实中的问题还要多一些设计。
shoppo0505 2016-06-03
  • 打赏
  • 举报
回复
引用 6 楼 jinfengyiye 的回复:
虽说有几种文档,类型这些都定死了,如果要设计得灵活一点可以如下参考 文档 ID,类型,其它 审核 ID,名称,其它 审核步骤 ID,审核ID,步骤序号,步骤类型,其它 文档审核表 ID,文档ID,审核ID,审核状态,其它 审核步骤记录表 ID,审核步骤ID,审核人ID,审核时间,其它
感谢回覆. 步骤序号,步骤类型你是靠前台信息建立的么? 顺便说一下,这种设计使用起来还是稍有不便.
shoppo0505 2016-06-03
  • 打赏
  • 举报
回复
你的意思预定义在数据库做?这个先放放吧,我后来想了下与定义可以在前台做. 关于实际单据的3张表,他们的关联是如何确立的?这个没看懂 业务数据 审核步骤表应该是1对1把?为什么不能放一个表? 审核步骤表 明细步骤具体是怎么关联的?
gw6328 2016-06-03
  • 打赏
  • 举报
回复
虽说有几种文档,类型这些都定死了,如果要设计得灵活一点可以如下参考 文档 ID,类型,其它 审核 ID,名称,其它 审核步骤 ID,审核ID,步骤序号,步骤类型,其它 文档审核表 ID,文档ID,审核ID,审核状态,其它 审核步骤记录表 ID,审核步骤ID,审核人ID,审核时间,其它
卖水果的net 2016-06-03
  • 打赏
  • 举报
回复
要是 4 个人都审核通过,才能下一步,就要指定到具体的人了; -- 三张表 (预定义); 业务类型 表 审核步骤表 审核步骤对应审核用户表 -- 实际单据(业务数据) 业务数据 ,根据类型生成下面两张表的数据 审核步骤表(基本上预定义的步骤表 就可以了,每个单据拷一次) 明细步骤,也是拷刚审核用户表,就可以了
shoppo0505 2016-06-03
  • 打赏
  • 举报
回复
引用 1 楼 zbdzjx 的回复:
文档类型表:文档类型ID,文档类型 审核模板表:文档类型ID,审核步骤(第1步、第2步……),审核人员(存员工号) 文档建立完成后,点个“发送”按钮,就通过文档类型,按上面的模板生成要审核几步(几步就几行),每一步有几个人要审核(一个或多个),将审核流程存到另一个表中。
我不是问如何操作,我是问,数据库怎么设计。
shoppo0505 2016-06-03
  • 打赏
  • 举报
回复
引用 2 楼 wmxcn2000 的回复:
文档类型3:有3个步骤,每步都需要多人审核, 多人审核步骤人数未知 多人审核的这个,如果该步骤有 4 个人,是这 4 个人都要审核通过,才算通过,还是某一个审核通过,就算通过呢?
4个都要通过,才能继续下一步

22,300

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧