根据这篇文章在 mysql 中管理分层数据,保存常规分层数据的最合适的解决方案是嵌套集模型,我非常喜欢,但不幸的是我的任务稍微困难一些。我需要管理一个分层模型,其中一些子类别可能有多个父类,比如交叉集。此处描述的类似问题。
确切地说,我有一些类别结构,其中每个项目都可以属于多个类别(而且在我的路上,我需要提供一些类别继承的平均值,如果项目属于电视,那么它也属于 Home_electronics,所以常规标签云不会在这里做)。
tl;dr:需要一种简单的方式/方法(可能实现复杂,但管理简单,如删除、添加和查找路径)来管理具有 M:M 关系的类别模型。
遗憾的是,我仅限于 MySQL,但如果仅使用 SQL 无法解决此任务,我将继续在 PHP 中实现此功能(因此我很高兴听到任何不合时宜的消息)这个问题的盒子解决方案 - 库或只是来源,但这是最坏的情况)。
看起来我正在寻找的东西被命名为有向无环图(这很明显,但我可能太笨了,无法考虑它:))。
很高兴看到它的一些实现具有良好的可管理性。
顺便说一下,常规 ID、ParentID、Data 不是一个选项,因为 MySQL 没有递归,因此无法通过一个查询检索数据(如果您让 PHP 创建一个包含 1000 个 JOIN 的查询并传递它,那么它可以)到 MySQL,但那是迟缓的)。
PS:仅使用 MySQL 不是我的决定,它只是简单地给出,我知道任何 NoSQL DBMS 都会更合适。