多对多持有关系信息

Posted

技术标签:

【中文标题】多对多持有关系信息【英文标题】:Many-to-many holding information about a relationship 【发布时间】:2011-05-19 16:45:26 【问题描述】:

在 ORM(无偏好)中,当我们需要保存有关这种关系的信息时,如何最好地表示两个模型之间的多对多关系?

I have an Order, which can have many Products.
A Product can belong to many Orders.

一个订单可以为每个产品附加几条信息:数量、特殊要求……

在数据库设计中,这由一个联结表表示,其中包含quantityspecialRequest 字段。

但是如何在 ORM 中正确表示这一点,我只想使用 order.products 并获得 Products 的集合?由于我计划使用身份映射,因此所有订单中必须只有一个相同产品的实例,这使我无法拥有某种包含额外信息的“修改”产品。

有什么想法吗?

【问题讨论】:

nhibernate many-to-many mapping - additional column in the mapping table?的可能重复 【参考方案1】:

根据 Eric Evans 的book,多对多关联通常会给域带来很多复杂性,推荐的方法是减少域中此类关联的数量。在您的特定情况下,Order 是一个聚合根,其中包含一堆包含数量和特殊请求字段的 OrderItem。

【讨论】:

【参考方案2】:

我同意上述 Vadim 的观点。完成此操作的最简单方法是添加一个中间实体 (OrderItem),它表示与其他列的这种关系。我认为您不想将其视为订单和产品之间的多对多。

【讨论】:

以上是关于多对多持有关系信息的主要内容,如果未能解决你的问题,请参考以下文章

[信息抽取]基于ERNIE3.0的多对多信息抽取算法:属性关系抽取

SQLAlchemy 使用关联配置与自我的多对多关系

多个多对多关系(循环关系)

通用关系多对一或多对多?

[信息抽取]基于ERNIE3.0的多对多信息抽取算法:属性关系抽取

Firebase简单多对多关系