Class图的实体属性查询

Class diagram's entity attributes inquiry

我有一个客户从公司购买股票并计算分支机构销售额的场景。所以我制作了一个 class 客户、采购和分支销售图,但我不确定在分支销售实体中放什么,因为这个分支销售应该表示每个分支完成的总销售额。 这是我的图表:

分支销售是否也包括purch_totalprice、purch_stock和purch_stock数量,就像购买实体一样?

图表看起来更像 entity/relationship diagram for database tables than like an UML class diagram

  • 在 UML class 图中,您不会使用虚线将唯一标识符与其他属性分开,但您会使用分隔符来显示操作(即方法或函数)。
  • 在 ER 图中,这种做法并不常见,但也不常见。

这就是说,无论建模语言如何,这张图:

  • 不显示 Customer 购买的商品。 stock 太模糊了:你的库存中有一个 material 吗?这是证券交易所的股票(公司的股份)吗?无论答案如何,最好将其显示为自己的 class/entity(我将在下文中使用 Product)。

  • 不显示任何用 branch_id 标识的 class/entity。我建议添加一个名为 Branch

  • 的实体
  • 不显示 associations/relations。您应该至少有 Customer--PurchasePurchase--ProductPurchase---Branch,也没有他们的 multiplicity/cardinality.

如果您的模型中有所有这些信息,"branch sales" 实际上是 Purchase 的数据提取,而不是一个独特的实体:客户的购买是分支机构的销售.对于您的图表:

  • 如果您使用的是 class 模型,您将添加一个 getSalesDetails() 函数:此函数将 return 所有相关 Purchase 对象的列表对于那个分支。您还可以添加一个 getTotalSales() 来计算相关销售额的总和。或许考虑到 date 的购买?
  • 如果你在 ER 模型中,你会知道如何找到这些数据,这要归功于分支和采购之间的关联(你可以通过将关系 Branch--Purchase 标记为 makes sales。但是,如果您想记录您的物理模型并打算在您的数据库中实现它(使用冗余数据,不推荐或使用视图),您也可以显示一个单独的 table 并复制相关数据

关于 classes 的最后重要评论:

  • 如果您的图应该是 UML class 图,但您想显示数据库模型的详细信息,您可以将 «table» 放在每个实体上方。

  • 但是,如果您不打算记录 classes,即 classes 将保持没有操作(即 class 行为),那么确实缺少一些东西- 就像 anemic domain model(不禁止,但远非理想)。