こんにちは、メケです。
ServiceNowにはCSA(Certified System Administrator)という認定資格があります。
![](https://mekeblog.com/wp-content/uploads/2021/11/0e583ed5aad1548d5d3da40661285716.jpg)
今回はその試験範囲の1つである「データベースの管理」の中の「データスキーマ」について、解説していきます。
![](https://mekeblog.com/wp-content/uploads/2021/11/3a9c6edf9e840aea610fd609e0f5812b.png)
![](https://mekeblog.com/wp-content/uploads/2021/11/3a9c6edf9e840aea610fd609e0f5812b.png)
![](https://mekeblog.com/wp-content/uploads/2021/11/3a9c6edf9e840aea610fd609e0f5812b.png)
通常のRDBと違うところはどこなんだろう?
通常のRDB(Relational Database)についてはなじみのある方も多いと思いますので、この記事ではServiceNow特有のものに絞っていきます。
ここから出題される問題もあるかもしれません。
テーブルタイプ
ServiceNowにはテーブルのタイプとして以下のようなものがあります。
- ベーステーブル:タスクテーブルのような他のテーブルから拡張される可能性はあるが、別のテーブルを拡張しないテーブル
- コアテーブル:インシデントやユーザーテーブルのような基本システムに存在するテーブル
- カスタムテーブル:基本システムにない管理者や開発者によって作成されたテーブル
テーブルを作成する際は既存のテーブルを拡張して作成することができます。
拡張して作成したテーブルには親テーブルの全てのフィールドを継承します。
加えて、そのテーブル固有の新しいフィールドを含めることや拡張元から継承したフィールドのプロパティ(デフォルト値など)の変更などもできます。(ディクショナリオーバーライド機能)
テーブルの構造
![](https://mekeblog.com/wp-content/uploads/2021/10/2a65f4c04352677eabecef513f2739b0-1024x607.png)
![](https://mekeblog.com/wp-content/uploads/2021/10/2a65f4c04352677eabecef513f2739b0-1024x607.png)
ServiceNowのテーブルは一般的なRDBと同様に行と列で構成されています。
- 行:レコード
- 列:フィールド
レコード
sys_id
![](https://mekeblog.com/wp-content/uploads/2021/10/0496d417c4e47a73444a894211746621.png)
![](https://mekeblog.com/wp-content/uploads/2021/10/0496d417c4e47a73444a894211746621.png)
ServiceNowのレコードにはsys_idというものが付けられます。
グローバルで一意に特定するためのIDであり、32文字で構成されます。
sys_idは対象のレコードを右クリックして「Copy sys_id」をクリックすることで取得することができます。
レコード番号
先ほどのsys_idとは別にレコードを識別するためにレコード番号を採番することができます。
ServiceNowではテーブル毎に番号形式を決めるだけで、自動で番号が加算されてレコードに一意の番号を振ることが可能です。
例えばインシデントテーブルでは”INC”という接頭辞(3桁)+7桁の数字で計10桁のものがつけれられます。(例:”INC0010112”)
こちらの番号形式については[System Definition]-[Number Maintenance]より変更が可能です。
![](https://mekeblog.com/wp-content/uploads/2021/10/07d8c365a867cb376731b6407f97bacb-1024x346.png)
![](https://mekeblog.com/wp-content/uploads/2021/10/07d8c365a867cb376731b6407f97bacb-1024x346.png)
- Prefix(接頭辞):INC
- Number(開始番号):10,000
- Number of digits(数字部の桁数):7
- Table:incident
フィールド
参照フィールド
![](https://mekeblog.com/wp-content/uploads/2021/10/9dc5b14f564f41534cb81b9601b56827-1024x747.png)
![](https://mekeblog.com/wp-content/uploads/2021/10/9dc5b14f564f41534cb81b9601b56827-1024x747.png)
参照フィールドというのもServiceNowならではのものかと思います。
例えば、インシデントテーブルには”Caller”というフィールドがあります。
対象のインシデントを問い合わせたユーザーの情報が入る項目です。
ここにはUserテーブルのsys_idをもつことになります。
ℹ️マークをクリックすると、選択したユーザーの情報を詳細表示することが可能です。
システムディクショナリ
![](https://mekeblog.com/wp-content/uploads/2021/10/580cb769f6430cd15e4b008e7b80d3a7-1024x487.jpg)
![](https://mekeblog.com/wp-content/uploads/2021/10/580cb769f6430cd15e4b008e7b80d3a7-1024x487.jpg)
[System Definition]-[Dictionary]から参照することができるシステムディクショナリにはシステム内に定義されているテーブルと各テーブルが持っている列の定義情報があります。
スキーママップ
特定のテーブルに対しての関連するテーブルを表示する方法としてスキーママップというものがあります。
![](https://mekeblog.com/wp-content/uploads/2021/10/45696d4effbc49de5674531ee075b873-1024x573.jpg)
![](https://mekeblog.com/wp-content/uploads/2021/10/45696d4effbc49de5674531ee075b873-1024x573.jpg)
[System Definition]-[Tables & Columns]の画面にて特定のテーブルを選択すると。[Schema map]というボタンがありますのでクリックしてみましょう。(上記の画像ではincidentテーブルのスキーママップを選択)
![](https://mekeblog.com/wp-content/uploads/2021/10/e19f01132b88d4573a86299780ff25c7-1024x645.jpg)
![](https://mekeblog.com/wp-content/uploads/2021/10/e19f01132b88d4573a86299780ff25c7-1024x645.jpg)
- 🟥赤色:選択テーブルより参照されるテーブル
- 🟧橙色:選択テーブルを参照するテーブル
- 🟩緑色:選択テーブルの拡張元のテーブル
- 🟦青色:選択テーブルを拡張したテーブル
よく使うテーブルや気になるテーブルがあれば、スキーママップを確認してみて下さい。
まとめ
今回はServiceNowのデータスキーマについて紹介してみました。
テーブルタイプや、レコード・フィールドなどの中からServiceNowの特徴的なものを中心にまとめてみました。
![](https://mekeblog.com/wp-content/uploads/2021/11/230a668ea9beaf3984f29582834353b2-1.png)
![](https://mekeblog.com/wp-content/uploads/2021/11/230a668ea9beaf3984f29582834353b2-1.png)
![](https://mekeblog.com/wp-content/uploads/2021/11/230a668ea9beaf3984f29582834353b2-1.png)
『データスキーマ』についてちょっとわかった気がしたよ。
もっと理解を深めるには
![](https://mekeblog.com/wp-content/uploads/2021/11/0e583ed5aad1548d5d3da40661285716.jpg)
![](https://mekeblog.com/wp-content/uploads/2021/11/0e583ed5aad1548d5d3da40661285716.jpg)
![](https://mekeblog.com/wp-content/uploads/2021/11/0e583ed5aad1548d5d3da40661285716.jpg)
文字だけを見て学ぶよりも、実際にServiceNowの環境を触ってみるのが効果的です。
![](https://mekeblog.com/wp-content/uploads/2021/11/3a9c6edf9e840aea610fd609e0f5812b.png)
![](https://mekeblog.com/wp-content/uploads/2021/11/3a9c6edf9e840aea610fd609e0f5812b.png)
![](https://mekeblog.com/wp-content/uploads/2021/11/3a9c6edf9e840aea610fd609e0f5812b.png)
そんなこと言っても家では会社の環境にはアクセスできないよ〜
![](https://mekeblog.com/wp-content/uploads/2021/11/0e583ed5aad1548d5d3da40661285716.jpg)
![](https://mekeblog.com/wp-content/uploads/2021/11/0e583ed5aad1548d5d3da40661285716.jpg)
![](https://mekeblog.com/wp-content/uploads/2021/11/0e583ed5aad1548d5d3da40661285716.jpg)
PDI(個人用開発インスタンス)を使用すれば、誰でもどこからでも無料で自分だけの環境を作ることができるんですよ。
以下の記事を参考にしてみて下さい。
![](https://mekeblog.com/wp-content/uploads/2021/07/58cea1bccfb9bc47506a3810959b0730-300x157.jpg)
![](https://mekeblog.com/wp-content/uploads/2021/07/58cea1bccfb9bc47506a3810959b0730-300x157.jpg)
![](https://mekeblog.com/wp-content/uploads/2021/11/230a668ea9beaf3984f29582834353b2-1.png)
![](https://mekeblog.com/wp-content/uploads/2021/11/230a668ea9beaf3984f29582834353b2-1.png)
![](https://mekeblog.com/wp-content/uploads/2021/11/230a668ea9beaf3984f29582834353b2-1.png)
これで、家でこっそりServiceNowのことを勉強して、会社で「できるやつ」って思われるかもね。
それぞれでどんな事ができるかはCSAの試験にも出題されます。
試験対策だけでなく、実際に使用する人や開発する人でもどんな事ができるかは知っておいて損はないかなと思います。
他のCSA対策の記事はこちらでまとめているので、よかったら是非見てやって下さい。
見ていただけると、とても喜びます😆
本記事に書かれていないものでこんな問題も出ていたよなどがあれば、コメント欄に記載頂くかお問い合わせフォームより連絡頂けると幸いです。
連絡いただけたものは随時加筆させていただこうと思います。
![](https://mekeblog.com/wp-content/uploads/2021/10/3957eac19898f2611703daa9dab52c10-300x157.jpg)
![](https://mekeblog.com/wp-content/uploads/2021/10/3957eac19898f2611703daa9dab52c10-300x157.jpg)
最後まで見て頂きありがとうございます。
コメント
コメント一覧 (2件)
いつも勉強させて頂いてる者です。
テーブルタイプのベーステーブルの説明が誤っていませんでしょうか。
ベーステーブルは他のテーブルからの拡張はされず、一方で拡張は行う側な筈です。
恐れ入りますがご確認下さい。
宜しくお願い致します。
89さん
コメントいただきありがとうございます。
記載の誤りということですが、公式のドキュメントなどのどこの記載からの判断かなどいただければ助かります。
例で挙げているタスクテーブルなどは拡張される側であると認識しております。
記載が誤っていれば訂正したいのですが、公式のドキュメント等から見つけれず・・・
お手数おかけしますが、よろしくお願いします。