ラベル Extended table:拡張テーブル の投稿を表示しています。 すべての投稿を表示
ラベル Extended table:拡張テーブル の投稿を表示しています。 すべての投稿を表示

2013年7月29日月曜日

GeneXusで生成されるJOINの種類

前回までで「開発者は項目属性名のみ指定する → GeneXusがアクセスするテーブル・JOINする項目を推論する」というお話しをしました。

SQLという観点で「GeneXusってOUTER JOINはできないよね?」という質問をよく受けます。そこで今回はGeneXusでのJOINに関するお話しです。

具体的なJOINの指定方法の前に、まずはGeneXusにおける基本的なJOINの考え方についてです。

1.GeneXusにおけるJOINの考え方


一般的にJOINは以下の種類があります。

  • 内部結合(INNER JOIN)
  • 外部結合(LEFT JOIN / RIGHT JOIN / FULL OUTER JOIN)


GeneXusにも外部結合は存在します。但し、ベーステーブル・拡張テーブルの考え方が前提になるため、リレーションの方向に依存します。どういう事でしょうか? 下記のデータモデルを見てください。



2013年7月26日金曜日

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

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

推論のプロセスとしては
まずGeneXusが出力したデータモデルが前提となります。
そして、開発者が指定した項目属性群をインプットとして、データモデルから拡張テーブルの候補をピックアップします。
それら拡張テーブルの候補の中から、最小セットの拡張テーブルを選択します。


具体的な例で順を追って説明します。(以下のデータモデルを前提とした時)




2013年7月22日月曜日

ベーステーブルと拡張テーブルって何?

今回の話はGeneXusを扱うに当たって、一番基本となる考え方です。逆に言うと「ベーステーブルと拡張テーブルって何?」という質問に答えられない人はGeneXusを使っていても理解しているとは言えません。

GeneXusにおいては開発者はアクセスするテーブルを直接指定する事はありません(できません)。指定するのは項目属性名のみで、その項目属性が「どのテーブルに属していて?」「どのテーブルとをJOINする必要があるのか?」はGeneXusが推論します。その推論の基礎となっているのがベーステーブルと拡張テーブルという考え方です。

ベーステーブルとは

GeneXusがデータベースにアクセスする時に(実際には生成するSQL文としての)起点となるテーブルの事を指します。

拡張テーブルとは

ベーステーブルを起点とした時にアクセス可能な範囲(実際には生成するSQL文としてJOIN可能な範囲のテーブル)を言います。
又、拡張テーブルにはベーステーブルも含まれます。

拡張テーブルかどうかの判断基準はベーステーブルから見て「n→1の関係(リレーション)」のテーブルです。逆にベーステーブルから見て「1→nの関係」は拡張テーブルではありません。


例えば、以下のデータモデルを前提とした時に