2 mars9527haha mars9527haha 于 2014.12.15 13:28 提问

有关审核表设计上面的,求方案【在线等】

业务是“资料审核”,审核会出现多次不通过的情况;
现在有两张表,一张company_info(公司信息),一张check_company_log(审核日志),如果审核不通过的情况下,要给用户看到不通过的原因;

目前的设计是check_company_log表里面有“原因”字段,company_info表里冗余一个“原因”(用于展示,当然这里面存的是最后一次不通过的原因)

每次不通过的时候,要做两个操作,先把company_info里的原因更新,然后给check_company_log里面存一条,看有没有更好的办法,从表的设计上把两步简化

求高手优化

4个回答

devmiao
devmiao   Ds   Rxr 2014.12.15 14:32

关键要看你怎么优化,如果不是出于性能的考虑,可以对log表按照用户做索引,然后直接取最新的一条作为原因,这样就不需要那个字段了。

lowanty
lowanty   2014.12.15 13:49

在company_info表中冗余一个”原因”的目的是什么,是为了方便查询,还是快速查询。。。待审核的公司数量有多大,审核通过后是在log表中记录一条审核记录就行了,还是需要修改info表中的某个字段?

通常审核多次流水追溯的问题,不建议把失败原因放到info表冗余。info表只需要记录一个审核状态就行了,多数情况直接记录log;审核完成后记录log的同时修改info状态字段

lowanty
lowanty   2014.12.15 13:49

在company_info表中冗余一个”原因”的目的是什么,是为了方便查询,还是快速查询。。。待审核的公司数量有多大,审核通过后是在log表中记录一条审核记录就行了,还是需要修改info表中的某个字段?

通常审核多次流水追溯的问题,不建议把失败原因放到info表冗余。info表只需要记录一个审核状态就行了,多数情况直接记录log;审核完成后记录log的同时修改info状态字段

lowanty
lowanty 回复mars9527haha: 那么设计改成这样,log表是你的操作日志。 业务只有info一张表,原因和状态都在info表里面。。。log表是辅助用的,可以用日志系统代替。。。这只是换了一个思考角度;这样的话,设计上会回到你现在的设计方案。但是概念上你需要注意,业务只有info这一张表,log只是日志;不在业务中提供使用,仅供管理员查看。可以考虑用通用日志系统代替你的log表设计。。。从思想上你不应该把info中的原因理解成冗余。
大约 3 年之前 回复
mars9527haha
mars9527haha 回复lowanty: 不追溯,用户只看到自己最后一次提交失败的原因;能看到整个审核历程的只有我们后台的管理员(查看log表)
大约 3 年之前 回复
lowanty
lowanty 回复mars9527haha: 你可以看下数据库的设计范式,参考第三设计范式
大约 3 年之前 回复
lowanty
lowanty 回复mars9527haha: 你可以看下数据库的设计范式,参考第三设计范式
大约 3 年之前 回复
lowanty
lowanty 回复mars9527haha: 失败原因要求追溯历史失败原因吗?意思就是第一次失败原因:“企业名称错误”,第二次失败:“企业执照错误”。第二次时能看到第一次失败的原因吗?或者在其他地方能看到整个审核历史过程。数据量不大就没有必要冗余原因到info表了,两张表的事务处理也是有开销的。。。看你的需求应该是一个也没就显示一个企业信息了,最多也就20来个;这种情况下查询的时候多查一个表是没有什么问题的(可以连表,也可以查两次)。
大约 3 年之前 回复
mars9527haha
mars9527haha 其实整个流程类似在360手机助手上提交app,如果他们后台审核没有通过,我会看到失败的原因,当我再提交之后,如果还是没有通过,仍然可以看到失败原因,现在就是这个“失败的原因”看怎么设计 1.出于性能考虑,避免关联查询,所以在company_info中冗余了"原因",用户在审核的结果页面展示失败原因时候,我直接查company_info,就可以了,带来的问题就是,如果再次提交资料,审核仍未通过,这时候得先修改company_info的“原因”,然后再给log表里面插入一条; 2.目前整个的数据量都不是很大; 3.审核通过后做两件事:修改company_info的状态为1(通过),同时在log表插入一条记录;
大约 3 年之前 回复
mars9527haha
mars9527haha   2014.12.15 14:01

其实整个流程类似在360手机助手上提交app,如果他们后台审核没有通过,我会看到失败的原因,当我再提交之后,如果还是没有通过,仍然可以看到失败原因,现在就是这个“失败的原因”看怎么设计
1.出于性能考虑,避免关联查询,所以在company_info中冗余了"原因",用户在审核的结果页面展示失败原因时候,我直接查company_info,就可以了,带来的问题就是,如果再次提交资料,审核仍未通过,这时候得先修改company_info的“原因”,然后再给log表里面插入一条;
2.目前整个的数据量都不是很大;
3.审核通过后做两件事:修改company_info的状态为1(通过),同时在log表插入一条记录;

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!