【データモデル】Sharperlightデータモデルを作成してみる

# はじめに #
Sharperlightという製品を利用したビジネスソリューションのTipsをこれまで投稿してきましたが、Sharperlightを使用する上で基本となる、いやこれ無しでは始まらないもの、**データモデル**の作成方法をみてみようと思います。

Sharperlightは動的にクエリを生成し、それを発行してデータベースからデータを抽出してくれます。
Sharperlightエンジンがクエリを生成する手助けするのが**データモデル**です。
# データモデル #
Sharperlightの核です。接続するデータベースのスキーマ情報ならびに拡張ビジネスロジック等が、Sharperlightエンジンの理解できる方法で定義されています。
まあ、こうのように表現すると"なんか難しいのでは？"なんて思いますが、基本的なものを作成するのは簡単なので、その方法を一緒にみていきましょう。
例として使用するデータベースはこれにしましょうか。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/55e6de23-984f-e165-909b-016679c96e04.png)
# スタジオ #
データモデルの作成には、Sharperlight**スタジオ**を使用します。
## 起動 ##
Sharperlightアプリケーションメニューからスタジオを起動します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/04dcf55f-ee48-71bf-087c-8720bc56f0c9.png)
スタジオが起動したら`New`アイコンで作成開始といきましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/20719d38-30fe-7740-522f-63124877a6c7.png)
## 基礎情報の設定 ##
New Productダイアログで、DescriptionとUnique Codeを指定します。Unique Codeは、今後このデータモデルを使用していく上でキーとなるコードなので短くても理解しやすいコードを与えるようにします。
あとは接続するデータベースのプラットフォームを指定して`OK`ボタンで先に進みます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/8a32500e-6d12-5059-4a67-690d84ca0f4a.png)
## データベース接続情報の設定 ##
ここではデータベースへの接続を設定します。これは新規データモデルにデータベースのスキーマ情報を読み込むためのものです。接続情報を入力し接続テストで動作を確認！成功すれば`OK`ボタンで先に進みます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/05f5a7ba-eaf9-30cb-2ab1-937a2bf6847f.png)
スキーマを読み込みますか？というメッセージが表示されるので、`Yes`ボタンで先に進みます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/92234b4b-6327-19bd-826d-421eb94fd58a.png)
## スキーマのインポート ##
このダイアログではスキーマをインポートします。`Get Tables`ボタンでスキーマ情報を取得します。取得された情報はツリー形式で表示されます。必要なスキーマ情報にチェックを入れて`OK`ボタンでインポートします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/d4686991-0c3f-03da-4367-26ba2acc5a9b.png)
複数のスキーマがデータベースにある場合等は、`Schema Owner`や`Tables`フィルターを使用できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/d8b237a7-5140-8fe0-da7a-76be0d62c503.png)
正常にスキーマがインポートされるとこのようなメッセージが表示されます。`OK`ボタンで先に進みます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/ed76f9f0-26d0-6941-59ef-16b823666afe.png)
データモデルにデータベーススキーマがインポートされました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/69dca273-ad08-20e1-e926-882a5c537326.png)
ここで、様々な調整をお好みに合わせて加えることができますが、ここでは省略します。
## 保存 ##
`Save`アイコンでデータモデルを保存します。
注意を促すメッセージが表示されるので`OK`ボタンで先に進みます。
"データモデルをSharperlight指定のフォルダに保存しないと使用できません"っていう注意です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/37148dff-f2c7-44bd-3580-cddc0681bdc9.png)
これが指定の場所なので`Save`ボタンで保存します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/1668a19f-4490-a567-42d8-4c505d18072a.png)
次に全てのSharperlightアプリケーションがこのデータモデルを使用する上で必要なデータベース接続情報の設定を促すメッセージが表示されます。`Yes`ボタンで先に進みます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/9309cd39-d810-76db-6d1b-2c17d95ae68b.png)
Sharperlightクライアントセットアップが起動するので、データベース接続情報を入力しテストも行い`OK`ボタンで保存します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/d6e6a20d-619b-1f03-7ac1-fcc1a9fe75f0.png)
# 動作確認 #
Sharperlightクエリビルダをアプリケーションメニューから起動します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/05b550db-9122-eb1f-03c5-68dda846a2e1.png)
起動したら製品の`検索`ボタンで検索ウインドウを開きます。先ほど作成したデータモデルが見えましたね。選択してみます。全てのSharperlightアプリケーションでは、`製品`とは`データモデル`を指します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/444eae20-c7c0-a90d-211d-672b27aa36d1.png)
次にテーブル`検索`ボタンをクリックします。いかがですか？データモデルにインポートしたスキーマ情報が確認できますね。ここでは**Sales Detail**テーブルを選択してみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/bfdc0e26-b882-55b2-6f27-dedf2d7c25a8.png)
`選択`領域に選択したテーブルのフィールド一覧が表示されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/eb200b17-5432-9b80-03a0-ed42e36127ed.png)
右クリックメニューより`すべてを出力`を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/68f9a72c-3ebf-af3b-ec99-1c3a007a9e3a.png)
全てのフィールドが`出力`領域に設定されました。`プレビュー`ボタンでクエリを実行してみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/944fb353-a2fc-8cc4-db4d-f2dbcb80a127.png)
データが抽出されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/fe0035f8-3169-1c14-df98-426dce6cd84f.png)
情報アイコンのサブメニューで、どのようなSQL文が生成されたのか確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/f67f07fa-b576-7482-ec9c-376ed2e81b0e.png)
生成されたSQL文はこのようになっています。（日本語が潰れて表示されたますが気にしないでいいです）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/8a544148-4f7d-2aea-79aa-56a4e81c8963.png)
# あとがき #
データモデルの作成から動作確認まで簡単にみてきました。
データモデルではもっともっといろんな設定を行うことができますが、それらはまた追々紹介できればと思っています。
この記事が皆さんの業務のお役に立てれば光栄です。