0

ツリー階層に配置したい、さまざまな MySQL テーブルに多数の個別のアイテムが格納されています。隣接リスト モデルを使用して、parent_id フィールドを各テーブルに追加し、外部キー関係を使用してテーブルをリンクできます。

ただし、ネストされたセット/変更されたプレオーダー ツリー トラバーサル モデルを使用したいと思います。データは、読み取りに大きく偏った環境で使用され、実行すると予想される種類のクエリでは、このアプローチが好まれます。

問題は、ネストされたセットに関するすべての情報が、単一のテーブルに格納された 1 つのタイプのアイテムしかないと仮定していることです。私が考えることができるこれを回避する方法は次のとおりです。

  • テーブル/項目タイプごとに 1 つずつ、ツリーに複数の外部キー フィールドがあります。
  • ツリー構造のアイテム テーブルの名前とアイテム ID を格納します。

どちらのアプローチも控えめに言っても洗練されていないので、これを行うためのより良い方法はありますか?

4

2 に答える 2

1

RDBMSは、そもそも階層を格納するのには適していません。ユース ケースでは、これがさらに悪化します。もう少し微調整されていると思いますが、RDBMS を使用して得られるのは、あなた自身の提案のまだ醜いバリエーションです。IMHO 他のデータ モデルは、グラフ データベースやドキュメント データベースなど、問題に対するより良い解決策を提供します。記事「リレーショナル データベースを超えた方がいいですか?」この種のものへの素晴らしい紹介を提供します。

于 2009-07-07T16:25:13.883 に答える
0

いくつかのタイプのツリーがあり、すべてのツリー タイプのツリー情報 (つまり、左/右の値) を含む単一のテーブルがありますか?

いくつかの種類の木がある場合は、種類ごとに異なるテーブルを作成してみませんか?

于 2009-07-06T17:37:28.857 に答える