如何设计聚合根?

How to design the aggregate root?

我想用 DDD 重构我的项目。对象有银行卡、通道、用户三个。关系如下:

  1. 一张银行卡可以多渠道签约
  2. 一个用户可以绑定多张银行卡
  3. 一张银行卡可以绑定多个用户

现在项目有银行卡table、银行卡与渠道合同table、银行卡与用户关系table三个table。 我想将银行卡设计为实体,将用户和渠道设计为值对象(用户实体和渠道实体在其他域中维护)。 那么我应该如何设计聚合根。将bankcard作为聚合,将渠道列表、用户列表作为聚合根的属性,或者设计bankcard、bankcard-sign-contract、bankcard-user-relationship作为聚合根?

如果您只有一个实体 (bankcard) 和两个值对象,我认为将实体建模为聚合根和两个值对象听起来很自然作为它的属性。