LoginSignup
1

More than 5 years have passed since last update.

Fertile Forest Model (10/n) ツリー構造の修復

Posted at

ツリー構造が破損した際の修復

従来のモデルでは、ツリー構造カラムによる参照整合性が保証されていません。最も簡潔なテーブル設計である「隣接リストモデル」でさえ、親子関係が循環指定される不整合の可能性があります。

FF モデルもこの点では例外ではありませんが、「参照整合性の破損個所」を検索して見つけることができます。これは、他のモデルを圧倒している特徴です。

Fertitle Forest モデルにおける参照整合性の破損

FF モデルに於けるツリー構造データの破損は、次のふたつのケースに限定されます。

  1. QUEUE が重複したケース
  2. 根ノードではない親ノードが削除されて、子ノードの所属ノードがなくなるケース

上記のふたつのケースが招じた個所を、検索して取得できます。検索で特定できるなら、後は PHP や Ruby などのスクリプト言語を使って一列に並べて表示させることで、目視で破損個所を確認できます。参照整合性が破損している部分をハイライトさせるのも容易です。

実例を示すのは、文章で解説すると冗長な上に理解し難いものです。この件については、ライブラリで破損データ表示スクリプトを作成して配布する予定です。(2016年01月01日現在)

DEPTH の整合性を修復するには

FF モデルでは、 DEPTH の整合性を修復するための UPDATE 文が書けます。事前に SELECT 文を発行してノードの破損状況を取得した後、 UPDAPTE 文一回で修正できます。「隣接リストモデル」には及びませんが、「経路列挙モデル」「入れ子集合モデル」「閉包テーブルモデル」の修正に比べると、圧倒的な簡易さです。

UPDATE 文の定義は、後日まとめる予定です。(2016年01月01日現在)

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1