基本上我想在MySQL中存储和查找相关项目,使用以下示例作为参考。
现在由于第3项与第2项和第2项至第1项有关,因此第3项通过菊花链关系与第1项有关。
示例用例是将产品相互关联,有20000种产品,这些产品中的任何一种都可以与任何其他产品相关联。
我想到了2个解决方案。
Relate Item 2 to Item 1
- Row 1: Item 2 - Item 1
Related Item 3 to Item 2
- Row 1: Item 2 - Item 1
- Row 2: Item 3 - Item 2
每个项目1个关系,最小行数。
如果一个项目被删除,它将打破关系链,我可以通过跳过已删除的项目并保持关系完整来解决这个问题。
查询将很繁重,因为它需要跳过每个链(Row)来构建关系列表。
Relate Item 2 to Item 1
- Row 1: Item 2 - Item 1
- Row 2: Item 1 - Item 2
Related Item 3 to Item 2
- Row 1: Item 2 - Item 1
- Row 2: Item 1 - Item 2
- Row 3: Item 3 - Item 2
- Row 4: Item 2 - Item 3
- Row 5: Item 1 - Item 3
- Row 6: Item 3 - Item 1
获取相关项列表的简单查询,因为存在相关项的行条目。
首先构建关系需要大量的管理和处理才能插入这些行,并且插入的行数可以快速扩展到很多项目。
除上述两种解决方案外,还有其他解决办法吗?我倾向于除了提出的两个解决方案之外没有任何其他解决方案,我将不得不妥协,希望有人可以证明我错了!