![](https://blogimg.goo.ne.jp/user_image/56/c6/86a76aea08bb55743a2b3ee5828cdf44.jpg)
今回は、見積りツール(Xradian)でのデータファンクションの複雑度の判定について説明していきます。
データファンクションの複雑度を判定するためには、DET(データ項目数)とRET(レコード種別数)を識別する必要があります。
どのように、DETとRETを識別し複雑度を判定するかについては、結局のところ、何をデータファンクションとして識別するかに依存します。
なぜならば、各オブジェクトによってそのプロパティ(持っている特性)が異なるため、複雑度判定のために利用可能な情報が異なるからです。
以前、「見積りツール(Xradian)でのデータファンクションの識別」で何をデータファクションとして識別するかについて、以下の案を検討してきました。
① ビジネスフロー図のデータオブジェクト
② ビジネスフロー図のユーザビューオブジェクト
③ エンティティ関連図のエンティティ
しかし、①のオブジェクトはそもそも、データ項目をプロパティに持っていませんので、複雑度を判定することはできません。
また、②のユーザビューオブジェクトは、そもそもデータファンクションとして取り扱うこと自身に問題があるということで、結果的に、③のエンティティをデータオブジェクトとして識別するという結論に至りました。
では、エンティティのどのような情報を元に複雑度を判定していけばいいのでしょうか?
繰り返しになりますが、データファンクションの複雑度を判定するためには、DET(データ項目数)とRET(レコード種別数)を識別する必要があります。
DET(データ項目数)とは、対象のデータファンクションに何個のデータ項目が存在しているのかということです。
RET(レコード種類数)とは、対象のデータファンクションに何種類のレコードが存在しているかということです。
エンティティをデータファンクションとして識別するのであれば、エンティティの属性の数をDET(データ項目数)として識別すればいいでしょう。
また、RETについては通常は1ですが、エンティティのサブタイプをRETとすればいいのではないかと考えています。
例えば、サブタイプが存在する場合は、取引先テーブルには得意先レコードと仕入先レコードと納品先のレコードが存在する可能性がありますので、RET数は3ということになります。
(ちなみに、サブタイプはデータファンクションとしては識別しません。)
ここで注意が必要なのは、RETとして識別したエンティティ(サブタイプエンティティ)についても、属性が存在しているということです。
このサブタイプに定義されている属性をどうするかですが、Xradianではサブタイプに定義されている属性についても、親エンティティ(スーパータイプ)のDETとしてカウントするようにしています。
DET(データ項目数)とRET(レコード種類数)がわかれば、あとは以下の判定テーブルに当てはめて複雑度を判定すればいいわけです。