发帖    主题    评论    推荐    标签    作者    订阅    查搜    注册   登陆   关注
 
面向对象 设计模式 领域驱动设计 企业架构 框架 开发教程 微服务 大数据 扩展性 并发编程 事件驱动 分布式 SOA
1 2 下一页 Go 2

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

    
2006-06-30 11:27
赞助商链接

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

2006-06-30 11:47

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

2006-06-30 12:02

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

2006-06-30 14:04

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


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

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

2006-06-30 14:06

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

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

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

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

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




2Go 1 2 下一页

赞助商链接

赞助商链接

返回顶部

移动版 关于本站 使用帮助 联系管理员 最佳分辨率1366x768
OpenSource JIVEJDON Powered by JdonFramework Code © 2002-20 jdon.com