日期:2014-05-19  浏览次数:20614 次

SQL怎么实现
我想做一个入库单,A用户录入一部分数据,B用户进行审核,并录入一些相关其它信息,而C用户看到B用户审核之后,方可录入另外一些信息。
B用户审核后的数据,A用户不可修改;C用户审核的数据,B用户也不可修改。

这样我的表需要怎么设计呢?
是做一个表,还是多个表?
然后当B用户要审核A用户的数据时,如何防止A用户同时进行数据更新而发生未知的错误呢?
一个入库单,可能有多条记录。我在程序编制中,如何有效控制呢?

------解决方案--------------------
做一个表吧,设置一些标志,当B用户审核后修改其对应的标志的值,同理,C也一样。
------解决方案--------------------
数据库的表结构设计是根据实体来划分的。
审核等判定逻辑是交给业务层处理的。
lz这样来设计的话,不太好。
------解决方案--------------------
同意
Melody_1208() ( ) 信誉:100 Blog 加为好友

不用想那么复杂,加个标志字段 flag
A只能看见 select * from test where flag= 'A ' 提交后变成B(页面的程序中写update)
B只能看见 select * from test where flag= 'B ' 提交后变成C(页面的程序中写update)

看不见也就没有修改的问题了
或者能看见,但是如果修改的时候判断flag是否等于 当前用户的权限(A,B,C)

------解决方案--------------------
如果没有越级审核加一个标志字段就行

------解决方案--------------------
这个问题不需要通过数据库来设计,
属于完全的思路问题,
可以通过逻辑来完成你的要求,而不是通过控制数据库表来实现


------解决方案--------------------
表可以正常创建,另外加一个状态标志列。用来保存记录状态。
状态列取值范围如下(假设)
0 表示新保存数据
1 表示第一级人员审核
2 表示第二级人员审核
在程序中根据这些状态值不同。判断哪些人可以使用数据。
------解决方案--------------------
一个单据可能包含多个记录,如制单的人准备修改,将数据读取,而单据被审核了,
制单的人保存数据不是会出错?
================================
制单的人准备修改,标志位重新清空,B要等到A修改完毕,修改完毕后标志位重置后才能修改。
------解决方案--------------------
网络故障
A已修改,标志位未清空.B会发现无法审核,修改标志位,后继续审核。
没那么巧得把...你担心什么那

------解决方案--------------------
给审核加一个标志字段,字段的值(0、1、2、......),用户对于数据的修改权限在程序中根据这些状态值不同实现。
------解决方案--------------------
表中加一字段作为是否审核的标记