统计报表和被统计的数据是聚合还是依赖关系

可乐 2022-6-16 11:55

这两个的关系,应该表达成聚合关系,还是依赖关系呢?

UMLChina潘加宇

什么关系也没有,独立的

这个**统计是冗余的快照。

这个类的对象是统计某个或某些类的对象的属性值得到的,从领域逻辑上看,系统不需要这个类,搞一个这种类(表)的借口往往是性能,临时计算等待时间太长,所以算好了放在这个类(表)里。

这个类在分析模型(核心域模型)中不需要存在。

如何通过增加冗余来应对性能问题,这是一个实现的套路,和具体的某个领域无关,不应该带到领域模型里面来,它和分析模型(核心域模型)中的类没有关系。

否则你想想,如果你有三个类(表)ABC,里面分别有若干属性,需要查询和组合ABC的属性得到的报表可能很多,像图中那样,如果要画线的话,岂不是要到处画?

存在关联关系的一种情况是:系统需要记住“曾经对那些类(表)作统计”的细节(理由可能是为了收费?),这个信息不是冗余的,属于分析模型的一部分。

举个例子,有一个类“人员”,属性:身份证号、姓名、生日、性别。

有一个报表“2022年出生人员按性别统计”,属性:性别,出生人数。这个属于可以计算的冗余信息。

但是,如果系统要记住曾经对哪个人做了“统计”的操作,以便给他发点钱补偿一下他被统计的损失,那么就有“人员统计”类,属性:人员、被统计时间。

这个不是冗余的,从人员(身份证号、姓名、生日、性别)计算不出来。

可乐 2022-6-16 13:37

潘老师,那如何表达我想表达的那种过程呢?

UMLChina潘加宇

序列图上就是f以ABC为参数,创建报表

缺失的基础知识可能较多,有空可以好好看一下《软件方法》第8章


weixinpanjiayu2