2016年6月14日火曜日

【コラム】2) GeneXusにとって正しいデータモデルとは

GeneXusでのデータモデリング(データベース設計・正規化処理)はインプット(トランザクションのストラクチャー定義)を元にGeneXusがアウトプット(正規化されたデータモデル)を推論しますが、そこは正規化論(集合理論)に則りますのでその過程(プロセス)には曖昧さもありませんし、個性もありません。つまり、インプットが正しくなければアウトプットも正しくはならないのです。

私は今まで数多くの人にGeneXus基礎教育コースの講師として接してきましたが、開発経験が豊富な人、特に熟練のDB設計者になればなるほど、自分流の設計手法がネックとなってGeneXusを使ったDB設計がうまくいかない事が見受けられました。最終的に「GeneXusって使えないね」となる人を何人も見てきました。




具体的に言いますと、こういった人はトランザクション=テーブルと捕らえてしまい、自分の頭の中でER図を設計しその結果をトランザクションストラクチャーとして定義してしまいがちです。

結果として、全くリレーションがないデータモデルが出来てしまったり、リレーションが張られても設計者が想定しないテーブル間でのリレーションであったりします。(このあたりの確認はDiagram(ダイアグラム)オブジェクトで行います)

人の思考とはよくできたもので、最初は一つ一つステップをこなしながら考えるのですが、慣れてくると途中のステップをすっとばして、いきなりゴールのイメージを考えられるようになってきます。

データモデルにも同じ事が言えて、リレーションの張り方を正規化手法に従って一つ一つテーブルを経由してリレーションするのではなく、途中のテーブルを飛ばして(テーブルを作成せず)直接リレーションを結ぶようなイメージでデータモデルを考えるようになります。

一般的な開発であればリレーションを意識するのは開発者自身であり、その結果として開発者が記述するSQLでのJOIN指定のみなので、設計上(ダイアグラム上)リレーションをすっとばしても特に問題はありません。

しかし、GeneXusの場合は開発者はSQLを直接記述する事はありません。開発者は項目属性の指定のみで、後はGeneXusが「どのテーブルを使用し」「どの項目属性同士でJOINするのか」を推論します。そして、GeneXusが類推する手がかりとなるのがデータモデル(=リレーション)なのです。

GeneXusにとって正しいデータモデルになっていないと、どういう問題が出てくるのでしょうか? 次回に続きます。



0 件のコメント:

コメントを投稿