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

请板桥大哥解答一个建模的问题???

         
2005-12-30 18:16
赞助商链接

经验在JDON论坛上看Banq大哥写(回复)的一些经典的文章,今天我也提一个困惑我许久的问题:
现在我所在的公司的业务系统中有这么一个模块,可以抽象为两个主要的对象Agent(代理人),Department(部门)。Agent的属性有编号,名称,职级,所属Department等等,Department的属性有编号,部门,上级Department,负责人等等。Agent的职级可以改变(比如从经理降为副经理等等)也可以将一个Agent从一个部门转到另外一个部门。Department是一个树形结构,有根部门,子部门,可以将一子部门转到另一部门之下。现有如下需求:(1)在某一特定时间查看某一代理人的详细信息(2)找出某一特定时间某部门的详细信息及其下所有的代理人。
目前我们的数据模型是这样设计的:四张表(t_agent,t_agent_backup,t_dept,t_dept_backup),t_agent_backup和t_dept_backup都会定期对t_agent,t_dept作备份,查找某一时间某代理人的信息时,根据时间标志从t_agent_backup里取;查找某一时间某部门的详细信息及其下的所有代理人时也是根据时间标志从t_dept_backup里取
我非常不赞成这种设计。因为一:典型的数据驱动建模实现 二:逻辑本身的不合理性,大部分代理人可能不会有什么改变(职级变动,部门变动)为什么也要每次都要被备份呢?三:反映在对象模型上的不可理解性(Agent和AgentBackup,Dept和DeptBackup是什么关系?)
我的对象模型是如下图(用手工画的,见笑了)


AgentInfoLog,DeptInfoLog分别与Agent,Dept是聚合关系,Agent,Dept有被修改时会产生相应的日志记录。但是我的模型也有问题,如(在某一特定时间查看某一代理人的详细信息)和(找出某一特定时间某部门的详细信息及其下所有的代理人)时有点麻烦
不知我的问题有没有描述清楚,还请Banq大哥及所有高手给点建议,谢谢

2006-01-04 21:01

你这个也是涉及状态的建模,以状态思维考虑,状态是和时间相关的,某段时间状态是什么?

建议用四色模型细化你的Domain Model,等我有空给你画一下。

http://www.jdon.com/artichect/state.htm

2006-01-09 14:53

谢谢Banq大哥回答我的问题
小弟学浅不明白什么叫四色模型

2006-02-13 11:30

有2个地方看不懂:
1.t_agent_backup和t_dept_backup是根据什么条件作备份的?备份还是转移?
2.“找出某一特定时间某部门的详细信息及其下所有的代理人”,你的意思是不是想查询历史数据。也就是说,因为某个AGENT可能在特定时间改变了其DEPT,而你又想查回这个AGENT原来的DEPT,是不是?那么t_agent中保存的是AGENT目前所属的DEPT。

建议你把AGENT和DEPT的所属关系独立建表,如:(AGENT_ID,DEPT_ID,CREATE_TIME)。原来的2个备份表就不需要了。

赞助商链接

赞助商链接

返回顶部

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