組織構造は親子構造か?

組織構造には親と子の関係がある。同じように注文と注文明細にも親子関係がある。これらは同じものなのか?
ドメインモデルでは、一般的には注文と注文明細は集約関係で表現されるけど、組織構造は集約関係ではなく通常の関連であらわされることが多い。やっぱり違うのかな?

では組織構造の親子の関係はどのように考えればよいのか?


DDDな人であれば、アナパタの責任関係型が直ぐに浮かぶかな。そう、組織構造の関係は責任関係すなわち管理関係を表している。では、注文と注文明細の集約関係と責任関係では何が違うのか?

1つは責任関係は有効期間を持たせることができるけれど、集約は親子関係に期限をもたすことができない。これは、ERで考えると分かりやすい、注文と注文明細については親の識別子が子の識別子の一部になるが、組織構造は親子にかかわらず同じ識別子を利用する。そう、注文と注文明細は識別子レベルで親子関係になっていて、識別子は不変なので期限をつけることができない

実際に組織構造を責任関係として記述するとドメインモデルはこんな感じになる。



それに対応したERはこんな感じになる



ということで、組織構造を再帰で表現しないほうが良いということになるのかな。