新手求助:关于要经过7,8次审核的商品发布数据库设计

听说本论坛高手无数,慕名而来求助,望得到指点。。
谢谢!!!!
我的情况大致如下:
某个商品先要通过后台系统层层审核(大约5,6次),全部一致通过后才能展现在前端的网站上供客户购买,搜索。每次的审核人都不同,只要某次审核未通过就不再送往下一级审核,商品必须修改正确后继续审核。错误历史需记录以供管理层人员查看。现在陷入了数据库设计的困境,状态字段大概设计了10几个,这样是否合理?有没有对于这种情况有一种更适合的方案?请大家多多帮忙啊~~~~~

使用状态模式或工作流之类概念能够优雅解决,如果执著于使用数据库保存状态这样的概念,会非常笨重和可笑。

谢谢这么快就给我回复,太感动了~~
我还有一点疑问就是,数据库里都不用状态字段吗?那状态如何持久化保存,或则说把多个状态字段用一个状态字段表示?困惑啊~
能不能举个例子说明一下啊```
感激不尽

某个商品先要通过后台系统层层审核(大约5,6次),全部一致通过后才能展现在前端的网站上供客户购买,搜索。每次的审核人都不同,只要某次审核未通过就不再送往下一级审核,商品必须修改正确后继续审核。错误历史需记录以供管理层人员查看。现在陷入了数据库设计的困境,状态字段大概设计了10几个,这样是否合理?有没有对于这种情况有一种更适合的方案?请大家多多帮忙啊~~~~~


这要看情况了。如果采用工作流引擎来处理这个需求,你就不必关心数据库和持久化具体实现的事情了。但前提是你的把这个工作流引擎搞定。
如果整个系统中就这么一处工作流需求,你还是直接用数据库解决吧。但我想,10几个状态字段来表达流程节点是要把脑子搞糊涂的。写程序得相当清醒,还要考虑程序的可读性和可修改性。否则别人没法接手。而且客户需求变更了,你自己改起来都非常头疼。我可以想象如果你的程序中必然会包含一大堆if-else的嵌套。尽量尽量避免过多的if-else。你可以参考一下banq关于“告别if-else”的文章。 具体的url忘了,请让banq帖出来一下。

再有就是文档,如果你用数据库来实现,一定一定要在此处写详细的文档来描述每个细节。代码中也要加必要的注释。

>那状态如何持久化保存,或则说把多个状态字段用一个状态字段表示
状态如何持久化如何保存不是你考虑的事情,就像一个文档如何保存成文件是操作系统做的事情,你只要选择"save as"就可以,至于save as的字段格式,完全取决于你的文档内容。

同样,你只要设计好你的状态模式,然后考虑在什么步骤选择“save as”,至于持久化后的字段是哪些,完全取决于你的状态对象是如何设计的,状态对象有什么字段,就保存成什么字段,这和文档保存是同样道理。

我们的精力是放在如何设计“文档内容”,也就是状态对象,而不是放在设计硬盘上文档格式。

至于如何设计状态模式,首先你要整理你的需求状态图,使用UML画一下你的状态图就可以。

再次重申,状态不一定都要持久,或者说保存成数据库,就象你编辑文档时,不是敲入一个字,就保存一次(我想没有人这么做),可是搞企业开发有这样做的思维的人很多,包括楼主(抱歉,第一次发帖就批评你)。


谢谢,谢谢。。
做为新手,有人扶正道路不走弯路已经是非常开心的事了,丝毫未觉“批评”之意。努力学习中。。
毕业才几天,就要和同学一起(2个人)帮一个艺术公司开发一个电子商务系统(1年完成),感觉压力好大。第一次在论坛发贴求助就有高手回应,真是太高兴了,信心倍增。希望以后各位还能多多帮忙~~~