各キーワードにIDが割り当てられ、一意であるキーワードテーブルがあります。親キーワードのIDを子キーワードのIDにリンクする2番目のテーブルがあります。1つのキーワードには、最大で約800人の子を含めることも、まったく子を持たないこともできます。子供はさらに多くのキーワードの親になることができます(そして...)
私が遭遇している問題は、子供(または孫または曽孫)が最初のキーワードの親であり、循環構造を引き起こす可能性があることです。再帰関数を使用して最初のキーワードのツリーデータ構造を構築しようとしていますが、関数が終了しないか、Pythonの1000レベルの再帰制限を超えています。
これを防ぐために(または挿入中に事前チェックを行うために)親/子テーブルを設計するためのより良い方法はありますか、またはこの状態が発生するのを防ぐために再帰関数を書くためのより良い方法はありますか?再帰関数の深さを制限しようとしましたが、単一レベルの問題が発生しました(つまり、子が親の親になります)。繰り返しますが、私の目標は、最初のキーワードのツリー構造を作成することです。
Table Keyword:
id int(11) not null primary key auto_increment (id of keyword)
text varchar(255) unique (keyword text e.g. "computer help desk")
Table Keyword_Relation:
id int(11) not null primary key auto_increment (id for parent/child combo, not keyword id)
parent int(11) (id of parent keyword)
child int(11) (id of child keyword)