推論のプロセスとしては
まずGeneXusが出力したデータモデルが前提となります。
そして、開発者が指定した項目属性群をインプットとして、データモデルから拡張テーブルの候補をピックアップします。
それら拡張テーブルの候補の中から、最小セットの拡張テーブルを選択します。
具体的な例で順を追って説明します。(以下のデータモデルを前提とした時)
開発者が項目属性「CustomerName」「CountryName」を指定した時、GeneXusは以下の拡張テーブルの候補をピックアップします。
候補(1)
ベーステーブル:Customer
拡張テーブル:Customer、Country
|
候補(2)
ベーステーブル:Invoice
拡張テーブル:Invoice、Customer、Country
|
候補(3)
ベーステーブル:InvoiceDetail
拡張テーブル:InvoiceDetail、Invoice、Customer、Country
|
そしてこの中で最小セット(のアクセス範囲)として「Customer」「Country」を拡張テーブルとし、その起点となる「Country」をベーステーブルと判断します。(上記例では候補(1)が該当)
例) プロシージャーでfor eachを記述した場合
for each
&CustomerName = CustomerName
&CountryName = CountryName
//処理
endfor
・この時のナビゲーションレポート
for eachコマンドには項目属性しか記述していませんが、GeneXusはベーステーブル・拡張テーブル及びJOINする為の項目を類推できています。
尚、GeneXusにおいてはリレーションは1対nしかありません。物理モデルとしては1対1やn対nは存在しません。論理モデルとして1対1やn対nが存在しても、GeneXusが正規化の結果として1対1は1つのテーブルに、n対nは1対n対1のモデルが出力されます。
0 件のコメント:
コメントを投稿