2013年7月26日金曜日

ベーステーブルと拡張テーブルの特定方法

前回のエントリーで「ベーステーブルと拡張テーブルとは何か?」というお話しをしましたが、今回はGeneXusはどうやってベーステーブルや拡張テーブルを特定するのか?というお話しです。

推論のプロセスとしては
まず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 件のコメント:

コメントを投稿