【问题标题】:Dynamic self referencing many-to-many relationship动态自引用多对多关系
【发布时间】:2017-03-23 15:43:24
【问题描述】:

如何构建动态自引用多对多关系?

我有一个我无法克服的问题。

我有桌子:

Types:
id
name

Products:
id
name
type_id

product_products
parent_id
child_id

假设我们在 Product 表中有几个产品。其中一些是:
(名称不相关)

CB1234 - products.type_id -> cardboard
CBB999 - products.type_id -> cardboardbox
CBP321 - products.type_id -> paper

TSH123 - products.type_id -> tshirt
FAB321 - products.type_id -> fabric
THR321 - products.type_id -> thread

现在我想告诉 product_product 关系,我有由纸板和纸类产品制成的纸板箱。在纸板箱-纸板和纸板箱-纸的关系中,我想定义使用多少百分比的产品(一致性)来制作纸板箱产品(比如说 80/20,不相关)

我对不同的产品有不同的案例。现在我想定义 tshirt-fabric 和 tshirt-thread 之间的关系,但我想定义该产品的面料和线成本,而不是一致性。

产品和产品参数计数不固定。可能有 500 种不同的产品以及它们之间的不同关系。有什么好的做法可以解决这个问题?我想出的方法很少

  1. 大量手工制作的多对多关系表
  2. product_product 表中有很多列

在这两种情况下,设计中都有我不喜欢的东西,但也许这些是正确的方法,也许我从一开始就错误地设计了我的数据库。

【问题讨论】:

    标签: mysql sql dynamic many-to-many relationship


    【解决方案1】:

    1) 将是要走的路 - 一旦你计算出你想要存储的所有东西,不确定是否真的会有“很多”

    product_product_consistency product_product_cost(是否可以将其表示为 product_cost,然后根据 product_product_consistency 或类似的方法计算?)

    最后的用途是什么,你想问数据什么样的问题?

    【讨论】:

    • 感谢您的评论。我认为你可能是对的。 “最终的用途是什么,你想问数据什么样的问题?” - 答案是所有的。我不知道将来可能会出现数量或类型的问题。这就是为什么我需要它尽可能动态。
    • 一个非常通用的选项是类似于 product_relationship 表和一个 relationship_type,但我认为使用一个表来处理大量关系与关系数据库的工作方式是对立的,而且只会带来麻烦。每个表(“对象”或对象之间的关系)的明确目的是做事的方式。
    猜你喜欢
    • 2018-08-19
    • 2017-02-05
    • 1970-01-01
    • 1970-01-01
    • 2018-10-02
    • 1970-01-01
    相关资源
    最近更新 更多