いくつかのオブジェクト(たとえば、記事)がセットで編成されているサイト(PHP + MySQL)を書いています。各記事はシングルトンセットに属しています。各セットは、スタンドアロンにすることも、より大きなセットに属することもできます。セットはシングルトンであるか、セットのコレクションです。セット間の関係を追跡するために、すべての「ファミリーリンク」を追跡するクロージャーテーブルを使用します。テーブルには、ancestor
フィールド、descendant
フィールド、およびlength
祖先と子孫の間の分離度をカウントするフィールドがあります。
- それぞれの新しい記事は、新しいシングルトンセットの作成を意味します。
ancestor
それぞれの新しいセットは、とdescendant
が同じであり、length
=0である新しいクロージャテーブルエントリの作成を意味します。セットは既存のセットのコレクションである可能性があるため、新しいセットは記事とは独立して作成できます。
PHPプログラムを構造化して、データベースに新しい記事を書き込むたびに自動的に新しいセットを書き込み、新しいセットをロードするたびに新しいクロージャーテーブルエントリを自動的に書き込むようにします。
コードを構造化する正しい方法は何ですか?ネストされたオブジェクト(article
オブジェクトには、が含まれset
、それ自体にはが含まれますclosure
)と、ネストされたオブジェクトを最初に書き込むデータベースに書き込む再帰関数(およびオブジェクトがクロージャテーブルエントリの場合の終了条件)を作成することですか? ?これらの再帰的な書き込みを単一のトランザクション内に折りたたむ方法はありますか?
使用できる既存のパターンはありますか?