聚合和聚合根的混淆

2024-01-11

我被分配了一个非常简单的项目作为考试,我有想法使用领域驱动设计来开发它。

你们中的许多人可能会说该应用程序非常简单,使用存储库和 UoW 只是浪费时间,您可能是对的,但我认为这是一个学习更多东西的机会。

该应用程序是一个“机票”系统,从下图中您很可能猜到它的功能。

问题是我不确定我是否正确地分离了聚合体及其根。

编辑: 我介绍了数据模型,以便任何人都可以轻松发现整个功能。

问题是,从员工的角度来看,“Rad”所说的航班封装了整个功能,并且是聚合根。

然而从管理员的角度来看,航班不关他的事。 他只是想更新或添加新的飞机公司等。

那么就有了一个新的聚合根,即 Airplane,它将 Airplane 座位(实体)、座位类型(值对象)和公司(实体)封装为新的聚合。

  1. 这往往让我感到困惑,因为我在另一个聚合(航班聚合)中有一个聚合根(飞机)。
  2. 由于聚合根被认为是“核心”实体,如果没有它,它内部的其他实体将没有任何意义,所以我正在考虑公司。我的结论是,即使没有飞机,公司也有意义。

为了解释更多,我想到了这样一种情况:管理员想要插入一个新公司,或者想要首先加载一个公司,然后加载它的飞机。

DDD 原则规定聚合内的任何实体只能从根本身加载。 所以这就是混乱之处。


嗯,聚合和聚合根在哪里?这只是数据模型...而不是域模型。

Aggregate 是聚集在一起的一组项(Domain Object),Aggregate Root 是实体根...(如果考虑 Flight Aggregate 封装了 Seats、Location...Aggregate Root 应该是 Flight 实体)。

[Edit]

你必须忽略那些执着的。在您的应用程序中,您可以有许多聚合,这取决于您的域,也许航班是一个聚合,而公司是另一个聚合;),不要混淆实体和聚合...

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

聚合和聚合根的混淆 的相关文章

  • Postgresql计数+排序性能

    我使用 postgresql 和 psycopg2 构建了一个小型库存系统 一切都很好 除了当我想创建内容的聚合摘要 报告时 由于 count 和排序 我的性能非常糟糕 数据库架构如下 CREATE TABLE hosts id SERIA
  • 什么属于聚合根

    这是一个实用的领域驱动设计问题 从概念上讲 我认为我得到了聚合根 直到我去定义一个聚合根 我有一个 Employee 实体 它已作为聚合根出现 在商业领域 some员工可以记录与工作相关的违规行为 员工 违规行为 由于并非所有员工都受到此限
  • 领域驱动设计和安全

    这与此相关question https stackoverflow com questions 3006808 security implementation in domain driven design这似乎是不久前问过的 项目中的安全
  • R中xtabs和aggregate之间的na.action不一致

    我有以下数据框 x lt data frame A c Y Y Z NA B c NA TRUE FALSE TRUE C c TRUE TRUE NA FALSE 我需要计算下表xtabs A B C Y 1 2 Z 0 0
  • 具有行为和 ORM 的丰富域模型

    观看 Jimmy Bogard 的 NDC12 演示 Crafting Wicked Domain Models 后 http ndcoslo oktaset com Agenda http ndcoslo oktaset com Agen
  • 总结树上的值

    我使用树控件来查看一些基于嵌套 父子 表的分层项目 每个节点都有一个 NameValue 格式 接受 name 和 value 但只有叶子 最后一个节点 具有整数值 并且父节点的值保留为空 仅是它们具有的名称 我想总结值 以便每个父节点都保
  • DDD建模,聚合根之间的交互

    Marked my aggregate roots with 1 2 3 Looks quite nice almost like grapes 我不喜欢的是一个标有红色箭头的实体 让我们想象一下 AR 1 是公司 AR 2 是办公室 AR
  • 当shuffle分区大于200时会发生什么(dataframe中的spark.sql.shuffle.partitions 200(默认))

    打乱数据的 Spark sql 聚合操作 即spark sql shuffle partitions 200 默认情况下 当 shuffle 分区大于 200 时 性能会发生什么变化 当分区数量大于 2000 时 Spark 使用不同的数据
  • SQL Group By - 从单列生成多个聚合列

    我想按公司和日期进行分组 并为 2 个单独的值 Flag Y 和 Flag N 生成计数列 输入表如下所示 Company Date Flag 001 201201 Y 001 201201 N 001 201202 N 001 20120
  • 汇总每日内容

    我一直在尝试汇总 有些不稳定的 每日数据 我实际上正在处理 csv 数据 但如果我重新创建它 它看起来像这样 library zoo dates lt c 20100505 20100505 20100506 20100507 val1 l
  • 在R中,如何制作箱线图?

    我的输入表有两列 如下所示 x y 1 187 2 235 3 857 3 253 2 955 1 267 我想为每个单独的 x 值绘制 y 值的箱线图 x 值限制为 1 2 3 这是我的 R 代码 data read table inpu
  • 深层嵌套类型的Elasticsearch聚合

    之前我问过this https stackoverflow com questions 31841542 elasticsearch metric aggregation number of elements in array 318464
  • 在哪里检查用户电子邮件尚不存在?

    我有一个帐户对象 可以像这样创建用户 public class Account public ICollection
  • 条件合并表

    我有 2 张桌子 Time X1 8 1 2013 56 9 1 2013 14 10 1 2013 8 11 1 2013 4 12 1 2013 78 Time X2 8 1 2013 42 9 1 2013 44 10 1 2013
  • MongoDB 聚合查询与 MySQL SELECT field1 FROM 表

    我对 MongoDB 完全陌生 想要比较 NoSQL 数据模型相对于关系数据库对应部分的查询性能 我将其写入 MongoDB shell Make 10 businesses Each business has 10 locations E
  • Python Pandas:将参数传递给 agg() 中的函数

    我试图通过使用不同类型的函数和参数值来减少 pandas 数据框中的数据 但是 我无法更改聚合函数中的默认参数 这是一个例子 gt gt gt df pd DataFrame x 1 np nan 2 1 y a a b b gt gt g
  • 缺失的事件如何重播?

    我正在尝试了解有关 CQRS 和事件溯源 事件存储 的更多信息 我的理解是 在这种情况下通常不使用消息队列 总线 消息总线可用于促进微服务之间的通信 但它通常不专门用于 CQRS 然而 我目前的看法是 消息总线将非常有用 可以保证读取模型最
  • 领域驱动设计 (Linq to SQL) - 如何删除聚合的某些部分?

    我似乎对整个 DDD LinqToSql 业务感到有点困惑 我正在使用 POCOS 和 linq to sql 构建一个系统 并且我有聚合根的存储库 因此 例如 如果您有 Order gt OrderLine 类 那么您就有了 Order
  • 按不规则时间间隔对数据进行分组求和(R语言)

    我正在看这里的 stackoverflow 帖子 R 计算一组内的观察次数 https stackoverflow com questions 65366412 r count number of observations within a
  • 在下面的模型中,地址不应该是值对象吗?

    From 值对象如何存储在数据库中 https stackoverflow com questions 679005 how are value objects stored in the database 假设公司和个人都有相同的邮件地址

随机推荐