gpt4 book ai didi

php - 多个有界上下文中实体的标识符

转载 作者:行者123 更新时间:2023-12-04 12:57:46 24 4
gpt4 key购买 nike

假设我有两个有界上下文,Billing 和 Shipping。
在计费有界上下文中,我有这个:

class Account {
private $id;
private $address;
private $zipCode;
private $city;
private $postbox;
}
在航运有界上下文中,我有这个:
class Recipient {
private $id;
private $address;
private $zipCode;
private $city;
private $doorCode;
}
所以现在,我们都知道这两个模型在其他有界上下文中与另一个用户相关。
如果 Account 和 Recipient 共享相同的 id,并且这个 id 将来自用户模型。
除了accountId 和recipientId 之外,我是否还必须在这些模型中添加一个名为$userId 的字段?

最佳答案

从 DDD 的角度来看,您应该添加一个字段 userIdAccountRecipient .
原因是Recipient , AccountUser是实体。这意味着他们应该有自己的身份。即使您的 User总是只有一个 Account ,这并不意味着 User Account ,因此它们不能共享相同的 ID。
此外,最好从一开始就为一个用户拥有多个帐户。假设用户决定删除他的帐户。在这种情况下,我想你不应该删除他过去的订单,所以你不应该删除 User本身。您应该删除用户的 Account只要。
如果将来同一用户决定创建一个新的 Account ,您可以从字面上创建一个新帐户,并在您的数据库中拥有一个旧的未激活帐户和一个新的事件帐户。
但是,当您出于某种原因决定为这些实体使用相同的 Id 时,我可以想象一种设计,即使它不符合 DDD 原则。但是,如果您决定这样做,最好为 id 字段使用一个清晰​​的名称。而不仅仅是:

class Account {
private $id;
private $address;
}
你最好有:
class Account {
private $userId; // if it's userId we should express it explicitly in the name
private $address;
}

关于php - 多个有界上下文中实体的标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63956986/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com