2011-09-17 12 views
1

構造が再帰的ですが、データポイントからデータポイントまでの深さが異なる可能性のあるデータセットがある場合、mysqlデータベースを設定する最良の方法は何ですか?可変深度のデータ用のmysql dbの最適な設定

私はこれが混乱するかもしれないことを知っていますので、ここでは私が意味するものの例です。あなたが人のグループのために男性の系統を保存したいと言うことができます。すべての人がこれを同じ点まで追跡することはできません。 Person1はそれを祖父に、person2を曾祖父に、person3を曾祖父にトレースすることができます。私はそれが大きな可能性のあるそれぞれのケースについてテーブルを持つことは理にかなっているとは思わない。

私の解決方法は、ツリーの終わりに達すると、親のIDまたはヌルを格納する単一の "父"テーブルを持つことです。しかし、私がフルツリーを構築するために見つけた唯一の方法は、nullの親が見つかるまで、各親要求に対して1つのクエリを持つことです。

もっと良い解決方法はありますか?

答えて

0

私の提案は、データベース内の祖父母を追跡することではありません。そして、あなたはアプリケーション側での壮大な父親を計算することができます

PERSON_ID、PERSON_NAME、biological_father_person_id、 biological_mother_person_id、等...

: 典型的な行は次のようにする必要があります。

コードが実際に使用されると、遅いクエリの追跡を開始し、必要に応じて最適化を開始できます。ある時点では、少し非正規化する必要があるかもしれません。おそらく、1つまたは2つのカラムを容易に前処理する必要があります。

しかし、負荷がどこにあるかを知る前に、非正規化構造をセットアップしないでください。

関連する問題