在我的域模型中,我有一个聚合,聚合根当然具有全局唯一的标识,而该聚合的其他实体仅具有相对于根实体的本地标识。
到目前为止,一切都很好。现在,我正在尝试设计将存储此聚合数据的数据库。
我的第一个猜测是使用相同的本地身份概念进行设计,这意味着其他实体表的主键都将包含根实体键(多列键)。
选项1:
另外请注意,由于我有许多嵌套的子实体,因此最后一张表中的第4列PK结束了。
我不确定要使用哪个。虽然我喜欢选项1更好地与域逻辑保持一致,但它似乎更复杂,而且我不确定是否会遇到一些性能问题。
选项2似乎更简单,但与域的一致性较低。对我来说,这意味着子实体可以通过更改FK值来更改其父级,但是从业务逻辑的角度来看这是不可能的。
我应该考虑决定使用哪个选项?您还看到其他选项吗?