ServiceNow アプリケーションを作成する その２

[前回](http://qiita.com/Kisaragi13/items/c5f3a0f42b703affea01)は空のアプリケーション「マーケティングイベント」を作成した。
今回はそのアプリケーションにテーブルを追加する。
インスタンスのビルドタイプはIstanbul。

# ServiceNowのデータベースはRDB
ServiceNowで用いるデータはRDB（リレーショナルデータベース）に格納されています。ここでは説明を省略しますが、RDBがわからない方は入門としてMySQLを触ってみることをおすすめします。
> MySQL初心者入門講座
http://mysqlweb.net/

以降は一般的なRDBを知っている方として話を進めます。

# マーケティングイベントアプリケーションのER図（スキーママップ）
今回は次のER図になるようにテーブルとカラムを追加します。
（ServiceNowでER図を表示する方法はこちら（記事作成中））
![image.png](https://qiita-image-store.s3.amazonaws.com/0/175688/abeecaff-e87f-09cd-d26b-330f017e765d.png)

# アプリケーション画面に移動
ログイン画面からアプリケーション画面に移動する方法を記載します。（今後の記事では省略します）

インスタンスにログイン
![image.png](https://qiita-image-store.s3.amazonaws.com/0/175688/3f5b1f4f-f158-35e5-8456-1ef466299c53.png)

アプリケーションナビゲータの中から、システムアプリケーション → アプリケーションを選択（<font color="red">赤枠</font>）。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/175688/a14a02c4-ff7a-a249-5afa-cd05a5d1c62d.png)

またはログイン直後のシステム管理画面から遷移。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/175688/f39addff-e42a-1079-41b0-a92ee157f2c2.png)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/175688/c6f35a1f-5cb2-475d-026b-91adecc529ee.png)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/175688/c950a207-0df1-3892-9cff-f44d0b0f0be6.png)

アプリケーションの一覧が表示されるので「**編集**」ボタンをクリックする。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/175688/cfa30b71-7f1c-aff4-9a02-cd5c9f0e6ff9.png)

ServiceNow Studioが開く。ここから作業を行う。
※ ~~本家トレーニングではServiceNow Studioを使わない手順で説明していますがここではなるべくStudioを使っていきます。~~本家トレーニング更新されていました。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/175688/a1a39889-13dd-652f-fa94-bd3fe43439ba.png)

# テーブルを作成する
ショートカットキー『 **Ctrl + Shift + C** 』
「**Data Model**」タブから「**テーブル**」を選択し「**作成**」ボタンをクリックする。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/175688/58369225-07cd-93e5-7e01-2708675f53b7.png)

ラベル、名前を入力し「**送信**」ボタンをクリックする。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/175688/808621f7-9fcc-1186-be8d-a2d23bdc12b5.png)

以上でテーブルを作成する作業は終了です。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/175688/3c6ccee3-0e69-b764-0c6c-72be7c2766f6.png)

# テーブルにカラムを追加する
テーブルを作成するとプライマリキーを含む幾つかの項目（**グローバルデフォルト項目**）が自動で作成される。
それに加えて今回は次のようなカラムを独自に追加する。

| 列ラベル | 列名 | タイプ | 最大長 | デフォルト値 |
|:-----------------|:------------------|:------------------|------------------:|:------------------|
| イベント名 | name | 文字列 | 40 |  |
| 開催地 | state | 選択肢 | 40 | 東京都 |
| 開催都市 | city | 文字列 | 40 |  |
| 開催日 | start_date | 日付 | 40 |  |
| 終了日 | end_date | 日付 | 40 |  |
| 予算 | budget | 通貨 | 12 |  |
| 想定人数 | attendees_expected | 整数 | 10 |  |
| 参加者数 | attendees_registered | 整数 | 10 |  |

その前に、カラム一覧に表示される列（**辞書エントリ**）を追加する必要がある。

## 辞書エントリの追加
英語圏の場合、列ラベルと列名は基本的に同じ名称で問題ないが私のインスタンスは日本でやっていくので列名も個別に指定する必要がある。

カラム一覧左上部の歯車アイコンをクリックする。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/175688/08fde13a-b187-0f33-9643-4dd2ddc8136e.png)

列名を選択済みの一覧に移動させ「**OK**」ボタンをクリックする。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/175688/21eb1b4b-3931-a70e-5aa4-64d5bddfe2ba.png)

これで必要な辞書エントリが揃ったのでカラムを追加していく。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/175688/e4541c54-7713-7bfe-84f1-77e22932f510.png)

## カラムの追加
ServiceNowでのカラムの追加はAlter Tableなどのコマンドが不要で、すべてポイント＆クリック操作で実現できる。

「**新規行を挿入...**」と書かれた箇所（**矢印箇所**）をダブルクリックすると入力欄に変わる
![image.png](https://qiita-image-store.s3.amazonaws.com/0/175688/a3d2e32b-3671-fb59-885e-4110c80993a7.png)

各列に必要な情報を記載する。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/175688/e4c1b4b5-cf13-de66-e425-3d8abde6a8ff.png)

項目一覧左下の「**更新**」ボタンをクリックする。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/175688/83c9de43-0e8e-b9e2-a9fa-10764a452587.png)

これで新しいカラムが追加された。残りも同様に追加していく。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/175688/00514b8e-0439-f89d-7012-8ba9350262ee.png)

選択肢だけはもう一手間必要。
具体的には選択肢リストを作成する必要がある。

開催地のラベルをクリックする。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/175688/dca655dd-8366-9700-d84b-a64fbe312932.png)

関連リンクから「**選択肢**」タブをクリックする。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/175688/ddb104e2-640a-e2f4-f111-66880ce1f148.png)

カラムと同様、「**新規行を挿入...**」と書かれた箇所（**矢印箇所**）をダブルクリックすると入力欄に変わるので必要な値を追加していく。
※選択肢は追加と同時に自動的に保存される。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/175688/20ce9ce7-3930-c8ce-6ef7-e49c4e8f26f7.png)

以上でテーブルにカラムを作成できた。

# その他のテーブル
説明は割愛するが、今後の記事では「**出席者**」テーブルも使用していく。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/175688/acf636c2-9e5e-90c4-dd35-1d08bd2c4f68.png)

カラム一覧

| 列ラベル | 列名 | タイプ | 最大長 | デフォルト値 |
|:-----------------|:------------------|:------------------|------------------:|:------------------|
| 姓 | last_name | 文字列 | 40 | |
| 名 | first_name | 文字列 | 40 | |
| メールアドレス | email | 文字列 | 80 |  |
| 電話番号 | phone | 文字列 | 18 |  |
| マーケティングイベント | marketing_event | 参照 | 32 |  |

![image.png](https://qiita-image-store.s3.amazonaws.com/0/175688/87ab200a-79b6-6e35-8da8-d87ea170220c.png)

# Next
次回は今回作成しなかった「**機器利用申請**」テーブルについて記載する予定です。
機能的な話をすると、拡張テーブルについて説明します。
> - [ServiceNow アプリケーションを作成する その３](http://qiita.com/Kisaragi13/items/891bcb1f3b1bad97c815)

# 関連記事
> - [ServiceNow アプリケーションを作成する その１](http://qiita.com/Kisaragi13/items/c5f3a0f42b703affea01)

# 参考サイト
> 『ServiceNow Wiki (Product Documentation) - System Dictionary 』 ※ カラムの辞書エントリに関する説明
> http://wiki.servicenow.com/index.php?title=System_Dictionary#Modifying_Dictionary_Entries
> 『ServiceNow Developers ― Training』
https://developer.servicenow.com/app.do#!/training/landing