Mendixのデータモデル(ドメインモデル)を簡単に作成する3つの手順
データモデルはアプリケーションの基盤です(データベーステーブルに相当します)。
Mendixは、ローカル実行時にデフォルトのHQLデータベースを使用します。
必要に応じてMicrosoft SQL、PostgreSQL、Oracleデータベースを使用することもできます。
ドメインモデルでは次のコンポーネントを定義します。
- エンティティ:データベーステーブルに相当するもの
- (例:「ロケーション」エンティティまたは「金融取引」エンティティ)
- アトリビュート:データベーステーブルの列に相当するもの
- (例:「ロケーション」エンティティの「名前」と「住所」、または「金融取引」エンティティの「日付」と「タイプ」)
- アソシエーション:テーブル間の関連に相当するもの
- (例:1つの「顧客」エンティティと多数の「注文」エンティティの関連付け)
この記事では、コンポーネントの作成方法について説明します。
今回は製品注文アプリケーションの例をとって考えてみましょう。
このサンプルは無料で試すことができます。
1.エンティティの定義
新しいプロジェクトで開発する時には、まずアプリケーションで使用するエンティティまたはオブジェクトを検討します。
顧客が自社の製品を注文をするアプリケーションを作成するとします。
このアプリケーションには、「Customer(顧客)」、「Order(注文)」、「OrderLine(注文ライン)」(製品と注文の両方を把握している情報エンティティ)、および「Product(製品)」のエンティティがあります。
これらは、データベース内にあるユニークなキーを持つテーブルとなります。
下の図は、4つのエンティティを示しています。
2.アトリビュートを追加する
エンティティを作成した後には、各エンティティに属性を追加する必要があります。
この例では、Customer(顧客)は、Name(名前)やContactInfo(連絡先)を持っています。
Product(製品)にはName(名前)またはDescription(説明)が含まれています。
エンティティに属性を設定すると、アプリケーションの詳細を作成することになります。
この設定は、プロジェクトの属性を調整や追加をしなければならない開発者には非常に役立ちます。
必要な属性の追加 および 不要な属性の削除を簡単にできます。
下の図は、4つのエンティティに属性がどのように設定されているかを示しています。
Orderエンティティには、Name(名前)、自動生成されるOrderNr(注文番号)、DateOfOrder(注文日付)を追加しました。
属性は、表の列に相当し、属性タイプ(文字列、整数、boolean値など、アプリケーションを構築するために必要なすべての一般的なデータ型)とサイズを持ちます。
3.アソシエーションの作成
エンティティとその属性を決定した後に、それらがどのように関連しているかを検討します。
この例では、Customer(顧客)は複数のOrder(注文)を持つことができ、Order(注文)は複数のOrderLine(注文ライン)を持つことができ、各Product(製品)は複数回Order(注文)されることができます。
以下の図は、エンティティ間の関連を表しています。
上の図をみると、一目でエンティティ間の関連がわかるでしょう。
Customer(顧客)とOrder(注文)の関係は1対多(*で示されています)であることがわかります。
この例をさらに進めていくと、関連間の削除動作を設定することができます。
例:
顧客に注文データが紐づいている場合、顧客を削除する際に、その注文データを削除すべきか?(cascading delete)
もしくは
顧客に注文データが紐づいている場合、顧客を削除する際に、その注文データを削除できないようにする必要があるか?(prevention delete)。
削除動作は、アソシエーションをダブルクリックして表示したダイアログで確認します。
削除の振る舞いは、ビジネス側の要件に依存します。
ビジネス側に次の質問をしてみてください。
「注文をしたことがある顧客の顧客データをずっと保持したいですか?」
または
「顧客を削除する時、データベースをクリーンアップして、顧客に紐づかない注文データを作らないようにしたいですか?」
これらはビジネス側に聞く際には良い質問で、適切なビジネスルールを作成するのに役立ちます。
これらの削除動作をドメインモデルに設定すると、青色の線(prevention delete設定色)または赤色の線(cascading delete設定色)になります。
Mendixの可能性を見る
翻訳元:https://www.mendix.com/blog/3-steps-to-building-your-data-model-in-mendix/