Force.com Developer Group Japan Meetup#2
-
Upload
takahiro-yonei -
Category
Technology
-
view
3.808 -
download
1
description
Transcript of Force.com Developer Group Japan Meetup#2
Force.comで親子関係を実現する
ちょっと変わったやり方
• 名前:米井 孝浩
• TwitterID:yonet77
• 所属:TAOドライブ株式会社
• Force.com開発歴:3年くらい前から?
自己紹介
突然ですが、「階層構造」をもったデータを、どうやって表現してますか?
階層構造をもつデータって?
祖父
親1 親2
子2子1
例)組織、製品
主従関係を使う• 自身に対して、主従関係
は結べない...
参照関係を使う• 自身に対して、参照関係
は定義できる• SOQLで親は5段階上まで• SOQLで子は1段階下まで
今日は別の方法をご紹介します
"入れ子集合モデル"
"入れ子集合モデル"って??このサイトで詳しく説明してます。http://www.geocities.jp/mickindex/database/db_tree_ns.html
メリット
1.階層の深さに制限がない
左値と右値で階層を表現するだけなので、参照関係のような階層の深さに制限はない
2.親子関係の定義が不要
左値と右値で階層を表現するだけなので、親レコードを気にしなくてよい
デメリット
1.データ操作が複雑(少し)
子を挿入、親を変更...と階層構造を編集するとき、左値と右値の計算が常に必要
入れ子集合モデルの実装- データモデル1.左値と右値は必須2.階層の深さは任意
入れ子集合モデルの実装- 子の挿入
AAA
BBB
CCC
"AAA"からみて"CCC" を追加
AAA
BBB
1
2 3
4
AAA
BBB
1
2 3
6
CCC4 5
入れ子集合モデルの実装- 兄弟の挿入
AAA
BBB
CCC
"BBB"からみて"CCC" を追加
AAA
BBB
1
2 3
4
AAA
BBB
1
2 3
6
CCC4 5
CCC
入れ子集合モデルの実装- 兄弟の入れ替え(=行移動)AAA
BBB
CCC
AAA
CCC
BBB
AAA
BBB
1
2 3
6
4 5
AAA
BBB
1
2 3
6
CCC4 5
入れ子集合モデルの実装- 子の削除AAA
BBB
CCC
"CCC" を削除
CCC
AAA
BBB
1
2 3
6
4 5
CCC
AAA1
2 3
6
入れ子集合モデルの実装- 親子データの取得AAA
BBB
CCCDDD
AAA
BBB
1
2 5
8
CCC6 7
DDD3 4
• "AAA"以下の要素を全て取得する→ LFT >= 1 and RGT <= 8 の要素を取得する
• "BBB"以下の要素を全て取得する→ LFT >= 2 and RGT <= 5 の要素を取得する
<デモ>- Force.comの上で動かしてみます
http://fblg.jp/article/466/kirakira16/pc/6310610/4278617.jpg