この記事mysql での階層データの管理によると、通常の階層データを保持するための最も適切なソリューションはネストされたセット モデルです。一部のサブカテゴリが複数の親を持つ階層モデルを管理する必要があります (クロス セットなど)。ここで説明されている同様の問題。
正確には、各アイテムが複数のカテゴリに属することができるカテゴリの構造があります (また、途中でカテゴリ継承の手段を提供する必要があります。アイテムが TV に属している場合は、Home_electronics にも属しているため、通常のタグクラウドはここでは機能しません)。
tl;dr: M:M 関係でカテゴリのモデルを管理するには、単純な方法/アプローチ (実現は複雑かもしれませんが、パスの削除、追加、検索などの管理は単純です) が必要です。
悲しいことに、私は MySQL のみに制限されていますが、このタスクが SQL だけで解決できない場合は、PHP でこの機能を実装することに進みます (したがって、アウトオブザ-この問題のボックス ソリューション - ライブラリまたは単なるソースですが、それは最悪のシナリオの場合です)。
私が探しているのは有向非巡回グラフという名前のようです(これはかなり明白でしたが、おそらく私はそれについて考えるにはあまりにも愚かでした:))。
優れた管理性を備えた実装を見るのは良いことです。
ちなみに、通常の ID、ParentID、Data はオプションではありません。MySQL には再帰がないため、1 回のクエリでデータを取得できないためです (PHP で 1000 個の JOIN を使用してクエリを作成し、それを渡すようにすれば可能です)。 MySQLに、しかしそれは遅れています)。
PS: MySQL のみを使用することは私の決定ではありません。単に与えられたものであり、NoSQL DBMS の方が適していることはわかっています。